blob: 2783aa2e8655b7b38bfe6b6df4ddfef33627dd5f [file] [log] [blame]
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001#!/bin/sh
2
Simon Butcher58eddef2016-05-19 23:43:11 +01003# ssl-opt.sh
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01004#
Bence Szépkúti1e148272020-08-07 13:07:28 +02005# Copyright The Mbed TLS Contributors
Bence Szépkútic7da1fe2020-05-26 01:54:15 +02006# SPDX-License-Identifier: Apache-2.0
7#
8# Licensed under the Apache License, Version 2.0 (the "License"); you may
9# not use this file except in compliance with the License.
10# You may obtain a copy of the License at
11#
12# http://www.apache.org/licenses/LICENSE-2.0
13#
14# Unless required by applicable law or agreed to in writing, software
15# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17# See the License for the specific language governing permissions and
18# limitations under the License.
19#
Simon Butcher58eddef2016-05-19 23:43:11 +010020# Purpose
21#
22# Executes tests to prove various TLS/SSL options and extensions.
23#
24# The goal is not to cover every ciphersuite/version, but instead to cover
25# specific options (max fragment length, truncated hmac, etc) or procedures
26# (session resumption from cache or ticket, renego, etc).
27#
28# The tests assume a build with default options, with exceptions expressed
29# with a dependency. The tests focus on functionality and do not consider
30# performance.
31#
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010032
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +010033set -u
34
Jaeden Amero6e70eb22019-07-03 13:51:04 +010035# Limit the size of each log to 10 GiB, in case of failures with this script
36# where it may output seemingly unlimited length error logs.
37ulimit -f 20971520
38
Gilles Peskine560280b2019-09-16 15:17:38 +020039ORIGINAL_PWD=$PWD
40if ! cd "$(dirname "$0")"; then
41 exit 125
Angus Grattonc4dd0732018-04-11 16:28:39 +100042fi
43
Antonin Décimo36e89b52019-01-23 15:24:37 +010044# default values, can be overridden by the environment
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +010045: ${P_SRV:=../programs/ssl/ssl_server2}
46: ${P_CLI:=../programs/ssl/ssl_client2}
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020047: ${P_PXY:=../programs/test/udp_proxy}
Jerry Yud04fd352021-12-06 16:52:57 +080048: ${P_QUERY:=../programs/test/query_compile_time_config}
Manuel Pégourié-Gonnard74faf3c2014-03-13 18:47:44 +010049: ${OPENSSL_CMD:=openssl} # OPENSSL would conflict with the build system
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +020050: ${GNUTLS_CLI:=gnutls-cli}
51: ${GNUTLS_SERV:=gnutls-serv}
Gilles Peskined50177f2017-05-16 17:53:03 +020052: ${PERL:=perl}
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010053
Gilles Peskine560280b2019-09-16 15:17:38 +020054guess_config_name() {
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +020055 if git diff --quiet ../include/mbedtls/mbedtls_config.h 2>/dev/null; then
Gilles Peskine560280b2019-09-16 15:17:38 +020056 echo "default"
57 else
58 echo "unknown"
59 fi
60}
61: ${MBEDTLS_TEST_OUTCOME_FILE=}
62: ${MBEDTLS_TEST_CONFIGURATION:="$(guess_config_name)"}
63: ${MBEDTLS_TEST_PLATFORM:="$(uname -s | tr -c \\n0-9A-Za-z _)-$(uname -m | tr -c \\n0-9A-Za-z _)"}
64
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +020065O_SRV="$OPENSSL_CMD s_server -www -cert data_files/server5.crt -key data_files/server5.key"
Manuel Pégourié-Gonnard74faf3c2014-03-13 18:47:44 +010066O_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_CMD s_client"
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +020067G_SRV="$GNUTLS_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +010068G_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_CLI --x509cafile data_files/test-ca_cat12.crt"
Gilles Peskined50177f2017-05-16 17:53:03 +020069TCP_CLIENT="$PERL scripts/tcp_client.pl"
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +010070
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020071# alternative versions of OpenSSL and GnuTLS (no default path)
72
73if [ -n "${OPENSSL_LEGACY:-}" ]; then
74 O_LEGACY_SRV="$OPENSSL_LEGACY s_server -www -cert data_files/server5.crt -key data_files/server5.key"
75 O_LEGACY_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_LEGACY s_client"
76else
77 O_LEGACY_SRV=false
78 O_LEGACY_CLI=false
79fi
80
Jerry Yu04029792021-08-10 16:45:37 +080081if [ -n "${OPENSSL_NEXT:-}" ]; then
XiaokangQian30f55602021-11-24 01:54:50 +000082 O_NEXT_SRV="$OPENSSL_NEXT s_server -www -cert data_files/server5.crt -key data_files/server5.key"
Jerry Yu305bfc32021-11-24 16:04:47 +080083 O_NEXT_SRV_NO_CERT="$OPENSSL_NEXT s_server -www "
Jerry Yu04029792021-08-10 16:45:37 +080084 O_NEXT_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_NEXT s_client"
85else
86 O_NEXT_SRV=false
Jerry Yu305bfc32021-11-24 16:04:47 +080087 O_NEXT_SRV_NO_CERT=false
Jerry Yu04029792021-08-10 16:45:37 +080088 O_NEXT_CLI=false
89fi
90
Hanno Becker58e9dc32018-08-17 15:53:21 +010091if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020092 G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
Jerry Yu305bfc32021-11-24 16:04:47 +080093 G_NEXT_SRV_NO_CERT="$GNUTLS_NEXT_SERV"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020094else
95 G_NEXT_SRV=false
Jerry Yu305bfc32021-11-24 16:04:47 +080096 G_NEXT_SRV_NO_CERT=false
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020097fi
98
Hanno Becker58e9dc32018-08-17 15:53:21 +010099if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200100 G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile data_files/test-ca_cat12.crt"
101else
102 G_NEXT_CLI=false
103fi
104
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100105TESTS=0
106FAILS=0
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200107SKIPS=0
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100108
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200109CONFIG_H='../include/mbedtls/mbedtls_config.h'
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +0200110
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100111MEMCHECK=0
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100112FILTER='.*'
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200113EXCLUDE='^$'
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100114
Paul Bakkere20310a2016-05-10 11:18:17 +0100115SHOW_TEST_NUMBER=0
Paul Bakkerb7584a52016-05-10 10:50:43 +0100116RUN_TEST_NUMBER=''
117
Paul Bakkeracaac852016-05-10 11:47:13 +0100118PRESERVE_LOGS=0
119
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200120# Pick a "unique" server port in the range 10000-19999, and a proxy
121# port which is this plus 10000. Each port number may be independently
122# overridden by a command line option.
123SRV_PORT=$(($$ % 10000 + 10000))
124PXY_PORT=$((SRV_PORT + 10000))
125
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100126print_usage() {
127 echo "Usage: $0 [options]"
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100128 printf " -h|--help\tPrint this help.\n"
129 printf " -m|--memcheck\tCheck memory leaks and errors.\n"
Gilles Peskine9fa4ed62020-08-26 22:35:46 +0200130 printf " -f|--filter\tOnly matching tests are executed (substring or BRE)\n"
131 printf " -e|--exclude\tMatching tests are excluded (substring or BRE)\n"
Paul Bakkerb7584a52016-05-10 10:50:43 +0100132 printf " -n|--number\tExecute only numbered test (comma-separated, e.g. '245,256')\n"
Paul Bakkere20310a2016-05-10 11:18:17 +0100133 printf " -s|--show-numbers\tShow test numbers in front of test names\n"
Paul Bakkeracaac852016-05-10 11:47:13 +0100134 printf " -p|--preserve-logs\tPreserve logs of successful tests as well\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200135 printf " --outcome-file\tFile where test outcomes are written\n"
136 printf " \t(default: \$MBEDTLS_TEST_OUTCOME_FILE, none if empty)\n"
137 printf " --port \tTCP/UDP port (default: randomish 1xxxx)\n"
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200138 printf " --proxy-port\tTCP/UDP proxy port (default: randomish 2xxxx)\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200139 printf " --seed \tInteger seed value to use for this test run\n"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100140}
141
142get_options() {
143 while [ $# -gt 0 ]; do
144 case "$1" in
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100145 -f|--filter)
146 shift; FILTER=$1
147 ;;
148 -e|--exclude)
149 shift; EXCLUDE=$1
150 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100151 -m|--memcheck)
152 MEMCHECK=1
153 ;;
Paul Bakkerb7584a52016-05-10 10:50:43 +0100154 -n|--number)
155 shift; RUN_TEST_NUMBER=$1
156 ;;
Paul Bakkere20310a2016-05-10 11:18:17 +0100157 -s|--show-numbers)
158 SHOW_TEST_NUMBER=1
159 ;;
Paul Bakkeracaac852016-05-10 11:47:13 +0100160 -p|--preserve-logs)
161 PRESERVE_LOGS=1
162 ;;
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200163 --port)
164 shift; SRV_PORT=$1
165 ;;
166 --proxy-port)
167 shift; PXY_PORT=$1
168 ;;
Andres AGf04f54d2016-10-10 15:46:20 +0100169 --seed)
170 shift; SEED="$1"
171 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100172 -h|--help)
173 print_usage
174 exit 0
175 ;;
176 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200177 echo "Unknown argument: '$1'"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100178 print_usage
179 exit 1
180 ;;
181 esac
182 shift
183 done
184}
185
Gilles Peskine560280b2019-09-16 15:17:38 +0200186# Make the outcome file path relative to the original directory, not
187# to .../tests
188case "$MBEDTLS_TEST_OUTCOME_FILE" in
189 [!/]*)
190 MBEDTLS_TEST_OUTCOME_FILE="$ORIGINAL_PWD/$MBEDTLS_TEST_OUTCOME_FILE"
191 ;;
192esac
193
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200194# Read boolean configuration options from mbedtls_config.h for easy and quick
Gilles Peskine64457492020-08-26 21:53:33 +0200195# testing. Skip non-boolean options (with something other than spaces
196# and a comment after "#define SYMBOL"). The variable contains a
197# space-separated list of symbols.
Jerry Yud0fcf7f2021-12-10 18:45:51 +0800198CONFIGS_ENABLED=" $(echo `$P_QUERY -l` )"
Hanno Becker3b8b40c2018-08-28 10:25:41 +0100199# Skip next test; use this macro to skip tests which are legitimate
200# in theory and expected to be re-introduced at some point, but
201# aren't expected to succeed at the moment due to problems outside
202# our control (such as bugs in other TLS implementations).
203skip_next_test() {
204 SKIP_NEXT="YES"
205}
206
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200207# skip next test if the flag is not enabled in mbedtls_config.h
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100208requires_config_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200209 case $CONFIGS_ENABLED in
Jerry Yu2e8b0012021-12-10 20:29:02 +0800210 *" $1"[\ =]*) :;;
Gilles Peskine64457492020-08-26 21:53:33 +0200211 *) SKIP_NEXT="YES";;
212 esac
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100213}
214
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200215# skip next test if the flag is enabled in mbedtls_config.h
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200216requires_config_disabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200217 case $CONFIGS_ENABLED in
Jerry Yu2e8b0012021-12-10 20:29:02 +0800218 *" $1"[\ =]*) SKIP_NEXT="YES";;
Gilles Peskine64457492020-08-26 21:53:33 +0200219 esac
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200220}
221
Hanno Becker7c48dd12018-08-28 16:09:22 +0100222get_config_value_or_default() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100223 # This function uses the query_config command line option to query the
224 # required Mbed TLS compile time configuration from the ssl_server2
225 # program. The command will always return a success value if the
226 # configuration is defined and the value will be printed to stdout.
227 #
228 # Note that if the configuration is not defined or is defined to nothing,
229 # the output of this function will be an empty string.
230 ${P_SRV} "query_config=${1}"
Hanno Becker7c48dd12018-08-28 16:09:22 +0100231}
232
233requires_config_value_at_least() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100234 VAL="$( get_config_value_or_default "$1" )"
235 if [ -z "$VAL" ]; then
236 # Should never happen
237 echo "Mbed TLS configuration $1 is not defined"
238 exit 1
239 elif [ "$VAL" -lt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100240 SKIP_NEXT="YES"
241 fi
242}
243
244requires_config_value_at_most() {
Hanno Becker7c48dd12018-08-28 16:09:22 +0100245 VAL=$( get_config_value_or_default "$1" )
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100246 if [ -z "$VAL" ]; then
247 # Should never happen
248 echo "Mbed TLS configuration $1 is not defined"
249 exit 1
250 elif [ "$VAL" -gt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100251 SKIP_NEXT="YES"
252 fi
253}
254
Yuto Takano6f657432021-07-02 13:10:41 +0100255requires_config_value_equals() {
256 VAL=$( get_config_value_or_default "$1" )
257 if [ -z "$VAL" ]; then
258 # Should never happen
259 echo "Mbed TLS configuration $1 is not defined"
260 exit 1
261 elif [ "$VAL" -ne "$2" ]; then
262 SKIP_NEXT="YES"
263 fi
264}
265
Gilles Peskine64457492020-08-26 21:53:33 +0200266# Space-separated list of ciphersuites supported by this build of
267# Mbed TLS.
268P_CIPHERSUITES=" $($P_CLI --help 2>/dev/null |
XiaokangQian4b82ca12021-11-18 08:27:17 +0000269 grep 'TLS-\|TLS1-3' |
Gilles Peskine64457492020-08-26 21:53:33 +0200270 tr -s ' \n' ' ')"
Hanno Becker9d76d562018-11-16 17:27:29 +0000271requires_ciphersuite_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200272 case $P_CIPHERSUITES in
273 *" $1 "*) :;;
274 *) SKIP_NEXT="YES";;
275 esac
Hanno Becker9d76d562018-11-16 17:27:29 +0000276}
277
Gilles Peskine0d721652020-06-26 23:35:53 +0200278# maybe_requires_ciphersuite_enabled CMD [RUN_TEST_OPTION...]
279# If CMD (call to a TLS client or server program) requires a specific
280# ciphersuite, arrange to only run the test case if this ciphersuite is
Dave Rodgmanc4240982021-06-29 19:53:16 +0100281# enabled.
Gilles Peskine0d721652020-06-26 23:35:53 +0200282maybe_requires_ciphersuite_enabled() {
283 case "$1" in
284 *\ force_ciphersuite=*) :;;
285 *) return;; # No specific required ciphersuite
286 esac
287 ciphersuite="${1##*\ force_ciphersuite=}"
288 ciphersuite="${ciphersuite%%[!-0-9A-Z_a-z]*}"
289 shift
290
Dave Rodgmanc4240982021-06-29 19:53:16 +0100291 requires_ciphersuite_enabled "$ciphersuite"
Gilles Peskine0d721652020-06-26 23:35:53 +0200292
293 unset ciphersuite
294}
295
Gilles Peskine6e86e542022-02-25 19:52:52 +0100296adapt_cmd_for_psk () {
297 case "$2" in
298 *openssl*) s='-psk abc123 -nocert';;
299 *gnutls-*) s='--pskkey=abc123';;
300 *) s='psk=abc123';;
301 esac
302 eval $1='"$2 $s"'
303 unset s
304}
305
306# maybe_adapt_for_psk [RUN_TEST_OPTION...]
307# If running in a PSK-only build, maybe adapt the test to use a pre-shared key.
308#
309# If not running in a PSK-only build, do nothing.
310# If the test looks like it doesn't use a pre-shared key but can run with a
311# pre-shared key, pass a pre-shared key. If the test looks like it can't run
312# with a pre-shared key, skip it. If the test looks like it's already using
313# a pre-shared key, do nothing.
314#
315# This code does not consider builds with ECDH-PSK or RSA-PSK.
316#
317# Inputs:
318# * $CLI_CMD, $SRV_CMD, $PXY_CMD: client/server/proxy commands.
319# * $PSK_ONLY: YES if running in a PSK-only build (no asymmetric key exchanges).
320# * "$@": options passed to run_test.
321#
322# Outputs:
323# * $CLI_CMD, $SRV_CMD: may be modified to add PSK-relevant arguments.
324# * $SKIP_NEXT: set to YES if the test can't run with PSK.
325maybe_adapt_for_psk() {
326 if [ "$PSK_ONLY" != "YES" ]; then
327 return
328 fi
329 if [ "$SKIP_NEXT" = "YES" ]; then
330 return
331 fi
332 case "$CLI_CMD $SRV_CMD" in
333 *[-_\ =]psk*|*[-_\ =]PSK*)
334 return;;
335 *force_ciphersuite*)
336 # The test case forces a non-PSK cipher suite. In some cases, a
337 # PSK cipher suite could be substituted, but we're not ready for
338 # that yet.
339 SKIP_NEXT="YES"
340 return;;
341 *\ auth_mode=*|*[-_\ =]crt[_=]*)
342 # The test case involves certificates. PSK won't do.
343 SKIP_NEXT="YES"
344 return;;
345 esac
346 adapt_cmd_for_psk CLI_CMD "$CLI_CMD"
347 adapt_cmd_for_psk SRV_CMD "$SRV_CMD"
348}
349
350case " $CONFIGS_ENABLED " in
351 *\ MBEDTLS_KEY_EXCHANGE_[^P]*) PSK_ONLY="NO";;
352 *\ MBEDTLS_KEY_EXCHANGE_P[^S]*) PSK_ONLY="NO";;
353 *\ MBEDTLS_KEY_EXCHANGE_PS[^K]*) PSK_ONLY="NO";;
354 *\ MBEDTLS_KEY_EXCHANGE_PSK[^_]*) PSK_ONLY="NO";;
355 *\ MBEDTLS_KEY_EXCHANGE_PSK_ENABLED\ *) PSK_ONLY="YES";;
356 *) PSK_ONLY="NO";;
357esac
358
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200359# skip next test if OpenSSL doesn't support FALLBACK_SCSV
360requires_openssl_with_fallback_scsv() {
361 if [ -z "${OPENSSL_HAS_FBSCSV:-}" ]; then
362 if $OPENSSL_CMD s_client -help 2>&1 | grep fallback_scsv >/dev/null
363 then
364 OPENSSL_HAS_FBSCSV="YES"
365 else
366 OPENSSL_HAS_FBSCSV="NO"
367 fi
368 fi
369 if [ "$OPENSSL_HAS_FBSCSV" = "NO" ]; then
370 SKIP_NEXT="YES"
371 fi
372}
373
Yuto Takanob0a1c5b2021-07-02 10:10:49 +0100374# skip next test if either IN_CONTENT_LEN or MAX_CONTENT_LEN are below a value
375requires_max_content_len() {
376 requires_config_value_at_least "MBEDTLS_SSL_IN_CONTENT_LEN" $1
377 requires_config_value_at_least "MBEDTLS_SSL_OUT_CONTENT_LEN" $1
378}
379
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200380# skip next test if GnuTLS isn't available
381requires_gnutls() {
382 if [ -z "${GNUTLS_AVAILABLE:-}" ]; then
Manuel Pégourié-Gonnard03db6b02015-06-26 15:45:30 +0200383 if ( which "$GNUTLS_CLI" && which "$GNUTLS_SERV" ) >/dev/null 2>&1; then
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200384 GNUTLS_AVAILABLE="YES"
385 else
386 GNUTLS_AVAILABLE="NO"
387 fi
388 fi
389 if [ "$GNUTLS_AVAILABLE" = "NO" ]; then
390 SKIP_NEXT="YES"
391 fi
392}
393
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200394# skip next test if GnuTLS-next isn't available
395requires_gnutls_next() {
396 if [ -z "${GNUTLS_NEXT_AVAILABLE:-}" ]; then
397 if ( which "${GNUTLS_NEXT_CLI:-}" && which "${GNUTLS_NEXT_SERV:-}" ) >/dev/null 2>&1; then
398 GNUTLS_NEXT_AVAILABLE="YES"
399 else
400 GNUTLS_NEXT_AVAILABLE="NO"
401 fi
402 fi
403 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
404 SKIP_NEXT="YES"
405 fi
406}
407
408# skip next test if OpenSSL-legacy isn't available
409requires_openssl_legacy() {
410 if [ -z "${OPENSSL_LEGACY_AVAILABLE:-}" ]; then
411 if which "${OPENSSL_LEGACY:-}" >/dev/null 2>&1; then
412 OPENSSL_LEGACY_AVAILABLE="YES"
413 else
414 OPENSSL_LEGACY_AVAILABLE="NO"
415 fi
416 fi
417 if [ "$OPENSSL_LEGACY_AVAILABLE" = "NO" ]; then
418 SKIP_NEXT="YES"
419 fi
420}
421
Jerry Yu04029792021-08-10 16:45:37 +0800422requires_openssl_next() {
423 if [ -z "${OPENSSL_NEXT_AVAILABLE:-}" ]; then
424 if which "${OPENSSL_NEXT:-}" >/dev/null 2>&1; then
425 OPENSSL_NEXT_AVAILABLE="YES"
426 else
427 OPENSSL_NEXT_AVAILABLE="NO"
428 fi
429 fi
430 if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
431 SKIP_NEXT="YES"
432 fi
433}
434
435# skip next test if tls1_3 is not available
436requires_openssl_tls1_3() {
437 requires_openssl_next
438 if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
439 OPENSSL_TLS1_3_AVAILABLE="NO"
440 fi
441 if [ -z "${OPENSSL_TLS1_3_AVAILABLE:-}" ]; then
442 if $OPENSSL_NEXT s_client -help 2>&1 | grep tls1_3 >/dev/null
443 then
444 OPENSSL_TLS1_3_AVAILABLE="YES"
445 else
446 OPENSSL_TLS1_3_AVAILABLE="NO"
447 fi
448 fi
449 if [ "$OPENSSL_TLS1_3_AVAILABLE" = "NO" ]; then
450 SKIP_NEXT="YES"
451 fi
452}
453
454# skip next test if tls1_3 is not available
455requires_gnutls_tls1_3() {
456 requires_gnutls_next
457 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
458 GNUTLS_TLS1_3_AVAILABLE="NO"
459 fi
460 if [ -z "${GNUTLS_TLS1_3_AVAILABLE:-}" ]; then
461 if $GNUTLS_NEXT_CLI -l 2>&1 | grep VERS-TLS1.3 >/dev/null
462 then
463 GNUTLS_TLS1_3_AVAILABLE="YES"
464 else
465 GNUTLS_TLS1_3_AVAILABLE="NO"
466 fi
467 fi
468 if [ "$GNUTLS_TLS1_3_AVAILABLE" = "NO" ]; then
469 SKIP_NEXT="YES"
470 fi
471}
472
Jerry Yu75261df2021-09-02 17:40:08 +0800473# Check %NO_TICKETS option
Jerry Yub12d81d2021-08-17 10:56:08 +0800474requires_gnutls_next_no_ticket() {
475 requires_gnutls_next
476 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
477 GNUTLS_NO_TICKETS_AVAILABLE="NO"
478 fi
479 if [ -z "${GNUTLS_NO_TICKETS_AVAILABLE:-}" ]; then
480 if $GNUTLS_NEXT_CLI --priority-list 2>&1 | grep NO_TICKETS >/dev/null
481 then
482 GNUTLS_NO_TICKETS_AVAILABLE="YES"
483 else
484 GNUTLS_NO_TICKETS_AVAILABLE="NO"
485 fi
486 fi
487 if [ "$GNUTLS_NO_TICKETS_AVAILABLE" = "NO" ]; then
488 SKIP_NEXT="YES"
489 fi
490}
491
Jerry Yu75261df2021-09-02 17:40:08 +0800492# Check %DISABLE_TLS13_COMPAT_MODE option
Jerry Yub12d81d2021-08-17 10:56:08 +0800493requires_gnutls_next_disable_tls13_compat() {
494 requires_gnutls_next
495 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
496 GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="NO"
497 fi
498 if [ -z "${GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE:-}" ]; then
499 if $GNUTLS_NEXT_CLI --priority-list 2>&1 | grep DISABLE_TLS13_COMPAT_MODE >/dev/null
500 then
501 GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="YES"
502 else
503 GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="NO"
504 fi
505 fi
506 if [ "$GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE" = "NO" ]; then
507 SKIP_NEXT="YES"
508 fi
509}
510
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200511# skip next test if IPv6 isn't available on this host
512requires_ipv6() {
513 if [ -z "${HAS_IPV6:-}" ]; then
514 $P_SRV server_addr='::1' > $SRV_OUT 2>&1 &
515 SRV_PID=$!
516 sleep 1
517 kill $SRV_PID >/dev/null 2>&1
518 if grep "NET - Binding of the socket failed" $SRV_OUT >/dev/null; then
519 HAS_IPV6="NO"
520 else
521 HAS_IPV6="YES"
522 fi
523 rm -r $SRV_OUT
524 fi
525
526 if [ "$HAS_IPV6" = "NO" ]; then
527 SKIP_NEXT="YES"
528 fi
529}
530
Andrzej Kurekb4593462018-10-11 08:43:30 -0400531# skip next test if it's i686 or uname is not available
532requires_not_i686() {
533 if [ -z "${IS_I686:-}" ]; then
534 IS_I686="YES"
535 if which "uname" >/dev/null 2>&1; then
536 if [ -z "$(uname -a | grep i686)" ]; then
537 IS_I686="NO"
538 fi
539 fi
540 fi
541 if [ "$IS_I686" = "YES" ]; then
542 SKIP_NEXT="YES"
543 fi
544}
545
Angus Grattonc4dd0732018-04-11 16:28:39 +1000546# Calculate the input & output maximum content lengths set in the config
David Horstmann95d516f2021-05-04 18:36:56 +0100547MAX_CONTENT_LEN=16384
Yuto Takano2be6f1a2021-06-22 07:16:40 +0100548MAX_IN_LEN=$( get_config_value_or_default "MBEDTLS_SSL_IN_CONTENT_LEN" )
549MAX_OUT_LEN=$( get_config_value_or_default "MBEDTLS_SSL_OUT_CONTENT_LEN" )
Angus Grattonc4dd0732018-04-11 16:28:39 +1000550
Yuto Takano0509fea2021-06-21 19:43:33 +0100551# Calculate the maximum content length that fits both
Angus Grattonc4dd0732018-04-11 16:28:39 +1000552if [ "$MAX_IN_LEN" -lt "$MAX_CONTENT_LEN" ]; then
553 MAX_CONTENT_LEN="$MAX_IN_LEN"
554fi
555if [ "$MAX_OUT_LEN" -lt "$MAX_CONTENT_LEN" ]; then
556 MAX_CONTENT_LEN="$MAX_OUT_LEN"
557fi
558
559# skip the next test if the SSL output buffer is less than 16KB
560requires_full_size_output_buffer() {
561 if [ "$MAX_OUT_LEN" -ne 16384 ]; then
562 SKIP_NEXT="YES"
563 fi
564}
565
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +0200566# skip the next test if valgrind is in use
567not_with_valgrind() {
568 if [ "$MEMCHECK" -gt 0 ]; then
569 SKIP_NEXT="YES"
570 fi
571}
572
Paul Bakker362689d2016-05-13 10:33:25 +0100573# skip the next test if valgrind is NOT in use
574only_with_valgrind() {
575 if [ "$MEMCHECK" -eq 0 ]; then
576 SKIP_NEXT="YES"
577 fi
578}
579
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200580# multiply the client timeout delay by the given factor for the next test
Janos Follath74537a62016-09-02 13:45:28 +0100581client_needs_more_time() {
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200582 CLI_DELAY_FACTOR=$1
583}
584
Janos Follath74537a62016-09-02 13:45:28 +0100585# wait for the given seconds after the client finished in the next test
586server_needs_more_time() {
587 SRV_DELAY_SECONDS=$1
588}
589
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100590# print_name <name>
591print_name() {
Paul Bakkere20310a2016-05-10 11:18:17 +0100592 TESTS=$(( $TESTS + 1 ))
593 LINE=""
594
595 if [ "$SHOW_TEST_NUMBER" -gt 0 ]; then
596 LINE="$TESTS "
597 fi
598
599 LINE="$LINE$1"
Gilles Peskine231befa2020-08-26 20:05:11 +0200600 printf "%s " "$LINE"
Paul Bakkere20310a2016-05-10 11:18:17 +0100601 LEN=$(( 72 - `echo "$LINE" | wc -c` ))
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100602 for i in `seq 1 $LEN`; do printf '.'; done
603 printf ' '
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100604
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100605}
606
Gilles Peskine560280b2019-09-16 15:17:38 +0200607# record_outcome <outcome> [<failure-reason>]
608# The test name must be in $NAME.
Gilles Peskine5eb2b022022-01-07 15:47:02 +0100609# Use $TEST_SUITE_NAME as the test suite name if set.
Gilles Peskine560280b2019-09-16 15:17:38 +0200610record_outcome() {
611 echo "$1"
612 if [ -n "$MBEDTLS_TEST_OUTCOME_FILE" ]; then
613 printf '%s;%s;%s;%s;%s;%s\n' \
614 "$MBEDTLS_TEST_PLATFORM" "$MBEDTLS_TEST_CONFIGURATION" \
Gilles Peskine5eb2b022022-01-07 15:47:02 +0100615 "${TEST_SUITE_NAME:-ssl-opt}" "$NAME" \
Gilles Peskine560280b2019-09-16 15:17:38 +0200616 "$1" "${2-}" \
617 >>"$MBEDTLS_TEST_OUTCOME_FILE"
618 fi
619}
Gilles Peskine5eb2b022022-01-07 15:47:02 +0100620unset TEST_SUITE_NAME
Gilles Peskine560280b2019-09-16 15:17:38 +0200621
Gilles Peskine788ad332021-10-20 14:17:02 +0200622# True if the presence of the given pattern in a log definitely indicates
623# that the test has failed. False if the presence is inconclusive.
624#
625# Inputs:
626# * $1: pattern found in the logs
627# * $TIMES_LEFT: >0 if retrying is an option
628#
629# Outputs:
630# * $outcome: set to a retry reason if the pattern is inconclusive,
631# unchanged otherwise.
632# * Return value: 1 if the pattern is inconclusive,
633# 0 if the failure is definitive.
634log_pattern_presence_is_conclusive() {
635 # If we've run out of attempts, then don't retry no matter what.
636 if [ $TIMES_LEFT -eq 0 ]; then
637 return 0
638 fi
639 case $1 in
640 "resend")
641 # An undesired resend may have been caused by the OS dropping or
642 # delaying a packet at an inopportune time.
643 outcome="RETRY(resend)"
644 return 1;;
645 esac
646}
647
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100648# fail <message>
649fail() {
Gilles Peskine560280b2019-09-16 15:17:38 +0200650 record_outcome "FAIL" "$1"
Manuel Pégourié-Gonnard3eec6042014-02-27 15:37:24 +0100651 echo " ! $1"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100652
Manuel Pégourié-Gonnardc2b00922014-08-31 16:46:04 +0200653 mv $SRV_OUT o-srv-${TESTS}.log
654 mv $CLI_OUT o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200655 if [ -n "$PXY_CMD" ]; then
656 mv $PXY_OUT o-pxy-${TESTS}.log
657 fi
658 echo " ! outputs saved to o-XXX-${TESTS}.log"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100659
Manuel Pégourié-Gonnard3f3302f2020-06-08 11:49:05 +0200660 if [ "${LOG_FAILURE_ON_STDOUT:-0}" != 0 ]; then
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200661 echo " ! server output:"
662 cat o-srv-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200663 echo " ! ========================================================"
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200664 echo " ! client output:"
665 cat o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200666 if [ -n "$PXY_CMD" ]; then
667 echo " ! ========================================================"
668 echo " ! proxy output:"
669 cat o-pxy-${TESTS}.log
670 fi
671 echo ""
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200672 fi
673
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +0200674 FAILS=$(( $FAILS + 1 ))
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100675}
676
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100677# is_polar <cmd_line>
678is_polar() {
Gilles Peskine64457492020-08-26 21:53:33 +0200679 case "$1" in
680 *ssl_client2*) true;;
681 *ssl_server2*) true;;
682 *) false;;
683 esac
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100684}
685
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +0200686# openssl s_server doesn't have -www with DTLS
687check_osrv_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +0200688 case "$SRV_CMD" in
689 *s_server*-dtls*)
690 NEEDS_INPUT=1
691 SRV_CMD="$( echo $SRV_CMD | sed s/-www// )";;
692 *) NEEDS_INPUT=0;;
693 esac
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +0200694}
695
696# provide input to commands that need it
697provide_input() {
698 if [ $NEEDS_INPUT -eq 0 ]; then
699 return
700 fi
701
702 while true; do
703 echo "HTTP/1.0 200 OK"
704 sleep 1
705 done
706}
707
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100708# has_mem_err <log_file_name>
709has_mem_err() {
710 if ( grep -F 'All heap blocks were freed -- no leaks are possible' "$1" &&
711 grep -F 'ERROR SUMMARY: 0 errors from 0 contexts' "$1" ) > /dev/null
712 then
713 return 1 # false: does not have errors
714 else
715 return 0 # true: has errors
716 fi
717}
718
Unknownd364f4c2019-09-02 10:42:57 -0400719# Wait for process $2 named $3 to be listening on port $1. Print error to $4.
Gilles Peskine418b5362017-12-14 18:58:42 +0100720if type lsof >/dev/null 2>/dev/null; then
Unknownd364f4c2019-09-02 10:42:57 -0400721 wait_app_start() {
Paul Elliotte05e1262021-10-20 15:59:33 +0100722 newline='
723'
Gilles Peskine418b5362017-12-14 18:58:42 +0100724 START_TIME=$(date +%s)
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200725 if [ "$DTLS" -eq 1 ]; then
Gilles Peskine418b5362017-12-14 18:58:42 +0100726 proto=UDP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200727 else
Gilles Peskine418b5362017-12-14 18:58:42 +0100728 proto=TCP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200729 fi
Gilles Peskine418b5362017-12-14 18:58:42 +0100730 # Make a tight loop, server normally takes less than 1s to start.
Paul Elliott58ed8a72021-10-19 17:56:39 +0100731 while true; do
Paul Elliotte05e1262021-10-20 15:59:33 +0100732 SERVER_PIDS=$(lsof -a -n -b -i "$proto:$1" -F p)
733 # When we use a proxy, it will be listening on the same port we
734 # are checking for as well as the server and lsof will list both.
735 # If multiple PIDs are returned, each one will be on a separate
736 # line, each prepended with 'p'.
737 case ${newline}${SERVER_PIDS}${newline} in
738 *${newline}p${2}${newline}*) break;;
739 esac
Gilles Peskine418b5362017-12-14 18:58:42 +0100740 if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
Unknownd364f4c2019-09-02 10:42:57 -0400741 echo "$3 START TIMEOUT"
742 echo "$3 START TIMEOUT" >> $4
Gilles Peskine418b5362017-12-14 18:58:42 +0100743 break
744 fi
745 # Linux and *BSD support decimal arguments to sleep. On other
746 # OSes this may be a tight loop.
747 sleep 0.1 2>/dev/null || true
748 done
749 }
750else
Unknownd364f4c2019-09-02 10:42:57 -0400751 echo "Warning: lsof not available, wait_app_start = sleep"
752 wait_app_start() {
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200753 sleep "$START_DELAY"
Gilles Peskine418b5362017-12-14 18:58:42 +0100754 }
755fi
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200756
Unknownd364f4c2019-09-02 10:42:57 -0400757# Wait for server process $2 to be listening on port $1.
758wait_server_start() {
759 wait_app_start $1 $2 "SERVER" $SRV_OUT
760}
761
762# Wait for proxy process $2 to be listening on port $1.
763wait_proxy_start() {
764 wait_app_start $1 $2 "PROXY" $PXY_OUT
765}
766
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100767# Given the client or server debug output, parse the unix timestamp that is
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +0100768# included in the first 4 bytes of the random bytes and check that it's within
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100769# acceptable bounds
770check_server_hello_time() {
771 # Extract the time from the debug (lvl 3) output of the client
Andres Amaya Garcia67d8da52017-09-15 15:49:24 +0100772 SERVER_HELLO_TIME="$(sed -n 's/.*server hello, current time: //p' < "$1")"
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100773 # Get the Unix timestamp for now
774 CUR_TIME=$(date +'%s')
775 THRESHOLD_IN_SECS=300
776
777 # Check if the ServerHello time was printed
778 if [ -z "$SERVER_HELLO_TIME" ]; then
779 return 1
780 fi
781
782 # Check the time in ServerHello is within acceptable bounds
783 if [ $SERVER_HELLO_TIME -lt $(( $CUR_TIME - $THRESHOLD_IN_SECS )) ]; then
784 # The time in ServerHello is at least 5 minutes before now
785 return 1
786 elif [ $SERVER_HELLO_TIME -gt $(( $CUR_TIME + $THRESHOLD_IN_SECS )) ]; then
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +0100787 # The time in ServerHello is at least 5 minutes later than now
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100788 return 1
789 else
790 return 0
791 fi
792}
793
Piotr Nowicki0937ed22019-11-26 16:32:40 +0100794# Get handshake memory usage from server or client output and put it into the variable specified by the first argument
795handshake_memory_get() {
796 OUTPUT_VARIABLE="$1"
797 OUTPUT_FILE="$2"
798
799 # Get memory usage from a pattern like "Heap memory usage after handshake: 23112 bytes. Peak memory usage was 33112"
800 MEM_USAGE=$(sed -n 's/.*Heap memory usage after handshake: //p' < "$OUTPUT_FILE" | grep -o "[0-9]*" | head -1)
801
802 # Check if memory usage was read
803 if [ -z "$MEM_USAGE" ]; then
804 echo "Error: Can not read the value of handshake memory usage"
805 return 1
806 else
807 eval "$OUTPUT_VARIABLE=$MEM_USAGE"
808 return 0
809 fi
810}
811
812# Get handshake memory usage from server or client output and check if this value
813# is not higher than the maximum given by the first argument
814handshake_memory_check() {
815 MAX_MEMORY="$1"
816 OUTPUT_FILE="$2"
817
818 # Get memory usage
819 if ! handshake_memory_get "MEMORY_USAGE" "$OUTPUT_FILE"; then
820 return 1
821 fi
822
823 # Check if memory usage is below max value
824 if [ "$MEMORY_USAGE" -gt "$MAX_MEMORY" ]; then
825 echo "\nFailed: Handshake memory usage was $MEMORY_USAGE bytes," \
826 "but should be below $MAX_MEMORY bytes"
827 return 1
828 else
829 return 0
830 fi
831}
832
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200833# wait for client to terminate and set CLI_EXIT
834# must be called right after starting the client
835wait_client_done() {
836 CLI_PID=$!
837
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200838 CLI_DELAY=$(( $DOG_DELAY * $CLI_DELAY_FACTOR ))
839 CLI_DELAY_FACTOR=1
840
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200841 ( sleep $CLI_DELAY; echo "===CLIENT_TIMEOUT===" >> $CLI_OUT; kill $CLI_PID ) &
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200842 DOG_PID=$!
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200843
844 wait $CLI_PID
845 CLI_EXIT=$?
846
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200847 kill $DOG_PID >/dev/null 2>&1
848 wait $DOG_PID
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200849
850 echo "EXIT: $CLI_EXIT" >> $CLI_OUT
Janos Follath74537a62016-09-02 13:45:28 +0100851
852 sleep $SRV_DELAY_SECONDS
853 SRV_DELAY_SECONDS=0
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200854}
855
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200856# check if the given command uses dtls and sets global variable DTLS
857detect_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +0200858 case "$1" in
Paul Elliott1428f252021-10-12 16:02:55 +0100859 *dtls=1*|*-dtls*|*-u*) DTLS=1;;
Gilles Peskine64457492020-08-26 21:53:33 +0200860 *) DTLS=0;;
861 esac
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200862}
863
Dave Rodgman0279c2f2021-02-10 12:45:41 +0000864# check if the given command uses gnutls and sets global variable CMD_IS_GNUTLS
865is_gnutls() {
866 case "$1" in
867 *gnutls-cli*)
868 CMD_IS_GNUTLS=1
869 ;;
870 *gnutls-serv*)
871 CMD_IS_GNUTLS=1
872 ;;
873 *)
874 CMD_IS_GNUTLS=0
875 ;;
876 esac
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100877}
878
Johan Pascal9bc50b02020-09-24 12:01:13 +0200879# Compare file content
880# Usage: find_in_both pattern file1 file2
881# extract from file1 the first line matching the pattern
882# check in file2 that the same line can be found
883find_in_both() {
884 srv_pattern=$(grep -m 1 "$1" "$2");
885 if [ -z "$srv_pattern" ]; then
886 return 1;
887 fi
888
889 if grep "$srv_pattern" $3 >/dev/null; then :
Johan Pascal10403152020-10-09 20:43:51 +0200890 return 0;
Johan Pascal9bc50b02020-09-24 12:01:13 +0200891 else
892 return 1;
893 fi
894}
895
Jerry Yuc46e9b42021-08-06 11:22:24 +0800896SKIP_HANDSHAKE_CHECK="NO"
897skip_handshake_stage_check() {
898 SKIP_HANDSHAKE_CHECK="YES"
899}
900
Gilles Peskine236bf982021-10-19 16:25:10 +0200901# Analyze the commands that will be used in a test.
902#
903# Analyze and possibly instrument $PXY_CMD, $CLI_CMD, $SRV_CMD to pass
904# extra arguments or go through wrappers.
Gilles Peskine236bf982021-10-19 16:25:10 +0200905analyze_test_commands() {
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200906 # if the test uses DTLS but no custom proxy, add a simple proxy
907 # as it provides timing info that's useful to debug failures
Manuel Pégourié-Gonnard70fce982020-06-25 09:54:46 +0200908 if [ -z "$PXY_CMD" ] && [ "$DTLS" -eq 1 ]; then
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200909 PXY_CMD="$P_PXY"
Manuel Pégourié-Gonnard8779e9a2020-07-16 10:19:32 +0200910 case " $SRV_CMD " in
911 *' server_addr=::1 '*)
912 PXY_CMD="$PXY_CMD server_addr=::1 listen_addr=::1";;
913 esac
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200914 fi
915
Dave Rodgman0279c2f2021-02-10 12:45:41 +0000916 # update CMD_IS_GNUTLS variable
917 is_gnutls "$SRV_CMD"
918
919 # if the server uses gnutls but doesn't set priority, explicitly
920 # set the default priority
921 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
922 case "$SRV_CMD" in
923 *--priority*) :;;
924 *) SRV_CMD="$SRV_CMD --priority=NORMAL";;
925 esac
926 fi
927
928 # update CMD_IS_GNUTLS variable
929 is_gnutls "$CLI_CMD"
930
931 # if the client uses gnutls but doesn't set priority, explicitly
932 # set the default priority
933 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
934 case "$CLI_CMD" in
935 *--priority*) :;;
936 *) CLI_CMD="$CLI_CMD --priority=NORMAL";;
937 esac
938 fi
939
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200940 # fix client port
941 if [ -n "$PXY_CMD" ]; then
942 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$PXY_PORT/g )
943 else
944 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$SRV_PORT/g )
945 fi
946
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100947 # prepend valgrind to our commands if active
948 if [ "$MEMCHECK" -gt 0 ]; then
949 if is_polar "$SRV_CMD"; then
950 SRV_CMD="valgrind --leak-check=full $SRV_CMD"
951 fi
952 if is_polar "$CLI_CMD"; then
953 CLI_CMD="valgrind --leak-check=full $CLI_CMD"
954 fi
955 fi
Gilles Peskine236bf982021-10-19 16:25:10 +0200956}
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100957
Gilles Peskine236bf982021-10-19 16:25:10 +0200958# Check for failure conditions after a test case.
959#
960# Inputs from run_test:
961# * positional parameters: test options (see run_test documentation)
962# * $CLI_EXIT: client return code
963# * $CLI_EXPECT: expected client return code
964# * $SRV_RET: server return code
965# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files containing client/server/proxy logs
Gilles Peskine0e3534c2021-10-19 17:23:25 +0200966# * $TIMES_LEFT: if nonzero, a RETRY outcome is allowed
Gilles Peskine236bf982021-10-19 16:25:10 +0200967#
968# Outputs:
Gilles Peskinef11d30e2021-10-19 18:00:10 +0200969# * $outcome: one of PASS/RETRY*/FAIL
Gilles Peskine236bf982021-10-19 16:25:10 +0200970check_test_failure() {
Gilles Peskine0e3534c2021-10-19 17:23:25 +0200971 outcome=FAIL
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200972
Gilles Peskine0e3534c2021-10-19 17:23:25 +0200973 if [ $TIMES_LEFT -gt 0 ] &&
974 grep '===CLIENT_TIMEOUT===' $CLI_OUT >/dev/null
975 then
Gilles Peskinef11d30e2021-10-19 18:00:10 +0200976 outcome="RETRY(client-timeout)"
Gilles Peskine0e3534c2021-10-19 17:23:25 +0200977 return
978 fi
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200979
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100980 # check if the client and server went at least to the handshake stage
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200981 # (useful to avoid tests with only negative assertions and non-zero
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100982 # expected client exit to incorrectly succeed in case of catastrophic
983 # failure)
Jerry Yuc46e9b42021-08-06 11:22:24 +0800984 if [ "X$SKIP_HANDSHAKE_CHECK" != "XYES" ]
985 then
986 if is_polar "$SRV_CMD"; then
987 if grep "Performing the SSL/TLS handshake" $SRV_OUT >/dev/null; then :;
988 else
989 fail "server or client failed to reach handshake stage"
990 return
991 fi
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100992 fi
Jerry Yuc46e9b42021-08-06 11:22:24 +0800993 if is_polar "$CLI_CMD"; then
994 if grep "Performing the SSL/TLS handshake" $CLI_OUT >/dev/null; then :;
995 else
996 fail "server or client failed to reach handshake stage"
997 return
998 fi
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100999 fi
1000 fi
1001
Jerry Yuc46e9b42021-08-06 11:22:24 +08001002 SKIP_HANDSHAKE_CHECK="NO"
Gilles Peskineaaf866e2021-02-09 21:01:33 +01001003 # Check server exit code (only for Mbed TLS: GnuTLS and OpenSSL don't
1004 # exit with status 0 when interrupted by a signal, and we don't really
1005 # care anyway), in case e.g. the server reports a memory leak.
1006 if [ $SRV_RET != 0 ] && is_polar "$SRV_CMD"; then
Gilles Peskine7f919de2021-02-02 23:29:03 +01001007 fail "Server exited with status $SRV_RET"
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001008 return
1009 fi
1010
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001011 # check client exit code
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001012 if [ \( "$CLI_EXPECT" = 0 -a "$CLI_EXIT" != 0 \) -o \
1013 \( "$CLI_EXPECT" != 0 -a "$CLI_EXIT" = 0 \) ]
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001014 then
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001015 fail "bad client exit code (expected $CLI_EXPECT, got $CLI_EXIT)"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001016 return
1017 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001018
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001019 # check other assertions
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001020 # lines beginning with == are added by valgrind, ignore them
Paul Bakker1f650922016-05-13 10:16:46 +01001021 # lines with 'Serious error when reading debug info', are valgrind issues as well
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001022 while [ $# -gt 0 ]
1023 do
1024 case $1 in
1025 "-s")
Paul Bakker1f650922016-05-13 10:16:46 +01001026 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
Simon Butcher8e004102016-10-14 00:48:33 +01001027 fail "pattern '$2' MUST be present in the Server output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001028 return
1029 fi
1030 ;;
1031
1032 "-c")
Paul Bakker1f650922016-05-13 10:16:46 +01001033 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
Simon Butcher8e004102016-10-14 00:48:33 +01001034 fail "pattern '$2' MUST be present in the Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001035 return
1036 fi
1037 ;;
1038
1039 "-S")
Paul Bakker1f650922016-05-13 10:16:46 +01001040 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskine788ad332021-10-20 14:17:02 +02001041 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001042 fail "pattern '$2' MUST NOT be present in the Server output"
1043 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001044 return
1045 fi
1046 ;;
1047
1048 "-C")
Paul Bakker1f650922016-05-13 10:16:46 +01001049 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskine788ad332021-10-20 14:17:02 +02001050 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001051 fail "pattern '$2' MUST NOT be present in the Client output"
1052 fi
Simon Butcher8e004102016-10-14 00:48:33 +01001053 return
1054 fi
1055 ;;
1056
1057 # The filtering in the following two options (-u and -U) do the following
1058 # - ignore valgrind output
Antonin Décimo36e89b52019-01-23 15:24:37 +01001059 # - filter out everything but lines right after the pattern occurrences
Simon Butcher8e004102016-10-14 00:48:33 +01001060 # - keep one of each non-unique line
1061 # - count how many lines remain
1062 # A line with '--' will remain in the result from previous outputs, so the number of lines in the result will be 1
1063 # if there were no duplicates.
1064 "-U")
1065 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
1066 fail "lines following pattern '$2' must be unique in Server output"
1067 return
1068 fi
1069 ;;
1070
1071 "-u")
1072 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
1073 fail "lines following pattern '$2' must be unique in Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001074 return
1075 fi
1076 ;;
Andres Amaya Garcia93993de2017-09-06 15:38:07 +01001077 "-F")
1078 if ! $2 "$SRV_OUT"; then
1079 fail "function call to '$2' failed on Server output"
1080 return
1081 fi
1082 ;;
1083 "-f")
1084 if ! $2 "$CLI_OUT"; then
1085 fail "function call to '$2' failed on Client output"
1086 return
1087 fi
1088 ;;
Johan Pascal9bc50b02020-09-24 12:01:13 +02001089 "-g")
1090 if ! eval "$2 '$SRV_OUT' '$CLI_OUT'"; then
1091 fail "function call to '$2' failed on Server and Client output"
1092 return
1093 fi
1094 ;;
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001095
1096 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +02001097 echo "Unknown test: $1" >&2
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001098 exit 1
1099 esac
1100 shift 2
1101 done
1102
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001103 # check valgrind's results
1104 if [ "$MEMCHECK" -gt 0 ]; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001105 if is_polar "$SRV_CMD" && has_mem_err $SRV_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001106 fail "Server has memory errors"
1107 return
1108 fi
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001109 if is_polar "$CLI_CMD" && has_mem_err $CLI_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001110 fail "Client has memory errors"
1111 return
1112 fi
1113 fi
1114
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001115 # if we're here, everything is ok
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001116 outcome=PASS
Gilles Peskine236bf982021-10-19 16:25:10 +02001117}
1118
Gilles Peskine196d73b2021-10-19 16:35:35 +02001119# Run the current test case: start the server and if applicable the proxy, run
1120# the client, wait for all processes to finish or time out.
1121#
1122# Inputs:
1123# * $NAME: test case name
1124# * $CLI_CMD, $SRV_CMD, $PXY_CMD: commands to run
1125# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files to contain client/server/proxy logs
1126#
1127# Outputs:
1128# * $CLI_EXIT: client return code
1129# * $SRV_RET: server return code
1130do_run_test_once() {
1131 # run the commands
1132 if [ -n "$PXY_CMD" ]; then
1133 printf "# %s\n%s\n" "$NAME" "$PXY_CMD" > $PXY_OUT
1134 $PXY_CMD >> $PXY_OUT 2>&1 &
1135 PXY_PID=$!
1136 wait_proxy_start "$PXY_PORT" "$PXY_PID"
1137 fi
1138
1139 check_osrv_dtls
1140 printf '# %s\n%s\n' "$NAME" "$SRV_CMD" > $SRV_OUT
1141 provide_input | $SRV_CMD >> $SRV_OUT 2>&1 &
1142 SRV_PID=$!
1143 wait_server_start "$SRV_PORT" "$SRV_PID"
1144
1145 printf '# %s\n%s\n' "$NAME" "$CLI_CMD" > $CLI_OUT
1146 eval "$CLI_CMD" >> $CLI_OUT 2>&1 &
1147 wait_client_done
1148
1149 sleep 0.05
1150
1151 # terminate the server (and the proxy)
1152 kill $SRV_PID
1153 wait $SRV_PID
1154 SRV_RET=$?
1155
1156 if [ -n "$PXY_CMD" ]; then
1157 kill $PXY_PID >/dev/null 2>&1
1158 wait $PXY_PID
1159 fi
1160}
1161
Gilles Peskine236bf982021-10-19 16:25:10 +02001162# Usage: run_test name [-p proxy_cmd] srv_cmd cli_cmd cli_exit [option [...]]
1163# Options: -s pattern pattern that must be present in server output
1164# -c pattern pattern that must be present in client output
1165# -u pattern lines after pattern must be unique in client output
1166# -f call shell function on client output
1167# -S pattern pattern that must be absent in server output
1168# -C pattern pattern that must be absent in client output
1169# -U pattern lines after pattern must be unique in server output
1170# -F call shell function on server output
1171# -g call shell function on server and client output
1172run_test() {
1173 NAME="$1"
1174 shift 1
1175
1176 if is_excluded "$NAME"; then
1177 SKIP_NEXT="NO"
1178 # There was no request to run the test, so don't record its outcome.
1179 return
1180 fi
1181
1182 print_name "$NAME"
1183
1184 # Do we only run numbered tests?
1185 if [ -n "$RUN_TEST_NUMBER" ]; then
1186 case ",$RUN_TEST_NUMBER," in
1187 *",$TESTS,"*) :;;
1188 *) SKIP_NEXT="YES";;
1189 esac
1190 fi
1191
1192 # does this test use a proxy?
1193 if [ "X$1" = "X-p" ]; then
1194 PXY_CMD="$2"
1195 shift 2
1196 else
1197 PXY_CMD=""
1198 fi
1199
1200 # get commands and client output
1201 SRV_CMD="$1"
1202 CLI_CMD="$2"
1203 CLI_EXPECT="$3"
1204 shift 3
1205
1206 # Check if test uses files
1207 case "$SRV_CMD $CLI_CMD" in
1208 *data_files/*)
1209 requires_config_enabled MBEDTLS_FS_IO;;
1210 esac
1211
Gilles Peskine82a4ab22022-02-25 19:46:30 +01001212 # Check if the test uses DTLS.
1213 detect_dtls "$SRV_CMD"
1214 if [ "$DTLS" -eq 1 ]; then
1215 requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
1216 fi
1217
Gilles Peskinea165b5c2022-02-25 19:47:04 +01001218 # Check more TLS protocol features.
1219 case "$SRV_CMD $CLI_CMD" in
1220 *[-_\ =]tickets=[^0]*)
1221 requires_config_enabled MBEDTLS_SSL_TICKET_C;;
1222 esac
1223 case "$SRV_CMD $CLI_CMD" in
1224 *[-_\ =]alpn=*)
1225 requires_config_enabled MBEDTLS_SSL_ALPN;;
1226 esac
1227
Gilles Peskine236bf982021-10-19 16:25:10 +02001228 # If the client or serve requires a ciphersuite, check that it's enabled.
1229 maybe_requires_ciphersuite_enabled "$SRV_CMD" "$@"
1230 maybe_requires_ciphersuite_enabled "$CLI_CMD" "$@"
1231
Gilles Peskine6e86e542022-02-25 19:52:52 +01001232 # If we're in a PSK-only build and the test can be adapted to PSK, do that.
1233 maybe_adapt_for_psk "$@"
1234
Gilles Peskine236bf982021-10-19 16:25:10 +02001235 # should we skip?
1236 if [ "X$SKIP_NEXT" = "XYES" ]; then
1237 SKIP_NEXT="NO"
1238 record_outcome "SKIP"
1239 SKIPS=$(( $SKIPS + 1 ))
1240 return
1241 fi
1242
1243 analyze_test_commands "$@"
1244
1245 TIMES_LEFT=2
1246 while [ $TIMES_LEFT -gt 0 ]; do
1247 TIMES_LEFT=$(( $TIMES_LEFT - 1 ))
1248
Gilles Peskine196d73b2021-10-19 16:35:35 +02001249 do_run_test_once
Gilles Peskine236bf982021-10-19 16:25:10 +02001250
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001251 check_test_failure "$@"
1252 case $outcome in
1253 PASS) break;;
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001254 RETRY*) printf "$outcome ";;
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001255 FAIL) return;;
1256 esac
Gilles Peskine236bf982021-10-19 16:25:10 +02001257 done
1258
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001259 # If we get this far, the test case passed.
Gilles Peskine560280b2019-09-16 15:17:38 +02001260 record_outcome "PASS"
Paul Bakkeracaac852016-05-10 11:47:13 +01001261 if [ "$PRESERVE_LOGS" -gt 0 ]; then
1262 mv $SRV_OUT o-srv-${TESTS}.log
1263 mv $CLI_OUT o-cli-${TESTS}.log
Hanno Becker7be2e5b2018-08-20 12:21:35 +01001264 if [ -n "$PXY_CMD" ]; then
1265 mv $PXY_OUT o-pxy-${TESTS}.log
1266 fi
Paul Bakkeracaac852016-05-10 11:47:13 +01001267 fi
1268
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001269 rm -f $SRV_OUT $CLI_OUT $PXY_OUT
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001270}
1271
Hanno Becker9b5853c2018-11-16 17:28:40 +00001272run_test_psa() {
Jerry Yuab082902021-12-23 18:02:22 +08001273 requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker9b5853c2018-11-16 17:28:40 +00001274 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Hanno Beckere9420c22018-11-20 11:37:34 +00001275 run_test "PSA-supported ciphersuite: $1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00001276 "$P_SRV debug_level=3 force_version=tls12" \
1277 "$P_CLI debug_level=3 force_version=tls12 force_ciphersuite=$1" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001278 0 \
Andrzej Kurek683d77e2019-01-30 03:50:42 -05001279 -c "PSA calc verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001280 -c "calc PSA finished" \
Andrzej Kurek683d77e2019-01-30 03:50:42 -05001281 -s "PSA calc verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001282 -s "calc PSA finished" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001283 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001284 -c "Perform PSA-based ECDH computation."\
Andrzej Kureke85414e2019-01-15 05:23:59 -05001285 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001286 -S "error" \
1287 -C "error"
1288}
1289
Hanno Becker354e2482019-01-08 11:40:25 +00001290run_test_psa_force_curve() {
Jerry Yuab082902021-12-23 18:02:22 +08001291 requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker354e2482019-01-08 11:40:25 +00001292 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1293 run_test "PSA - ECDH with $1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00001294 "$P_SRV debug_level=4 force_version=tls12 curves=$1" \
1295 "$P_CLI debug_level=4 force_version=tls12 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 curves=$1" \
Hanno Becker354e2482019-01-08 11:40:25 +00001296 0 \
Hanno Becker28f78442019-02-18 16:47:50 +00001297 -c "PSA calc verify" \
1298 -c "calc PSA finished" \
Hanno Becker28f78442019-02-18 16:47:50 +00001299 -s "PSA calc verify" \
1300 -s "calc PSA finished" \
Hanno Becker354e2482019-01-08 11:40:25 +00001301 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001302 -c "Perform PSA-based ECDH computation."\
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001303 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001304 -S "error" \
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001305 -C "error"
1306}
1307
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001308# Test that the server's memory usage after a handshake is reduced when a client specifies
1309# a maximum fragment length.
1310# first argument ($1) is MFL for SSL client
1311# second argument ($2) is memory usage for SSL client with default MFL (16k)
1312run_test_memory_after_hanshake_with_mfl()
1313{
1314 # The test passes if the difference is around 2*(16k-MFL)
Gilles Peskine5b428d72020-08-26 21:52:23 +02001315 MEMORY_USAGE_LIMIT="$(( $2 - ( 2 * ( 16384 - $1 )) ))"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001316
1317 # Leave some margin for robustness
1318 MEMORY_USAGE_LIMIT="$(( ( MEMORY_USAGE_LIMIT * 110 ) / 100 ))"
1319
1320 run_test "Handshake memory usage (MFL $1)" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00001321 "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
1322 "$P_CLI debug_level=3 force_version=tls12 \
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001323 crt_file=data_files/server5.crt key_file=data_files/server5.key \
1324 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM max_frag_len=$1" \
1325 0 \
1326 -F "handshake_memory_check $MEMORY_USAGE_LIMIT"
1327}
1328
1329
1330# Test that the server's memory usage after a handshake is reduced when a client specifies
1331# different values of Maximum Fragment Length: default (16k), 4k, 2k, 1k and 512 bytes
1332run_tests_memory_after_hanshake()
1333{
1334 # all tests in this sequence requires the same configuration (see requires_config_enabled())
1335 SKIP_THIS_TESTS="$SKIP_NEXT"
1336
1337 # first test with default MFU is to get reference memory usage
1338 MEMORY_USAGE_MFL_16K=0
1339 run_test "Handshake memory usage initial (MFL 16384 - default)" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00001340 "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
1341 "$P_CLI debug_level=3 force_version=tls12 \
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001342 crt_file=data_files/server5.crt key_file=data_files/server5.key \
1343 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM" \
1344 0 \
1345 -F "handshake_memory_get MEMORY_USAGE_MFL_16K"
1346
1347 SKIP_NEXT="$SKIP_THIS_TESTS"
1348 run_test_memory_after_hanshake_with_mfl 4096 "$MEMORY_USAGE_MFL_16K"
1349
1350 SKIP_NEXT="$SKIP_THIS_TESTS"
1351 run_test_memory_after_hanshake_with_mfl 2048 "$MEMORY_USAGE_MFL_16K"
1352
1353 SKIP_NEXT="$SKIP_THIS_TESTS"
1354 run_test_memory_after_hanshake_with_mfl 1024 "$MEMORY_USAGE_MFL_16K"
1355
1356 SKIP_NEXT="$SKIP_THIS_TESTS"
1357 run_test_memory_after_hanshake_with_mfl 512 "$MEMORY_USAGE_MFL_16K"
1358}
1359
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001360cleanup() {
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001361 rm -f $CLI_OUT $SRV_OUT $PXY_OUT $SESSION
Piotr Nowicki3de298f2020-04-16 14:35:19 +02001362 rm -f context_srv.txt
1363 rm -f context_cli.txt
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001364 test -n "${SRV_PID:-}" && kill $SRV_PID >/dev/null 2>&1
1365 test -n "${PXY_PID:-}" && kill $PXY_PID >/dev/null 2>&1
1366 test -n "${CLI_PID:-}" && kill $CLI_PID >/dev/null 2>&1
1367 test -n "${DOG_PID:-}" && kill $DOG_PID >/dev/null 2>&1
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001368 exit 1
1369}
1370
Manuel Pégourié-Gonnard9dea8bd2014-02-26 18:21:02 +01001371#
1372# MAIN
1373#
1374
Manuel Pégourié-Gonnard913030c2014-03-28 10:12:38 +01001375get_options "$@"
1376
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02001377# Optimize filters: if $FILTER and $EXCLUDE can be expressed as shell
1378# patterns rather than regular expressions, use a case statement instead
1379# of calling grep. To keep the optimizer simple, it is incomplete and only
1380# detects simple cases: plain substring, everything, nothing.
1381#
1382# As an exception, the character '.' is treated as an ordinary character
1383# if it is the only special character in the string. This is because it's
1384# rare to need "any one character", but needing a literal '.' is common
1385# (e.g. '-f "DTLS 1.2"').
1386need_grep=
1387case "$FILTER" in
1388 '^$') simple_filter=;;
1389 '.*') simple_filter='*';;
Gilles Peskineb09e0012020-09-29 23:48:39 +02001390 *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02001391 need_grep=1;;
1392 *) # No regexp or shell-pattern special character
1393 simple_filter="*$FILTER*";;
1394esac
1395case "$EXCLUDE" in
1396 '^$') simple_exclude=;;
1397 '.*') simple_exclude='*';;
Gilles Peskineb09e0012020-09-29 23:48:39 +02001398 *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02001399 need_grep=1;;
1400 *) # No regexp or shell-pattern special character
1401 simple_exclude="*$EXCLUDE*";;
1402esac
1403if [ -n "$need_grep" ]; then
1404 is_excluded () {
1405 ! echo "$1" | grep "$FILTER" | grep -q -v "$EXCLUDE"
1406 }
1407else
1408 is_excluded () {
1409 case "$1" in
1410 $simple_exclude) true;;
1411 $simple_filter) false;;
1412 *) true;;
1413 esac
1414 }
1415fi
1416
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01001417# sanity checks, avoid an avalanche of errors
Hanno Becker4ac73e72017-10-23 15:27:37 +01001418P_SRV_BIN="${P_SRV%%[ ]*}"
1419P_CLI_BIN="${P_CLI%%[ ]*}"
1420P_PXY_BIN="${P_PXY%%[ ]*}"
Hanno Becker17c04932017-10-10 14:44:53 +01001421if [ ! -x "$P_SRV_BIN" ]; then
1422 echo "Command '$P_SRV_BIN' is not an executable file"
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01001423 exit 1
1424fi
Hanno Becker17c04932017-10-10 14:44:53 +01001425if [ ! -x "$P_CLI_BIN" ]; then
1426 echo "Command '$P_CLI_BIN' is not an executable file"
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01001427 exit 1
1428fi
Hanno Becker17c04932017-10-10 14:44:53 +01001429if [ ! -x "$P_PXY_BIN" ]; then
1430 echo "Command '$P_PXY_BIN' is not an executable file"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001431 exit 1
1432fi
Simon Butcher3c0d7b82016-05-23 11:13:17 +01001433if [ "$MEMCHECK" -gt 0 ]; then
1434 if which valgrind >/dev/null 2>&1; then :; else
1435 echo "Memcheck not possible. Valgrind not found"
1436 exit 1
1437 fi
1438fi
Manuel Pégourié-Gonnard74faf3c2014-03-13 18:47:44 +01001439if which $OPENSSL_CMD >/dev/null 2>&1; then :; else
1440 echo "Command '$OPENSSL_CMD' not found"
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01001441 exit 1
1442fi
1443
Manuel Pégourié-Gonnard32f8f4d2014-05-29 11:31:20 +02001444# used by watchdog
1445MAIN_PID="$$"
1446
Manuel Pégourié-Gonnard0d225da2018-01-22 10:22:09 +01001447# We use somewhat arbitrary delays for tests:
1448# - how long do we wait for the server to start (when lsof not available)?
1449# - how long do we allow for the client to finish?
1450# (not to check performance, just to avoid waiting indefinitely)
1451# Things are slower with valgrind, so give extra time here.
1452#
1453# Note: without lsof, there is a trade-off between the running time of this
1454# script and the risk of spurious errors because we didn't wait long enough.
1455# The watchdog delay on the other hand doesn't affect normal running time of
1456# the script, only the case where a client or server gets stuck.
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +02001457if [ "$MEMCHECK" -gt 0 ]; then
Manuel Pégourié-Gonnard0d225da2018-01-22 10:22:09 +01001458 START_DELAY=6
1459 DOG_DELAY=60
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +02001460else
Manuel Pégourié-Gonnard0d225da2018-01-22 10:22:09 +01001461 START_DELAY=2
1462 DOG_DELAY=20
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +02001463fi
Manuel Pégourié-Gonnard0d225da2018-01-22 10:22:09 +01001464
1465# some particular tests need more time:
1466# - for the client, we multiply the usual watchdog limit by a factor
1467# - for the server, we sleep for a number of seconds after the client exits
1468# see client_need_more_time() and server_needs_more_time()
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +02001469CLI_DELAY_FACTOR=1
Janos Follath74537a62016-09-02 13:45:28 +01001470SRV_DELAY_SECONDS=0
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +02001471
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02001472# fix commands to use this port, force IPv4 while at it
Manuel Pégourié-Gonnard0af1ba32015-01-21 11:44:33 +00001473# +SRV_PORT will be replaced by either $SRV_PORT or $PXY_PORT later
Paul Elliott04217152021-10-12 16:10:37 +01001474# Note: Using 'localhost' rather than 127.0.0.1 here is unwise, as on many
1475# machines that will resolve to ::1, and we don't want ipv6 here.
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001476P_SRV="$P_SRV server_addr=127.0.0.1 server_port=$SRV_PORT"
1477P_CLI="$P_CLI server_addr=127.0.0.1 server_port=+SRV_PORT"
Andres AGf04f54d2016-10-10 15:46:20 +01001478P_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"}"
Gilles Peskine96f5bae2021-04-01 14:00:11 +02001479O_SRV="$O_SRV -accept $SRV_PORT"
Paul Elliott04217152021-10-12 16:10:37 +01001480O_CLI="$O_CLI -connect 127.0.0.1:+SRV_PORT"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001481G_SRV="$G_SRV -p $SRV_PORT"
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02001482G_CLI="$G_CLI -p +SRV_PORT"
Manuel Pégourié-Gonnard8066b812014-05-28 22:59:30 +02001483
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02001484if [ -n "${OPENSSL_LEGACY:-}" ]; then
1485 O_LEGACY_SRV="$O_LEGACY_SRV -accept $SRV_PORT -dhparam data_files/dhparams.pem"
Paul Elliott04217152021-10-12 16:10:37 +01001486 O_LEGACY_CLI="$O_LEGACY_CLI -connect 127.0.0.1:+SRV_PORT"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02001487fi
1488
Jerry Yued2ef2d2021-08-19 18:11:43 +08001489if [ -n "${OPENSSL_NEXT:-}" ]; then
1490 O_NEXT_SRV="$O_NEXT_SRV -accept $SRV_PORT"
Jerry Yu305bfc32021-11-24 16:04:47 +08001491 O_NEXT_SRV_NO_CERT="$O_NEXT_SRV_NO_CERT -accept $SRV_PORT"
Paul Elliott04217152021-10-12 16:10:37 +01001492 O_NEXT_CLI="$O_NEXT_CLI -connect 127.0.0.1:+SRV_PORT"
Jerry Yued2ef2d2021-08-19 18:11:43 +08001493fi
1494
Hanno Becker58e9dc32018-08-17 15:53:21 +01001495if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02001496 G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT"
Jerry Yu305bfc32021-11-24 16:04:47 +08001497 G_NEXT_SRV_NO_CERT="$G_NEXT_SRV_NO_CERT -p $SRV_PORT"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02001498fi
1499
Hanno Becker58e9dc32018-08-17 15:53:21 +01001500if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02001501 G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02001502fi
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01001503
Gilles Peskine62469d92017-05-10 10:13:59 +02001504# Allow SHA-1, because many of our test certificates use it
1505P_SRV="$P_SRV allow_sha1=1"
1506P_CLI="$P_CLI allow_sha1=1"
1507
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001508# Also pick a unique name for intermediate files
1509SRV_OUT="srv_out.$$"
1510CLI_OUT="cli_out.$$"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001511PXY_OUT="pxy_out.$$"
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001512SESSION="session.$$"
1513
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +02001514SKIP_NEXT="NO"
1515
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01001516trap cleanup INT TERM HUP
1517
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001518# Basic test
1519
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001520# Checks that:
1521# - things work with all ciphersuites active (used with config-full in all.sh)
Gilles Peskine799eee62021-06-02 22:14:15 +02001522# - the expected parameters are selected
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001523# ("signature_algorithm ext: 6" means SHA-512 (highest common hash))
Jerry Yuab082902021-12-23 18:02:22 +08001524requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine35615262022-02-25 19:50:38 +01001525requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001526run_test "Default" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001527 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001528 "$P_CLI" \
1529 0 \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001530 -s "Protocol is TLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001531 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001532 -s "client hello v3, signature_algorithm ext: 6" \
Gilles Peskine799eee62021-06-02 22:14:15 +02001533 -s "ECDHE curve: x25519" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001534 -S "error" \
1535 -C "error"
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001536
Jerry Yuab082902021-12-23 18:02:22 +08001537requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine35615262022-02-25 19:50:38 +01001538requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00001539run_test "Default, DTLS" \
1540 "$P_SRV dtls=1" \
1541 "$P_CLI dtls=1" \
1542 0 \
1543 -s "Protocol is DTLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001544 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256"
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00001545
Jerry Yuab082902021-12-23 18:02:22 +08001546requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker721f7c12020-08-17 12:17:32 +01001547run_test "TLS client auth: required" \
1548 "$P_SRV auth_mode=required" \
1549 "$P_CLI" \
1550 0 \
1551 -s "Verifying peer X.509 certificate... ok"
1552
Jerry Yuab082902021-12-23 18:02:22 +08001553requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Glenn Strauss6eef5632022-01-23 08:37:02 -05001554run_test "key size: TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1555 "$P_SRV" \
1556 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1557 0 \
1558 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1559 -c "Key size is 256"
1560
Jerry Yuab082902021-12-23 18:02:22 +08001561requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Glenn Strauss6eef5632022-01-23 08:37:02 -05001562run_test "key size: TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1563 "$P_SRV" \
1564 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1565 0 \
1566 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1567 -c "Key size is 128"
1568
Jerry Yuab082902021-12-23 18:02:22 +08001569requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker2f54a3c2020-08-17 12:14:06 +01001570requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1571requires_config_enabled MBEDTLS_ECDSA_C
1572requires_config_enabled MBEDTLS_SHA256_C
1573run_test "TLS: password protected client key" \
1574 "$P_SRV auth_mode=required" \
1575 "$P_CLI crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
1576 0
1577
Jerry Yuab082902021-12-23 18:02:22 +08001578requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker2f54a3c2020-08-17 12:14:06 +01001579requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1580requires_config_enabled MBEDTLS_ECDSA_C
1581requires_config_enabled MBEDTLS_SHA256_C
1582run_test "TLS: password protected server key" \
1583 "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
1584 "$P_CLI" \
1585 0
1586
Jerry Yuab082902021-12-23 18:02:22 +08001587requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker2f54a3c2020-08-17 12:14:06 +01001588requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1589requires_config_enabled MBEDTLS_ECDSA_C
1590requires_config_enabled MBEDTLS_RSA_C
1591requires_config_enabled MBEDTLS_SHA256_C
1592run_test "TLS: password protected server key, two certificates" \
1593 "$P_SRV \
1594 key_file=data_files/server5.key.enc key_pwd=PolarSSLTest crt_file=data_files/server5.crt \
1595 key_file2=data_files/server2.key.enc key_pwd2=PolarSSLTest crt_file2=data_files/server2.crt" \
1596 "$P_CLI" \
1597 0
1598
Jerry Yuab082902021-12-23 18:02:22 +08001599requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00001600requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
1601run_test "CA callback on client" \
1602 "$P_SRV debug_level=3" \
1603 "$P_CLI ca_callback=1 debug_level=3 " \
1604 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01001605 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00001606 -S "error" \
1607 -C "error"
1608
Jerry Yuab082902021-12-23 18:02:22 +08001609requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00001610requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
1611requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1612requires_config_enabled MBEDTLS_ECDSA_C
1613requires_config_enabled MBEDTLS_SHA256_C
1614run_test "CA callback on server" \
1615 "$P_SRV auth_mode=required" \
1616 "$P_CLI ca_callback=1 debug_level=3 crt_file=data_files/server5.crt \
1617 key_file=data_files/server5.key" \
1618 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01001619 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00001620 -s "Verifying peer X.509 certificate... ok" \
1621 -S "error" \
1622 -C "error"
1623
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001624# Test using an opaque private key for client authentication
Jerry Yuab082902021-12-23 18:02:22 +08001625requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001626requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1627requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1628requires_config_enabled MBEDTLS_ECDSA_C
1629requires_config_enabled MBEDTLS_SHA256_C
1630run_test "Opaque key for client authentication" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001631 "$P_SRV auth_mode=required crt_file=data_files/server5.crt \
1632 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001633 "$P_CLI key_opaque=1 crt_file=data_files/server5.crt \
1634 key_file=data_files/server5.key" \
1635 0 \
1636 -c "key type: Opaque" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001637 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001638 -s "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001639 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001640 -S "error" \
1641 -C "error"
1642
Przemyslaw Stekiel0483e3d2021-10-04 11:13:22 +02001643# Test using an opaque private key for server authentication
Jerry Yuab082902021-12-23 18:02:22 +08001644requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Przemyslaw Stekiel0483e3d2021-10-04 11:13:22 +02001645requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1646requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1647requires_config_enabled MBEDTLS_ECDSA_C
1648requires_config_enabled MBEDTLS_SHA256_C
1649run_test "Opaque key for server authentication" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001650 "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server5.crt \
1651 key_file=data_files/server5.key" \
Przemyslaw Stekiel0483e3d2021-10-04 11:13:22 +02001652 "$P_CLI crt_file=data_files/server5.crt \
1653 key_file=data_files/server5.key" \
1654 0 \
1655 -c "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001656 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Gilles Peskine05bf89d2022-01-25 17:50:25 +01001657 -s "key types: Opaque, none" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001658 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Przemyslaw Stekiel0483e3d2021-10-04 11:13:22 +02001659 -S "error" \
1660 -C "error"
1661
Przemyslaw Stekiel575f23c2021-10-06 11:31:49 +02001662# Test using an opaque private key for client/server authentication
Jerry Yuab082902021-12-23 18:02:22 +08001663requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Przemyslaw Stekiel575f23c2021-10-06 11:31:49 +02001664requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1665requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1666requires_config_enabled MBEDTLS_ECDSA_C
1667requires_config_enabled MBEDTLS_SHA256_C
1668run_test "Opaque key for client/server authentication" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001669 "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server5.crt \
1670 key_file=data_files/server5.key" \
Przemyslaw Stekiel575f23c2021-10-06 11:31:49 +02001671 "$P_CLI key_opaque=1 crt_file=data_files/server5.crt \
1672 key_file=data_files/server5.key" \
1673 0 \
1674 -c "key type: Opaque" \
1675 -c "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001676 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Gilles Peskine05bf89d2022-01-25 17:50:25 +01001677 -s "key types: Opaque, none" \
Przemyslaw Stekiel575f23c2021-10-06 11:31:49 +02001678 -s "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02001679 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Simon Butcher8e004102016-10-14 00:48:33 +01001680 -S "error" \
1681 -C "error"
1682
Hanno Becker9b5853c2018-11-16 17:28:40 +00001683# Test ciphersuites which we expect to be fully supported by PSA Crypto
1684# and check that we don't fall back to Mbed TLS' internal crypto primitives.
1685run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM
1686run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8
1687run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM
1688run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8
1689run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
1690run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
1691run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA
1692run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256
1693run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384
1694
Hanno Becker354e2482019-01-08 11:40:25 +00001695requires_config_enabled MBEDTLS_ECP_DP_SECP521R1_ENABLED
1696run_test_psa_force_curve "secp521r1"
1697requires_config_enabled MBEDTLS_ECP_DP_BP512R1_ENABLED
1698run_test_psa_force_curve "brainpoolP512r1"
1699requires_config_enabled MBEDTLS_ECP_DP_SECP384R1_ENABLED
1700run_test_psa_force_curve "secp384r1"
1701requires_config_enabled MBEDTLS_ECP_DP_BP384R1_ENABLED
1702run_test_psa_force_curve "brainpoolP384r1"
1703requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
1704run_test_psa_force_curve "secp256r1"
1705requires_config_enabled MBEDTLS_ECP_DP_SECP256K1_ENABLED
1706run_test_psa_force_curve "secp256k1"
1707requires_config_enabled MBEDTLS_ECP_DP_BP256R1_ENABLED
1708run_test_psa_force_curve "brainpoolP256r1"
1709requires_config_enabled MBEDTLS_ECP_DP_SECP224R1_ENABLED
1710run_test_psa_force_curve "secp224r1"
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01001711## SECP224K1 is buggy via the PSA API
1712## (https://github.com/ARMmbed/mbedtls/issues/3541),
1713## so it is disabled in PSA even when it's enabled in Mbed TLS.
1714## The proper dependency would be on PSA_WANT_ECC_SECP_K1_224 but
1715## dependencies on PSA symbols in ssl-opt.sh are not implemented yet.
1716#requires_config_enabled MBEDTLS_ECP_DP_SECP224K1_ENABLED
1717#run_test_psa_force_curve "secp224k1"
Hanno Becker354e2482019-01-08 11:40:25 +00001718requires_config_enabled MBEDTLS_ECP_DP_SECP192R1_ENABLED
1719run_test_psa_force_curve "secp192r1"
1720requires_config_enabled MBEDTLS_ECP_DP_SECP192K1_ENABLED
1721run_test_psa_force_curve "secp192k1"
1722
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001723# Test current time in ServerHello
Jerry Yuab082902021-12-23 18:02:22 +08001724requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001725requires_config_enabled MBEDTLS_HAVE_TIME
1726run_test "ServerHello contains gmt_unix_time" \
1727 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01001728 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001729 0 \
1730 -f "check_server_hello_time" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01001731 -F "check_server_hello_time"
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001732
1733# Test for uniqueness of IVs in AEAD ciphersuites
Jerry Yuab082902021-12-23 18:02:22 +08001734requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01001735run_test "Unique IV in GCM" \
1736 "$P_SRV exchanges=20 debug_level=4" \
1737 "$P_CLI exchanges=20 debug_level=4 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
1738 0 \
1739 -u "IV used" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001740 -U "IV used"
1741
Janos Follathee11be62019-04-04 12:03:30 +01001742# Tests for certificate verification callback
Jerry Yuab082902021-12-23 18:02:22 +08001743requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follathee11be62019-04-04 12:03:30 +01001744run_test "Configuration-specific CRT verification callback" \
1745 "$P_SRV debug_level=3" \
1746 "$P_CLI context_crt_cb=0 debug_level=3" \
1747 0 \
Janos Follathee11be62019-04-04 12:03:30 +01001748 -S "error" \
1749 -c "Verify requested for " \
1750 -c "Use configuration-specific verification callback" \
1751 -C "Use context-specific verification callback" \
1752 -C "error"
1753
Jerry Yuab082902021-12-23 18:02:22 +08001754requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerefb440a2019-04-03 13:04:33 +01001755run_test "Context-specific CRT verification callback" \
1756 "$P_SRV debug_level=3" \
1757 "$P_CLI context_crt_cb=1 debug_level=3" \
1758 0 \
Hanno Beckerefb440a2019-04-03 13:04:33 +01001759 -S "error" \
Janos Follathee11be62019-04-04 12:03:30 +01001760 -c "Verify requested for " \
1761 -c "Use context-specific verification callback" \
1762 -C "Use configuration-specific verification callback" \
Hanno Beckerefb440a2019-04-03 13:04:33 +01001763 -C "error"
1764
Gilles Peskinebc70a182017-05-09 15:59:24 +02001765# Tests for SHA-1 support
Jerry Yuab082902021-12-23 18:02:22 +08001766requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinebc70a182017-05-09 15:59:24 +02001767run_test "SHA-1 forbidden by default in server certificate" \
1768 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
1769 "$P_CLI debug_level=2 allow_sha1=0" \
1770 1 \
1771 -c "The certificate is signed with an unacceptable hash"
1772
Jerry Yuab082902021-12-23 18:02:22 +08001773requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinebc70a182017-05-09 15:59:24 +02001774run_test "SHA-1 explicitly allowed in server certificate" \
1775 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
1776 "$P_CLI allow_sha1=1" \
1777 0
1778
Jerry Yuab082902021-12-23 18:02:22 +08001779requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinebc70a182017-05-09 15:59:24 +02001780run_test "SHA-256 allowed by default in server certificate" \
1781 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2-sha256.crt" \
1782 "$P_CLI allow_sha1=0" \
1783 0
1784
Jerry Yuab082902021-12-23 18:02:22 +08001785requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinebc70a182017-05-09 15:59:24 +02001786run_test "SHA-1 forbidden by default in client certificate" \
1787 "$P_SRV auth_mode=required allow_sha1=0" \
1788 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
1789 1 \
1790 -s "The certificate is signed with an unacceptable hash"
1791
Jerry Yuab082902021-12-23 18:02:22 +08001792requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinebc70a182017-05-09 15:59:24 +02001793run_test "SHA-1 explicitly allowed in client certificate" \
1794 "$P_SRV auth_mode=required allow_sha1=1" \
1795 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
1796 0
1797
Jerry Yuab082902021-12-23 18:02:22 +08001798requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinebc70a182017-05-09 15:59:24 +02001799run_test "SHA-256 allowed by default in client certificate" \
1800 "$P_SRV auth_mode=required allow_sha1=0" \
1801 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha256.crt" \
1802 0
1803
Hanno Becker932064d2021-07-24 06:45:50 +01001804# Dummy TLS 1.3 test
1805# Currently only checking that passing TLS 1.3 key exchange modes to
1806# ssl_client2/ssl_server2 example programs works.
Jerry Yuc10f6b42021-12-23 17:16:42 +08001807requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron6f135e12021-12-08 16:57:54 +01001808requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker932064d2021-07-24 06:45:50 +01001809run_test "TLS 1.3, key exchange mode parameter passing: PSK only" \
Jerry Yuc10f6b42021-12-23 17:16:42 +08001810 "$P_SRV tls13_kex_modes=psk debug_level=4" \
1811 "$P_CLI tls13_kex_modes=psk debug_level=4" \
Hanno Becker932064d2021-07-24 06:45:50 +01001812 0
Jerry Yuc10f6b42021-12-23 17:16:42 +08001813requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron6f135e12021-12-08 16:57:54 +01001814requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker932064d2021-07-24 06:45:50 +01001815run_test "TLS 1.3, key exchange mode parameter passing: PSK-ephemeral only" \
1816 "$P_SRV tls13_kex_modes=psk_ephemeral" \
1817 "$P_CLI tls13_kex_modes=psk_ephemeral" \
1818 0
Jerry Yuc10f6b42021-12-23 17:16:42 +08001819requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron6f135e12021-12-08 16:57:54 +01001820requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker932064d2021-07-24 06:45:50 +01001821run_test "TLS 1.3, key exchange mode parameter passing: Pure-ephemeral only" \
Jerry Yu31c01d32021-08-24 10:49:06 +08001822 "$P_SRV tls13_kex_modes=ephemeral" \
1823 "$P_CLI tls13_kex_modes=ephemeral" \
Hanno Becker932064d2021-07-24 06:45:50 +01001824 0
Jerry Yuc10f6b42021-12-23 17:16:42 +08001825requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron6f135e12021-12-08 16:57:54 +01001826requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker932064d2021-07-24 06:45:50 +01001827run_test "TLS 1.3, key exchange mode parameter passing: All ephemeral" \
1828 "$P_SRV tls13_kex_modes=ephemeral_all" \
1829 "$P_CLI tls13_kex_modes=ephemeral_all" \
1830 0
Jerry Yuc10f6b42021-12-23 17:16:42 +08001831requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron6f135e12021-12-08 16:57:54 +01001832requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker932064d2021-07-24 06:45:50 +01001833run_test "TLS 1.3, key exchange mode parameter passing: All PSK" \
1834 "$P_SRV tls13_kex_modes=psk_all" \
1835 "$P_CLI tls13_kex_modes=psk_all" \
1836 0
Jerry Yuc10f6b42021-12-23 17:16:42 +08001837requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron6f135e12021-12-08 16:57:54 +01001838requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Hanno Becker932064d2021-07-24 06:45:50 +01001839run_test "TLS 1.3, key exchange mode parameter passing: All" \
1840 "$P_SRV tls13_kex_modes=all" \
1841 "$P_CLI tls13_kex_modes=all" \
1842 0
1843
Hanno Becker7ae8a762018-08-14 15:43:35 +01001844# Tests for datagram packing
Jerry Yuab082902021-12-23 18:02:22 +08001845requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01001846run_test "DTLS: multiple records in same datagram, client and server" \
1847 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
1848 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
1849 0 \
1850 -c "next record in same datagram" \
1851 -s "next record in same datagram"
1852
Jerry Yuab082902021-12-23 18:02:22 +08001853requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01001854run_test "DTLS: multiple records in same datagram, client only" \
1855 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
1856 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
1857 0 \
1858 -s "next record in same datagram" \
1859 -C "next record in same datagram"
1860
Jerry Yuab082902021-12-23 18:02:22 +08001861requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01001862run_test "DTLS: multiple records in same datagram, server only" \
1863 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
1864 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
1865 0 \
1866 -S "next record in same datagram" \
1867 -c "next record in same datagram"
1868
Jerry Yuab082902021-12-23 18:02:22 +08001869requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01001870run_test "DTLS: multiple records in same datagram, neither client nor server" \
1871 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
1872 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
1873 0 \
1874 -S "next record in same datagram" \
1875 -C "next record in same datagram"
1876
Jarno Lamsa2937d812019-06-04 11:33:23 +03001877# Tests for Context serialization
1878
Jerry Yuab082902021-12-23 18:02:22 +08001879requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsa2937d812019-06-04 11:33:23 +03001880requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001881run_test "Context serialization, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02001882 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001883 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1884 0 \
1885 -c "Deserializing connection..." \
1886 -S "Deserializing connection..."
1887
Jerry Yuab082902021-12-23 18:02:22 +08001888requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001889requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1890run_test "Context serialization, client serializes, ChaChaPoly" \
1891 "$P_SRV dtls=1 serialize=0 exchanges=2" \
1892 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1893 0 \
1894 -c "Deserializing connection..." \
1895 -S "Deserializing connection..."
1896
Jerry Yuab082902021-12-23 18:02:22 +08001897requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001898requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1899run_test "Context serialization, client serializes, GCM" \
1900 "$P_SRV dtls=1 serialize=0 exchanges=2" \
1901 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001902 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03001903 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001904 -S "Deserializing connection..."
1905
Jerry Yuab082902021-12-23 18:02:22 +08001906requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsa2937d812019-06-04 11:33:23 +03001907requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01001908requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
1909run_test "Context serialization, client serializes, with CID" \
1910 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
1911 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
1912 0 \
1913 -c "Deserializing connection..." \
1914 -S "Deserializing connection..."
1915
Jerry Yuab082902021-12-23 18:02:22 +08001916requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1b18fd32019-08-30 11:18:59 +01001917requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001918run_test "Context serialization, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02001919 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001920 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1921 0 \
1922 -C "Deserializing connection..." \
1923 -s "Deserializing connection..."
1924
Jerry Yuab082902021-12-23 18:02:22 +08001925requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001926requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1927run_test "Context serialization, server serializes, ChaChaPoly" \
1928 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1929 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1930 0 \
1931 -C "Deserializing connection..." \
1932 -s "Deserializing connection..."
1933
Jerry Yuab082902021-12-23 18:02:22 +08001934requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001935requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1936run_test "Context serialization, server serializes, GCM" \
1937 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1938 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001939 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03001940 -C "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001941 -s "Deserializing connection..."
1942
Jerry Yuab082902021-12-23 18:02:22 +08001943requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsa2937d812019-06-04 11:33:23 +03001944requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01001945requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
1946run_test "Context serialization, server serializes, with CID" \
1947 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
1948 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
1949 0 \
1950 -C "Deserializing connection..." \
1951 -s "Deserializing connection..."
1952
Jerry Yuab082902021-12-23 18:02:22 +08001953requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1b18fd32019-08-30 11:18:59 +01001954requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001955run_test "Context serialization, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02001956 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001957 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1958 0 \
1959 -c "Deserializing connection..." \
1960 -s "Deserializing connection..."
1961
Jerry Yuab082902021-12-23 18:02:22 +08001962requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001963requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1964run_test "Context serialization, both serialize, ChaChaPoly" \
1965 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1966 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1967 0 \
1968 -c "Deserializing connection..." \
1969 -s "Deserializing connection..."
1970
Jerry Yuab082902021-12-23 18:02:22 +08001971requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001972requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1973run_test "Context serialization, both serialize, GCM" \
1974 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1975 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001976 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03001977 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001978 -s "Deserializing connection..."
1979
Jerry Yuab082902021-12-23 18:02:22 +08001980requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsac2376f02019-06-06 10:44:14 +03001981requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01001982requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
1983run_test "Context serialization, both serialize, with CID" \
1984 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
1985 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
1986 0 \
1987 -c "Deserializing connection..." \
1988 -s "Deserializing connection..."
1989
Jerry Yuab082902021-12-23 18:02:22 +08001990requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1b18fd32019-08-30 11:18:59 +01001991requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001992run_test "Context serialization, re-init, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02001993 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001994 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1995 0 \
1996 -c "Deserializing connection..." \
1997 -S "Deserializing connection..."
1998
Jerry Yuab082902021-12-23 18:02:22 +08001999requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002000requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2001run_test "Context serialization, re-init, client serializes, ChaChaPoly" \
2002 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2003 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2004 0 \
2005 -c "Deserializing connection..." \
2006 -S "Deserializing connection..."
2007
Jerry Yuab082902021-12-23 18:02:22 +08002008requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002009requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2010run_test "Context serialization, re-init, client serializes, GCM" \
2011 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2012 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002013 0 \
2014 -c "Deserializing connection..." \
2015 -S "Deserializing connection..."
2016
Jerry Yuab082902021-12-23 18:02:22 +08002017requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsac2376f02019-06-06 10:44:14 +03002018requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002019requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2020run_test "Context serialization, re-init, client serializes, with CID" \
2021 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
2022 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2023 0 \
2024 -c "Deserializing connection..." \
2025 -S "Deserializing connection..."
2026
Jerry Yuab082902021-12-23 18:02:22 +08002027requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1b18fd32019-08-30 11:18:59 +01002028requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002029run_test "Context serialization, re-init, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002030 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002031 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2032 0 \
2033 -C "Deserializing connection..." \
2034 -s "Deserializing connection..."
2035
Jerry Yuab082902021-12-23 18:02:22 +08002036requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002037requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2038run_test "Context serialization, re-init, server serializes, ChaChaPoly" \
2039 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2040 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2041 0 \
2042 -C "Deserializing connection..." \
2043 -s "Deserializing connection..."
2044
Jerry Yuab082902021-12-23 18:02:22 +08002045requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002046requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2047run_test "Context serialization, re-init, server serializes, GCM" \
2048 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2049 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002050 0 \
2051 -C "Deserializing connection..." \
2052 -s "Deserializing connection..."
2053
Jerry Yuab082902021-12-23 18:02:22 +08002054requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsac2376f02019-06-06 10:44:14 +03002055requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002056requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2057run_test "Context serialization, re-init, server serializes, with CID" \
2058 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2059 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
2060 0 \
2061 -C "Deserializing connection..." \
2062 -s "Deserializing connection..."
2063
Jerry Yuab082902021-12-23 18:02:22 +08002064requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1b18fd32019-08-30 11:18:59 +01002065requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002066run_test "Context serialization, re-init, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002067 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002068 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2069 0 \
2070 -c "Deserializing connection..." \
2071 -s "Deserializing connection..."
2072
Jerry Yuab082902021-12-23 18:02:22 +08002073requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002074requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2075run_test "Context serialization, re-init, both serialize, ChaChaPoly" \
2076 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2077 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2078 0 \
2079 -c "Deserializing connection..." \
2080 -s "Deserializing connection..."
2081
Jerry Yuab082902021-12-23 18:02:22 +08002082requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002083requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2084run_test "Context serialization, re-init, both serialize, GCM" \
2085 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2086 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002087 0 \
2088 -c "Deserializing connection..." \
2089 -s "Deserializing connection..."
2090
Jerry Yuab082902021-12-23 18:02:22 +08002091requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1b18fd32019-08-30 11:18:59 +01002092requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2093requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2094run_test "Context serialization, re-init, both serialize, with CID" \
2095 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2096 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2097 0 \
2098 -c "Deserializing connection..." \
2099 -s "Deserializing connection..."
2100
Jerry Yuab082902021-12-23 18:02:22 +08002101requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Piotr Nowicki3de298f2020-04-16 14:35:19 +02002102requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2103run_test "Saving the serialized context to a file" \
2104 "$P_SRV dtls=1 serialize=1 context_file=context_srv.txt" \
2105 "$P_CLI dtls=1 serialize=1 context_file=context_cli.txt" \
2106 0 \
2107 -s "Save serialized context to a file... ok" \
2108 -c "Save serialized context to a file... ok"
2109rm -f context_srv.txt
2110rm -f context_cli.txt
2111
Hanno Becker7cf463e2019-04-09 18:08:47 +01002112# Tests for DTLS Connection ID extension
2113
Hanno Becker7cf463e2019-04-09 18:08:47 +01002114# So far, the CID API isn't implemented, so we can't
2115# grep for output witnessing its use. This needs to be
2116# changed once the CID extension is implemented.
2117
Jerry Yuab082902021-12-23 18:02:22 +08002118requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002119requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002120run_test "Connection ID: Cli enabled, Srv disabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002121 "$P_SRV debug_level=3 dtls=1 cid=0" \
2122 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2123 0 \
2124 -s "Disable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002125 -s "found CID extension" \
2126 -s "Client sent CID extension, but CID disabled" \
Hanno Becker6b78c832019-04-25 17:01:43 +01002127 -c "Enable use of CID extension." \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002128 -c "client hello, adding CID extension" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002129 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002130 -C "found CID extension" \
2131 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002132 -C "Copy CIDs into SSL transform" \
2133 -c "Use of Connection ID was rejected by the server"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002134
Jerry Yuab082902021-12-23 18:02:22 +08002135requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002136requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002137run_test "Connection ID: Cli disabled, Srv enabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002138 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2139 "$P_CLI debug_level=3 dtls=1 cid=0" \
2140 0 \
2141 -c "Disable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002142 -C "client hello, adding CID extension" \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002143 -S "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002144 -s "Enable use of CID extension." \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002145 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002146 -C "found CID extension" \
2147 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002148 -C "Copy CIDs into SSL transform" \
Hanno Beckerb3e9dd52019-05-08 13:19:53 +01002149 -s "Use of Connection ID was not offered by client"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002150
Jerry Yuab082902021-12-23 18:02:22 +08002151requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002152requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002153run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002154 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2155 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef" \
2156 0 \
2157 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002158 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002159 -c "client hello, adding CID extension" \
2160 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002161 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002162 -s "server hello, adding CID extension" \
2163 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002164 -c "Use of CID extension negotiated" \
2165 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002166 -c "Copy CIDs into SSL transform" \
2167 -c "Peer CID (length 2 Bytes): de ad" \
2168 -s "Peer CID (length 2 Bytes): be ef" \
2169 -s "Use of Connection ID has been negotiated" \
2170 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002171
Jerry Yuab082902021-12-23 18:02:22 +08002172requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002173requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002174run_test "Connection ID, 3D: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002175 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002176 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead" \
2177 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef" \
2178 0 \
2179 -c "Enable use of CID extension." \
2180 -s "Enable use of CID extension." \
2181 -c "client hello, adding CID extension" \
2182 -s "found CID extension" \
2183 -s "Use of CID extension negotiated" \
2184 -s "server hello, adding CID extension" \
2185 -c "found CID extension" \
2186 -c "Use of CID extension negotiated" \
2187 -s "Copy CIDs into SSL transform" \
2188 -c "Copy CIDs into SSL transform" \
2189 -c "Peer CID (length 2 Bytes): de ad" \
2190 -s "Peer CID (length 2 Bytes): be ef" \
2191 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002192 -c "Use of Connection ID has been negotiated" \
2193 -c "ignoring unexpected CID" \
2194 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002195
Jerry Yuab082902021-12-23 18:02:22 +08002196requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002197requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002198run_test "Connection ID, MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
2199 -p "$P_PXY mtu=800" \
2200 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
2201 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
2202 0 \
2203 -c "Enable use of CID extension." \
2204 -s "Enable use of CID extension." \
2205 -c "client hello, adding CID extension" \
2206 -s "found CID extension" \
2207 -s "Use of CID extension negotiated" \
2208 -s "server hello, adding CID extension" \
2209 -c "found CID extension" \
2210 -c "Use of CID extension negotiated" \
2211 -s "Copy CIDs into SSL transform" \
2212 -c "Copy CIDs into SSL transform" \
2213 -c "Peer CID (length 2 Bytes): de ad" \
2214 -s "Peer CID (length 2 Bytes): be ef" \
2215 -s "Use of Connection ID has been negotiated" \
2216 -c "Use of Connection ID has been negotiated"
2217
Jerry Yuab082902021-12-23 18:02:22 +08002218requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002219requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002220run_test "Connection ID, 3D+MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002221 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002222 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
2223 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
2224 0 \
2225 -c "Enable use of CID extension." \
2226 -s "Enable use of CID extension." \
2227 -c "client hello, adding CID extension" \
2228 -s "found CID extension" \
2229 -s "Use of CID extension negotiated" \
2230 -s "server hello, adding CID extension" \
2231 -c "found CID extension" \
2232 -c "Use of CID extension negotiated" \
2233 -s "Copy CIDs into SSL transform" \
2234 -c "Copy CIDs into SSL transform" \
2235 -c "Peer CID (length 2 Bytes): de ad" \
2236 -s "Peer CID (length 2 Bytes): be ef" \
2237 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002238 -c "Use of Connection ID has been negotiated" \
2239 -c "ignoring unexpected CID" \
2240 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002241
Jerry Yuab082902021-12-23 18:02:22 +08002242requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002243requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002244run_test "Connection ID: Cli+Srv enabled, Cli CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002245 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2246 "$P_CLI debug_level=3 dtls=1 cid=1" \
2247 0 \
2248 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002249 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002250 -c "client hello, adding CID extension" \
2251 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002252 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002253 -s "server hello, adding CID extension" \
2254 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002255 -c "Use of CID extension negotiated" \
2256 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002257 -c "Copy CIDs into SSL transform" \
2258 -c "Peer CID (length 4 Bytes): de ad be ef" \
2259 -s "Peer CID (length 0 Bytes):" \
2260 -s "Use of Connection ID has been negotiated" \
2261 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002262
Jerry Yuab082902021-12-23 18:02:22 +08002263requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002264requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002265run_test "Connection ID: Cli+Srv enabled, Srv CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002266 "$P_SRV debug_level=3 dtls=1 cid=1" \
2267 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2268 0 \
2269 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002270 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002271 -c "client hello, adding CID extension" \
2272 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002273 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002274 -s "server hello, adding CID extension" \
2275 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002276 -c "Use of CID extension negotiated" \
2277 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002278 -c "Copy CIDs into SSL transform" \
2279 -s "Peer CID (length 4 Bytes): de ad be ef" \
2280 -c "Peer CID (length 0 Bytes):" \
2281 -s "Use of Connection ID has been negotiated" \
2282 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002283
Jerry Yuab082902021-12-23 18:02:22 +08002284requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002285requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002286run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002287 "$P_SRV debug_level=3 dtls=1 cid=1" \
2288 "$P_CLI debug_level=3 dtls=1 cid=1" \
2289 0 \
2290 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002291 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002292 -c "client hello, adding CID extension" \
2293 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002294 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002295 -s "server hello, adding CID extension" \
2296 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002297 -c "Use of CID extension negotiated" \
2298 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002299 -c "Copy CIDs into SSL transform" \
2300 -S "Use of Connection ID has been negotiated" \
2301 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002302
Jerry Yuab082902021-12-23 18:02:22 +08002303requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002304requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002305run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002306 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2307 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2308 0 \
2309 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002310 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002311 -c "client hello, adding CID extension" \
2312 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002313 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002314 -s "server hello, adding CID extension" \
2315 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002316 -c "Use of CID extension negotiated" \
2317 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002318 -c "Copy CIDs into SSL transform" \
2319 -c "Peer CID (length 2 Bytes): de ad" \
2320 -s "Peer CID (length 2 Bytes): be ef" \
2321 -s "Use of Connection ID has been negotiated" \
2322 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002323
Jerry Yuab082902021-12-23 18:02:22 +08002324requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002325requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002326run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002327 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2328 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2329 0 \
2330 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002331 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002332 -c "client hello, adding CID extension" \
2333 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002334 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002335 -s "server hello, adding CID extension" \
2336 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002337 -c "Use of CID extension negotiated" \
2338 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002339 -c "Copy CIDs into SSL transform" \
2340 -c "Peer CID (length 4 Bytes): de ad be ef" \
2341 -s "Peer CID (length 0 Bytes):" \
2342 -s "Use of Connection ID has been negotiated" \
2343 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002344
Jerry Yuab082902021-12-23 18:02:22 +08002345requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002346requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002347run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002348 "$P_SRV debug_level=3 dtls=1 cid=1" \
2349 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2350 0 \
2351 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002352 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002353 -c "client hello, adding CID extension" \
2354 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002355 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002356 -s "server hello, adding CID extension" \
2357 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002358 -c "Use of CID extension negotiated" \
2359 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002360 -c "Copy CIDs into SSL transform" \
2361 -s "Peer CID (length 4 Bytes): de ad be ef" \
2362 -c "Peer CID (length 0 Bytes):" \
2363 -s "Use of Connection ID has been negotiated" \
2364 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002365
Jerry Yuab082902021-12-23 18:02:22 +08002366requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002367requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002368run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002369 "$P_SRV debug_level=3 dtls=1 cid=1" \
2370 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2371 0 \
2372 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002373 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002374 -c "client hello, adding CID extension" \
2375 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002376 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002377 -s "server hello, adding CID extension" \
2378 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002379 -c "Use of CID extension negotiated" \
2380 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002381 -c "Copy CIDs into SSL transform" \
2382 -S "Use of Connection ID has been negotiated" \
2383 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002384
Jerry Yuab082902021-12-23 18:02:22 +08002385requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002386requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002387run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002388 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2389 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2390 0 \
2391 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002392 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002393 -c "client hello, adding CID extension" \
2394 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002395 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002396 -s "server hello, adding CID extension" \
2397 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002398 -c "Use of CID extension negotiated" \
2399 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002400 -c "Copy CIDs into SSL transform" \
2401 -c "Peer CID (length 2 Bytes): de ad" \
2402 -s "Peer CID (length 2 Bytes): be ef" \
2403 -s "Use of Connection ID has been negotiated" \
2404 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002405
Jerry Yuab082902021-12-23 18:02:22 +08002406requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002407requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002408run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002409 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2410 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2411 0 \
2412 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002413 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002414 -c "client hello, adding CID extension" \
2415 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002416 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002417 -s "server hello, adding CID extension" \
2418 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002419 -c "Use of CID extension negotiated" \
2420 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002421 -c "Copy CIDs into SSL transform" \
2422 -c "Peer CID (length 4 Bytes): de ad be ef" \
2423 -s "Peer CID (length 0 Bytes):" \
2424 -s "Use of Connection ID has been negotiated" \
2425 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002426
Jerry Yuab082902021-12-23 18:02:22 +08002427requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002428requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002429run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002430 "$P_SRV debug_level=3 dtls=1 cid=1" \
2431 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2432 0 \
2433 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002434 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002435 -c "client hello, adding CID extension" \
2436 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002437 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002438 -s "server hello, adding CID extension" \
2439 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002440 -c "Use of CID extension negotiated" \
2441 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002442 -c "Copy CIDs into SSL transform" \
2443 -s "Peer CID (length 4 Bytes): de ad be ef" \
2444 -c "Peer CID (length 0 Bytes):" \
2445 -s "Use of Connection ID has been negotiated" \
2446 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002447
Jerry Yuab082902021-12-23 18:02:22 +08002448requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002449requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002450run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002451 "$P_SRV debug_level=3 dtls=1 cid=1" \
2452 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2453 0 \
2454 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002455 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002456 -c "client hello, adding CID extension" \
2457 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002458 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002459 -s "server hello, adding CID extension" \
2460 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002461 -c "Use of CID extension negotiated" \
2462 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002463 -c "Copy CIDs into SSL transform" \
2464 -S "Use of Connection ID has been negotiated" \
2465 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002466
Jerry Yuab082902021-12-23 18:02:22 +08002467requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002468requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker9bae30d2019-04-23 11:52:44 +01002469requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002470run_test "Connection ID: Cli+Srv enabled, renegotiate without change of CID" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002471 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2472 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2473 0 \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002474 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2475 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2476 -s "(initial handshake) Use of Connection ID has been negotiated" \
2477 -c "(initial handshake) Use of Connection ID has been negotiated" \
2478 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2479 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2480 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2481 -c "(after renegotiation) Use of Connection ID has been negotiated"
2482
Jerry Yuab082902021-12-23 18:02:22 +08002483requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002484requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002485requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002486run_test "Connection ID: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002487 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
2488 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2489 0 \
2490 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2491 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2492 -s "(initial handshake) Use of Connection ID has been negotiated" \
2493 -c "(initial handshake) Use of Connection ID has been negotiated" \
2494 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2495 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2496 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2497 -c "(after renegotiation) Use of Connection ID has been negotiated"
2498
Jerry Yuab082902021-12-23 18:02:22 +08002499requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002500requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002501requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002502run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate with different CID" \
2503 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead cid_val_renego=beef renegotiation=1" \
2504 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2505 0 \
2506 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2507 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2508 -s "(initial handshake) Use of Connection ID has been negotiated" \
2509 -c "(initial handshake) Use of Connection ID has been negotiated" \
2510 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2511 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2512 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2513 -c "(after renegotiation) Use of Connection ID has been negotiated"
2514
Jerry Yuab082902021-12-23 18:02:22 +08002515requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002516requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002517requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002518run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002519 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002520 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
2521 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2522 0 \
2523 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2524 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2525 -s "(initial handshake) Use of Connection ID has been negotiated" \
2526 -c "(initial handshake) Use of Connection ID has been negotiated" \
2527 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2528 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2529 -s "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002530 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2531 -c "ignoring unexpected CID" \
2532 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002533
Jerry Yuab082902021-12-23 18:02:22 +08002534requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002535requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002536requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2537run_test "Connection ID: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002538 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2539 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2540 0 \
2541 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2542 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2543 -s "(initial handshake) Use of Connection ID has been negotiated" \
2544 -c "(initial handshake) Use of Connection ID has been negotiated" \
2545 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2546 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2547 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2548 -S "(after renegotiation) Use of Connection ID has been negotiated"
2549
Jerry Yuab082902021-12-23 18:02:22 +08002550requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002551requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002552requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002553run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate without CID" \
2554 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2555 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2556 0 \
2557 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2558 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2559 -s "(initial handshake) Use of Connection ID has been negotiated" \
2560 -c "(initial handshake) Use of Connection ID has been negotiated" \
2561 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2562 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2563 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2564 -S "(after renegotiation) Use of Connection ID has been negotiated"
2565
Jerry Yuab082902021-12-23 18:02:22 +08002566requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002567requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002568requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002569run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002570 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002571 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2572 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2573 0 \
2574 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2575 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2576 -s "(initial handshake) Use of Connection ID has been negotiated" \
2577 -c "(initial handshake) Use of Connection ID has been negotiated" \
2578 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2579 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2580 -C "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002581 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2582 -c "ignoring unexpected CID" \
2583 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002584
Jerry Yuab082902021-12-23 18:02:22 +08002585requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002586requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002587requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2588run_test "Connection ID: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002589 "$P_SRV debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2590 "$P_CLI debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
2591 0 \
2592 -S "(initial handshake) Use of Connection ID has been negotiated" \
2593 -C "(initial handshake) Use of Connection ID has been negotiated" \
2594 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2595 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2596 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2597 -s "(after renegotiation) Use of Connection ID has been negotiated"
2598
Jerry Yuab082902021-12-23 18:02:22 +08002599requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002600requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002601requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002602run_test "Connection ID, no packing: Cli+Srv enabled, CID on renegotiation" \
2603 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2604 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
2605 0 \
2606 -S "(initial handshake) Use of Connection ID has been negotiated" \
2607 -C "(initial handshake) Use of Connection ID has been negotiated" \
2608 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2609 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2610 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2611 -s "(after renegotiation) Use of Connection ID has been negotiated"
2612
Jerry Yuab082902021-12-23 18:02:22 +08002613requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002614requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002615requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002616run_test "Connection ID, 3D+MTU: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002617 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002618 "$P_SRV debug_level=3 mtu=800 dtls=1 dgram_packing=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2619 "$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" \
2620 0 \
2621 -S "(initial handshake) Use of Connection ID has been negotiated" \
2622 -C "(initial handshake) Use of Connection ID has been negotiated" \
2623 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2624 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2625 -c "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002626 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2627 -c "ignoring unexpected CID" \
2628 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002629
Jerry Yuab082902021-12-23 18:02:22 +08002630requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002631requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002632requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2633run_test "Connection ID: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002634 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2635 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2636 0 \
2637 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2638 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2639 -s "(initial handshake) Use of Connection ID has been negotiated" \
2640 -c "(initial handshake) Use of Connection ID has been negotiated" \
2641 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2642 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2643 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2644 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2645 -s "(after renegotiation) Use of Connection ID was not offered by client"
2646
Jerry Yuab082902021-12-23 18:02:22 +08002647requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002648requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002649requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002650run_test "Connection ID, 3D: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002651 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002652 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2653 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2654 0 \
2655 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2656 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2657 -s "(initial handshake) Use of Connection ID has been negotiated" \
2658 -c "(initial handshake) Use of Connection ID has been negotiated" \
2659 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2660 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2661 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2662 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002663 -s "(after renegotiation) Use of Connection ID was not offered by client" \
2664 -c "ignoring unexpected CID" \
2665 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002666
Jerry Yuab082902021-12-23 18:02:22 +08002667requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002668requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002669requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2670run_test "Connection ID: Cli+Srv enabled, Srv disables on renegotiation" \
2671 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2672 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2673 0 \
2674 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2675 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2676 -s "(initial handshake) Use of Connection ID has been negotiated" \
2677 -c "(initial handshake) Use of Connection ID has been negotiated" \
2678 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2679 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2680 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2681 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2682 -c "(after renegotiation) Use of Connection ID was rejected by the server"
2683
Jerry Yuab082902021-12-23 18:02:22 +08002684requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01002685requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002686requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2687run_test "Connection ID, 3D: Cli+Srv enabled, Srv disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002688 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002689 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2690 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2691 0 \
2692 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2693 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2694 -s "(initial handshake) Use of Connection ID has been negotiated" \
2695 -c "(initial handshake) Use of Connection ID has been negotiated" \
2696 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2697 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2698 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2699 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002700 -c "(after renegotiation) Use of Connection ID was rejected by the server" \
2701 -c "ignoring unexpected CID" \
2702 -s "ignoring unexpected CID"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002703
Yuto Takano3fa16732021-07-09 11:21:43 +01002704# This and the test below it require MAX_CONTENT_LEN to be at least MFL+1, because the
Yuto Takano9c09d552021-07-08 16:03:44 +01002705# tests check that the buffer contents are reallocated when the message is
2706# larger than the buffer.
Jerry Yuab082902021-12-23 18:02:22 +08002707requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekb6577832020-06-08 07:08:03 -04002708requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2709requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano9c09d552021-07-08 16:03:44 +01002710requires_max_content_len 513
Andrzej Kurekb6577832020-06-08 07:08:03 -04002711run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=512" \
2712 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
2713 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=512 dtls=1 cid=1 cid_val=beef" \
2714 0 \
2715 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2716 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2717 -s "(initial handshake) Use of Connection ID has been negotiated" \
2718 -c "(initial handshake) Use of Connection ID has been negotiated" \
2719 -s "Reallocating in_buf" \
2720 -s "Reallocating out_buf"
2721
Jerry Yuab082902021-12-23 18:02:22 +08002722requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekb6577832020-06-08 07:08:03 -04002723requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2724requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano9c09d552021-07-08 16:03:44 +01002725requires_max_content_len 1025
Andrzej Kurekb6577832020-06-08 07:08:03 -04002726run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=1024" \
2727 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
2728 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=1024 dtls=1 cid=1 cid_val=beef" \
2729 0 \
2730 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2731 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2732 -s "(initial handshake) Use of Connection ID has been negotiated" \
2733 -c "(initial handshake) Use of Connection ID has been negotiated" \
2734 -s "Reallocating in_buf" \
2735 -s "Reallocating out_buf"
2736
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002737# Tests for Encrypt-then-MAC extension
2738
Jerry Yuab082902021-12-23 18:02:22 +08002739requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002740run_test "Encrypt then MAC: default" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002741 "$P_SRV debug_level=3 \
2742 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002743 "$P_CLI debug_level=3" \
2744 0 \
2745 -c "client hello, adding encrypt_then_mac extension" \
2746 -s "found encrypt then mac extension" \
2747 -s "server hello, adding encrypt then mac extension" \
2748 -c "found encrypt_then_mac extension" \
2749 -c "using encrypt then mac" \
2750 -s "using encrypt then mac"
2751
Jerry Yuab082902021-12-23 18:02:22 +08002752requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002753run_test "Encrypt then MAC: client enabled, server disabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002754 "$P_SRV debug_level=3 etm=0 \
2755 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002756 "$P_CLI debug_level=3 etm=1" \
2757 0 \
2758 -c "client hello, adding encrypt_then_mac extension" \
2759 -s "found encrypt then mac extension" \
2760 -S "server hello, adding encrypt then mac extension" \
2761 -C "found encrypt_then_mac extension" \
2762 -C "using encrypt then mac" \
2763 -S "using encrypt then mac"
2764
Jerry Yuab082902021-12-23 18:02:22 +08002765requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard78e745f2014-11-04 15:44:06 +01002766run_test "Encrypt then MAC: client enabled, aead cipher" \
2767 "$P_SRV debug_level=3 etm=1 \
2768 force_ciphersuite=TLS-RSA-WITH-AES-128-GCM-SHA256" \
2769 "$P_CLI debug_level=3 etm=1" \
2770 0 \
2771 -c "client hello, adding encrypt_then_mac extension" \
2772 -s "found encrypt then mac extension" \
2773 -S "server hello, adding encrypt then mac extension" \
2774 -C "found encrypt_then_mac extension" \
2775 -C "using encrypt then mac" \
2776 -S "using encrypt then mac"
2777
Jerry Yuab082902021-12-23 18:02:22 +08002778requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002779run_test "Encrypt then MAC: client disabled, server enabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002780 "$P_SRV debug_level=3 etm=1 \
2781 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002782 "$P_CLI debug_level=3 etm=0" \
2783 0 \
2784 -C "client hello, adding encrypt_then_mac extension" \
2785 -S "found encrypt then mac extension" \
2786 -S "server hello, adding encrypt then mac extension" \
2787 -C "found encrypt_then_mac extension" \
2788 -C "using encrypt then mac" \
2789 -S "using encrypt then mac"
2790
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002791# Tests for Extended Master Secret extension
2792
Jerry Yuab082902021-12-23 18:02:22 +08002793requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01002794requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002795run_test "Extended Master Secret: default" \
2796 "$P_SRV debug_level=3" \
2797 "$P_CLI debug_level=3" \
2798 0 \
2799 -c "client hello, adding extended_master_secret extension" \
2800 -s "found extended master secret extension" \
2801 -s "server hello, adding extended master secret extension" \
2802 -c "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002803 -c "session hash for extended master secret" \
2804 -s "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002805
Jerry Yuab082902021-12-23 18:02:22 +08002806requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01002807requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002808run_test "Extended Master Secret: client enabled, server disabled" \
2809 "$P_SRV debug_level=3 extended_ms=0" \
2810 "$P_CLI debug_level=3 extended_ms=1" \
2811 0 \
2812 -c "client hello, adding extended_master_secret extension" \
2813 -s "found extended master secret extension" \
2814 -S "server hello, adding extended master secret extension" \
2815 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002816 -C "session hash for extended master secret" \
2817 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002818
Jerry Yuab082902021-12-23 18:02:22 +08002819requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01002820requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002821run_test "Extended Master Secret: client disabled, server enabled" \
2822 "$P_SRV debug_level=3 extended_ms=1" \
2823 "$P_CLI debug_level=3 extended_ms=0" \
2824 0 \
2825 -C "client hello, adding extended_master_secret extension" \
2826 -S "found extended master secret extension" \
2827 -S "server hello, adding extended master secret extension" \
2828 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002829 -C "session hash for extended master secret" \
2830 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002831
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002832# Test sending and receiving empty application data records
2833
Jerry Yuab082902021-12-23 18:02:22 +08002834requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002835run_test "Encrypt then MAC: empty application data record" \
2836 "$P_SRV auth_mode=none debug_level=4 etm=1" \
2837 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA" \
2838 0 \
2839 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
2840 -s "dumping 'input payload after decrypt' (0 bytes)" \
2841 -c "0 bytes written in 1 fragments"
2842
Jerry Yuab082902021-12-23 18:02:22 +08002843requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01002844run_test "Encrypt then MAC: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002845 "$P_SRV auth_mode=none debug_level=4 etm=0" \
2846 "$P_CLI auth_mode=none etm=0 request_size=0" \
2847 0 \
2848 -s "dumping 'input payload after decrypt' (0 bytes)" \
2849 -c "0 bytes written in 1 fragments"
2850
Jerry Yuab082902021-12-23 18:02:22 +08002851requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002852run_test "Encrypt then MAC, DTLS: empty application data record" \
2853 "$P_SRV auth_mode=none debug_level=4 etm=1 dtls=1" \
2854 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA dtls=1" \
2855 0 \
2856 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
2857 -s "dumping 'input payload after decrypt' (0 bytes)" \
2858 -c "0 bytes written in 1 fragments"
2859
Jerry Yuab082902021-12-23 18:02:22 +08002860requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01002861run_test "Encrypt then MAC, DTLS: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002862 "$P_SRV auth_mode=none debug_level=4 etm=0 dtls=1" \
2863 "$P_CLI auth_mode=none etm=0 request_size=0 dtls=1" \
2864 0 \
2865 -s "dumping 'input payload after decrypt' (0 bytes)" \
2866 -c "0 bytes written in 1 fragments"
2867
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01002868# Tests for CBC 1/n-1 record splitting
2869
Jerry Yuab082902021-12-23 18:02:22 +08002870requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01002871run_test "CBC Record splitting: TLS 1.2, no splitting" \
2872 "$P_SRV" \
2873 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00002874 request_size=123 force_version=tls12" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01002875 0 \
2876 -s "Read from client: 123 bytes read" \
2877 -S "Read from client: 1 bytes read" \
2878 -S "122 bytes read"
2879
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01002880# Tests for Session Tickets
2881
Jerry Yuab082902021-12-23 18:02:22 +08002882requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002883run_test "Session resume using tickets: basic" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002884 "$P_SRV debug_level=3 tickets=1" \
2885 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01002886 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01002887 -c "client hello, adding session ticket extension" \
2888 -s "found session ticket extension" \
2889 -s "server hello, adding session ticket extension" \
2890 -c "found session_ticket extension" \
2891 -c "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01002892 -S "session successfully restored from cache" \
2893 -s "session successfully restored from ticket" \
2894 -s "a session has been resumed" \
2895 -c "a session has been resumed"
2896
Jerry Yubaa49342022-02-15 10:26:40 +08002897requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Glenn Strausse3282452022-02-03 17:23:24 -05002898requires_config_disabled MBEDTLS_USE_PSA_CRYPTO
2899run_test "Session resume using tickets: manual rotation" \
2900 "$P_SRV debug_level=3 tickets=1 ticket_rotate=1" \
2901 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
2902 0 \
2903 -c "client hello, adding session ticket extension" \
2904 -s "found session ticket extension" \
2905 -s "server hello, adding session ticket extension" \
2906 -c "found session_ticket extension" \
2907 -c "parse new session ticket" \
2908 -S "session successfully restored from cache" \
2909 -s "session successfully restored from ticket" \
2910 -s "a session has been resumed" \
2911 -c "a session has been resumed"
2912
Jerry Yuab082902021-12-23 18:02:22 +08002913requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002914run_test "Session resume using tickets: cache disabled" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002915 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
2916 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01002917 0 \
2918 -c "client hello, adding session ticket extension" \
2919 -s "found session ticket extension" \
2920 -s "server hello, adding session ticket extension" \
2921 -c "found session_ticket extension" \
2922 -c "parse new session ticket" \
2923 -S "session successfully restored from cache" \
2924 -s "session successfully restored from ticket" \
2925 -s "a session has been resumed" \
2926 -c "a session has been resumed"
2927
Jerry Yuab082902021-12-23 18:02:22 +08002928requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002929run_test "Session resume using tickets: timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002930 "$P_SRV debug_level=3 tickets=1 cache_max=0 ticket_timeout=1" \
2931 "$P_CLI debug_level=3 tickets=1 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01002932 0 \
2933 -c "client hello, adding session ticket extension" \
2934 -s "found session ticket extension" \
2935 -s "server hello, adding session ticket extension" \
2936 -c "found session_ticket extension" \
2937 -c "parse new session ticket" \
2938 -S "session successfully restored from cache" \
2939 -S "session successfully restored from ticket" \
2940 -S "a session has been resumed" \
2941 -C "a session has been resumed"
2942
Jerry Yuab082902021-12-23 18:02:22 +08002943requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02002944run_test "Session resume using tickets: session copy" \
2945 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
2946 "$P_CLI debug_level=3 tickets=1 reconnect=1 reco_mode=0" \
2947 0 \
2948 -c "client hello, adding session ticket extension" \
2949 -s "found session ticket extension" \
2950 -s "server hello, adding session ticket extension" \
2951 -c "found session_ticket extension" \
2952 -c "parse new session ticket" \
2953 -S "session successfully restored from cache" \
2954 -s "session successfully restored from ticket" \
2955 -s "a session has been resumed" \
2956 -c "a session has been resumed"
2957
Jerry Yuab082902021-12-23 18:02:22 +08002958requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002959run_test "Session resume using tickets: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01002960 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002961 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01002962 0 \
2963 -c "client hello, adding session ticket extension" \
2964 -c "found session_ticket extension" \
2965 -c "parse new session ticket" \
2966 -c "a session has been resumed"
2967
Jerry Yuab082902021-12-23 18:02:22 +08002968requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002969run_test "Session resume using tickets: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002970 "$P_SRV debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02002971 "( $O_CLI -sess_out $SESSION; \
2972 $O_CLI -sess_in $SESSION; \
2973 rm -f $SESSION )" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01002974 0 \
2975 -s "found session ticket extension" \
2976 -s "server hello, adding session ticket extension" \
2977 -S "session successfully restored from cache" \
2978 -s "session successfully restored from ticket" \
2979 -s "a session has been resumed"
2980
Jerry Yuab082902021-12-23 18:02:22 +08002981requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01002982run_test "Session resume using tickets: AES-128-GCM" \
2983 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-128-GCM" \
2984 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
2985 0 \
2986 -c "client hello, adding session ticket extension" \
2987 -s "found session ticket extension" \
2988 -s "server hello, adding session ticket extension" \
2989 -c "found session_ticket extension" \
2990 -c "parse new session ticket" \
2991 -S "session successfully restored from cache" \
2992 -s "session successfully restored from ticket" \
2993 -s "a session has been resumed" \
2994 -c "a session has been resumed"
2995
Jerry Yuab082902021-12-23 18:02:22 +08002996requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01002997run_test "Session resume using tickets: AES-192-GCM" \
2998 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-192-GCM" \
2999 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3000 0 \
3001 -c "client hello, adding session ticket extension" \
3002 -s "found session ticket extension" \
3003 -s "server hello, adding session ticket extension" \
3004 -c "found session_ticket extension" \
3005 -c "parse new session ticket" \
3006 -S "session successfully restored from cache" \
3007 -s "session successfully restored from ticket" \
3008 -s "a session has been resumed" \
3009 -c "a session has been resumed"
3010
Jerry Yuab082902021-12-23 18:02:22 +08003011requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003012run_test "Session resume using tickets: AES-128-CCM" \
3013 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-128-CCM" \
3014 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3015 0 \
3016 -c "client hello, adding session ticket extension" \
3017 -s "found session ticket extension" \
3018 -s "server hello, adding session ticket extension" \
3019 -c "found session_ticket extension" \
3020 -c "parse new session ticket" \
3021 -S "session successfully restored from cache" \
3022 -s "session successfully restored from ticket" \
3023 -s "a session has been resumed" \
3024 -c "a session has been resumed"
3025
Jerry Yuab082902021-12-23 18:02:22 +08003026requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003027run_test "Session resume using tickets: AES-192-CCM" \
3028 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-192-CCM" \
3029 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3030 0 \
3031 -c "client hello, adding session ticket extension" \
3032 -s "found session ticket extension" \
3033 -s "server hello, adding session ticket extension" \
3034 -c "found session_ticket extension" \
3035 -c "parse new session ticket" \
3036 -S "session successfully restored from cache" \
3037 -s "session successfully restored from ticket" \
3038 -s "a session has been resumed" \
3039 -c "a session has been resumed"
3040
Jerry Yuab082902021-12-23 18:02:22 +08003041requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003042run_test "Session resume using tickets: AES-256-CCM" \
3043 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-256-CCM" \
3044 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3045 0 \
3046 -c "client hello, adding session ticket extension" \
3047 -s "found session ticket extension" \
3048 -s "server hello, adding session ticket extension" \
3049 -c "found session_ticket extension" \
3050 -c "parse new session ticket" \
3051 -S "session successfully restored from cache" \
3052 -s "session successfully restored from ticket" \
3053 -s "a session has been resumed" \
3054 -c "a session has been resumed"
3055
Jerry Yuab082902021-12-23 18:02:22 +08003056requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003057run_test "Session resume using tickets: CAMELLIA-128-CCM" \
3058 "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-128-CCM" \
3059 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3060 0 \
3061 -c "client hello, adding session ticket extension" \
3062 -s "found session ticket extension" \
3063 -s "server hello, adding session ticket extension" \
3064 -c "found session_ticket extension" \
3065 -c "parse new session ticket" \
3066 -S "session successfully restored from cache" \
3067 -s "session successfully restored from ticket" \
3068 -s "a session has been resumed" \
3069 -c "a session has been resumed"
3070
Jerry Yuab082902021-12-23 18:02:22 +08003071requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003072run_test "Session resume using tickets: CAMELLIA-192-CCM" \
3073 "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-192-CCM" \
3074 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3075 0 \
3076 -c "client hello, adding session ticket extension" \
3077 -s "found session ticket extension" \
3078 -s "server hello, adding session ticket extension" \
3079 -c "found session_ticket extension" \
3080 -c "parse new session ticket" \
3081 -S "session successfully restored from cache" \
3082 -s "session successfully restored from ticket" \
3083 -s "a session has been resumed" \
3084 -c "a session has been resumed"
3085
Jerry Yuab082902021-12-23 18:02:22 +08003086requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003087run_test "Session resume using tickets: CAMELLIA-256-CCM" \
3088 "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-256-CCM" \
3089 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3090 0 \
3091 -c "client hello, adding session ticket extension" \
3092 -s "found session ticket extension" \
3093 -s "server hello, adding session ticket extension" \
3094 -c "found session_ticket extension" \
3095 -c "parse new session ticket" \
3096 -S "session successfully restored from cache" \
3097 -s "session successfully restored from ticket" \
3098 -s "a session has been resumed" \
3099 -c "a session has been resumed"
3100
Jerry Yuab082902021-12-23 18:02:22 +08003101requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003102run_test "Session resume using tickets: ARIA-128-GCM" \
3103 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-128-GCM" \
3104 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3105 0 \
3106 -c "client hello, adding session ticket extension" \
3107 -s "found session ticket extension" \
3108 -s "server hello, adding session ticket extension" \
3109 -c "found session_ticket extension" \
3110 -c "parse new session ticket" \
3111 -S "session successfully restored from cache" \
3112 -s "session successfully restored from ticket" \
3113 -s "a session has been resumed" \
3114 -c "a session has been resumed"
3115
Jerry Yuab082902021-12-23 18:02:22 +08003116requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003117run_test "Session resume using tickets: ARIA-192-GCM" \
3118 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-192-GCM" \
3119 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3120 0 \
3121 -c "client hello, adding session ticket extension" \
3122 -s "found session ticket extension" \
3123 -s "server hello, adding session ticket extension" \
3124 -c "found session_ticket extension" \
3125 -c "parse new session ticket" \
3126 -S "session successfully restored from cache" \
3127 -s "session successfully restored from ticket" \
3128 -s "a session has been resumed" \
3129 -c "a session has been resumed"
3130
Jerry Yuab082902021-12-23 18:02:22 +08003131requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003132run_test "Session resume using tickets: ARIA-256-GCM" \
3133 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-256-GCM" \
3134 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3135 0 \
3136 -c "client hello, adding session ticket extension" \
3137 -s "found session ticket extension" \
3138 -s "server hello, adding session ticket extension" \
3139 -c "found session_ticket extension" \
3140 -c "parse new session ticket" \
3141 -S "session successfully restored from cache" \
3142 -s "session successfully restored from ticket" \
3143 -s "a session has been resumed" \
3144 -c "a session has been resumed"
3145
Jerry Yuab082902021-12-23 18:02:22 +08003146requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003147run_test "Session resume using tickets: ARIA-128-CCM" \
3148 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-128-CCM" \
3149 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3150 0 \
3151 -c "client hello, adding session ticket extension" \
3152 -s "found session ticket extension" \
3153 -s "server hello, adding session ticket extension" \
3154 -c "found session_ticket extension" \
3155 -c "parse new session ticket" \
3156 -S "session successfully restored from cache" \
3157 -s "session successfully restored from ticket" \
3158 -s "a session has been resumed" \
3159 -c "a session has been resumed"
3160
Jerry Yuab082902021-12-23 18:02:22 +08003161requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003162run_test "Session resume using tickets: ARIA-192-CCM" \
3163 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-192-CCM" \
3164 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3165 0 \
3166 -c "client hello, adding session ticket extension" \
3167 -s "found session ticket extension" \
3168 -s "server hello, adding session ticket extension" \
3169 -c "found session_ticket extension" \
3170 -c "parse new session ticket" \
3171 -S "session successfully restored from cache" \
3172 -s "session successfully restored from ticket" \
3173 -s "a session has been resumed" \
3174 -c "a session has been resumed"
3175
Jerry Yuab082902021-12-23 18:02:22 +08003176requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003177run_test "Session resume using tickets: ARIA-256-CCM" \
3178 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-256-CCM" \
3179 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3180 0 \
3181 -c "client hello, adding session ticket extension" \
3182 -s "found session ticket extension" \
3183 -s "server hello, adding session ticket extension" \
3184 -c "found session_ticket extension" \
3185 -c "parse new session ticket" \
3186 -S "session successfully restored from cache" \
3187 -s "session successfully restored from ticket" \
3188 -s "a session has been resumed" \
3189 -c "a session has been resumed"
3190
Hanno Becker1d739932018-08-21 13:55:22 +01003191# Tests for Session Tickets with DTLS
3192
Jerry Yuab082902021-12-23 18:02:22 +08003193requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1d739932018-08-21 13:55:22 +01003194run_test "Session resume using tickets, DTLS: basic" \
3195 "$P_SRV debug_level=3 dtls=1 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003196 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003197 0 \
3198 -c "client hello, adding session ticket extension" \
3199 -s "found session ticket extension" \
3200 -s "server hello, adding session ticket extension" \
3201 -c "found session_ticket extension" \
3202 -c "parse new session ticket" \
3203 -S "session successfully restored from cache" \
3204 -s "session successfully restored from ticket" \
3205 -s "a session has been resumed" \
3206 -c "a session has been resumed"
3207
Jerry Yuab082902021-12-23 18:02:22 +08003208requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1d739932018-08-21 13:55:22 +01003209run_test "Session resume using tickets, DTLS: cache disabled" \
3210 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003211 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003212 0 \
3213 -c "client hello, adding session ticket extension" \
3214 -s "found session ticket extension" \
3215 -s "server hello, adding session ticket extension" \
3216 -c "found session_ticket extension" \
3217 -c "parse new session ticket" \
3218 -S "session successfully restored from cache" \
3219 -s "session successfully restored from ticket" \
3220 -s "a session has been resumed" \
3221 -c "a session has been resumed"
3222
Jerry Yuab082902021-12-23 18:02:22 +08003223requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1d739932018-08-21 13:55:22 +01003224run_test "Session resume using tickets, DTLS: timeout" \
3225 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0 ticket_timeout=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003226 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1 reco_delay=2" \
Hanno Becker1d739932018-08-21 13:55:22 +01003227 0 \
3228 -c "client hello, adding session ticket extension" \
3229 -s "found session ticket extension" \
3230 -s "server hello, adding session ticket extension" \
3231 -c "found session_ticket extension" \
3232 -c "parse new session ticket" \
3233 -S "session successfully restored from cache" \
3234 -S "session successfully restored from ticket" \
3235 -S "a session has been resumed" \
3236 -C "a session has been resumed"
3237
Jerry Yuab082902021-12-23 18:02:22 +08003238requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003239run_test "Session resume using tickets, DTLS: session copy" \
3240 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003241 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1 reco_mode=0" \
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003242 0 \
3243 -c "client hello, adding session ticket extension" \
3244 -s "found session ticket extension" \
3245 -s "server hello, adding session ticket extension" \
3246 -c "found session_ticket extension" \
3247 -c "parse new session ticket" \
3248 -S "session successfully restored from cache" \
3249 -s "session successfully restored from ticket" \
3250 -s "a session has been resumed" \
3251 -c "a session has been resumed"
3252
Jerry Yuab082902021-12-23 18:02:22 +08003253requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02003254run_test "Session resume using tickets, DTLS: openssl server" \
3255 "$O_SRV -dtls" \
3256 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \
3257 0 \
3258 -c "client hello, adding session ticket extension" \
3259 -c "found session_ticket extension" \
3260 -c "parse new session ticket" \
3261 -c "a session has been resumed"
3262
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02003263# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott09cfa182021-10-13 16:13:44 +01003264# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02003265requires_openssl_next
Jerry Yuab082902021-12-23 18:02:22 +08003266requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02003267run_test "Session resume using tickets, DTLS: openssl client" \
3268 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02003269 "( $O_NEXT_CLI -dtls -sess_out $SESSION; \
3270 $O_NEXT_CLI -dtls -sess_in $SESSION; \
TRodziewicz4ca18aa2021-05-20 14:46:20 +02003271 rm -f $SESSION )" \
3272 0 \
3273 -s "found session ticket extension" \
3274 -s "server hello, adding session ticket extension" \
3275 -S "session successfully restored from cache" \
3276 -s "session successfully restored from ticket" \
3277 -s "a session has been resumed"
3278
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003279# Tests for Session Resume based on session-ID and cache
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003280
Jerry Yuab082902021-12-23 18:02:22 +08003281requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003282requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003283run_test "Session resume using cache: tickets enabled on client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003284 "$P_SRV debug_level=3 tickets=0" \
3285 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003286 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003287 -c "client hello, adding session ticket extension" \
3288 -s "found session ticket extension" \
3289 -S "server hello, adding session ticket extension" \
3290 -C "found session_ticket extension" \
3291 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003292 -s "session successfully restored from cache" \
3293 -S "session successfully restored from ticket" \
3294 -s "a session has been resumed" \
3295 -c "a session has been resumed"
3296
Jerry Yuab082902021-12-23 18:02:22 +08003297requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003298requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003299run_test "Session resume using cache: tickets enabled on server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003300 "$P_SRV debug_level=3 tickets=1" \
3301 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003302 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003303 -C "client hello, adding session ticket extension" \
3304 -S "found session ticket extension" \
3305 -S "server hello, adding session ticket extension" \
3306 -C "found session_ticket extension" \
3307 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003308 -s "session successfully restored from cache" \
3309 -S "session successfully restored from ticket" \
3310 -s "a session has been resumed" \
3311 -c "a session has been resumed"
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003312
Jerry Yuab082902021-12-23 18:02:22 +08003313requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003314requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003315run_test "Session resume using cache: cache_max=0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003316 "$P_SRV debug_level=3 tickets=0 cache_max=0" \
3317 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003318 0 \
3319 -S "session successfully restored from cache" \
3320 -S "session successfully restored from ticket" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003321 -S "a session has been resumed" \
3322 -C "a session has been resumed"
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003323
Jerry Yuab082902021-12-23 18:02:22 +08003324requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003325requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003326run_test "Session resume using cache: cache_max=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003327 "$P_SRV debug_level=3 tickets=0 cache_max=1" \
3328 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003329 0 \
3330 -s "session successfully restored from cache" \
3331 -S "session successfully restored from ticket" \
3332 -s "a session has been resumed" \
3333 -c "a session has been resumed"
3334
Jerry Yuab082902021-12-23 18:02:22 +08003335requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003336requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard6df31962015-05-04 10:55:47 +02003337run_test "Session resume using cache: timeout > delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003338 "$P_SRV debug_level=3 tickets=0" \
3339 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=0" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003340 0 \
3341 -s "session successfully restored from cache" \
3342 -S "session successfully restored from ticket" \
3343 -s "a session has been resumed" \
3344 -c "a session has been resumed"
3345
Jerry Yuab082902021-12-23 18:02:22 +08003346requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003347requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003348run_test "Session resume using cache: timeout < delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003349 "$P_SRV debug_level=3 tickets=0 cache_timeout=1" \
3350 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003351 0 \
3352 -S "session successfully restored from cache" \
3353 -S "session successfully restored from ticket" \
3354 -S "a session has been resumed" \
3355 -C "a session has been resumed"
3356
Jerry Yuab082902021-12-23 18:02:22 +08003357requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003358requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003359run_test "Session resume using cache: no timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003360 "$P_SRV debug_level=3 tickets=0 cache_timeout=0" \
3361 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003362 0 \
3363 -s "session successfully restored from cache" \
3364 -S "session successfully restored from ticket" \
3365 -s "a session has been resumed" \
3366 -c "a session has been resumed"
3367
Jerry Yuab082902021-12-23 18:02:22 +08003368requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003369requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003370run_test "Session resume using cache: session copy" \
3371 "$P_SRV debug_level=3 tickets=0" \
3372 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_mode=0" \
3373 0 \
3374 -s "session successfully restored from cache" \
3375 -S "session successfully restored from ticket" \
3376 -s "a session has been resumed" \
3377 -c "a session has been resumed"
3378
Jerry Yuab082902021-12-23 18:02:22 +08003379requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003380requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003381run_test "Session resume using cache: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003382 "$P_SRV debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02003383 "( $O_CLI -sess_out $SESSION; \
3384 $O_CLI -sess_in $SESSION; \
3385 rm -f $SESSION )" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01003386 0 \
3387 -s "found session ticket extension" \
3388 -S "server hello, adding session ticket extension" \
3389 -s "session successfully restored from cache" \
3390 -S "session successfully restored from ticket" \
3391 -s "a session has been resumed"
3392
Jerry Yuab082902021-12-23 18:02:22 +08003393requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003394requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003395run_test "Session resume using cache: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01003396 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003397 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01003398 0 \
3399 -C "found session_ticket extension" \
3400 -C "parse new session ticket" \
3401 -c "a session has been resumed"
3402
Hanno Becker1d739932018-08-21 13:55:22 +01003403# Tests for Session Resume based on session-ID and cache, DTLS
3404
Jerry Yuab082902021-12-23 18:02:22 +08003405requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003406requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003407run_test "Session resume using cache, DTLS: tickets enabled on client" \
3408 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003409 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003410 0 \
3411 -c "client hello, adding session ticket extension" \
3412 -s "found session ticket extension" \
3413 -S "server hello, adding session ticket extension" \
3414 -C "found session_ticket extension" \
3415 -C "parse new session ticket" \
3416 -s "session successfully restored from cache" \
3417 -S "session successfully restored from ticket" \
3418 -s "a session has been resumed" \
3419 -c "a session has been resumed"
3420
Jerry Yuab082902021-12-23 18:02:22 +08003421requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003422requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003423run_test "Session resume using cache, DTLS: tickets enabled on server" \
3424 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003425 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003426 0 \
3427 -C "client hello, adding session ticket extension" \
3428 -S "found session ticket extension" \
3429 -S "server hello, adding session ticket extension" \
3430 -C "found session_ticket extension" \
3431 -C "parse new session ticket" \
3432 -s "session successfully restored from cache" \
3433 -S "session successfully restored from ticket" \
3434 -s "a session has been resumed" \
3435 -c "a session has been resumed"
3436
Jerry Yuab082902021-12-23 18:02:22 +08003437requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003438requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003439run_test "Session resume using cache, DTLS: cache_max=0" \
3440 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003441 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003442 0 \
3443 -S "session successfully restored from cache" \
3444 -S "session successfully restored from ticket" \
3445 -S "a session has been resumed" \
3446 -C "a session has been resumed"
3447
Jerry Yuab082902021-12-23 18:02:22 +08003448requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003449requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003450run_test "Session resume using cache, DTLS: cache_max=1" \
3451 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003452 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003453 0 \
3454 -s "session successfully restored from cache" \
3455 -S "session successfully restored from ticket" \
3456 -s "a session has been resumed" \
3457 -c "a session has been resumed"
3458
Jerry Yuab082902021-12-23 18:02:22 +08003459requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003460requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003461run_test "Session resume using cache, DTLS: timeout > delay" \
3462 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003463 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=0" \
Hanno Becker1d739932018-08-21 13:55:22 +01003464 0 \
3465 -s "session successfully restored from cache" \
3466 -S "session successfully restored from ticket" \
3467 -s "a session has been resumed" \
3468 -c "a session has been resumed"
3469
Jerry Yuab082902021-12-23 18:02:22 +08003470requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003471requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003472run_test "Session resume using cache, DTLS: timeout < delay" \
3473 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003474 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2" \
Hanno Becker1d739932018-08-21 13:55:22 +01003475 0 \
3476 -S "session successfully restored from cache" \
3477 -S "session successfully restored from ticket" \
3478 -S "a session has been resumed" \
3479 -C "a session has been resumed"
3480
Jerry Yuab082902021-12-23 18:02:22 +08003481requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003482requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003483run_test "Session resume using cache, DTLS: no timeout" \
3484 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003485 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2" \
Hanno Becker1d739932018-08-21 13:55:22 +01003486 0 \
3487 -s "session successfully restored from cache" \
3488 -S "session successfully restored from ticket" \
3489 -s "a session has been resumed" \
3490 -c "a session has been resumed"
3491
Jerry Yuab082902021-12-23 18:02:22 +08003492requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003493requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003494run_test "Session resume using cache, DTLS: session copy" \
3495 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003496 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_mode=0" \
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003497 0 \
3498 -s "session successfully restored from cache" \
3499 -S "session successfully restored from ticket" \
3500 -s "a session has been resumed" \
3501 -c "a session has been resumed"
3502
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02003503# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott09cfa182021-10-13 16:13:44 +01003504# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02003505requires_openssl_next
Jerry Yuab082902021-12-23 18:02:22 +08003506requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003507requires_config_enabled MBEDTLS_SSL_CACHE_C
TRodziewicz4ca18aa2021-05-20 14:46:20 +02003508run_test "Session resume using cache, DTLS: openssl client" \
3509 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02003510 "( $O_NEXT_CLI -dtls -sess_out $SESSION; \
3511 $O_NEXT_CLI -dtls -sess_in $SESSION; \
TRodziewicz4ca18aa2021-05-20 14:46:20 +02003512 rm -f $SESSION )" \
3513 0 \
3514 -s "found session ticket extension" \
3515 -S "server hello, adding session ticket extension" \
3516 -s "session successfully restored from cache" \
3517 -S "session successfully restored from ticket" \
3518 -s "a session has been resumed"
3519
Jerry Yuab082902021-12-23 18:02:22 +08003520requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003521requires_config_enabled MBEDTLS_SSL_CACHE_C
TRodziewicz4ca18aa2021-05-20 14:46:20 +02003522run_test "Session resume using cache, DTLS: openssl server" \
3523 "$O_SRV -dtls" \
3524 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
3525 0 \
3526 -C "found session_ticket extension" \
3527 -C "parse new session ticket" \
3528 -c "a session has been resumed"
3529
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003530# Tests for Max Fragment Length extension
3531
Hanno Becker4aed27e2017-09-18 15:00:34 +01003532requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003533requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01003534run_test "Max fragment length: enabled, default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003535 "$P_SRV debug_level=3" \
3536 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003537 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003538 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3539 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
3540 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3541 -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003542 -C "client hello, adding max_fragment_length extension" \
3543 -S "found max fragment length extension" \
3544 -S "server hello, max_fragment_length extension" \
3545 -C "found max_fragment_length extension"
3546
Hanno Becker4aed27e2017-09-18 15:00:34 +01003547requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003548requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01003549run_test "Max fragment length: enabled, default, larger message" \
3550 "$P_SRV debug_level=3" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003551 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003552 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003553 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3554 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
3555 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3556 -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003557 -C "client hello, adding max_fragment_length extension" \
3558 -S "found max fragment length extension" \
3559 -S "server hello, max_fragment_length extension" \
3560 -C "found max_fragment_length extension" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003561 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
3562 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01003563 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01003564
3565requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003566requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01003567run_test "Max fragment length, DTLS: enabled, default, larger message" \
3568 "$P_SRV debug_level=3 dtls=1" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003569 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003570 1 \
Hanno Becker59d36702021-06-08 05:35:29 +01003571 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3572 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
3573 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3574 -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003575 -C "client hello, adding max_fragment_length extension" \
3576 -S "found max fragment length extension" \
3577 -S "server hello, max_fragment_length extension" \
3578 -C "found max_fragment_length extension" \
3579 -c "fragment larger than.*maximum "
3580
Angus Grattonc4dd0732018-04-11 16:28:39 +10003581# Run some tests with MBEDTLS_SSL_MAX_FRAGMENT_LENGTH disabled
3582# (session fragment length will be 16384 regardless of mbedtls
3583# content length configuration.)
3584
Hanno Beckerc5266962017-09-18 15:01:50 +01003585requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003586requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01003587run_test "Max fragment length: disabled, larger message" \
3588 "$P_SRV debug_level=3" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003589 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003590 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003591 -C "Maximum incoming record payload length is 16384" \
3592 -C "Maximum outgoing record payload length is 16384" \
3593 -S "Maximum incoming record payload length is 16384" \
3594 -S "Maximum outgoing record payload length is 16384" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003595 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
3596 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01003597 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01003598
3599requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003600requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Yuto Takano0509fea2021-06-21 19:43:33 +01003601run_test "Max fragment length, DTLS: disabled, larger message" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003602 "$P_SRV debug_level=3 dtls=1" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003603 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003604 1 \
Hanno Becker59d36702021-06-08 05:35:29 +01003605 -C "Maximum incoming record payload length is 16384" \
3606 -C "Maximum outgoing record payload length is 16384" \
3607 -S "Maximum incoming record payload length is 16384" \
3608 -S "Maximum outgoing record payload length is 16384" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003609 -c "fragment larger than.*maximum "
3610
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003611requires_max_content_len 4096
Hanno Beckerc5266962017-09-18 15:01:50 +01003612requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003613requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003614run_test "Max fragment length: used by client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003615 "$P_SRV debug_level=3" \
3616 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003617 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003618 -c "Maximum incoming record payload length is 4096" \
3619 -c "Maximum outgoing record payload length is 4096" \
3620 -s "Maximum incoming record payload length is 4096" \
3621 -s "Maximum outgoing record payload length is 4096" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003622 -c "client hello, adding max_fragment_length extension" \
3623 -s "found max fragment length extension" \
3624 -s "server hello, max_fragment_length extension" \
3625 -c "found max_fragment_length extension"
3626
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003627requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003628requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003629requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003630run_test "Max fragment length: client 512, server 1024" \
3631 "$P_SRV debug_level=3 max_frag_len=1024" \
3632 "$P_CLI debug_level=3 max_frag_len=512" \
3633 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003634 -c "Maximum incoming record payload length is 512" \
3635 -c "Maximum outgoing record payload length is 512" \
3636 -s "Maximum incoming record payload length is 512" \
3637 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003638 -c "client hello, adding max_fragment_length extension" \
3639 -s "found max fragment length extension" \
3640 -s "server hello, max_fragment_length extension" \
3641 -c "found max_fragment_length extension"
3642
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003643requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003644requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003645requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003646run_test "Max fragment length: client 512, server 2048" \
3647 "$P_SRV debug_level=3 max_frag_len=2048" \
3648 "$P_CLI debug_level=3 max_frag_len=512" \
3649 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003650 -c "Maximum incoming record payload length is 512" \
3651 -c "Maximum outgoing record payload length is 512" \
3652 -s "Maximum incoming record payload length is 512" \
3653 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003654 -c "client hello, adding max_fragment_length extension" \
3655 -s "found max fragment length extension" \
3656 -s "server hello, max_fragment_length extension" \
3657 -c "found max_fragment_length extension"
3658
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003659requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003660requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003661requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003662run_test "Max fragment length: client 512, server 4096" \
3663 "$P_SRV debug_level=3 max_frag_len=4096" \
3664 "$P_CLI debug_level=3 max_frag_len=512" \
3665 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003666 -c "Maximum incoming record payload length is 512" \
3667 -c "Maximum outgoing record payload length is 512" \
3668 -s "Maximum incoming record payload length is 512" \
3669 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003670 -c "client hello, adding max_fragment_length extension" \
3671 -s "found max fragment length extension" \
3672 -s "server hello, max_fragment_length extension" \
3673 -c "found max_fragment_length extension"
3674
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003675requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003676requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003677requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003678run_test "Max fragment length: client 1024, server 512" \
3679 "$P_SRV debug_level=3 max_frag_len=512" \
3680 "$P_CLI debug_level=3 max_frag_len=1024" \
3681 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003682 -c "Maximum incoming record payload length is 1024" \
3683 -c "Maximum outgoing record payload length is 1024" \
3684 -s "Maximum incoming record payload length is 1024" \
3685 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003686 -c "client hello, adding max_fragment_length extension" \
3687 -s "found max fragment length extension" \
3688 -s "server hello, max_fragment_length extension" \
3689 -c "found max_fragment_length extension"
3690
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003691requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003692requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003693requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003694run_test "Max fragment length: client 1024, server 2048" \
3695 "$P_SRV debug_level=3 max_frag_len=2048" \
3696 "$P_CLI debug_level=3 max_frag_len=1024" \
3697 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003698 -c "Maximum incoming record payload length is 1024" \
3699 -c "Maximum outgoing record payload length is 1024" \
3700 -s "Maximum incoming record payload length is 1024" \
3701 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003702 -c "client hello, adding max_fragment_length extension" \
3703 -s "found max fragment length extension" \
3704 -s "server hello, max_fragment_length extension" \
3705 -c "found max_fragment_length extension"
3706
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003707requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003708requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003709requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003710run_test "Max fragment length: client 1024, server 4096" \
3711 "$P_SRV debug_level=3 max_frag_len=4096" \
3712 "$P_CLI debug_level=3 max_frag_len=1024" \
3713 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003714 -c "Maximum incoming record payload length is 1024" \
3715 -c "Maximum outgoing record payload length is 1024" \
3716 -s "Maximum incoming record payload length is 1024" \
3717 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003718 -c "client hello, adding max_fragment_length extension" \
3719 -s "found max fragment length extension" \
3720 -s "server hello, max_fragment_length extension" \
3721 -c "found max_fragment_length extension"
3722
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003723requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003724requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003725requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003726run_test "Max fragment length: client 2048, server 512" \
3727 "$P_SRV debug_level=3 max_frag_len=512" \
3728 "$P_CLI debug_level=3 max_frag_len=2048" \
3729 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003730 -c "Maximum incoming record payload length is 2048" \
3731 -c "Maximum outgoing record payload length is 2048" \
3732 -s "Maximum incoming record payload length is 2048" \
3733 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003734 -c "client hello, adding max_fragment_length extension" \
3735 -s "found max fragment length extension" \
3736 -s "server hello, max_fragment_length extension" \
3737 -c "found max_fragment_length extension"
3738
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003739requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003740requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003741requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003742run_test "Max fragment length: client 2048, server 1024" \
3743 "$P_SRV debug_level=3 max_frag_len=1024" \
3744 "$P_CLI debug_level=3 max_frag_len=2048" \
3745 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003746 -c "Maximum incoming record payload length is 2048" \
3747 -c "Maximum outgoing record payload length is 2048" \
3748 -s "Maximum incoming record payload length is 2048" \
3749 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003750 -c "client hello, adding max_fragment_length extension" \
3751 -s "found max fragment length extension" \
3752 -s "server hello, max_fragment_length extension" \
3753 -c "found max_fragment_length extension"
3754
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003755requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003756requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003757requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003758run_test "Max fragment length: client 2048, server 4096" \
3759 "$P_SRV debug_level=3 max_frag_len=4096" \
3760 "$P_CLI debug_level=3 max_frag_len=2048" \
3761 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003762 -c "Maximum incoming record payload length is 2048" \
3763 -c "Maximum outgoing record payload length is 2048" \
3764 -s "Maximum incoming record payload length is 2048" \
3765 -s "Maximum outgoing record payload length is 2048" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003766 -c "client hello, adding max_fragment_length extension" \
3767 -s "found max fragment length extension" \
3768 -s "server hello, max_fragment_length extension" \
3769 -c "found max_fragment_length extension"
3770
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003771requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003772requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003773requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003774run_test "Max fragment length: client 4096, server 512" \
3775 "$P_SRV debug_level=3 max_frag_len=512" \
3776 "$P_CLI debug_level=3 max_frag_len=4096" \
3777 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003778 -c "Maximum incoming record payload length is 4096" \
3779 -c "Maximum outgoing record payload length is 4096" \
3780 -s "Maximum incoming record payload length is 4096" \
3781 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003782 -c "client hello, adding max_fragment_length extension" \
3783 -s "found max fragment length extension" \
3784 -s "server hello, max_fragment_length extension" \
3785 -c "found max_fragment_length extension"
3786
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003787requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003788requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003789requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003790run_test "Max fragment length: client 4096, server 1024" \
3791 "$P_SRV debug_level=3 max_frag_len=1024" \
3792 "$P_CLI debug_level=3 max_frag_len=4096" \
3793 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003794 -c "Maximum incoming record payload length is 4096" \
3795 -c "Maximum outgoing record payload length is 4096" \
3796 -s "Maximum incoming record payload length is 4096" \
3797 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003798 -c "client hello, adding max_fragment_length extension" \
3799 -s "found max fragment length extension" \
3800 -s "server hello, max_fragment_length extension" \
3801 -c "found max_fragment_length extension"
3802
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003803requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003804requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003805requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003806run_test "Max fragment length: client 4096, server 2048" \
3807 "$P_SRV debug_level=3 max_frag_len=2048" \
3808 "$P_CLI debug_level=3 max_frag_len=4096" \
3809 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003810 -c "Maximum incoming record payload length is 4096" \
3811 -c "Maximum outgoing record payload length is 4096" \
3812 -s "Maximum incoming record payload length is 4096" \
3813 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003814 -c "client hello, adding max_fragment_length extension" \
3815 -s "found max fragment length extension" \
3816 -s "server hello, max_fragment_length extension" \
3817 -c "found max_fragment_length extension"
3818
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003819requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01003820requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003821requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003822run_test "Max fragment length: used by server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003823 "$P_SRV debug_level=3 max_frag_len=4096" \
3824 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003825 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003826 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3827 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
3828 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
3829 -s "Maximum outgoing record payload length is 4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003830 -C "client hello, adding max_fragment_length extension" \
3831 -S "found max fragment length extension" \
3832 -S "server hello, max_fragment_length extension" \
3833 -C "found max_fragment_length extension"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003834
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003835requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01003836requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003837requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08003838requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003839run_test "Max fragment length: gnutls server" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003840 "$G_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003841 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003842 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003843 -c "Maximum incoming record payload length is 4096" \
3844 -c "Maximum outgoing record payload length is 4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003845 -c "client hello, adding max_fragment_length extension" \
3846 -c "found max_fragment_length extension"
3847
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003848requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01003849requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003850requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003851run_test "Max fragment length: client, message just fits" \
3852 "$P_SRV debug_level=3" \
3853 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2048" \
3854 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003855 -c "Maximum incoming record payload length is 2048" \
3856 -c "Maximum outgoing record payload length is 2048" \
3857 -s "Maximum incoming record payload length is 2048" \
3858 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003859 -c "client hello, adding max_fragment_length extension" \
3860 -s "found max fragment length extension" \
3861 -s "server hello, max_fragment_length extension" \
3862 -c "found max_fragment_length extension" \
3863 -c "2048 bytes written in 1 fragments" \
3864 -s "2048 bytes read"
3865
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003866requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01003867requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003868requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003869run_test "Max fragment length: client, larger message" \
3870 "$P_SRV debug_level=3" \
3871 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2345" \
3872 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01003873 -c "Maximum incoming record payload length is 2048" \
3874 -c "Maximum outgoing record payload length is 2048" \
3875 -s "Maximum incoming record payload length is 2048" \
3876 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003877 -c "client hello, adding max_fragment_length extension" \
3878 -s "found max fragment length extension" \
3879 -s "server hello, max_fragment_length extension" \
3880 -c "found max_fragment_length extension" \
3881 -c "2345 bytes written in 2 fragments" \
3882 -s "2048 bytes read" \
3883 -s "297 bytes read"
3884
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01003885requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01003886requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08003887requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard23eb74d2015-01-21 14:37:13 +00003888run_test "Max fragment length: DTLS client, larger message" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003889 "$P_SRV debug_level=3 dtls=1" \
3890 "$P_CLI debug_level=3 dtls=1 max_frag_len=2048 request_size=2345" \
3891 1 \
Hanno Becker59d36702021-06-08 05:35:29 +01003892 -c "Maximum incoming record payload length is 2048" \
3893 -c "Maximum outgoing record payload length is 2048" \
3894 -s "Maximum incoming record payload length is 2048" \
3895 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003896 -c "client hello, adding max_fragment_length extension" \
3897 -s "found max fragment length extension" \
3898 -s "server hello, max_fragment_length extension" \
3899 -c "found max_fragment_length extension" \
3900 -c "fragment larger than.*maximum"
3901
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003902# Tests for renegotiation
3903
Hanno Becker6a243642017-10-12 15:18:45 +01003904# Renegotiation SCSV always added, regardless of SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08003905requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003906run_test "Renegotiation: none, for reference" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003907 "$P_SRV debug_level=3 exchanges=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003908 "$P_CLI debug_level=3 exchanges=2" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003909 0 \
3910 -C "client hello, adding renegotiation extension" \
3911 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3912 -S "found renegotiation extension" \
3913 -s "server hello, secure renegotiation extension" \
3914 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003915 -C "=> renegotiate" \
3916 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003917 -S "write hello request"
3918
Hanno Becker6a243642017-10-12 15:18:45 +01003919requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08003920requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003921run_test "Renegotiation: client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003922 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003923 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003924 0 \
3925 -c "client hello, adding renegotiation extension" \
3926 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3927 -s "found renegotiation extension" \
3928 -s "server hello, secure renegotiation extension" \
3929 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003930 -c "=> renegotiate" \
3931 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003932 -S "write hello request"
3933
Hanno Becker6a243642017-10-12 15:18:45 +01003934requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08003935requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003936run_test "Renegotiation: server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003937 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003938 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003939 0 \
3940 -c "client hello, adding renegotiation extension" \
3941 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3942 -s "found renegotiation extension" \
3943 -s "server hello, secure renegotiation extension" \
3944 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003945 -c "=> renegotiate" \
3946 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003947 -s "write hello request"
3948
Janos Follathb0f148c2017-10-05 12:29:42 +01003949# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
3950# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +02003951# algorithm stronger than SHA-1 is enabled in mbedtls_config.h
Hanno Becker6a243642017-10-12 15:18:45 +01003952requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08003953requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follathb0f148c2017-10-05 12:29:42 +01003954run_test "Renegotiation: Signature Algorithms parsing, client-initiated" \
3955 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
3956 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
3957 0 \
3958 -c "client hello, adding renegotiation extension" \
3959 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3960 -s "found renegotiation extension" \
3961 -s "server hello, secure renegotiation extension" \
3962 -c "found renegotiation extension" \
3963 -c "=> renegotiate" \
3964 -s "=> renegotiate" \
3965 -S "write hello request" \
3966 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
3967
3968# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
3969# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +02003970# algorithm stronger than SHA-1 is enabled in mbedtls_config.h
Hanno Becker6a243642017-10-12 15:18:45 +01003971requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08003972requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follathb0f148c2017-10-05 12:29:42 +01003973run_test "Renegotiation: Signature Algorithms parsing, server-initiated" \
3974 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
3975 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
3976 0 \
3977 -c "client hello, adding renegotiation extension" \
3978 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3979 -s "found renegotiation extension" \
3980 -s "server hello, secure renegotiation extension" \
3981 -c "found renegotiation extension" \
3982 -c "=> renegotiate" \
3983 -s "=> renegotiate" \
3984 -s "write hello request" \
3985 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
3986
Hanno Becker6a243642017-10-12 15:18:45 +01003987requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08003988requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003989run_test "Renegotiation: double" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003990 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003991 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003992 0 \
3993 -c "client hello, adding renegotiation extension" \
3994 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3995 -s "found renegotiation extension" \
3996 -s "server hello, secure renegotiation extension" \
3997 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003998 -c "=> renegotiate" \
3999 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004000 -s "write hello request"
4001
Hanno Becker6a243642017-10-12 15:18:45 +01004002requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Andrzej Kurek8ea68722020-04-03 06:40:47 -04004003requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004004requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08004005requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek8ea68722020-04-03 06:40:47 -04004006run_test "Renegotiation with max fragment length: client 2048, server 512" \
4007 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1 max_frag_len=512" \
4008 "$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" \
4009 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004010 -c "Maximum incoming record payload length is 2048" \
4011 -c "Maximum outgoing record payload length is 2048" \
4012 -s "Maximum incoming record payload length is 2048" \
4013 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek8ea68722020-04-03 06:40:47 -04004014 -c "client hello, adding max_fragment_length extension" \
4015 -s "found max fragment length extension" \
4016 -s "server hello, max_fragment_length extension" \
4017 -c "found max_fragment_length extension" \
4018 -c "client hello, adding renegotiation extension" \
4019 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4020 -s "found renegotiation extension" \
4021 -s "server hello, secure renegotiation extension" \
4022 -c "found renegotiation extension" \
4023 -c "=> renegotiate" \
4024 -s "=> renegotiate" \
4025 -s "write hello request"
4026
4027requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004028requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004029run_test "Renegotiation: client-initiated, server-rejected" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004030 "$P_SRV debug_level=3 exchanges=2 renegotiation=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004031 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004032 1 \
4033 -c "client hello, adding renegotiation extension" \
4034 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4035 -S "found renegotiation extension" \
4036 -s "server hello, secure renegotiation extension" \
4037 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004038 -c "=> renegotiate" \
4039 -S "=> renegotiate" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004040 -S "write hello request" \
Manuel Pégourié-Gonnard65919622014-08-19 12:50:30 +02004041 -c "SSL - Unexpected message at ServerHello in renegotiation" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004042 -c "failed"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004043
Hanno Becker6a243642017-10-12 15:18:45 +01004044requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004045requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004046run_test "Renegotiation: server-initiated, client-rejected, default" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004047 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004048 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004049 0 \
4050 -C "client hello, adding renegotiation extension" \
4051 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4052 -S "found renegotiation extension" \
4053 -s "server hello, secure renegotiation extension" \
4054 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004055 -C "=> renegotiate" \
4056 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004057 -s "write hello request" \
Manuel Pégourié-Gonnarda9964db2014-07-03 19:29:16 +02004058 -S "SSL - An unexpected message was received from our peer" \
4059 -S "failed"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01004060
Hanno Becker6a243642017-10-12 15:18:45 +01004061requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004062requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004063run_test "Renegotiation: server-initiated, client-rejected, not enforced" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004064 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004065 renego_delay=-1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004066 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004067 0 \
4068 -C "client hello, adding renegotiation extension" \
4069 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4070 -S "found renegotiation extension" \
4071 -s "server hello, secure renegotiation extension" \
4072 -c "found renegotiation extension" \
4073 -C "=> renegotiate" \
4074 -S "=> renegotiate" \
4075 -s "write hello request" \
4076 -S "SSL - An unexpected message was received from our peer" \
4077 -S "failed"
4078
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02004079# delay 2 for 1 alert record + 1 application data record
Hanno Becker6a243642017-10-12 15:18:45 +01004080requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004081requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004082run_test "Renegotiation: server-initiated, client-rejected, delay 2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004083 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004084 renego_delay=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004085 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004086 0 \
4087 -C "client hello, adding renegotiation extension" \
4088 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4089 -S "found renegotiation extension" \
4090 -s "server hello, secure renegotiation extension" \
4091 -c "found renegotiation extension" \
4092 -C "=> renegotiate" \
4093 -S "=> renegotiate" \
4094 -s "write hello request" \
4095 -S "SSL - An unexpected message was received from our peer" \
4096 -S "failed"
4097
Hanno Becker6a243642017-10-12 15:18:45 +01004098requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004099requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004100run_test "Renegotiation: server-initiated, client-rejected, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004101 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004102 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004103 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004104 0 \
4105 -C "client hello, adding renegotiation extension" \
4106 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4107 -S "found renegotiation extension" \
4108 -s "server hello, secure renegotiation extension" \
4109 -c "found renegotiation extension" \
4110 -C "=> renegotiate" \
4111 -S "=> renegotiate" \
4112 -s "write hello request" \
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02004113 -s "SSL - An unexpected message was received from our peer"
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004114
Hanno Becker6a243642017-10-12 15:18:45 +01004115requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004116requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004117run_test "Renegotiation: server-initiated, client-accepted, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004118 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004119 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004120 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004121 0 \
4122 -c "client hello, adding renegotiation extension" \
4123 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4124 -s "found renegotiation extension" \
4125 -s "server hello, secure renegotiation extension" \
4126 -c "found renegotiation extension" \
4127 -c "=> renegotiate" \
4128 -s "=> renegotiate" \
4129 -s "write hello request" \
4130 -S "SSL - An unexpected message was received from our peer" \
4131 -S "failed"
4132
Hanno Becker6a243642017-10-12 15:18:45 +01004133requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004134requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004135run_test "Renegotiation: periodic, just below period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004136 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004137 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
4138 0 \
4139 -C "client hello, adding renegotiation extension" \
4140 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4141 -S "found renegotiation extension" \
4142 -s "server hello, secure renegotiation extension" \
4143 -c "found renegotiation extension" \
4144 -S "record counter limit reached: renegotiate" \
4145 -C "=> renegotiate" \
4146 -S "=> renegotiate" \
4147 -S "write hello request" \
4148 -S "SSL - An unexpected message was received from our peer" \
4149 -S "failed"
4150
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004151# one extra exchange to be able to complete renego
Hanno Becker6a243642017-10-12 15:18:45 +01004152requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004153requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004154run_test "Renegotiation: periodic, just above period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004155 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004156 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004157 0 \
4158 -c "client hello, adding renegotiation extension" \
4159 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4160 -s "found renegotiation extension" \
4161 -s "server hello, secure renegotiation extension" \
4162 -c "found renegotiation extension" \
4163 -s "record counter limit reached: renegotiate" \
4164 -c "=> renegotiate" \
4165 -s "=> renegotiate" \
4166 -s "write hello request" \
4167 -S "SSL - An unexpected message was received from our peer" \
4168 -S "failed"
4169
Hanno Becker6a243642017-10-12 15:18:45 +01004170requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004171requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004172run_test "Renegotiation: periodic, two times period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004173 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004174 "$P_CLI debug_level=3 exchanges=7 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004175 0 \
4176 -c "client hello, adding renegotiation extension" \
4177 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4178 -s "found renegotiation extension" \
4179 -s "server hello, secure renegotiation extension" \
4180 -c "found renegotiation extension" \
4181 -s "record counter limit reached: renegotiate" \
4182 -c "=> renegotiate" \
4183 -s "=> renegotiate" \
4184 -s "write hello request" \
4185 -S "SSL - An unexpected message was received from our peer" \
4186 -S "failed"
4187
Hanno Becker6a243642017-10-12 15:18:45 +01004188requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004189requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004190run_test "Renegotiation: periodic, above period, disabled" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004191 "$P_SRV debug_level=3 exchanges=9 renegotiation=0 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004192 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
4193 0 \
4194 -C "client hello, adding renegotiation extension" \
4195 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4196 -S "found renegotiation extension" \
4197 -s "server hello, secure renegotiation extension" \
4198 -c "found renegotiation extension" \
4199 -S "record counter limit reached: renegotiate" \
4200 -C "=> renegotiate" \
4201 -S "=> renegotiate" \
4202 -S "write hello request" \
4203 -S "SSL - An unexpected message was received from our peer" \
4204 -S "failed"
4205
Hanno Becker6a243642017-10-12 15:18:45 +01004206requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004207requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004208run_test "Renegotiation: nbio, client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004209 "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004210 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02004211 0 \
4212 -c "client hello, adding renegotiation extension" \
4213 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4214 -s "found renegotiation extension" \
4215 -s "server hello, secure renegotiation extension" \
4216 -c "found renegotiation extension" \
4217 -c "=> renegotiate" \
4218 -s "=> renegotiate" \
4219 -S "write hello request"
4220
Hanno Becker6a243642017-10-12 15:18:45 +01004221requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004222requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004223run_test "Renegotiation: nbio, server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004224 "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004225 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02004226 0 \
4227 -c "client hello, adding renegotiation extension" \
4228 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4229 -s "found renegotiation extension" \
4230 -s "server hello, secure renegotiation extension" \
4231 -c "found renegotiation extension" \
4232 -c "=> renegotiate" \
4233 -s "=> renegotiate" \
4234 -s "write hello request"
4235
Hanno Becker6a243642017-10-12 15:18:45 +01004236requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004237requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004238run_test "Renegotiation: openssl server, client-initiated" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02004239 "$O_SRV -www" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004240 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004241 0 \
4242 -c "client hello, adding renegotiation extension" \
4243 -c "found renegotiation extension" \
4244 -c "=> renegotiate" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004245 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004246 -C "error" \
4247 -c "HTTP/1.0 200 [Oo][Kk]"
4248
Paul Bakker539d9722015-02-08 16:18:35 +01004249requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004250requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004251requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004252run_test "Renegotiation: gnutls server strict, client-initiated" \
4253 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004254 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004255 0 \
4256 -c "client hello, adding renegotiation extension" \
4257 -c "found renegotiation extension" \
4258 -c "=> renegotiate" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004259 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004260 -C "error" \
4261 -c "HTTP/1.0 200 [Oo][Kk]"
4262
Paul Bakker539d9722015-02-08 16:18:35 +01004263requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004264requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004265requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004266run_test "Renegotiation: gnutls server unsafe, client-initiated default" \
4267 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4268 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
4269 1 \
4270 -c "client hello, adding renegotiation extension" \
4271 -C "found renegotiation extension" \
4272 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004273 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004274 -c "error" \
4275 -C "HTTP/1.0 200 [Oo][Kk]"
4276
Paul Bakker539d9722015-02-08 16:18:35 +01004277requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004278requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004279requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004280run_test "Renegotiation: gnutls server unsafe, client-inititated no legacy" \
4281 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4282 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
4283 allow_legacy=0" \
4284 1 \
4285 -c "client hello, adding renegotiation extension" \
4286 -C "found renegotiation extension" \
4287 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004288 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004289 -c "error" \
4290 -C "HTTP/1.0 200 [Oo][Kk]"
4291
Paul Bakker539d9722015-02-08 16:18:35 +01004292requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004293requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004294requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004295run_test "Renegotiation: gnutls server unsafe, client-inititated legacy" \
4296 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4297 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
4298 allow_legacy=1" \
4299 0 \
4300 -c "client hello, adding renegotiation extension" \
4301 -C "found renegotiation extension" \
4302 -c "=> renegotiate" \
4303 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004304 -C "error" \
4305 -c "HTTP/1.0 200 [Oo][Kk]"
4306
Hanno Becker6a243642017-10-12 15:18:45 +01004307requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004308requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard30d16eb2014-08-19 17:43:50 +02004309run_test "Renegotiation: DTLS, client-initiated" \
4310 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1" \
4311 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
4312 0 \
4313 -c "client hello, adding renegotiation extension" \
4314 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4315 -s "found renegotiation extension" \
4316 -s "server hello, secure renegotiation extension" \
4317 -c "found renegotiation extension" \
4318 -c "=> renegotiate" \
4319 -s "=> renegotiate" \
4320 -S "write hello request"
4321
Hanno Becker6a243642017-10-12 15:18:45 +01004322requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004323requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02004324run_test "Renegotiation: DTLS, server-initiated" \
4325 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnarddf9a0a82014-10-02 14:17:18 +02004326 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 \
4327 read_timeout=1000 max_resend=2" \
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02004328 0 \
4329 -c "client hello, adding renegotiation extension" \
4330 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4331 -s "found renegotiation extension" \
4332 -s "server hello, secure renegotiation extension" \
4333 -c "found renegotiation extension" \
4334 -c "=> renegotiate" \
4335 -s "=> renegotiate" \
4336 -s "write hello request"
4337
Hanno Becker6a243642017-10-12 15:18:45 +01004338requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004339requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres AG692ad842017-01-19 16:30:57 +00004340run_test "Renegotiation: DTLS, renego_period overflow" \
4341 "$P_SRV debug_level=3 dtls=1 exchanges=4 renegotiation=1 renego_period=18446462598732840962 auth_mode=optional" \
4342 "$P_CLI debug_level=3 dtls=1 exchanges=4 renegotiation=1" \
4343 0 \
4344 -c "client hello, adding renegotiation extension" \
4345 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4346 -s "found renegotiation extension" \
4347 -s "server hello, secure renegotiation extension" \
4348 -s "record counter limit reached: renegotiate" \
4349 -c "=> renegotiate" \
4350 -s "=> renegotiate" \
Hanno Becker6a243642017-10-12 15:18:45 +01004351 -s "write hello request"
Andres AG692ad842017-01-19 16:30:57 +00004352
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00004353requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004354requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08004355requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02004356run_test "Renegotiation: DTLS, gnutls server, client-initiated" \
4357 "$G_SRV -u --mtu 4096" \
4358 "$P_CLI debug_level=3 dtls=1 exchanges=1 renegotiation=1 renegotiate=1" \
4359 0 \
4360 -c "client hello, adding renegotiation extension" \
4361 -c "found renegotiation extension" \
4362 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004363 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02004364 -C "error" \
4365 -s "Extra-header:"
4366
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004367# Test for the "secure renegotation" extension only (no actual renegotiation)
4368
Paul Bakker539d9722015-02-08 16:18:35 +01004369requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004370requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004371run_test "Renego ext: gnutls server strict, client default" \
4372 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
4373 "$P_CLI debug_level=3" \
4374 0 \
4375 -c "found renegotiation extension" \
4376 -C "error" \
4377 -c "HTTP/1.0 200 [Oo][Kk]"
4378
Paul Bakker539d9722015-02-08 16:18:35 +01004379requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004380requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004381run_test "Renego ext: gnutls server unsafe, client default" \
4382 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4383 "$P_CLI debug_level=3" \
4384 0 \
4385 -C "found renegotiation extension" \
4386 -C "error" \
4387 -c "HTTP/1.0 200 [Oo][Kk]"
4388
Paul Bakker539d9722015-02-08 16:18:35 +01004389requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004390requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004391run_test "Renego ext: gnutls server unsafe, client break legacy" \
4392 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4393 "$P_CLI debug_level=3 allow_legacy=-1" \
4394 1 \
4395 -C "found renegotiation extension" \
4396 -c "error" \
4397 -C "HTTP/1.0 200 [Oo][Kk]"
4398
Paul Bakker539d9722015-02-08 16:18:35 +01004399requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004400requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004401run_test "Renego ext: gnutls client strict, server default" \
4402 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004403 "$G_CLI --priority=NORMAL:%SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004404 0 \
4405 -s "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4406 -s "server hello, secure renegotiation extension"
4407
Paul Bakker539d9722015-02-08 16:18:35 +01004408requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004409requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004410run_test "Renego ext: gnutls client unsafe, server default" \
4411 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004412 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004413 0 \
4414 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4415 -S "server hello, secure renegotiation extension"
4416
Paul Bakker539d9722015-02-08 16:18:35 +01004417requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004418requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004419run_test "Renego ext: gnutls client unsafe, server break legacy" \
4420 "$P_SRV debug_level=3 allow_legacy=-1" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004421 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004422 1 \
4423 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4424 -S "server hello, secure renegotiation extension"
4425
Janos Follath0b242342016-02-17 10:11:21 +00004426# Tests for silently dropping trailing extra bytes in .der certificates
4427
4428requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004429requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00004430run_test "DER format: no trailing bytes" \
4431 "$P_SRV crt_file=data_files/server5-der0.crt \
4432 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004433 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004434 0 \
4435 -c "Handshake was completed" \
4436
4437requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004438requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00004439run_test "DER format: with a trailing zero byte" \
4440 "$P_SRV crt_file=data_files/server5-der1a.crt \
4441 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004442 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004443 0 \
4444 -c "Handshake was completed" \
4445
4446requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004447requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00004448run_test "DER format: with a trailing random byte" \
4449 "$P_SRV crt_file=data_files/server5-der1b.crt \
4450 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004451 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004452 0 \
4453 -c "Handshake was completed" \
4454
4455requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004456requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00004457run_test "DER format: with 2 trailing random bytes" \
4458 "$P_SRV crt_file=data_files/server5-der2.crt \
4459 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004460 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004461 0 \
4462 -c "Handshake was completed" \
4463
4464requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004465requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00004466run_test "DER format: with 4 trailing random bytes" \
4467 "$P_SRV crt_file=data_files/server5-der4.crt \
4468 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004469 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004470 0 \
4471 -c "Handshake was completed" \
4472
4473requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004474requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00004475run_test "DER format: with 8 trailing random bytes" \
4476 "$P_SRV crt_file=data_files/server5-der8.crt \
4477 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004478 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004479 0 \
4480 -c "Handshake was completed" \
4481
4482requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004483requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00004484run_test "DER format: with 9 trailing random bytes" \
4485 "$P_SRV crt_file=data_files/server5-der9.crt \
4486 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004487 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004488 0 \
4489 -c "Handshake was completed" \
4490
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03004491# Tests for auth_mode, there are duplicated tests using ca callback for authentication
4492# When updating these tests, modify the matching authentication tests accordingly
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004493
Jerry Yuab082902021-12-23 18:02:22 +08004494requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004495run_test "Authentication: server badcert, client required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004496 "$P_SRV crt_file=data_files/server5-badsign.crt \
4497 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004498 "$P_CLI debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004499 1 \
4500 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004501 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004502 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004503 -c "X509 - Certificate verification failed"
4504
Jerry Yuab082902021-12-23 18:02:22 +08004505requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004506run_test "Authentication: server badcert, client optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004507 "$P_SRV crt_file=data_files/server5-badsign.crt \
4508 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004509 "$P_CLI debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004510 0 \
4511 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004512 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004513 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004514 -C "X509 - Certificate verification failed"
4515
Jerry Yuab082902021-12-23 18:02:22 +08004516requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere6706e62017-05-15 16:05:15 +01004517run_test "Authentication: server goodcert, client optional, no trusted CA" \
4518 "$P_SRV" \
4519 "$P_CLI debug_level=3 auth_mode=optional ca_file=none ca_path=none" \
4520 0 \
4521 -c "x509_verify_cert() returned" \
4522 -c "! The certificate is not correctly signed by the trusted CA" \
4523 -c "! Certificate verification flags"\
4524 -C "! mbedtls_ssl_handshake returned" \
4525 -C "X509 - Certificate verification failed" \
4526 -C "SSL - No CA Chain is set, but required to operate"
4527
Jerry Yuab082902021-12-23 18:02:22 +08004528requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere6706e62017-05-15 16:05:15 +01004529run_test "Authentication: server goodcert, client required, no trusted CA" \
4530 "$P_SRV" \
4531 "$P_CLI debug_level=3 auth_mode=required ca_file=none ca_path=none" \
4532 1 \
4533 -c "x509_verify_cert() returned" \
4534 -c "! The certificate is not correctly signed by the trusted CA" \
4535 -c "! Certificate verification flags"\
4536 -c "! mbedtls_ssl_handshake returned" \
4537 -c "SSL - No CA Chain is set, but required to operate"
4538
4539# The purpose of the next two tests is to test the client's behaviour when receiving a server
4540# certificate with an unsupported elliptic curve. This should usually not happen because
4541# the client informs the server about the supported curves - it does, though, in the
4542# corner case of a static ECDH suite, because the server doesn't check the curve on that
4543# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
4544# different means to have the server ignoring the client's supported curve list.
4545
4546requires_config_enabled MBEDTLS_ECP_C
Jerry Yuab082902021-12-23 18:02:22 +08004547requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere6706e62017-05-15 16:05:15 +01004548run_test "Authentication: server ECDH p256v1, client required, p256v1 unsupported" \
4549 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4550 crt_file=data_files/server5.ku-ka.crt" \
4551 "$P_CLI debug_level=3 auth_mode=required curves=secp521r1" \
4552 1 \
4553 -c "bad certificate (EC key curve)"\
4554 -c "! Certificate verification flags"\
4555 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
4556
4557requires_config_enabled MBEDTLS_ECP_C
Jerry Yuab082902021-12-23 18:02:22 +08004558requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere6706e62017-05-15 16:05:15 +01004559run_test "Authentication: server ECDH p256v1, client optional, p256v1 unsupported" \
4560 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4561 crt_file=data_files/server5.ku-ka.crt" \
4562 "$P_CLI debug_level=3 auth_mode=optional curves=secp521r1" \
4563 1 \
4564 -c "bad certificate (EC key curve)"\
4565 -c "! Certificate verification flags"\
4566 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
4567
Jerry Yuab082902021-12-23 18:02:22 +08004568requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004569run_test "Authentication: server badcert, client none" \
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01004570 "$P_SRV crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004571 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004572 "$P_CLI debug_level=1 auth_mode=none" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004573 0 \
4574 -C "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004575 -C "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004576 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004577 -C "X509 - Certificate verification failed"
4578
Jerry Yuab082902021-12-23 18:02:22 +08004579requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Simon Butcher99000142016-10-13 17:21:01 +01004580run_test "Authentication: client SHA256, server required" \
4581 "$P_SRV auth_mode=required" \
4582 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4583 key_file=data_files/server6.key \
4584 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
4585 0 \
4586 -c "Supported Signature Algorithm found: 4," \
4587 -c "Supported Signature Algorithm found: 5,"
4588
Jerry Yuab082902021-12-23 18:02:22 +08004589requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Simon Butcher99000142016-10-13 17:21:01 +01004590run_test "Authentication: client SHA384, server required" \
4591 "$P_SRV auth_mode=required" \
4592 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4593 key_file=data_files/server6.key \
4594 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
4595 0 \
4596 -c "Supported Signature Algorithm found: 4," \
4597 -c "Supported Signature Algorithm found: 5,"
4598
Jerry Yuab082902021-12-23 18:02:22 +08004599requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefd8332e2017-05-03 16:25:07 +02004600run_test "Authentication: client has no cert, server required (TLS)" \
4601 "$P_SRV debug_level=3 auth_mode=required" \
4602 "$P_CLI debug_level=3 crt_file=none \
4603 key_file=data_files/server5.key" \
4604 1 \
4605 -S "skip write certificate request" \
4606 -C "skip parse certificate request" \
4607 -c "got a certificate request" \
4608 -c "= write certificate$" \
4609 -C "skip write certificate$" \
4610 -S "x509_verify_cert() returned" \
4611 -s "client has no certificate" \
4612 -s "! mbedtls_ssl_handshake returned" \
4613 -c "! mbedtls_ssl_handshake returned" \
4614 -s "No client certification received from the client, but required by the authentication mode"
4615
Jerry Yuab082902021-12-23 18:02:22 +08004616requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004617run_test "Authentication: client badcert, server required" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004618 "$P_SRV debug_level=3 auth_mode=required" \
4619 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004620 key_file=data_files/server5.key" \
4621 1 \
4622 -S "skip write certificate request" \
4623 -C "skip parse certificate request" \
4624 -c "got a certificate request" \
4625 -C "skip write certificate" \
4626 -C "skip write certificate verify" \
4627 -S "skip parse certificate verify" \
4628 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02004629 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004630 -s "! mbedtls_ssl_handshake returned" \
Gilles Peskine1cc8e342017-05-03 16:28:34 +02004631 -s "send alert level=2 message=48" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004632 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004633 -s "X509 - Certificate verification failed"
Gilles Peskine1cc8e342017-05-03 16:28:34 +02004634# We don't check that the client receives the alert because it might
4635# detect that its write end of the connection is closed and abort
4636# before reading the alert message.
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004637
Jerry Yuab082902021-12-23 18:02:22 +08004638requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinee1cc60e2022-01-07 23:10:56 +01004639run_test "Authentication: client cert self-signed and trusted, server required" \
4640 "$P_SRV debug_level=3 auth_mode=required ca_file=data_files/server5-selfsigned.crt" \
4641 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4642 key_file=data_files/server5.key" \
4643 0 \
4644 -S "skip write certificate request" \
4645 -C "skip parse certificate request" \
4646 -c "got a certificate request" \
4647 -C "skip write certificate" \
4648 -C "skip write certificate verify" \
4649 -S "skip parse certificate verify" \
4650 -S "x509_verify_cert() returned" \
4651 -S "! The certificate is not correctly signed" \
4652 -S "X509 - Certificate verification failed"
4653
Jerry Yuab082902021-12-23 18:02:22 +08004654requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath89baba22017-04-10 14:34:35 +01004655run_test "Authentication: client cert not trusted, server required" \
4656 "$P_SRV debug_level=3 auth_mode=required" \
4657 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4658 key_file=data_files/server5.key" \
4659 1 \
4660 -S "skip write certificate request" \
4661 -C "skip parse certificate request" \
4662 -c "got a certificate request" \
4663 -C "skip write certificate" \
4664 -C "skip write certificate verify" \
4665 -S "skip parse certificate verify" \
4666 -s "x509_verify_cert() returned" \
4667 -s "! The certificate is not correctly signed by the trusted CA" \
4668 -s "! mbedtls_ssl_handshake returned" \
4669 -c "! mbedtls_ssl_handshake returned" \
4670 -s "X509 - Certificate verification failed"
4671
Jerry Yuab082902021-12-23 18:02:22 +08004672requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004673run_test "Authentication: client badcert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004674 "$P_SRV debug_level=3 auth_mode=optional" \
4675 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004676 key_file=data_files/server5.key" \
4677 0 \
4678 -S "skip write certificate request" \
4679 -C "skip parse certificate request" \
4680 -c "got a certificate request" \
4681 -C "skip write certificate" \
4682 -C "skip write certificate verify" \
4683 -S "skip parse certificate verify" \
4684 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004685 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004686 -S "! mbedtls_ssl_handshake returned" \
4687 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004688 -S "X509 - Certificate verification failed"
4689
Jerry Yuab082902021-12-23 18:02:22 +08004690requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004691run_test "Authentication: client badcert, server none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004692 "$P_SRV debug_level=3 auth_mode=none" \
4693 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004694 key_file=data_files/server5.key" \
4695 0 \
4696 -s "skip write certificate request" \
4697 -C "skip parse certificate request" \
4698 -c "got no certificate request" \
4699 -c "skip write certificate" \
4700 -c "skip write certificate verify" \
4701 -s "skip parse certificate verify" \
4702 -S "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004703 -S "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004704 -S "! mbedtls_ssl_handshake returned" \
4705 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004706 -S "X509 - Certificate verification failed"
4707
Jerry Yuab082902021-12-23 18:02:22 +08004708requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004709run_test "Authentication: client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004710 "$P_SRV debug_level=3 auth_mode=optional" \
4711 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004712 0 \
4713 -S "skip write certificate request" \
4714 -C "skip parse certificate request" \
4715 -c "got a certificate request" \
4716 -C "skip write certificate$" \
4717 -C "got no certificate to send" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004718 -c "skip write certificate verify" \
4719 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004720 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004721 -S "! mbedtls_ssl_handshake returned" \
4722 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004723 -S "X509 - Certificate verification failed"
4724
Jerry Yuab082902021-12-23 18:02:22 +08004725requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004726run_test "Authentication: openssl client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004727 "$P_SRV debug_level=3 auth_mode=optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004728 "$O_CLI" \
4729 0 \
4730 -S "skip write certificate request" \
4731 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004732 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004733 -S "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004734 -S "X509 - Certificate verification failed"
4735
Jerry Yuab082902021-12-23 18:02:22 +08004736requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004737run_test "Authentication: client no cert, openssl server optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004738 "$O_SRV -verify 10" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004739 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004740 0 \
4741 -C "skip parse certificate request" \
4742 -c "got a certificate request" \
4743 -C "skip write certificate$" \
4744 -c "skip write certificate verify" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004745 -C "! mbedtls_ssl_handshake returned"
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004746
Jerry Yuab082902021-12-23 18:02:22 +08004747requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefd8332e2017-05-03 16:25:07 +02004748run_test "Authentication: client no cert, openssl server required" \
4749 "$O_SRV -Verify 10" \
4750 "$P_CLI debug_level=3 crt_file=none key_file=none" \
4751 1 \
4752 -C "skip parse certificate request" \
4753 -c "got a certificate request" \
4754 -C "skip write certificate$" \
4755 -c "skip write certificate verify" \
4756 -c "! mbedtls_ssl_handshake returned"
4757
Yuto Takano02485822021-07-02 13:05:15 +01004758# This script assumes that MBEDTLS_X509_MAX_INTERMEDIATE_CA has its default
4759# value, defined here as MAX_IM_CA. Some test cases will be skipped if the
4760# library is configured with a different value.
Hanno Beckera6bca9f2017-07-26 13:35:11 +01004761
Simon Butcherbcfa6f42017-07-28 15:59:35 +01004762MAX_IM_CA='8'
Hanno Beckera6bca9f2017-07-26 13:35:11 +01004763
Yuto Takano02485822021-07-02 13:05:15 +01004764# The tests for the max_int tests can pass with any number higher than MAX_IM_CA
4765# because only a chain of MAX_IM_CA length is tested. Equally, the max_int+1
4766# tests can pass with any number less than MAX_IM_CA. However, stricter preconditions
4767# are in place so that the semantics are consistent with the test description.
Yuto Takano6f657432021-07-02 13:10:41 +01004768requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004769requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004770requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004771run_test "Authentication: server max_int chain, client default" \
4772 "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
4773 key_file=data_files/dir-maxpath/09.key" \
4774 "$P_CLI server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
4775 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004776 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004777
Yuto Takano6f657432021-07-02 13:10:41 +01004778requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004779requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004780requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004781run_test "Authentication: server max_int+1 chain, client default" \
4782 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4783 key_file=data_files/dir-maxpath/10.key" \
4784 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
4785 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004786 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004787
Yuto Takano6f657432021-07-02 13:10:41 +01004788requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004789requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004790requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004791run_test "Authentication: server max_int+1 chain, client optional" \
4792 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4793 key_file=data_files/dir-maxpath/10.key" \
4794 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
4795 auth_mode=optional" \
4796 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004797 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004798
Yuto Takano6f657432021-07-02 13:10:41 +01004799requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004800requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004801requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004802run_test "Authentication: server max_int+1 chain, client none" \
4803 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4804 key_file=data_files/dir-maxpath/10.key" \
4805 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
4806 auth_mode=none" \
4807 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004808 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004809
Yuto Takano6f657432021-07-02 13:10:41 +01004810requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004811requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004812requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004813run_test "Authentication: client max_int+1 chain, server default" \
4814 "$P_SRV ca_file=data_files/dir-maxpath/00.crt" \
4815 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4816 key_file=data_files/dir-maxpath/10.key" \
4817 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004818 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004819
Yuto Takano6f657432021-07-02 13:10:41 +01004820requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004821requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004822requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004823run_test "Authentication: client max_int+1 chain, server optional" \
4824 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
4825 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4826 key_file=data_files/dir-maxpath/10.key" \
4827 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004828 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004829
Yuto Takano6f657432021-07-02 13:10:41 +01004830requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004831requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004832requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004833run_test "Authentication: client max_int+1 chain, server required" \
4834 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4835 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4836 key_file=data_files/dir-maxpath/10.key" \
4837 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004838 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004839
Yuto Takano6f657432021-07-02 13:10:41 +01004840requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004841requires_full_size_output_buffer
Jerry Yuab082902021-12-23 18:02:22 +08004842requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004843run_test "Authentication: client max_int chain, server required" \
4844 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4845 "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
4846 key_file=data_files/dir-maxpath/09.key" \
4847 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004848 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004849
Janos Follath89baba22017-04-10 14:34:35 +01004850# Tests for CA list in CertificateRequest messages
4851
Jerry Yuab082902021-12-23 18:02:22 +08004852requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath89baba22017-04-10 14:34:35 +01004853run_test "Authentication: send CA list in CertificateRequest (default)" \
4854 "$P_SRV debug_level=3 auth_mode=required" \
4855 "$P_CLI crt_file=data_files/server6.crt \
4856 key_file=data_files/server6.key" \
4857 0 \
4858 -s "requested DN"
4859
Jerry Yuab082902021-12-23 18:02:22 +08004860requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath89baba22017-04-10 14:34:35 +01004861run_test "Authentication: do not send CA list in CertificateRequest" \
4862 "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
4863 "$P_CLI crt_file=data_files/server6.crt \
4864 key_file=data_files/server6.key" \
4865 0 \
4866 -S "requested DN"
4867
Jerry Yuab082902021-12-23 18:02:22 +08004868requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath89baba22017-04-10 14:34:35 +01004869run_test "Authentication: send CA list in CertificateRequest, client self signed" \
4870 "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
4871 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4872 key_file=data_files/server5.key" \
4873 1 \
4874 -S "requested DN" \
4875 -s "x509_verify_cert() returned" \
4876 -s "! The certificate is not correctly signed by the trusted CA" \
4877 -s "! mbedtls_ssl_handshake returned" \
4878 -c "! mbedtls_ssl_handshake returned" \
4879 -s "X509 - Certificate verification failed"
4880
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03004881# Tests for auth_mode, using CA callback, these are duplicated from the authentication tests
4882# When updating these tests, modify the matching authentication tests accordingly
Hanno Becker746aaf32019-03-28 15:25:23 +00004883
4884requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004885requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004886run_test "Authentication, CA callback: server badcert, client required" \
4887 "$P_SRV crt_file=data_files/server5-badsign.crt \
4888 key_file=data_files/server5.key" \
4889 "$P_CLI ca_callback=1 debug_level=3 auth_mode=required" \
4890 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004891 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004892 -c "x509_verify_cert() returned" \
4893 -c "! The certificate is not correctly signed by the trusted CA" \
4894 -c "! mbedtls_ssl_handshake returned" \
4895 -c "X509 - Certificate verification failed"
4896
4897requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004898requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004899run_test "Authentication, CA callback: server badcert, client optional" \
4900 "$P_SRV crt_file=data_files/server5-badsign.crt \
4901 key_file=data_files/server5.key" \
4902 "$P_CLI ca_callback=1 debug_level=3 auth_mode=optional" \
4903 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004904 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004905 -c "x509_verify_cert() returned" \
4906 -c "! The certificate is not correctly signed by the trusted CA" \
4907 -C "! mbedtls_ssl_handshake returned" \
4908 -C "X509 - Certificate verification failed"
4909
4910# The purpose of the next two tests is to test the client's behaviour when receiving a server
4911# certificate with an unsupported elliptic curve. This should usually not happen because
4912# the client informs the server about the supported curves - it does, though, in the
4913# corner case of a static ECDH suite, because the server doesn't check the curve on that
4914# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
4915# different means to have the server ignoring the client's supported curve list.
4916
4917requires_config_enabled MBEDTLS_ECP_C
4918requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004919requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004920run_test "Authentication, CA callback: server ECDH p256v1, client required, p256v1 unsupported" \
4921 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4922 crt_file=data_files/server5.ku-ka.crt" \
4923 "$P_CLI ca_callback=1 debug_level=3 auth_mode=required curves=secp521r1" \
4924 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004925 -c "use CA callback for X.509 CRT verification" \
4926 -c "bad certificate (EC key curve)" \
4927 -c "! Certificate verification flags" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004928 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
4929
4930requires_config_enabled MBEDTLS_ECP_C
4931requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004932requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004933run_test "Authentication, CA callback: server ECDH p256v1, client optional, p256v1 unsupported" \
4934 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4935 crt_file=data_files/server5.ku-ka.crt" \
4936 "$P_CLI ca_callback=1 debug_level=3 auth_mode=optional curves=secp521r1" \
4937 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004938 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004939 -c "bad certificate (EC key curve)"\
4940 -c "! Certificate verification flags"\
4941 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
4942
4943requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004944requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004945run_test "Authentication, CA callback: client SHA256, server required" \
4946 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4947 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4948 key_file=data_files/server6.key \
4949 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
4950 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004951 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004952 -c "Supported Signature Algorithm found: 4," \
4953 -c "Supported Signature Algorithm found: 5,"
4954
4955requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004956requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004957run_test "Authentication, CA callback: client SHA384, server required" \
4958 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4959 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4960 key_file=data_files/server6.key \
4961 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
4962 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004963 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004964 -c "Supported Signature Algorithm found: 4," \
4965 -c "Supported Signature Algorithm found: 5,"
4966
4967requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004968requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004969run_test "Authentication, CA callback: client badcert, server required" \
4970 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4971 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
4972 key_file=data_files/server5.key" \
4973 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004974 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004975 -S "skip write certificate request" \
4976 -C "skip parse certificate request" \
4977 -c "got a certificate request" \
4978 -C "skip write certificate" \
4979 -C "skip write certificate verify" \
4980 -S "skip parse certificate verify" \
4981 -s "x509_verify_cert() returned" \
4982 -s "! The certificate is not correctly signed by the trusted CA" \
4983 -s "! mbedtls_ssl_handshake returned" \
4984 -s "send alert level=2 message=48" \
4985 -c "! mbedtls_ssl_handshake returned" \
4986 -s "X509 - Certificate verification failed"
4987# We don't check that the client receives the alert because it might
4988# detect that its write end of the connection is closed and abort
4989# before reading the alert message.
4990
4991requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08004992requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00004993run_test "Authentication, CA callback: client cert not trusted, server required" \
4994 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4995 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4996 key_file=data_files/server5.key" \
4997 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004998 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004999 -S "skip write certificate request" \
5000 -C "skip parse certificate request" \
5001 -c "got a certificate request" \
5002 -C "skip write certificate" \
5003 -C "skip write certificate verify" \
5004 -S "skip parse certificate verify" \
5005 -s "x509_verify_cert() returned" \
5006 -s "! The certificate is not correctly signed by the trusted CA" \
5007 -s "! mbedtls_ssl_handshake returned" \
5008 -c "! mbedtls_ssl_handshake returned" \
5009 -s "X509 - Certificate verification failed"
5010
5011requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08005012requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00005013run_test "Authentication, CA callback: client badcert, server optional" \
5014 "$P_SRV ca_callback=1 debug_level=3 auth_mode=optional" \
5015 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5016 key_file=data_files/server5.key" \
5017 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005018 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005019 -S "skip write certificate request" \
5020 -C "skip parse certificate request" \
5021 -c "got a certificate request" \
5022 -C "skip write certificate" \
5023 -C "skip write certificate verify" \
5024 -S "skip parse certificate verify" \
5025 -s "x509_verify_cert() returned" \
5026 -s "! The certificate is not correctly signed by the trusted CA" \
5027 -S "! mbedtls_ssl_handshake returned" \
5028 -C "! mbedtls_ssl_handshake returned" \
5029 -S "X509 - Certificate verification failed"
5030
Yuto Takano6f657432021-07-02 13:10:41 +01005031requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005032requires_full_size_output_buffer
5033requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08005034requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00005035run_test "Authentication, CA callback: server max_int chain, client default" \
5036 "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
5037 key_file=data_files/dir-maxpath/09.key" \
5038 "$P_CLI ca_callback=1 debug_level=3 server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
5039 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005040 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005041 -C "X509 - A fatal error occurred"
5042
Yuto Takano6f657432021-07-02 13:10:41 +01005043requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005044requires_full_size_output_buffer
5045requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08005046requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00005047run_test "Authentication, CA callback: server max_int+1 chain, client default" \
5048 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5049 key_file=data_files/dir-maxpath/10.key" \
5050 "$P_CLI debug_level=3 ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
5051 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005052 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005053 -c "X509 - A fatal error occurred"
5054
Yuto Takano6f657432021-07-02 13:10:41 +01005055requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005056requires_full_size_output_buffer
5057requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08005058requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00005059run_test "Authentication, CA callback: server max_int+1 chain, client optional" \
5060 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5061 key_file=data_files/dir-maxpath/10.key" \
5062 "$P_CLI ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
5063 debug_level=3 auth_mode=optional" \
5064 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005065 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005066 -c "X509 - A fatal error occurred"
5067
Yuto Takano6f657432021-07-02 13:10:41 +01005068requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005069requires_full_size_output_buffer
5070requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08005071requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00005072run_test "Authentication, CA callback: client max_int+1 chain, server optional" \
5073 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
5074 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5075 key_file=data_files/dir-maxpath/10.key" \
5076 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005077 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005078 -s "X509 - A fatal error occurred"
5079
Yuto Takano6f657432021-07-02 13:10:41 +01005080requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005081requires_full_size_output_buffer
5082requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08005083requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00005084run_test "Authentication, CA callback: client max_int+1 chain, server required" \
5085 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5086 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5087 key_file=data_files/dir-maxpath/10.key" \
5088 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005089 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005090 -s "X509 - A fatal error occurred"
5091
Yuto Takano6f657432021-07-02 13:10:41 +01005092requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005093requires_full_size_output_buffer
5094requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Jerry Yuab082902021-12-23 18:02:22 +08005095requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker746aaf32019-03-28 15:25:23 +00005096run_test "Authentication, CA callback: client max_int chain, server required" \
5097 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5098 "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
5099 key_file=data_files/dir-maxpath/09.key" \
5100 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005101 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005102 -S "X509 - A fatal error occurred"
5103
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01005104# Tests for certificate selection based on SHA verson
5105
Hanno Beckerc5722d12020-10-09 11:10:42 +01005106requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005107requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01005108run_test "Certificate hash: client TLS 1.2 -> SHA-2" \
5109 "$P_SRV crt_file=data_files/server5.crt \
5110 key_file=data_files/server5.key \
5111 crt_file2=data_files/server5-sha1.crt \
5112 key_file2=data_files/server5.key" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00005113 "$P_CLI force_version=tls12" \
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01005114 0 \
5115 -c "signed using.*ECDSA with SHA256" \
5116 -C "signed using.*ECDSA with SHA1"
5117
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005118# tests for SNI
5119
Hanno Beckerc5722d12020-10-09 11:10:42 +01005120requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005121requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005122run_test "SNI: no SNI callback" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005123 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005124 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005125 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005126 0 \
5127 -S "parse ServerName extension" \
5128 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
5129 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005130
Hanno Beckerc5722d12020-10-09 11:10:42 +01005131requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005132requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005133run_test "SNI: matching cert 1" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005134 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005135 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005136 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005137 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005138 0 \
5139 -s "parse ServerName extension" \
5140 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5141 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005142
Hanno Beckerc5722d12020-10-09 11:10:42 +01005143requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005144requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005145run_test "SNI: matching cert 2" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005146 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005147 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005148 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005149 "$P_CLI server_name=polarssl.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005150 0 \
5151 -s "parse ServerName extension" \
5152 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5153 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005154
Hanno Beckerc5722d12020-10-09 11:10:42 +01005155requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005156requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005157run_test "SNI: no matching cert" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005158 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005159 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005160 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005161 "$P_CLI server_name=nonesuch.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005162 1 \
5163 -s "parse ServerName extension" \
5164 -s "ssl_sni_wrapper() returned" \
5165 -s "mbedtls_ssl_handshake returned" \
5166 -c "mbedtls_ssl_handshake returned" \
5167 -c "SSL - A fatal alert message was received from our peer"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005168
Jerry Yuab082902021-12-23 18:02:22 +08005169requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005170run_test "SNI: client auth no override: optional" \
5171 "$P_SRV debug_level=3 auth_mode=optional \
5172 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5173 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
5174 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005175 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005176 -S "skip write certificate request" \
5177 -C "skip parse certificate request" \
5178 -c "got a certificate request" \
5179 -C "skip write certificate" \
5180 -C "skip write certificate verify" \
5181 -S "skip parse certificate verify"
5182
Jerry Yuab082902021-12-23 18:02:22 +08005183requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005184run_test "SNI: client auth override: none -> optional" \
5185 "$P_SRV debug_level=3 auth_mode=none \
5186 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5187 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
5188 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005189 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005190 -S "skip write certificate request" \
5191 -C "skip parse certificate request" \
5192 -c "got a certificate request" \
5193 -C "skip write certificate" \
5194 -C "skip write certificate verify" \
5195 -S "skip parse certificate verify"
5196
Jerry Yuab082902021-12-23 18:02:22 +08005197requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005198run_test "SNI: client auth override: optional -> none" \
5199 "$P_SRV debug_level=3 auth_mode=optional \
5200 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5201 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
5202 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005203 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005204 -s "skip write certificate request" \
5205 -C "skip parse certificate request" \
5206 -c "got no certificate request" \
5207 -c "skip write certificate" \
5208 -c "skip write certificate verify" \
5209 -s "skip parse certificate verify"
5210
Jerry Yuab082902021-12-23 18:02:22 +08005211requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005212run_test "SNI: CA no override" \
5213 "$P_SRV debug_level=3 auth_mode=optional \
5214 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5215 ca_file=data_files/test-ca.crt \
5216 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
5217 "$P_CLI debug_level=3 server_name=localhost \
5218 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5219 1 \
5220 -S "skip write certificate request" \
5221 -C "skip parse certificate request" \
5222 -c "got a certificate request" \
5223 -C "skip write certificate" \
5224 -C "skip write certificate verify" \
5225 -S "skip parse certificate verify" \
5226 -s "x509_verify_cert() returned" \
5227 -s "! The certificate is not correctly signed by the trusted CA" \
5228 -S "The certificate has been revoked (is on a CRL)"
5229
Jerry Yuab082902021-12-23 18:02:22 +08005230requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005231run_test "SNI: CA override" \
5232 "$P_SRV debug_level=3 auth_mode=optional \
5233 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5234 ca_file=data_files/test-ca.crt \
5235 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
5236 "$P_CLI debug_level=3 server_name=localhost \
5237 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5238 0 \
5239 -S "skip write certificate request" \
5240 -C "skip parse certificate request" \
5241 -c "got a certificate request" \
5242 -C "skip write certificate" \
5243 -C "skip write certificate verify" \
5244 -S "skip parse certificate verify" \
5245 -S "x509_verify_cert() returned" \
5246 -S "! The certificate is not correctly signed by the trusted CA" \
5247 -S "The certificate has been revoked (is on a CRL)"
5248
Jerry Yuab082902021-12-23 18:02:22 +08005249requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005250run_test "SNI: CA override with CRL" \
5251 "$P_SRV debug_level=3 auth_mode=optional \
5252 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5253 ca_file=data_files/test-ca.crt \
5254 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
5255 "$P_CLI debug_level=3 server_name=localhost \
5256 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5257 1 \
5258 -S "skip write certificate request" \
5259 -C "skip parse certificate request" \
5260 -c "got a certificate request" \
5261 -C "skip write certificate" \
5262 -C "skip write certificate verify" \
5263 -S "skip parse certificate verify" \
5264 -s "x509_verify_cert() returned" \
5265 -S "! The certificate is not correctly signed by the trusted CA" \
5266 -s "The certificate has been revoked (is on a CRL)"
5267
Andres AG1a834452016-12-07 10:01:30 +00005268# Tests for SNI and DTLS
5269
Hanno Beckerc5722d12020-10-09 11:10:42 +01005270requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005271requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005272run_test "SNI: DTLS, no SNI callback" \
5273 "$P_SRV debug_level=3 dtls=1 \
5274 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
5275 "$P_CLI server_name=localhost dtls=1" \
5276 0 \
5277 -S "parse ServerName extension" \
5278 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
5279 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5280
Hanno Beckerc5722d12020-10-09 11:10:42 +01005281requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005282requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005283run_test "SNI: DTLS, matching cert 1" \
Andres AG1a834452016-12-07 10:01:30 +00005284 "$P_SRV debug_level=3 dtls=1 \
5285 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5286 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5287 "$P_CLI server_name=localhost dtls=1" \
5288 0 \
5289 -s "parse ServerName extension" \
5290 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5291 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5292
Hanno Beckerc5722d12020-10-09 11:10:42 +01005293requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08005294requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005295run_test "SNI: DTLS, matching cert 2" \
5296 "$P_SRV debug_level=3 dtls=1 \
5297 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5298 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5299 "$P_CLI server_name=polarssl.example dtls=1" \
5300 0 \
5301 -s "parse ServerName extension" \
5302 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5303 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
5304
Jerry Yuab082902021-12-23 18:02:22 +08005305requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005306run_test "SNI: DTLS, no matching cert" \
5307 "$P_SRV debug_level=3 dtls=1 \
5308 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5309 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5310 "$P_CLI server_name=nonesuch.example dtls=1" \
5311 1 \
5312 -s "parse ServerName extension" \
5313 -s "ssl_sni_wrapper() returned" \
5314 -s "mbedtls_ssl_handshake returned" \
5315 -c "mbedtls_ssl_handshake returned" \
5316 -c "SSL - A fatal alert message was received from our peer"
5317
Jerry Yuab082902021-12-23 18:02:22 +08005318requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005319run_test "SNI: DTLS, client auth no override: optional" \
5320 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5321 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5322 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
5323 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5324 0 \
5325 -S "skip write certificate request" \
5326 -C "skip parse certificate request" \
5327 -c "got a certificate request" \
5328 -C "skip write certificate" \
5329 -C "skip write certificate verify" \
5330 -S "skip parse certificate verify"
5331
Jerry Yuab082902021-12-23 18:02:22 +08005332requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005333run_test "SNI: DTLS, client auth override: none -> optional" \
5334 "$P_SRV debug_level=3 auth_mode=none dtls=1 \
5335 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5336 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
5337 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5338 0 \
5339 -S "skip write certificate request" \
5340 -C "skip parse certificate request" \
5341 -c "got a certificate request" \
5342 -C "skip write certificate" \
5343 -C "skip write certificate verify" \
5344 -S "skip parse certificate verify"
5345
Jerry Yuab082902021-12-23 18:02:22 +08005346requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005347run_test "SNI: DTLS, client auth override: optional -> none" \
5348 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5349 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5350 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
5351 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5352 0 \
5353 -s "skip write certificate request" \
5354 -C "skip parse certificate request" \
5355 -c "got no certificate request" \
5356 -c "skip write certificate" \
5357 -c "skip write certificate verify" \
5358 -s "skip parse certificate verify"
5359
Jerry Yuab082902021-12-23 18:02:22 +08005360requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005361run_test "SNI: DTLS, CA no override" \
5362 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5363 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5364 ca_file=data_files/test-ca.crt \
5365 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
5366 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5367 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5368 1 \
5369 -S "skip write certificate request" \
5370 -C "skip parse certificate request" \
5371 -c "got a certificate request" \
5372 -C "skip write certificate" \
5373 -C "skip write certificate verify" \
5374 -S "skip parse certificate verify" \
5375 -s "x509_verify_cert() returned" \
5376 -s "! The certificate is not correctly signed by the trusted CA" \
5377 -S "The certificate has been revoked (is on a CRL)"
5378
Jerry Yuab082902021-12-23 18:02:22 +08005379requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005380run_test "SNI: DTLS, CA override" \
Andres AG1a834452016-12-07 10:01:30 +00005381 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5382 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5383 ca_file=data_files/test-ca.crt \
5384 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
5385 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5386 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5387 0 \
5388 -S "skip write certificate request" \
5389 -C "skip parse certificate request" \
5390 -c "got a certificate request" \
5391 -C "skip write certificate" \
5392 -C "skip write certificate verify" \
5393 -S "skip parse certificate verify" \
5394 -S "x509_verify_cert() returned" \
5395 -S "! The certificate is not correctly signed by the trusted CA" \
5396 -S "The certificate has been revoked (is on a CRL)"
5397
Jerry Yuab082902021-12-23 18:02:22 +08005398requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005399run_test "SNI: DTLS, CA override with CRL" \
Andres AG1a834452016-12-07 10:01:30 +00005400 "$P_SRV debug_level=3 auth_mode=optional \
5401 crt_file=data_files/server5.crt key_file=data_files/server5.key dtls=1 \
5402 ca_file=data_files/test-ca.crt \
5403 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
5404 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5405 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5406 1 \
5407 -S "skip write certificate request" \
5408 -C "skip parse certificate request" \
5409 -c "got a certificate request" \
5410 -C "skip write certificate" \
5411 -C "skip write certificate verify" \
5412 -S "skip parse certificate verify" \
5413 -s "x509_verify_cert() returned" \
5414 -S "! The certificate is not correctly signed by the trusted CA" \
5415 -s "The certificate has been revoked (is on a CRL)"
5416
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005417# Tests for non-blocking I/O: exercise a variety of handshake flows
5418
Jerry Yuab082902021-12-23 18:02:22 +08005419requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005420run_test "Non-blocking I/O: basic handshake" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005421 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
5422 "$P_CLI nbio=2 tickets=0" \
5423 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005424 -S "mbedtls_ssl_handshake returned" \
5425 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005426 -c "Read from server: .* bytes read"
5427
Jerry Yuab082902021-12-23 18:02:22 +08005428requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005429run_test "Non-blocking I/O: client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005430 "$P_SRV nbio=2 tickets=0 auth_mode=required" \
5431 "$P_CLI nbio=2 tickets=0" \
5432 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005433 -S "mbedtls_ssl_handshake returned" \
5434 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005435 -c "Read from server: .* bytes read"
5436
Jerry Yuab082902021-12-23 18:02:22 +08005437requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005438run_test "Non-blocking I/O: ticket" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005439 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
5440 "$P_CLI nbio=2 tickets=1" \
5441 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005442 -S "mbedtls_ssl_handshake returned" \
5443 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005444 -c "Read from server: .* bytes read"
5445
Jerry Yuab082902021-12-23 18:02:22 +08005446requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005447run_test "Non-blocking I/O: ticket + client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005448 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
5449 "$P_CLI nbio=2 tickets=1" \
5450 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005451 -S "mbedtls_ssl_handshake returned" \
5452 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005453 -c "Read from server: .* bytes read"
5454
Jerry Yuab082902021-12-23 18:02:22 +08005455requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005456run_test "Non-blocking I/O: ticket + client auth + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005457 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
5458 "$P_CLI nbio=2 tickets=1 reconnect=1" \
5459 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005460 -S "mbedtls_ssl_handshake returned" \
5461 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005462 -c "Read from server: .* bytes read"
5463
Jerry Yuab082902021-12-23 18:02:22 +08005464requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005465run_test "Non-blocking I/O: ticket + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005466 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
5467 "$P_CLI nbio=2 tickets=1 reconnect=1" \
5468 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005469 -S "mbedtls_ssl_handshake returned" \
5470 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005471 -c "Read from server: .* bytes read"
5472
Jerry Yuab082902021-12-23 18:02:22 +08005473requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005474run_test "Non-blocking I/O: session-id resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005475 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
5476 "$P_CLI nbio=2 tickets=0 reconnect=1" \
5477 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005478 -S "mbedtls_ssl_handshake returned" \
5479 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005480 -c "Read from server: .* bytes read"
5481
Hanno Becker00076712017-11-15 16:39:08 +00005482# Tests for event-driven I/O: exercise a variety of handshake flows
5483
Jerry Yuab082902021-12-23 18:02:22 +08005484requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker00076712017-11-15 16:39:08 +00005485run_test "Event-driven I/O: basic handshake" \
5486 "$P_SRV event=1 tickets=0 auth_mode=none" \
5487 "$P_CLI event=1 tickets=0" \
5488 0 \
5489 -S "mbedtls_ssl_handshake returned" \
5490 -C "mbedtls_ssl_handshake returned" \
5491 -c "Read from server: .* bytes read"
5492
Jerry Yuab082902021-12-23 18:02:22 +08005493requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker00076712017-11-15 16:39:08 +00005494run_test "Event-driven I/O: client auth" \
5495 "$P_SRV event=1 tickets=0 auth_mode=required" \
5496 "$P_CLI event=1 tickets=0" \
5497 0 \
5498 -S "mbedtls_ssl_handshake returned" \
5499 -C "mbedtls_ssl_handshake returned" \
5500 -c "Read from server: .* bytes read"
5501
Jerry Yuab082902021-12-23 18:02:22 +08005502requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker00076712017-11-15 16:39:08 +00005503run_test "Event-driven I/O: ticket" \
5504 "$P_SRV event=1 tickets=1 auth_mode=none" \
5505 "$P_CLI event=1 tickets=1" \
5506 0 \
5507 -S "mbedtls_ssl_handshake returned" \
5508 -C "mbedtls_ssl_handshake returned" \
5509 -c "Read from server: .* bytes read"
5510
Jerry Yuab082902021-12-23 18:02:22 +08005511requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker00076712017-11-15 16:39:08 +00005512run_test "Event-driven I/O: ticket + client auth" \
5513 "$P_SRV event=1 tickets=1 auth_mode=required" \
5514 "$P_CLI event=1 tickets=1" \
5515 0 \
5516 -S "mbedtls_ssl_handshake returned" \
5517 -C "mbedtls_ssl_handshake returned" \
5518 -c "Read from server: .* bytes read"
5519
Jerry Yuab082902021-12-23 18:02:22 +08005520requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker00076712017-11-15 16:39:08 +00005521run_test "Event-driven I/O: ticket + client auth + resume" \
5522 "$P_SRV event=1 tickets=1 auth_mode=required" \
5523 "$P_CLI event=1 tickets=1 reconnect=1" \
5524 0 \
5525 -S "mbedtls_ssl_handshake returned" \
5526 -C "mbedtls_ssl_handshake returned" \
5527 -c "Read from server: .* bytes read"
5528
Jerry Yuab082902021-12-23 18:02:22 +08005529requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker00076712017-11-15 16:39:08 +00005530run_test "Event-driven I/O: ticket + resume" \
5531 "$P_SRV event=1 tickets=1 auth_mode=none" \
5532 "$P_CLI event=1 tickets=1 reconnect=1" \
5533 0 \
5534 -S "mbedtls_ssl_handshake returned" \
5535 -C "mbedtls_ssl_handshake returned" \
5536 -c "Read from server: .* bytes read"
5537
Jerry Yuab082902021-12-23 18:02:22 +08005538requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker00076712017-11-15 16:39:08 +00005539run_test "Event-driven I/O: session-id resume" \
5540 "$P_SRV event=1 tickets=0 auth_mode=none" \
5541 "$P_CLI event=1 tickets=0 reconnect=1" \
5542 0 \
5543 -S "mbedtls_ssl_handshake returned" \
5544 -C "mbedtls_ssl_handshake returned" \
5545 -c "Read from server: .* bytes read"
5546
Jerry Yuab082902021-12-23 18:02:22 +08005547requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00005548run_test "Event-driven I/O, DTLS: basic handshake" \
5549 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
5550 "$P_CLI dtls=1 event=1 tickets=0" \
5551 0 \
5552 -c "Read from server: .* bytes read"
5553
Jerry Yuab082902021-12-23 18:02:22 +08005554requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00005555run_test "Event-driven I/O, DTLS: client auth" \
5556 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
5557 "$P_CLI dtls=1 event=1 tickets=0" \
5558 0 \
5559 -c "Read from server: .* bytes read"
5560
Jerry Yuab082902021-12-23 18:02:22 +08005561requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00005562run_test "Event-driven I/O, DTLS: ticket" \
5563 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
5564 "$P_CLI dtls=1 event=1 tickets=1" \
5565 0 \
5566 -c "Read from server: .* bytes read"
5567
Jerry Yuab082902021-12-23 18:02:22 +08005568requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00005569run_test "Event-driven I/O, DTLS: ticket + client auth" \
5570 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
5571 "$P_CLI dtls=1 event=1 tickets=1" \
5572 0 \
5573 -c "Read from server: .* bytes read"
5574
Jerry Yuab082902021-12-23 18:02:22 +08005575requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00005576run_test "Event-driven I/O, DTLS: ticket + client auth + resume" \
5577 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005578 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005579 0 \
5580 -c "Read from server: .* bytes read"
5581
Jerry Yuab082902021-12-23 18:02:22 +08005582requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00005583run_test "Event-driven I/O, DTLS: ticket + resume" \
5584 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005585 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005586 0 \
5587 -c "Read from server: .* bytes read"
5588
Jerry Yuab082902021-12-23 18:02:22 +08005589requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00005590run_test "Event-driven I/O, DTLS: session-id resume" \
5591 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005592 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005593 0 \
5594 -c "Read from server: .* bytes read"
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005595
5596# This test demonstrates the need for the mbedtls_ssl_check_pending function.
5597# During session resumption, the client will send its ApplicationData record
5598# within the same datagram as the Finished messages. In this situation, the
5599# server MUST NOT idle on the underlying transport after handshake completion,
5600# because the ApplicationData request has already been queued internally.
Jerry Yuab082902021-12-23 18:02:22 +08005601requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005602run_test "Event-driven I/O, DTLS: session-id resume, UDP packing" \
Hanno Becker8d832182018-03-15 10:14:19 +00005603 -p "$P_PXY pack=50" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005604 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005605 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005606 0 \
5607 -c "Read from server: .* bytes read"
5608
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005609# Tests for version negotiation
5610
Jerry Yuab082902021-12-23 18:02:22 +08005611requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005612run_test "Version check: all -> 1.2" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005613 "$P_SRV" \
5614 "$P_CLI" \
5615 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005616 -S "mbedtls_ssl_handshake returned" \
5617 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005618 -s "Protocol is TLSv1.2" \
5619 -c "Protocol is TLSv1.2"
5620
Jerry Yuab082902021-12-23 18:02:22 +08005621requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz2abf03c2021-06-25 14:40:09 +02005622run_test "Not supported version check: cli TLS 1.0" \
5623 "$P_SRV" \
5624 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.0" \
5625 1 \
5626 -s "Handshake protocol not within min/max boundaries" \
5627 -c "Error in protocol version" \
5628 -S "Protocol is TLSv1.0" \
5629 -C "Handshake was completed"
5630
Jerry Yuab082902021-12-23 18:02:22 +08005631requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz2abf03c2021-06-25 14:40:09 +02005632run_test "Not supported version check: cli TLS 1.1" \
5633 "$P_SRV" \
5634 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.1" \
5635 1 \
5636 -s "Handshake protocol not within min/max boundaries" \
5637 -c "Error in protocol version" \
5638 -S "Protocol is TLSv1.1" \
5639 -C "Handshake was completed"
5640
Jerry Yuab082902021-12-23 18:02:22 +08005641requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz2abf03c2021-06-25 14:40:09 +02005642run_test "Not supported version check: srv max TLS 1.0" \
5643 "$G_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.0" \
5644 "$P_CLI" \
5645 1 \
5646 -s "Error in protocol version" \
5647 -c "Handshake protocol not within min/max boundaries" \
5648 -S "Version: TLS1.0" \
5649 -C "Protocol is TLSv1.0"
5650
Jerry Yuab082902021-12-23 18:02:22 +08005651requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz2abf03c2021-06-25 14:40:09 +02005652run_test "Not supported version check: srv max TLS 1.1" \
5653 "$G_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1" \
5654 "$P_CLI" \
5655 1 \
5656 -s "Error in protocol version" \
5657 -c "Handshake protocol not within min/max boundaries" \
5658 -S "Version: TLS1.1" \
5659 -C "Protocol is TLSv1.1"
5660
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005661# Tests for ALPN extension
5662
Jerry Yuab082902021-12-23 18:02:22 +08005663requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005664run_test "ALPN: none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005665 "$P_SRV debug_level=3" \
5666 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005667 0 \
5668 -C "client hello, adding alpn extension" \
5669 -S "found alpn extension" \
5670 -C "got an alert message, type: \\[2:120]" \
5671 -S "server hello, adding alpn extension" \
5672 -C "found alpn extension " \
5673 -C "Application Layer Protocol is" \
5674 -S "Application Layer Protocol is"
5675
Jerry Yuab082902021-12-23 18:02:22 +08005676requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005677run_test "ALPN: client only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005678 "$P_SRV debug_level=3" \
5679 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005680 0 \
5681 -c "client hello, adding alpn extension" \
5682 -s "found alpn extension" \
5683 -C "got an alert message, type: \\[2:120]" \
5684 -S "server hello, adding alpn extension" \
5685 -C "found alpn extension " \
5686 -c "Application Layer Protocol is (none)" \
5687 -S "Application Layer Protocol is"
5688
Jerry Yuab082902021-12-23 18:02:22 +08005689requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005690run_test "ALPN: server only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005691 "$P_SRV debug_level=3 alpn=abc,1234" \
5692 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005693 0 \
5694 -C "client hello, adding alpn extension" \
5695 -S "found alpn extension" \
5696 -C "got an alert message, type: \\[2:120]" \
5697 -S "server hello, adding alpn extension" \
5698 -C "found alpn extension " \
5699 -C "Application Layer Protocol is" \
5700 -s "Application Layer Protocol is (none)"
5701
Jerry Yuab082902021-12-23 18:02:22 +08005702requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005703run_test "ALPN: both, common cli1-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005704 "$P_SRV debug_level=3 alpn=abc,1234" \
5705 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005706 0 \
5707 -c "client hello, adding alpn extension" \
5708 -s "found alpn extension" \
5709 -C "got an alert message, type: \\[2:120]" \
5710 -s "server hello, adding alpn extension" \
5711 -c "found alpn extension" \
5712 -c "Application Layer Protocol is abc" \
5713 -s "Application Layer Protocol is abc"
5714
Jerry Yuab082902021-12-23 18:02:22 +08005715requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005716run_test "ALPN: both, common cli2-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005717 "$P_SRV debug_level=3 alpn=abc,1234" \
5718 "$P_CLI debug_level=3 alpn=1234,abc" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005719 0 \
5720 -c "client hello, adding alpn extension" \
5721 -s "found alpn extension" \
5722 -C "got an alert message, type: \\[2:120]" \
5723 -s "server hello, adding alpn extension" \
5724 -c "found alpn extension" \
5725 -c "Application Layer Protocol is abc" \
5726 -s "Application Layer Protocol is abc"
5727
Jerry Yuab082902021-12-23 18:02:22 +08005728requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005729run_test "ALPN: both, common cli1-srv2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005730 "$P_SRV debug_level=3 alpn=abc,1234" \
5731 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005732 0 \
5733 -c "client hello, adding alpn extension" \
5734 -s "found alpn extension" \
5735 -C "got an alert message, type: \\[2:120]" \
5736 -s "server hello, adding alpn extension" \
5737 -c "found alpn extension" \
5738 -c "Application Layer Protocol is 1234" \
5739 -s "Application Layer Protocol is 1234"
5740
Jerry Yuab082902021-12-23 18:02:22 +08005741requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005742run_test "ALPN: both, no common" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005743 "$P_SRV debug_level=3 alpn=abc,123" \
5744 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005745 1 \
5746 -c "client hello, adding alpn extension" \
5747 -s "found alpn extension" \
5748 -c "got an alert message, type: \\[2:120]" \
5749 -S "server hello, adding alpn extension" \
5750 -C "found alpn extension" \
5751 -C "Application Layer Protocol is 1234" \
5752 -S "Application Layer Protocol is 1234"
5753
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +02005754
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005755# Tests for keyUsage in leaf certificates, part 1:
5756# server-side certificate/suite selection
5757
Jerry Yuab082902021-12-23 18:02:22 +08005758requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005759run_test "keyUsage srv: RSA, digitalSignature -> (EC)DHE-RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005760 "$P_SRV key_file=data_files/server2.key \
5761 crt_file=data_files/server2.ku-ds.crt" \
5762 "$P_CLI" \
5763 0 \
Manuel Pégourié-Gonnard17cde5f2014-05-22 14:42:39 +02005764 -c "Ciphersuite is TLS-[EC]*DHE-RSA-WITH-"
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005765
5766
Jerry Yuab082902021-12-23 18:02:22 +08005767requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005768run_test "keyUsage srv: RSA, keyEncipherment -> RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005769 "$P_SRV key_file=data_files/server2.key \
5770 crt_file=data_files/server2.ku-ke.crt" \
5771 "$P_CLI" \
5772 0 \
5773 -c "Ciphersuite is TLS-RSA-WITH-"
5774
Jerry Yuab082902021-12-23 18:02:22 +08005775requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005776run_test "keyUsage srv: RSA, keyAgreement -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005777 "$P_SRV key_file=data_files/server2.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005778 crt_file=data_files/server2.ku-ka.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005779 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005780 1 \
5781 -C "Ciphersuite is "
5782
Jerry Yuab082902021-12-23 18:02:22 +08005783requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005784run_test "keyUsage srv: ECDSA, digitalSignature -> ECDHE-ECDSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005785 "$P_SRV key_file=data_files/server5.key \
5786 crt_file=data_files/server5.ku-ds.crt" \
5787 "$P_CLI" \
5788 0 \
5789 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-"
5790
5791
Jerry Yuab082902021-12-23 18:02:22 +08005792requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005793run_test "keyUsage srv: ECDSA, keyAgreement -> ECDH-" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005794 "$P_SRV key_file=data_files/server5.key \
5795 crt_file=data_files/server5.ku-ka.crt" \
5796 "$P_CLI" \
5797 0 \
5798 -c "Ciphersuite is TLS-ECDH-"
5799
Jerry Yuab082902021-12-23 18:02:22 +08005800requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005801run_test "keyUsage srv: ECDSA, keyEncipherment -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005802 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005803 crt_file=data_files/server5.ku-ke.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005804 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005805 1 \
5806 -C "Ciphersuite is "
5807
5808# Tests for keyUsage in leaf certificates, part 2:
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005809# client-side checking of server cert
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005810
Jerry Yuab082902021-12-23 18:02:22 +08005811requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005812run_test "keyUsage cli: DigitalSignature+KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005813 "$O_SRV -key data_files/server2.key \
5814 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005815 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005816 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5817 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005818 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005819 -C "Processing of the Certificate handshake message failed" \
5820 -c "Ciphersuite is TLS-"
5821
Jerry Yuab082902021-12-23 18:02:22 +08005822requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005823run_test "keyUsage cli: DigitalSignature+KeyEncipherment, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005824 "$O_SRV -key data_files/server2.key \
5825 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005826 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005827 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5828 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005829 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005830 -C "Processing of the Certificate handshake message failed" \
5831 -c "Ciphersuite is TLS-"
5832
Jerry Yuab082902021-12-23 18:02:22 +08005833requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005834run_test "keyUsage cli: KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005835 "$O_SRV -key data_files/server2.key \
5836 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005837 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005838 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5839 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005840 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005841 -C "Processing of the Certificate handshake message failed" \
5842 -c "Ciphersuite is TLS-"
5843
Jerry Yuab082902021-12-23 18:02:22 +08005844requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005845run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005846 "$O_SRV -key data_files/server2.key \
5847 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005848 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005849 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5850 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005851 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005852 -c "Processing of the Certificate handshake message failed" \
5853 -C "Ciphersuite is TLS-"
5854
Jerry Yuab082902021-12-23 18:02:22 +08005855requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01005856run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail, soft" \
5857 "$O_SRV -key data_files/server2.key \
5858 -cert data_files/server2.ku-ke.crt" \
5859 "$P_CLI debug_level=1 auth_mode=optional \
5860 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5861 0 \
5862 -c "bad certificate (usage extensions)" \
5863 -C "Processing of the Certificate handshake message failed" \
5864 -c "Ciphersuite is TLS-" \
5865 -c "! Usage does not match the keyUsage extension"
5866
Jerry Yuab082902021-12-23 18:02:22 +08005867requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005868run_test "keyUsage cli: DigitalSignature, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005869 "$O_SRV -key data_files/server2.key \
5870 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005871 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005872 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5873 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005874 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005875 -C "Processing of the Certificate handshake message failed" \
5876 -c "Ciphersuite is TLS-"
5877
Jerry Yuab082902021-12-23 18:02:22 +08005878requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005879run_test "keyUsage cli: DigitalSignature, RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005880 "$O_SRV -key data_files/server2.key \
5881 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005882 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005883 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5884 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005885 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005886 -c "Processing of the Certificate handshake message failed" \
5887 -C "Ciphersuite is TLS-"
5888
Jerry Yuab082902021-12-23 18:02:22 +08005889requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01005890run_test "keyUsage cli: DigitalSignature, RSA: fail, soft" \
5891 "$O_SRV -key data_files/server2.key \
5892 -cert data_files/server2.ku-ds.crt" \
5893 "$P_CLI debug_level=1 auth_mode=optional \
5894 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5895 0 \
5896 -c "bad certificate (usage extensions)" \
5897 -C "Processing of the Certificate handshake message failed" \
5898 -c "Ciphersuite is TLS-" \
5899 -c "! Usage does not match the keyUsage extension"
5900
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005901# Tests for keyUsage in leaf certificates, part 3:
5902# server-side checking of client cert
5903
Jerry Yuab082902021-12-23 18:02:22 +08005904requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005905run_test "keyUsage cli-auth: RSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005906 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005907 "$O_CLI -key data_files/server2.key \
5908 -cert data_files/server2.ku-ds.crt" \
5909 0 \
5910 -S "bad certificate (usage extensions)" \
5911 -S "Processing of the Certificate handshake message failed"
5912
Jerry Yuab082902021-12-23 18:02:22 +08005913requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005914run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005915 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005916 "$O_CLI -key data_files/server2.key \
5917 -cert data_files/server2.ku-ke.crt" \
5918 0 \
5919 -s "bad certificate (usage extensions)" \
5920 -S "Processing of the Certificate handshake message failed"
5921
Jerry Yuab082902021-12-23 18:02:22 +08005922requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005923run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005924 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005925 "$O_CLI -key data_files/server2.key \
5926 -cert data_files/server2.ku-ke.crt" \
5927 1 \
5928 -s "bad certificate (usage extensions)" \
5929 -s "Processing of the Certificate handshake message failed"
5930
Jerry Yuab082902021-12-23 18:02:22 +08005931requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005932run_test "keyUsage cli-auth: ECDSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005933 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005934 "$O_CLI -key data_files/server5.key \
5935 -cert data_files/server5.ku-ds.crt" \
5936 0 \
5937 -S "bad certificate (usage extensions)" \
5938 -S "Processing of the Certificate handshake message failed"
5939
Jerry Yuab082902021-12-23 18:02:22 +08005940requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005941run_test "keyUsage cli-auth: ECDSA, KeyAgreement: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005942 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005943 "$O_CLI -key data_files/server5.key \
5944 -cert data_files/server5.ku-ka.crt" \
5945 0 \
5946 -s "bad certificate (usage extensions)" \
5947 -S "Processing of the Certificate handshake message failed"
5948
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005949# Tests for extendedKeyUsage, part 1: server-side certificate/suite selection
5950
Jerry Yuab082902021-12-23 18:02:22 +08005951requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005952run_test "extKeyUsage srv: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005953 "$P_SRV key_file=data_files/server5.key \
5954 crt_file=data_files/server5.eku-srv.crt" \
5955 "$P_CLI" \
5956 0
5957
Jerry Yuab082902021-12-23 18:02:22 +08005958requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005959run_test "extKeyUsage srv: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005960 "$P_SRV key_file=data_files/server5.key \
5961 crt_file=data_files/server5.eku-srv.crt" \
5962 "$P_CLI" \
5963 0
5964
Jerry Yuab082902021-12-23 18:02:22 +08005965requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005966run_test "extKeyUsage srv: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005967 "$P_SRV key_file=data_files/server5.key \
5968 crt_file=data_files/server5.eku-cs_any.crt" \
5969 "$P_CLI" \
5970 0
5971
Jerry Yuab082902021-12-23 18:02:22 +08005972requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005973run_test "extKeyUsage srv: codeSign -> fail" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02005974 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005975 crt_file=data_files/server5.eku-cli.crt" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02005976 "$P_CLI" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005977 1
5978
5979# Tests for extendedKeyUsage, part 2: client-side checking of server cert
5980
Jerry Yuab082902021-12-23 18:02:22 +08005981requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005982run_test "extKeyUsage cli: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005983 "$O_SRV -key data_files/server5.key \
5984 -cert data_files/server5.eku-srv.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005985 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005986 0 \
5987 -C "bad certificate (usage extensions)" \
5988 -C "Processing of the Certificate handshake message failed" \
5989 -c "Ciphersuite is TLS-"
5990
Jerry Yuab082902021-12-23 18:02:22 +08005991requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005992run_test "extKeyUsage cli: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005993 "$O_SRV -key data_files/server5.key \
5994 -cert data_files/server5.eku-srv_cli.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005995 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005996 0 \
5997 -C "bad certificate (usage extensions)" \
5998 -C "Processing of the Certificate handshake message failed" \
5999 -c "Ciphersuite is TLS-"
6000
Jerry Yuab082902021-12-23 18:02:22 +08006001requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006002run_test "extKeyUsage cli: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006003 "$O_SRV -key data_files/server5.key \
6004 -cert data_files/server5.eku-cs_any.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006005 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006006 0 \
6007 -C "bad certificate (usage extensions)" \
6008 -C "Processing of the Certificate handshake message failed" \
6009 -c "Ciphersuite is TLS-"
6010
Jerry Yuab082902021-12-23 18:02:22 +08006011requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006012run_test "extKeyUsage cli: codeSign -> fail" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006013 "$O_SRV -key data_files/server5.key \
6014 -cert data_files/server5.eku-cs.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006015 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006016 1 \
6017 -c "bad certificate (usage extensions)" \
6018 -c "Processing of the Certificate handshake message failed" \
6019 -C "Ciphersuite is TLS-"
6020
6021# Tests for extendedKeyUsage, part 3: server-side checking of client cert
6022
Jerry Yuab082902021-12-23 18:02:22 +08006023requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006024run_test "extKeyUsage cli-auth: clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006025 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006026 "$O_CLI -key data_files/server5.key \
6027 -cert data_files/server5.eku-cli.crt" \
6028 0 \
6029 -S "bad certificate (usage extensions)" \
6030 -S "Processing of the Certificate handshake message failed"
6031
Jerry Yuab082902021-12-23 18:02:22 +08006032requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006033run_test "extKeyUsage cli-auth: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006034 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006035 "$O_CLI -key data_files/server5.key \
6036 -cert data_files/server5.eku-srv_cli.crt" \
6037 0 \
6038 -S "bad certificate (usage extensions)" \
6039 -S "Processing of the Certificate handshake message failed"
6040
Jerry Yuab082902021-12-23 18:02:22 +08006041requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006042run_test "extKeyUsage cli-auth: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006043 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006044 "$O_CLI -key data_files/server5.key \
6045 -cert data_files/server5.eku-cs_any.crt" \
6046 0 \
6047 -S "bad certificate (usage extensions)" \
6048 -S "Processing of the Certificate handshake message failed"
6049
Jerry Yuab082902021-12-23 18:02:22 +08006050requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006051run_test "extKeyUsage cli-auth: codeSign -> fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006052 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006053 "$O_CLI -key data_files/server5.key \
6054 -cert data_files/server5.eku-cs.crt" \
6055 0 \
6056 -s "bad certificate (usage extensions)" \
6057 -S "Processing of the Certificate handshake message failed"
6058
Jerry Yuab082902021-12-23 18:02:22 +08006059requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006060run_test "extKeyUsage cli-auth: codeSign -> fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006061 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006062 "$O_CLI -key data_files/server5.key \
6063 -cert data_files/server5.eku-cs.crt" \
6064 1 \
6065 -s "bad certificate (usage extensions)" \
6066 -s "Processing of the Certificate handshake message failed"
6067
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006068# Tests for DHM parameters loading
6069
Jerry Yuab082902021-12-23 18:02:22 +08006070requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006071run_test "DHM parameters: reference" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006072 "$P_SRV" \
6073 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6074 debug_level=3" \
6075 0 \
6076 -c "value of 'DHM: P ' (2048 bits)" \
Hanno Becker13be9902017-09-27 17:17:30 +01006077 -c "value of 'DHM: G ' (2 bits)"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006078
Jerry Yuab082902021-12-23 18:02:22 +08006079requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006080run_test "DHM parameters: other parameters" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006081 "$P_SRV dhm_file=data_files/dhparams.pem" \
6082 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6083 debug_level=3" \
6084 0 \
6085 -c "value of 'DHM: P ' (1024 bits)" \
6086 -c "value of 'DHM: G ' (2 bits)"
6087
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006088# Tests for DHM client-side size checking
6089
Jerry Yuab082902021-12-23 18:02:22 +08006090requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006091run_test "DHM size: server default, client default, OK" \
6092 "$P_SRV" \
6093 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6094 debug_level=1" \
6095 0 \
6096 -C "DHM prime too short:"
6097
Jerry Yuab082902021-12-23 18:02:22 +08006098requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006099run_test "DHM size: server default, client 2048, OK" \
6100 "$P_SRV" \
6101 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6102 debug_level=1 dhmlen=2048" \
6103 0 \
6104 -C "DHM prime too short:"
6105
Jerry Yuab082902021-12-23 18:02:22 +08006106requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006107run_test "DHM size: server 1024, client default, OK" \
6108 "$P_SRV dhm_file=data_files/dhparams.pem" \
6109 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6110 debug_level=1" \
6111 0 \
6112 -C "DHM prime too short:"
6113
Jerry Yuab082902021-12-23 18:02:22 +08006114requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinec6b0d962020-12-08 22:31:52 +01006115run_test "DHM size: server 999, client 999, OK" \
6116 "$P_SRV dhm_file=data_files/dh.999.pem" \
6117 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6118 debug_level=1 dhmlen=999" \
6119 0 \
6120 -C "DHM prime too short:"
6121
Jerry Yuab082902021-12-23 18:02:22 +08006122requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinec6b0d962020-12-08 22:31:52 +01006123run_test "DHM size: server 1000, client 1000, OK" \
6124 "$P_SRV dhm_file=data_files/dh.1000.pem" \
6125 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6126 debug_level=1 dhmlen=1000" \
6127 0 \
6128 -C "DHM prime too short:"
6129
Jerry Yuab082902021-12-23 18:02:22 +08006130requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006131run_test "DHM size: server 1000, client default, rejected" \
6132 "$P_SRV dhm_file=data_files/dh.1000.pem" \
6133 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6134 debug_level=1" \
6135 1 \
6136 -c "DHM prime too short:"
6137
Jerry Yuab082902021-12-23 18:02:22 +08006138requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinec6b0d962020-12-08 22:31:52 +01006139run_test "DHM size: server 1000, client 1001, rejected" \
6140 "$P_SRV dhm_file=data_files/dh.1000.pem" \
6141 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6142 debug_level=1 dhmlen=1001" \
6143 1 \
6144 -c "DHM prime too short:"
6145
Jerry Yuab082902021-12-23 18:02:22 +08006146requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinec6b0d962020-12-08 22:31:52 +01006147run_test "DHM size: server 999, client 1000, rejected" \
6148 "$P_SRV dhm_file=data_files/dh.999.pem" \
6149 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6150 debug_level=1 dhmlen=1000" \
6151 1 \
6152 -c "DHM prime too short:"
6153
Jerry Yuab082902021-12-23 18:02:22 +08006154requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinec6b0d962020-12-08 22:31:52 +01006155run_test "DHM size: server 998, client 999, rejected" \
6156 "$P_SRV dhm_file=data_files/dh.998.pem" \
6157 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6158 debug_level=1 dhmlen=999" \
6159 1 \
6160 -c "DHM prime too short:"
6161
Jerry Yuab082902021-12-23 18:02:22 +08006162requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006163run_test "DHM size: server default, client 2049, rejected" \
6164 "$P_SRV" \
6165 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6166 debug_level=1 dhmlen=2049" \
6167 1 \
6168 -c "DHM prime too short:"
6169
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006170# Tests for PSK callback
6171
Jerry Yuab082902021-12-23 18:02:22 +08006172requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006173run_test "PSK callback: psk, no callback" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006174 "$P_SRV psk=abc123 psk_identity=foo" \
6175 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6176 psk_identity=foo psk=abc123" \
6177 0 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006178 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02006179 -S "SSL - Unknown identity received" \
6180 -S "SSL - Verification of the message MAC failed"
6181
Hanno Beckerf7027512018-10-23 15:27:39 +01006182requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006183requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerf7027512018-10-23 15:27:39 +01006184run_test "PSK callback: opaque psk on client, no callback" \
6185 "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006186 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker1d911cd2018-11-15 13:06:09 +00006187 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006188 0 \
6189 -c "skip PMS generation for opaque PSK"\
6190 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006191 -C "session hash for extended master secret"\
6192 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006193 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006194 -S "SSL - Unknown identity received" \
6195 -S "SSL - Verification of the message MAC failed"
6196
6197requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006198requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerf7027512018-10-23 15:27:39 +01006199run_test "PSK callback: opaque psk on client, no callback, SHA-384" \
6200 "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006201 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker1d911cd2018-11-15 13:06:09 +00006202 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006203 0 \
6204 -c "skip PMS generation for opaque PSK"\
6205 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006206 -C "session hash for extended master secret"\
6207 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006208 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006209 -S "SSL - Unknown identity received" \
6210 -S "SSL - Verification of the message MAC failed"
6211
6212requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006213requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerf7027512018-10-23 15:27:39 +01006214run_test "PSK callback: opaque psk on client, no callback, EMS" \
6215 "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006216 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker1d911cd2018-11-15 13:06:09 +00006217 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006218 0 \
6219 -c "skip PMS generation for opaque PSK"\
6220 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006221 -c "session hash for extended master secret"\
6222 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006223 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006224 -S "SSL - Unknown identity received" \
6225 -S "SSL - Verification of the message MAC failed"
6226
6227requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006228requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerf7027512018-10-23 15:27:39 +01006229run_test "PSK callback: opaque psk on client, no callback, SHA-384, EMS" \
6230 "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006231 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker1d911cd2018-11-15 13:06:09 +00006232 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006233 0 \
6234 -c "skip PMS generation for opaque PSK"\
6235 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006236 -c "session hash for extended master secret"\
6237 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006238 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006239 -S "SSL - Unknown identity received" \
6240 -S "SSL - Verification of the message MAC failed"
6241
Hanno Becker28c79dc2018-10-26 13:15:08 +01006242requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006243requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006244run_test "PSK callback: raw psk on client, static opaque on server, no callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006245 "$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" \
6246 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006247 psk_identity=foo psk=abc123" \
6248 0 \
6249 -C "skip PMS generation for opaque PSK"\
6250 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006251 -C "session hash for extended master secret"\
6252 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006253 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006254 -S "SSL - Unknown identity received" \
6255 -S "SSL - Verification of the message MAC failed"
6256
6257requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006258requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006259run_test "PSK callback: raw psk on client, static opaque on server, no callback, SHA-384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006260 "$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" \
6261 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006262 psk_identity=foo psk=abc123" \
6263 0 \
6264 -C "skip PMS generation for opaque PSK"\
6265 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006266 -C "session hash for extended master secret"\
6267 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006268 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006269 -S "SSL - Unknown identity received" \
6270 -S "SSL - Verification of the message MAC failed"
6271
6272requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006273requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006274run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006275 "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006276 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006277 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006278 psk_identity=foo psk=abc123 extended_ms=1" \
6279 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006280 -c "session hash for extended master secret"\
6281 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006282 -C "skip PMS generation for opaque PSK"\
6283 -s "skip PMS generation for opaque PSK"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006284 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006285 -S "SSL - Unknown identity received" \
6286 -S "SSL - Verification of the message MAC failed"
6287
6288requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006289requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006290run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS, SHA384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006291 "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006292 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006293 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006294 psk_identity=foo psk=abc123 extended_ms=1" \
6295 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006296 -c "session hash for extended master secret"\
6297 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006298 -C "skip PMS generation for opaque PSK"\
6299 -s "skip PMS generation for opaque PSK"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006300 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006301 -S "SSL - Unknown identity received" \
6302 -S "SSL - Verification of the message MAC failed"
6303
6304requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006305requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006306run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006307 "$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" \
6308 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006309 psk_identity=def psk=beef" \
6310 0 \
6311 -C "skip PMS generation for opaque PSK"\
6312 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006313 -C "session hash for extended master secret"\
6314 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006315 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006316 -S "SSL - Unknown identity received" \
6317 -S "SSL - Verification of the message MAC failed"
6318
6319requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006320requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006321run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, SHA-384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006322 "$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" \
6323 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006324 psk_identity=def psk=beef" \
6325 0 \
6326 -C "skip PMS generation for opaque PSK"\
6327 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006328 -C "session hash for extended master secret"\
6329 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006330 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006331 -S "SSL - Unknown identity received" \
6332 -S "SSL - Verification of the message MAC failed"
6333
6334requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006335requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006336run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006337 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006338 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006339 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006340 psk_identity=abc psk=dead extended_ms=1" \
6341 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006342 -c "session hash for extended master secret"\
6343 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006344 -C "skip PMS generation for opaque PSK"\
6345 -s "skip PMS generation for opaque PSK"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006346 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006347 -S "SSL - Unknown identity received" \
6348 -S "SSL - Verification of the message MAC failed"
6349
6350requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006351requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006352run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS, SHA384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006353 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006354 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006355 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006356 psk_identity=abc psk=dead extended_ms=1" \
6357 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006358 -c "session hash for extended master secret"\
6359 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006360 -C "skip PMS generation for opaque PSK"\
6361 -s "skip PMS generation for opaque PSK"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006362 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006363 -S "SSL - Unknown identity received" \
6364 -S "SSL - Verification of the message MAC failed"
6365
6366requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006367requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006368run_test "PSK callback: raw psk on client, mismatching static raw PSK on server, opaque PSK from callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006369 "$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" \
6370 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006371 psk_identity=def psk=beef" \
6372 0 \
6373 -C "skip PMS generation for opaque PSK"\
6374 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006375 -C "session hash for extended master secret"\
6376 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006377 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006378 -S "SSL - Unknown identity received" \
6379 -S "SSL - Verification of the message MAC failed"
6380
6381requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006382requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006383run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, opaque PSK from callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006384 "$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" \
6385 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006386 psk_identity=def psk=beef" \
6387 0 \
6388 -C "skip PMS generation for opaque PSK"\
6389 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006390 -C "session hash for extended master secret"\
6391 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006392 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006393 -S "SSL - Unknown identity received" \
6394 -S "SSL - Verification of the message MAC failed"
6395
6396requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006397requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006398run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, raw PSK from callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006399 "$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" \
6400 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006401 psk_identity=def psk=beef" \
6402 0 \
6403 -C "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006404 -C "session hash for extended master secret"\
6405 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006406 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006407 -S "SSL - Unknown identity received" \
6408 -S "SSL - Verification of the message MAC failed"
6409
6410requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006411requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006412run_test "PSK callback: raw psk on client, id-matching but wrong raw PSK on server, opaque PSK from callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006413 "$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" \
6414 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006415 psk_identity=def psk=beef" \
6416 0 \
6417 -C "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006418 -C "session hash for extended master secret"\
6419 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006420 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006421 -S "SSL - Unknown identity received" \
6422 -S "SSL - Verification of the message MAC failed"
6423
6424requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Jerry Yuab082902021-12-23 18:02:22 +08006425requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker28c79dc2018-10-26 13:15:08 +01006426run_test "PSK callback: raw psk on client, matching opaque PSK on server, wrong opaque PSK from callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006427 "$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" \
6428 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006429 psk_identity=def psk=beef" \
6430 1 \
6431 -s "SSL - Verification of the message MAC failed"
6432
Jerry Yuab082902021-12-23 18:02:22 +08006433requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006434run_test "PSK callback: no psk, no callback" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02006435 "$P_SRV" \
6436 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6437 psk_identity=foo psk=abc123" \
6438 1 \
Dave Rodgman6ce10be2021-06-29 14:20:31 +01006439 -s "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006440 -S "SSL - Unknown identity received" \
6441 -S "SSL - Verification of the message MAC failed"
6442
Jerry Yuab082902021-12-23 18:02:22 +08006443requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006444run_test "PSK callback: callback overrides other settings" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006445 "$P_SRV psk=abc123 psk_identity=foo psk_list=abc,dead,def,beef" \
6446 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6447 psk_identity=foo psk=abc123" \
6448 1 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006449 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006450 -s "SSL - Unknown identity received" \
6451 -S "SSL - Verification of the message MAC failed"
6452
Jerry Yuab082902021-12-23 18:02:22 +08006453requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006454run_test "PSK callback: first id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006455 "$P_SRV psk_list=abc,dead,def,beef" \
6456 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6457 psk_identity=abc psk=dead" \
6458 0 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006459 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006460 -S "SSL - Unknown identity received" \
6461 -S "SSL - Verification of the message MAC failed"
6462
Jerry Yuab082902021-12-23 18:02:22 +08006463requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006464run_test "PSK callback: second id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006465 "$P_SRV psk_list=abc,dead,def,beef" \
6466 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6467 psk_identity=def psk=beef" \
6468 0 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006469 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006470 -S "SSL - Unknown identity received" \
6471 -S "SSL - Verification of the message MAC failed"
6472
Jerry Yuab082902021-12-23 18:02:22 +08006473requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006474run_test "PSK callback: no match" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006475 "$P_SRV psk_list=abc,dead,def,beef" \
6476 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6477 psk_identity=ghi psk=beef" \
6478 1 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006479 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006480 -s "SSL - Unknown identity received" \
6481 -S "SSL - Verification of the message MAC failed"
6482
Jerry Yuab082902021-12-23 18:02:22 +08006483requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006484run_test "PSK callback: wrong key" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006485 "$P_SRV psk_list=abc,dead,def,beef" \
6486 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6487 psk_identity=abc psk=beef" \
6488 1 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01006489 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006490 -S "SSL - Unknown identity received" \
6491 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006492
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006493# Tests for EC J-PAKE
6494
Hanno Beckerfa452c42020-08-14 15:42:49 +01006495requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006496requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006497run_test "ECJPAKE: client not configured" \
6498 "$P_SRV debug_level=3" \
6499 "$P_CLI debug_level=3" \
6500 0 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006501 -C "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006502 -C "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006503 -S "found ecjpake kkpp extension" \
6504 -S "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006505 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006506 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006507 -C "found ecjpake_kkpp extension" \
Dave Rodgman737237f2021-06-29 19:07:57 +01006508 -S "SSL - The handshake negotiation failed"
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006509
Hanno Beckerfa452c42020-08-14 15:42:49 +01006510requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006511requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006512run_test "ECJPAKE: server not configured" \
6513 "$P_SRV debug_level=3" \
6514 "$P_CLI debug_level=3 ecjpake_pw=bla \
6515 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6516 1 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006517 -c "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006518 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006519 -s "found ecjpake kkpp extension" \
6520 -s "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006521 -s "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006522 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006523 -C "found ecjpake_kkpp extension" \
Dave Rodgman737237f2021-06-29 19:07:57 +01006524 -s "SSL - The handshake negotiation failed"
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006525
Hanno Beckerfa452c42020-08-14 15:42:49 +01006526requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006527requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006528run_test "ECJPAKE: working, TLS" \
6529 "$P_SRV debug_level=3 ecjpake_pw=bla" \
6530 "$P_CLI debug_level=3 ecjpake_pw=bla \
6531 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
Manuel Pégourié-Gonnard0f1660a2015-09-16 22:41:06 +02006532 0 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006533 -c "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006534 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006535 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006536 -s "found ecjpake kkpp extension" \
6537 -S "skip ecjpake kkpp extension" \
6538 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006539 -s "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006540 -c "found ecjpake_kkpp extension" \
Dave Rodgman737237f2021-06-29 19:07:57 +01006541 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006542 -S "SSL - Verification of the message MAC failed"
6543
Janos Follath74537a62016-09-02 13:45:28 +01006544server_needs_more_time 1
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01006545requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006546requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006547run_test "ECJPAKE: password mismatch, TLS" \
6548 "$P_SRV debug_level=3 ecjpake_pw=bla" \
6549 "$P_CLI debug_level=3 ecjpake_pw=bad \
6550 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6551 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006552 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006553 -s "SSL - Verification of the message MAC failed"
6554
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01006555requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006556requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006557run_test "ECJPAKE: working, DTLS" \
6558 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
6559 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
6560 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6561 0 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006562 -c "re-using cached ecjpake parameters" \
6563 -S "SSL - Verification of the message MAC failed"
6564
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01006565requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006566requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006567run_test "ECJPAKE: working, DTLS, no cookie" \
6568 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla cookies=0" \
6569 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
6570 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6571 0 \
6572 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006573 -S "SSL - Verification of the message MAC failed"
6574
Janos Follath74537a62016-09-02 13:45:28 +01006575server_needs_more_time 1
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01006576requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006577requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006578run_test "ECJPAKE: password mismatch, DTLS" \
6579 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
6580 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bad \
6581 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6582 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006583 -c "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006584 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006585
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02006586# for tests with configs/config-thread.h
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01006587requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006588requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02006589run_test "ECJPAKE: working, DTLS, nolog" \
6590 "$P_SRV dtls=1 ecjpake_pw=bla" \
6591 "$P_CLI dtls=1 ecjpake_pw=bla \
6592 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6593 0
6594
Manuel Pégourié-Gonnard4cc8c632015-07-23 12:24:03 +02006595# Test for ClientHello without extensions
6596
Manuel Pégourié-Gonnardd55bc202015-08-04 16:22:30 +02006597requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08006598requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardbc4da292020-01-30 12:45:14 +01006599run_test "ClientHello without extensions" \
Manuel Pégourié-Gonnard77cbeff2020-01-30 10:58:57 +01006600 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02006601 "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION localhost" \
Gilles Peskine5d2511c2017-05-12 13:16:40 +02006602 0 \
6603 -s "dumping 'client hello extensions' (0 bytes)"
6604
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006605# Tests for mbedtls_ssl_get_bytes_avail()
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006606
Jerry Yuab082902021-12-23 18:02:22 +08006607requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006608run_test "mbedtls_ssl_get_bytes_avail: no extra data" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006609 "$P_SRV" \
6610 "$P_CLI request_size=100" \
6611 0 \
6612 -s "Read from client: 100 bytes read$"
6613
Jerry Yuab082902021-12-23 18:02:22 +08006614requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine588d7a72022-02-25 21:02:28 +01006615requires_max_content_len 474
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006616run_test "mbedtls_ssl_get_bytes_avail: extra data" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006617 "$P_SRV" \
Gilles Peskine588d7a72022-02-25 21:02:28 +01006618 "$P_CLI request_size=450" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006619 0 \
Gilles Peskine588d7a72022-02-25 21:02:28 +01006620 -s "Read from client: 450 bytes read (.*+.*)"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006621
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006622# Tests for small client packets
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006623
Jerry Yuab082902021-12-23 18:02:22 +08006624requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006625run_test "Small client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006626 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006627 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006628 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6629 0 \
6630 -s "Read from client: 1 bytes read"
6631
Jerry Yuab082902021-12-23 18:02:22 +08006632requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006633run_test "Small client packet TLS 1.2 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006634 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006635 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006636 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006637 0 \
6638 -s "Read from client: 1 bytes read"
6639
Jerry Yuab082902021-12-23 18:02:22 +08006640requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006641run_test "Small client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006642 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006643 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01006644 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006645 0 \
6646 -s "Read from client: 1 bytes read"
6647
Jerry Yuab082902021-12-23 18:02:22 +08006648requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006649run_test "Small client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006650 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006651 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006652 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
6653 0 \
6654 -s "Read from client: 1 bytes read"
6655
Jerry Yuab082902021-12-23 18:02:22 +08006656requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006657run_test "Small client packet TLS 1.2 AEAD shorter tag" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006658 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006659 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006660 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
6661 0 \
6662 -s "Read from client: 1 bytes read"
6663
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006664# Tests for small client packets in DTLS
Hanno Beckere2148042017-11-10 08:59:18 +00006665
6666requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Jerry Yuab082902021-12-23 18:02:22 +08006667requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006668run_test "Small client packet DTLS 1.2" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006669 "$P_SRV dtls=1 force_version=dtls12" \
Hanno Beckere2148042017-11-10 08:59:18 +00006670 "$P_CLI dtls=1 request_size=1 \
6671 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6672 0 \
6673 -s "Read from client: 1 bytes read"
6674
6675requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Jerry Yuab082902021-12-23 18:02:22 +08006676requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006677run_test "Small client packet DTLS 1.2, without EtM" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006678 "$P_SRV dtls=1 force_version=dtls12 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006679 "$P_CLI dtls=1 request_size=1 \
6680 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6681 0 \
6682 -s "Read from client: 1 bytes read"
6683
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006684# Tests for small server packets
6685
Jerry Yuab082902021-12-23 18:02:22 +08006686requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006687run_test "Small server packet TLS 1.2 BlockCipher" \
6688 "$P_SRV response_size=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006689 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006690 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6691 0 \
6692 -c "Read from server: 1 bytes read"
6693
Jerry Yuab082902021-12-23 18:02:22 +08006694requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006695run_test "Small server packet TLS 1.2 BlockCipher, without EtM" \
6696 "$P_SRV response_size=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006697 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006698 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
6699 0 \
6700 -c "Read from server: 1 bytes read"
6701
Jerry Yuab082902021-12-23 18:02:22 +08006702requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006703run_test "Small server packet TLS 1.2 BlockCipher larger MAC" \
6704 "$P_SRV response_size=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006705 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006706 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
6707 0 \
6708 -c "Read from server: 1 bytes read"
6709
Jerry Yuab082902021-12-23 18:02:22 +08006710requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006711run_test "Small server packet TLS 1.2 AEAD" \
6712 "$P_SRV response_size=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006713 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006714 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
6715 0 \
6716 -c "Read from server: 1 bytes read"
6717
Jerry Yuab082902021-12-23 18:02:22 +08006718requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006719run_test "Small server packet TLS 1.2 AEAD shorter tag" \
6720 "$P_SRV response_size=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006721 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006722 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
6723 0 \
6724 -c "Read from server: 1 bytes read"
6725
6726# Tests for small server packets in DTLS
6727
6728requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Jerry Yuab082902021-12-23 18:02:22 +08006729requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006730run_test "Small server packet DTLS 1.2" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006731 "$P_SRV dtls=1 response_size=1 force_version=dtls12" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006732 "$P_CLI dtls=1 \
6733 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6734 0 \
6735 -c "Read from server: 1 bytes read"
6736
6737requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Jerry Yuab082902021-12-23 18:02:22 +08006738requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006739run_test "Small server packet DTLS 1.2, without EtM" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006740 "$P_SRV dtls=1 response_size=1 force_version=dtls12 etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006741 "$P_CLI dtls=1 \
6742 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6743 0 \
6744 -c "Read from server: 1 bytes read"
6745
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006746# Test for large client packets
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006747
Angus Grattonc4dd0732018-04-11 16:28:39 +10006748# How many fragments do we expect to write $1 bytes?
6749fragments_for_write() {
6750 echo "$(( ( $1 + $MAX_OUT_LEN - 1 ) / $MAX_OUT_LEN ))"
6751}
6752
Jerry Yuab082902021-12-23 18:02:22 +08006753requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006754run_test "Large client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006755 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006756 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006757 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6758 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10006759 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
6760 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006761
Jerry Yuab082902021-12-23 18:02:22 +08006762requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006763run_test "Large client packet TLS 1.2 BlockCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00006764 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006765 "$P_CLI request_size=16384 force_version=tls12 etm=0 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00006766 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6767 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10006768 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00006769
Jerry Yuab082902021-12-23 18:02:22 +08006770requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006771run_test "Large client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006772 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006773 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01006774 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006775 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10006776 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
6777 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006778
Jerry Yuab082902021-12-23 18:02:22 +08006779requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006780run_test "Large client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006781 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006782 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006783 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
6784 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10006785 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
6786 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006787
Jerry Yuab082902021-12-23 18:02:22 +08006788requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006789run_test "Large client packet TLS 1.2 AEAD shorter tag" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006790 "$P_SRV" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006791 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006792 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
6793 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10006794 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
6795 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02006796
Yuto Takanobc87b1d2021-07-08 15:56:33 +01006797# The tests below fail when the server's OUT_CONTENT_LEN is less than 16384.
Jerry Yuab082902021-12-23 18:02:22 +08006798requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006799run_test "Large server packet TLS 1.2 BlockCipher" \
6800 "$P_SRV response_size=16384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006801 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006802 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6803 0 \
6804 -c "Read from server: 16384 bytes read"
6805
Jerry Yuab082902021-12-23 18:02:22 +08006806requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006807run_test "Large server packet TLS 1.2 BlockCipher, without EtM" \
6808 "$P_SRV response_size=16384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006809 "$P_CLI force_version=tls12 etm=0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006810 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6811 0 \
6812 -s "16384 bytes written in 1 fragments" \
6813 -c "Read from server: 16384 bytes read"
6814
Jerry Yuab082902021-12-23 18:02:22 +08006815requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006816run_test "Large server packet TLS 1.2 BlockCipher larger MAC" \
6817 "$P_SRV response_size=16384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006818 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006819 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
6820 0 \
6821 -c "Read from server: 16384 bytes read"
6822
Jerry Yuab082902021-12-23 18:02:22 +08006823requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006824run_test "Large server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
6825 "$P_SRV response_size=16384 trunc_hmac=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006826 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006827 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
6828 0 \
6829 -s "16384 bytes written in 1 fragments" \
6830 -c "Read from server: 16384 bytes read"
6831
Jerry Yuab082902021-12-23 18:02:22 +08006832requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006833run_test "Large server packet TLS 1.2 AEAD" \
6834 "$P_SRV response_size=16384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006835 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006836 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
6837 0 \
6838 -c "Read from server: 16384 bytes read"
6839
Jerry Yuab082902021-12-23 18:02:22 +08006840requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006841run_test "Large server packet TLS 1.2 AEAD shorter tag" \
6842 "$P_SRV response_size=16384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00006843 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02006844 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
6845 0 \
6846 -c "Read from server: 16384 bytes read"
6847
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006848# Tests for restartable ECC
6849
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006850# Force the use of a curve that supports restartable ECC (secp256r1).
6851
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006852requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006853requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006854requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006855run_test "EC restart: TLS, default" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006856 "$P_SRV curves=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006857 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02006858 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006859 debug_level=1" \
6860 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006861 -C "x509_verify_cert.*4b00" \
6862 -C "mbedtls_pk_verify.*4b00" \
6863 -C "mbedtls_ecdh_make_public.*4b00" \
6864 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006865
6866requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006867requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006868requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006869run_test "EC restart: TLS, max_ops=0" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006870 "$P_SRV curves=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006871 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02006872 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006873 debug_level=1 ec_max_ops=0" \
6874 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006875 -C "x509_verify_cert.*4b00" \
6876 -C "mbedtls_pk_verify.*4b00" \
6877 -C "mbedtls_ecdh_make_public.*4b00" \
6878 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006879
6880requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006881requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006882requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006883run_test "EC restart: TLS, max_ops=65535" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006884 "$P_SRV curves=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006885 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02006886 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006887 debug_level=1 ec_max_ops=65535" \
6888 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006889 -C "x509_verify_cert.*4b00" \
6890 -C "mbedtls_pk_verify.*4b00" \
6891 -C "mbedtls_ecdh_make_public.*4b00" \
6892 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006893
6894requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006895requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006896requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006897run_test "EC restart: TLS, max_ops=1000" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006898 "$P_SRV curves=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006899 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02006900 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006901 debug_level=1 ec_max_ops=1000" \
6902 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006903 -c "x509_verify_cert.*4b00" \
6904 -c "mbedtls_pk_verify.*4b00" \
6905 -c "mbedtls_ecdh_make_public.*4b00" \
6906 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006907
6908requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006909requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006910requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006911run_test "EC restart: TLS, max_ops=1000, badsign" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006912 "$P_SRV curves=secp256r1 auth_mode=required \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006913 crt_file=data_files/server5-badsign.crt \
6914 key_file=data_files/server5.key" \
6915 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
6916 key_file=data_files/server5.key crt_file=data_files/server5.crt \
6917 debug_level=1 ec_max_ops=1000" \
6918 1 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006919 -c "x509_verify_cert.*4b00" \
6920 -C "mbedtls_pk_verify.*4b00" \
6921 -C "mbedtls_ecdh_make_public.*4b00" \
6922 -C "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006923 -c "! The certificate is not correctly signed by the trusted CA" \
6924 -c "! mbedtls_ssl_handshake returned" \
6925 -c "X509 - Certificate verification failed"
6926
6927requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006928requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006929requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006930run_test "EC restart: TLS, max_ops=1000, auth_mode=optional badsign" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006931 "$P_SRV curves=secp256r1 auth_mode=required \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006932 crt_file=data_files/server5-badsign.crt \
6933 key_file=data_files/server5.key" \
6934 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
6935 key_file=data_files/server5.key crt_file=data_files/server5.crt \
6936 debug_level=1 ec_max_ops=1000 auth_mode=optional" \
6937 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006938 -c "x509_verify_cert.*4b00" \
6939 -c "mbedtls_pk_verify.*4b00" \
6940 -c "mbedtls_ecdh_make_public.*4b00" \
6941 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006942 -c "! The certificate is not correctly signed by the trusted CA" \
6943 -C "! mbedtls_ssl_handshake returned" \
6944 -C "X509 - Certificate verification failed"
6945
6946requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006947requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006948requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006949run_test "EC restart: TLS, max_ops=1000, auth_mode=none badsign" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006950 "$P_SRV curves=secp256r1 auth_mode=required \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006951 crt_file=data_files/server5-badsign.crt \
6952 key_file=data_files/server5.key" \
6953 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
6954 key_file=data_files/server5.key crt_file=data_files/server5.crt \
6955 debug_level=1 ec_max_ops=1000 auth_mode=none" \
6956 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006957 -C "x509_verify_cert.*4b00" \
6958 -c "mbedtls_pk_verify.*4b00" \
6959 -c "mbedtls_ecdh_make_public.*4b00" \
6960 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02006961 -C "! The certificate is not correctly signed by the trusted CA" \
6962 -C "! mbedtls_ssl_handshake returned" \
6963 -C "X509 - Certificate verification failed"
6964
6965requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006966requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006967requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006968run_test "EC restart: DTLS, max_ops=1000" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006969 "$P_SRV curves=secp256r1 auth_mode=required dtls=1" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006970 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02006971 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006972 dtls=1 debug_level=1 ec_max_ops=1000" \
6973 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006974 -c "x509_verify_cert.*4b00" \
6975 -c "mbedtls_pk_verify.*4b00" \
6976 -c "mbedtls_ecdh_make_public.*4b00" \
6977 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02006978
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02006979requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006980requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006981requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02006982run_test "EC restart: TLS, max_ops=1000 no client auth" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006983 "$P_SRV curves=secp256r1" \
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02006984 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
6985 debug_level=1 ec_max_ops=1000" \
6986 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02006987 -c "x509_verify_cert.*4b00" \
6988 -c "mbedtls_pk_verify.*4b00" \
6989 -c "mbedtls_ecdh_make_public.*4b00" \
6990 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02006991
6992requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006993requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08006994requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02006995run_test "EC restart: TLS, max_ops=1000, ECDHE-PSK" \
Gilles Peskine4a02cef2021-06-03 11:12:40 +02006996 "$P_SRV curves=secp256r1 psk=abc123" \
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02006997 "$P_CLI force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \
6998 psk=abc123 debug_level=1 ec_max_ops=1000" \
6999 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007000 -C "x509_verify_cert.*4b00" \
7001 -C "mbedtls_pk_verify.*4b00" \
7002 -C "mbedtls_ecdh_make_public.*4b00" \
7003 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007004
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007005# Tests of asynchronous private key support in SSL
7006
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007007requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007008requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007009run_test "SSL async private: sign, delay=0" \
7010 "$P_SRV \
7011 async_operations=s async_private_delay1=0 async_private_delay2=0" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007012 "$P_CLI" \
7013 0 \
7014 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007015 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007016
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007017requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007018requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007019run_test "SSL async private: sign, delay=1" \
7020 "$P_SRV \
7021 async_operations=s async_private_delay1=1 async_private_delay2=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007022 "$P_CLI" \
7023 0 \
7024 -s "Async sign callback: using key slot " \
7025 -s "Async resume (slot [0-9]): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007026 -s "Async resume (slot [0-9]): sign done, status=0"
7027
Gilles Peskine12d0cc12018-04-26 15:06:56 +02007028requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007029requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine12d0cc12018-04-26 15:06:56 +02007030run_test "SSL async private: sign, delay=2" \
7031 "$P_SRV \
7032 async_operations=s async_private_delay1=2 async_private_delay2=2" \
7033 "$P_CLI" \
7034 0 \
7035 -s "Async sign callback: using key slot " \
7036 -U "Async sign callback: using key slot " \
7037 -s "Async resume (slot [0-9]): call 1 more times." \
7038 -s "Async resume (slot [0-9]): call 0 more times." \
7039 -s "Async resume (slot [0-9]): sign done, status=0"
7040
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007041requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Hanno Beckerc5722d12020-10-09 11:10:42 +01007042requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08007043requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine807d74a2018-04-30 10:30:49 +02007044run_test "SSL async private: sign, SNI" \
7045 "$P_SRV debug_level=3 \
7046 async_operations=s async_private_delay1=0 async_private_delay2=0 \
7047 crt_file=data_files/server5.crt key_file=data_files/server5.key \
7048 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
7049 "$P_CLI server_name=polarssl.example" \
7050 0 \
7051 -s "Async sign callback: using key slot " \
7052 -s "Async resume (slot [0-9]): sign done, status=0" \
7053 -s "parse ServerName extension" \
7054 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
7055 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
7056
7057requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007058requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007059run_test "SSL async private: decrypt, delay=0" \
7060 "$P_SRV \
7061 async_operations=d async_private_delay1=0 async_private_delay2=0" \
7062 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7063 0 \
7064 -s "Async decrypt callback: using key slot " \
7065 -s "Async resume (slot [0-9]): decrypt done, status=0"
7066
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007067requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007068requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007069run_test "SSL async private: decrypt, delay=1" \
7070 "$P_SRV \
7071 async_operations=d async_private_delay1=1 async_private_delay2=1" \
7072 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7073 0 \
7074 -s "Async decrypt callback: using key slot " \
7075 -s "Async resume (slot [0-9]): call 0 more times." \
7076 -s "Async resume (slot [0-9]): decrypt done, status=0"
7077
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007078requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007079requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007080run_test "SSL async private: decrypt RSA-PSK, delay=0" \
7081 "$P_SRV psk=abc123 \
7082 async_operations=d async_private_delay1=0 async_private_delay2=0" \
7083 "$P_CLI psk=abc123 \
7084 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
7085 0 \
7086 -s "Async decrypt callback: using key slot " \
7087 -s "Async resume (slot [0-9]): decrypt done, status=0"
7088
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007089requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007090requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007091run_test "SSL async private: decrypt RSA-PSK, delay=1" \
7092 "$P_SRV psk=abc123 \
7093 async_operations=d async_private_delay1=1 async_private_delay2=1" \
7094 "$P_CLI psk=abc123 \
7095 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
7096 0 \
7097 -s "Async decrypt callback: using key slot " \
7098 -s "Async resume (slot [0-9]): call 0 more times." \
7099 -s "Async resume (slot [0-9]): decrypt done, status=0"
7100
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007101requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007102requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007103run_test "SSL async private: sign callback not present" \
7104 "$P_SRV \
7105 async_operations=d async_private_delay1=1 async_private_delay2=1" \
7106 "$P_CLI; [ \$? -eq 1 ] &&
7107 $P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7108 0 \
7109 -S "Async sign callback" \
7110 -s "! mbedtls_ssl_handshake returned" \
7111 -s "The own private key or pre-shared key is not set, but needed" \
7112 -s "Async resume (slot [0-9]): decrypt done, status=0" \
7113 -s "Successful connection"
7114
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007115requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007116requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007117run_test "SSL async private: decrypt callback not present" \
7118 "$P_SRV debug_level=1 \
7119 async_operations=s async_private_delay1=1 async_private_delay2=1" \
7120 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA;
7121 [ \$? -eq 1 ] && $P_CLI" \
7122 0 \
7123 -S "Async decrypt callback" \
7124 -s "! mbedtls_ssl_handshake returned" \
7125 -s "got no RSA private key" \
7126 -s "Async resume (slot [0-9]): sign done, status=0" \
7127 -s "Successful connection"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007128
7129# key1: ECDSA, key2: RSA; use key1 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007130requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007131requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007132run_test "SSL async private: slot 0 used with key1" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007133 "$P_SRV \
7134 async_operations=s async_private_delay1=1 \
7135 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7136 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007137 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
7138 0 \
7139 -s "Async sign callback: using key slot 0," \
7140 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007141 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007142
7143# key1: ECDSA, key2: RSA; use key2 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007144requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007145requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007146run_test "SSL async private: slot 0 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007147 "$P_SRV \
7148 async_operations=s async_private_delay2=1 \
7149 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7150 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007151 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7152 0 \
7153 -s "Async sign callback: using key slot 0," \
7154 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007155 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007156
7157# key1: ECDSA, key2: RSA; use key2 from slot 1
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007158requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007159requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinead28bf02018-04-26 00:19:16 +02007160run_test "SSL async private: slot 1 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007161 "$P_SRV \
Gilles Peskine168dae82018-04-25 23:35:42 +02007162 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007163 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7164 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007165 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7166 0 \
7167 -s "Async sign callback: using key slot 1," \
7168 -s "Async resume (slot 1): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007169 -s "Async resume (slot 1): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007170
7171# key1: ECDSA, key2: RSA; use key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007172requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007173requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007174run_test "SSL async private: fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007175 "$P_SRV \
7176 async_operations=s async_private_delay1=1 \
7177 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7178 key_file2=data_files/server2.key crt_file2=data_files/server2.crt " \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007179 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7180 0 \
7181 -s "Async sign callback: no key matches this certificate."
7182
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007183requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007184requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007185run_test "SSL async private: sign, error in start" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007186 "$P_SRV \
7187 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7188 async_private_error=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007189 "$P_CLI" \
7190 1 \
7191 -s "Async sign callback: injected error" \
7192 -S "Async resume" \
Gilles Peskine37289cd2018-04-27 11:50:14 +02007193 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007194 -s "! mbedtls_ssl_handshake returned"
7195
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007196requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007197requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007198run_test "SSL async private: sign, cancel after start" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007199 "$P_SRV \
7200 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7201 async_private_error=2" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007202 "$P_CLI" \
7203 1 \
7204 -s "Async sign callback: using key slot " \
7205 -S "Async resume" \
7206 -s "Async cancel"
7207
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007208requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007209requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007210run_test "SSL async private: sign, error in resume" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007211 "$P_SRV \
7212 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7213 async_private_error=3" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007214 "$P_CLI" \
7215 1 \
7216 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007217 -s "Async resume callback: sign done but injected error" \
Gilles Peskine37289cd2018-04-27 11:50:14 +02007218 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007219 -s "! mbedtls_ssl_handshake returned"
7220
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007221requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007222requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007223run_test "SSL async private: decrypt, error in start" \
7224 "$P_SRV \
7225 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7226 async_private_error=1" \
7227 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7228 1 \
7229 -s "Async decrypt callback: injected error" \
7230 -S "Async resume" \
7231 -S "Async cancel" \
7232 -s "! mbedtls_ssl_handshake returned"
7233
7234requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007235requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007236run_test "SSL async private: decrypt, cancel after start" \
7237 "$P_SRV \
7238 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7239 async_private_error=2" \
7240 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7241 1 \
7242 -s "Async decrypt callback: using key slot " \
7243 -S "Async resume" \
7244 -s "Async cancel"
7245
7246requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007247requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007248run_test "SSL async private: decrypt, error in resume" \
7249 "$P_SRV \
7250 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7251 async_private_error=3" \
7252 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7253 1 \
7254 -s "Async decrypt callback: using key slot " \
7255 -s "Async resume callback: decrypt done but injected error" \
7256 -S "Async cancel" \
7257 -s "! mbedtls_ssl_handshake returned"
7258
7259requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007260requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007261run_test "SSL async private: cancel after start then operate correctly" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007262 "$P_SRV \
7263 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7264 async_private_error=-2" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007265 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
7266 0 \
7267 -s "Async cancel" \
7268 -s "! mbedtls_ssl_handshake returned" \
7269 -s "Async resume" \
7270 -s "Successful connection"
7271
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007272requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007273requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007274run_test "SSL async private: error in resume then operate correctly" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007275 "$P_SRV \
7276 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7277 async_private_error=-3" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007278 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
7279 0 \
7280 -s "! mbedtls_ssl_handshake returned" \
7281 -s "Async resume" \
7282 -s "Successful connection"
7283
7284# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007285requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007286requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007287run_test "SSL async private: cancel after start then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007288 "$P_SRV \
7289 async_operations=s async_private_delay1=1 async_private_error=-2 \
7290 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7291 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007292 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
7293 [ \$? -eq 1 ] &&
7294 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7295 0 \
Gilles Peskinededa75a2018-04-30 10:02:45 +02007296 -s "Async sign callback: using key slot 0" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007297 -S "Async resume" \
7298 -s "Async cancel" \
7299 -s "! mbedtls_ssl_handshake returned" \
7300 -s "Async sign callback: no key matches this certificate." \
7301 -s "Successful connection"
7302
7303# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007304requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Jerry Yuab082902021-12-23 18:02:22 +08007305requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007306run_test "SSL async private: sign, error in resume then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007307 "$P_SRV \
7308 async_operations=s async_private_delay1=1 async_private_error=-3 \
7309 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7310 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007311 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
7312 [ \$? -eq 1 ] &&
7313 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7314 0 \
7315 -s "Async resume" \
7316 -s "! mbedtls_ssl_handshake returned" \
7317 -s "Async sign callback: no key matches this certificate." \
7318 -s "Successful connection"
7319
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007320requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007321requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08007322requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine654bab72019-09-16 15:19:20 +02007323run_test "SSL async private: renegotiation: client-initiated, sign" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007324 "$P_SRV \
7325 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007326 exchanges=2 renegotiation=1" \
7327 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \
7328 0 \
7329 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007330 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007331
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007332requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007333requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08007334requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine654bab72019-09-16 15:19:20 +02007335run_test "SSL async private: renegotiation: server-initiated, sign" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007336 "$P_SRV \
7337 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007338 exchanges=2 renegotiation=1 renegotiate=1" \
7339 "$P_CLI exchanges=2 renegotiation=1" \
7340 0 \
7341 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007342 -s "Async resume (slot [0-9]): sign done, status=0"
7343
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007344requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007345requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08007346requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine654bab72019-09-16 15:19:20 +02007347run_test "SSL async private: renegotiation: client-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007348 "$P_SRV \
7349 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7350 exchanges=2 renegotiation=1" \
7351 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1 \
7352 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7353 0 \
7354 -s "Async decrypt callback: using key slot " \
7355 -s "Async resume (slot [0-9]): decrypt done, status=0"
7356
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007357requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007358requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08007359requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine654bab72019-09-16 15:19:20 +02007360run_test "SSL async private: renegotiation: server-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007361 "$P_SRV \
7362 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7363 exchanges=2 renegotiation=1 renegotiate=1" \
7364 "$P_CLI exchanges=2 renegotiation=1 \
7365 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7366 0 \
7367 -s "Async decrypt callback: using key slot " \
7368 -s "Async resume (slot [0-9]): decrypt done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007369
Ron Eldor58093c82018-06-28 13:22:05 +03007370# Tests for ECC extensions (rfc 4492)
7371
Ron Eldor643df7c2018-06-28 16:17:00 +03007372requires_config_enabled MBEDTLS_AES_C
7373requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
7374requires_config_enabled MBEDTLS_SHA256_C
7375requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08007376requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor58093c82018-06-28 13:22:05 +03007377run_test "Force a non ECC ciphersuite in the client side" \
7378 "$P_SRV debug_level=3" \
Ron Eldor643df7c2018-06-28 16:17:00 +03007379 "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +03007380 0 \
Jerry Yu136320b2021-12-21 17:09:00 +08007381 -C "client hello, adding supported_groups extension" \
Ron Eldor58093c82018-06-28 13:22:05 +03007382 -C "client hello, adding supported_point_formats extension" \
7383 -S "found supported elliptic curves extension" \
7384 -S "found supported point formats extension"
7385
Ron Eldor643df7c2018-06-28 16:17:00 +03007386requires_config_enabled MBEDTLS_AES_C
7387requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
7388requires_config_enabled MBEDTLS_SHA256_C
7389requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08007390requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor58093c82018-06-28 13:22:05 +03007391run_test "Force a non ECC ciphersuite in the server side" \
Ron Eldor643df7c2018-06-28 16:17:00 +03007392 "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +03007393 "$P_CLI debug_level=3" \
7394 0 \
7395 -C "found supported_point_formats extension" \
7396 -S "server hello, supported_point_formats extension"
7397
Ron Eldor643df7c2018-06-28 16:17:00 +03007398requires_config_enabled MBEDTLS_AES_C
7399requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
7400requires_config_enabled MBEDTLS_SHA256_C
7401requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08007402requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor58093c82018-06-28 13:22:05 +03007403run_test "Force an ECC ciphersuite in the client side" \
7404 "$P_SRV debug_level=3" \
7405 "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
7406 0 \
Jerry Yu136320b2021-12-21 17:09:00 +08007407 -c "client hello, adding supported_groups extension" \
Ron Eldor58093c82018-06-28 13:22:05 +03007408 -c "client hello, adding supported_point_formats extension" \
7409 -s "found supported elliptic curves extension" \
7410 -s "found supported point formats extension"
7411
Ron Eldor643df7c2018-06-28 16:17:00 +03007412requires_config_enabled MBEDTLS_AES_C
7413requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
7414requires_config_enabled MBEDTLS_SHA256_C
7415requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08007416requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor58093c82018-06-28 13:22:05 +03007417run_test "Force an ECC ciphersuite in the server side" \
7418 "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
7419 "$P_CLI debug_level=3" \
7420 0 \
7421 -c "found supported_point_formats extension" \
7422 -s "server hello, supported_point_formats extension"
7423
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007424# Tests for DTLS HelloVerifyRequest
7425
Jerry Yuab082902021-12-23 18:02:22 +08007426requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007427run_test "DTLS cookie: enabled" \
7428 "$P_SRV dtls=1 debug_level=2" \
7429 "$P_CLI dtls=1 debug_level=2" \
7430 0 \
7431 -s "cookie verification failed" \
7432 -s "cookie verification passed" \
7433 -S "cookie verification skipped" \
7434 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02007435 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007436 -S "SSL - The requested feature is not available"
7437
Jerry Yuab082902021-12-23 18:02:22 +08007438requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007439run_test "DTLS cookie: disabled" \
7440 "$P_SRV dtls=1 debug_level=2 cookies=0" \
7441 "$P_CLI dtls=1 debug_level=2" \
7442 0 \
7443 -S "cookie verification failed" \
7444 -S "cookie verification passed" \
7445 -s "cookie verification skipped" \
7446 -C "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02007447 -S "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007448 -S "SSL - The requested feature is not available"
7449
Jerry Yuab082902021-12-23 18:02:22 +08007450requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02007451run_test "DTLS cookie: default (failing)" \
7452 "$P_SRV dtls=1 debug_level=2 cookies=-1" \
7453 "$P_CLI dtls=1 debug_level=2 hs_timeout=100-400" \
7454 1 \
7455 -s "cookie verification failed" \
7456 -S "cookie verification passed" \
7457 -S "cookie verification skipped" \
7458 -C "received hello verify request" \
7459 -S "hello verification requested" \
7460 -s "SSL - The requested feature is not available"
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007461
7462requires_ipv6
Jerry Yuab082902021-12-23 18:02:22 +08007463requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007464run_test "DTLS cookie: enabled, IPv6" \
7465 "$P_SRV dtls=1 debug_level=2 server_addr=::1" \
7466 "$P_CLI dtls=1 debug_level=2 server_addr=::1" \
7467 0 \
7468 -s "cookie verification failed" \
7469 -s "cookie verification passed" \
7470 -S "cookie verification skipped" \
7471 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02007472 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02007473 -S "SSL - The requested feature is not available"
7474
Jerry Yuab082902021-12-23 18:02:22 +08007475requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02007476run_test "DTLS cookie: enabled, nbio" \
7477 "$P_SRV dtls=1 nbio=2 debug_level=2" \
7478 "$P_CLI dtls=1 nbio=2 debug_level=2" \
7479 0 \
7480 -s "cookie verification failed" \
7481 -s "cookie verification passed" \
7482 -S "cookie verification skipped" \
7483 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02007484 -s "hello verification requested" \
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02007485 -S "SSL - The requested feature is not available"
7486
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007487# Tests for client reconnecting from the same port with DTLS
7488
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007489not_with_valgrind # spurious resend
Jerry Yuab082902021-12-23 18:02:22 +08007490requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007491run_test "DTLS client reconnect from same port: reference" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02007492 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
7493 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007494 0 \
7495 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007496 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007497 -S "Client initiated reconnection from same port"
7498
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007499not_with_valgrind # spurious resend
Jerry Yuab082902021-12-23 18:02:22 +08007500requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007501run_test "DTLS client reconnect from same port: reconnect" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02007502 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
7503 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000 reconnect_hard=1" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007504 0 \
7505 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007506 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007507 -s "Client initiated reconnection from same port"
7508
Paul Bakker362689d2016-05-13 10:33:25 +01007509not_with_valgrind # server/client too slow to respond in time (next test has higher timeouts)
Jerry Yuab082902021-12-23 18:02:22 +08007510requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakker362689d2016-05-13 10:33:25 +01007511run_test "DTLS client reconnect from same port: reconnect, nbio, no valgrind" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007512 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 nbio=2" \
7513 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000 reconnect_hard=1" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007514 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007515 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02007516 -s "Client initiated reconnection from same port"
7517
Paul Bakker362689d2016-05-13 10:33:25 +01007518only_with_valgrind # Only with valgrind, do previous test but with higher read_timeout and hs_timeout
Jerry Yuab082902021-12-23 18:02:22 +08007519requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakker362689d2016-05-13 10:33:25 +01007520run_test "DTLS client reconnect from same port: reconnect, nbio, valgrind" \
7521 "$P_SRV dtls=1 exchanges=2 read_timeout=2000 nbio=2 hs_timeout=1500-6000" \
7522 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=1500-3000 reconnect_hard=1" \
7523 0 \
7524 -S "The operation timed out" \
7525 -s "Client initiated reconnection from same port"
7526
Jerry Yuab082902021-12-23 18:02:22 +08007527requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007528run_test "DTLS client reconnect from same port: no cookies" \
7529 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 cookies=0" \
Manuel Pégourié-Gonnard6ad23b92015-09-15 12:57:46 +02007530 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-8000 reconnect_hard=1" \
7531 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02007532 -s "The operation timed out" \
7533 -S "Client initiated reconnection from same port"
7534
Jerry Yuab082902021-12-23 18:02:22 +08007535requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardbaad2de2020-03-13 11:11:02 +01007536run_test "DTLS client reconnect from same port: attacker-injected" \
7537 -p "$P_PXY inject_clihlo=1" \
7538 "$P_SRV dtls=1 exchanges=2 debug_level=1" \
7539 "$P_CLI dtls=1 exchanges=2" \
7540 0 \
7541 -s "possible client reconnect from the same port" \
7542 -S "Client initiated reconnection from same port"
7543
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02007544# Tests for various cases of client authentication with DTLS
7545# (focused on handshake flows and message parsing)
7546
Jerry Yuab082902021-12-23 18:02:22 +08007547requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02007548run_test "DTLS client auth: required" \
7549 "$P_SRV dtls=1 auth_mode=required" \
7550 "$P_CLI dtls=1" \
7551 0 \
7552 -s "Verifying peer X.509 certificate... ok"
7553
Jerry Yuab082902021-12-23 18:02:22 +08007554requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02007555run_test "DTLS client auth: optional, client has no cert" \
7556 "$P_SRV dtls=1 auth_mode=optional" \
7557 "$P_CLI dtls=1 crt_file=none key_file=none" \
7558 0 \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01007559 -s "! Certificate was missing"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02007560
Jerry Yuab082902021-12-23 18:02:22 +08007561requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01007562run_test "DTLS client auth: none, client has no cert" \
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02007563 "$P_SRV dtls=1 auth_mode=none" \
7564 "$P_CLI dtls=1 crt_file=none key_file=none debug_level=2" \
7565 0 \
7566 -c "skip write certificate$" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01007567 -s "! Certificate verification was skipped"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02007568
Jerry Yuab082902021-12-23 18:02:22 +08007569requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0a885742015-08-04 12:08:35 +02007570run_test "DTLS wrong PSK: badmac alert" \
7571 "$P_SRV dtls=1 psk=abc123 force_ciphersuite=TLS-PSK-WITH-AES-128-GCM-SHA256" \
7572 "$P_CLI dtls=1 psk=abc124" \
7573 1 \
7574 -s "SSL - Verification of the message MAC failed" \
7575 -c "SSL - A fatal alert message was received from our peer"
7576
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02007577# Tests for receiving fragmented handshake messages with DTLS
7578
7579requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08007580requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02007581run_test "DTLS reassembly: no fragmentation (gnutls server)" \
7582 "$G_SRV -u --mtu 2048 -a" \
7583 "$P_CLI dtls=1 debug_level=2" \
7584 0 \
7585 -C "found fragmented DTLS handshake message" \
7586 -C "error"
7587
7588requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08007589requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02007590run_test "DTLS reassembly: some fragmentation (gnutls server)" \
7591 "$G_SRV -u --mtu 512" \
7592 "$P_CLI dtls=1 debug_level=2" \
7593 0 \
7594 -c "found fragmented DTLS handshake message" \
7595 -C "error"
7596
7597requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08007598requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02007599run_test "DTLS reassembly: more fragmentation (gnutls server)" \
7600 "$G_SRV -u --mtu 128" \
7601 "$P_CLI dtls=1 debug_level=2" \
7602 0 \
7603 -c "found fragmented DTLS handshake message" \
7604 -C "error"
7605
7606requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08007607requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02007608run_test "DTLS reassembly: more fragmentation, nbio (gnutls server)" \
7609 "$G_SRV -u --mtu 128" \
7610 "$P_CLI dtls=1 nbio=2 debug_level=2" \
7611 0 \
7612 -c "found fragmented DTLS handshake message" \
7613 -C "error"
7614
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02007615requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01007616requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08007617requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02007618run_test "DTLS reassembly: fragmentation, renego (gnutls server)" \
7619 "$G_SRV -u --mtu 256" \
7620 "$P_CLI debug_level=3 dtls=1 renegotiation=1 renegotiate=1" \
7621 0 \
7622 -c "found fragmented DTLS handshake message" \
7623 -c "client hello, adding renegotiation extension" \
7624 -c "found renegotiation extension" \
7625 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007626 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02007627 -C "error" \
7628 -s "Extra-header:"
7629
7630requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01007631requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08007632requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02007633run_test "DTLS reassembly: fragmentation, nbio, renego (gnutls server)" \
7634 "$G_SRV -u --mtu 256" \
7635 "$P_CLI debug_level=3 nbio=2 dtls=1 renegotiation=1 renegotiate=1" \
7636 0 \
7637 -c "found fragmented DTLS handshake message" \
7638 -c "client hello, adding renegotiation extension" \
7639 -c "found renegotiation extension" \
7640 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007641 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02007642 -C "error" \
7643 -s "Extra-header:"
7644
Jerry Yuab082902021-12-23 18:02:22 +08007645requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02007646run_test "DTLS reassembly: no fragmentation (openssl server)" \
7647 "$O_SRV -dtls -mtu 2048" \
7648 "$P_CLI dtls=1 debug_level=2" \
7649 0 \
7650 -C "found fragmented DTLS handshake message" \
7651 -C "error"
7652
Jerry Yuab082902021-12-23 18:02:22 +08007653requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02007654run_test "DTLS reassembly: some fragmentation (openssl server)" \
7655 "$O_SRV -dtls -mtu 768" \
7656 "$P_CLI dtls=1 debug_level=2" \
7657 0 \
7658 -c "found fragmented DTLS handshake message" \
7659 -C "error"
7660
Jerry Yuab082902021-12-23 18:02:22 +08007661requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02007662run_test "DTLS reassembly: more fragmentation (openssl server)" \
7663 "$O_SRV -dtls -mtu 256" \
7664 "$P_CLI dtls=1 debug_level=2" \
7665 0 \
7666 -c "found fragmented DTLS handshake message" \
7667 -C "error"
7668
Jerry Yuab082902021-12-23 18:02:22 +08007669requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02007670run_test "DTLS reassembly: fragmentation, nbio (openssl server)" \
7671 "$O_SRV -dtls -mtu 256" \
7672 "$P_CLI dtls=1 nbio=2 debug_level=2" \
7673 0 \
7674 -c "found fragmented DTLS handshake message" \
7675 -C "error"
7676
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007677# Tests for sending fragmented handshake messages with DTLS
7678#
7679# Use client auth when we need the client to send large messages,
7680# and use large cert chains on both sides too (the long chains we have all use
7681# both RSA and ECDSA, but ideally we should have long chains with either).
7682# Sizes reached (UDP payload):
7683# - 2037B for server certificate
7684# - 1542B for client certificate
7685# - 1013B for newsessionticket
7686# - all others below 512B
7687# All those tests assume MAX_CONTENT_LEN is at least 2048
7688
7689requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7690requires_config_enabled MBEDTLS_RSA_C
7691requires_config_enabled MBEDTLS_ECDSA_C
7692requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007693requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +08007694requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007695run_test "DTLS fragmenting: none (for reference)" \
7696 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7697 crt_file=data_files/server7_int-ca.crt \
7698 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007699 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01007700 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007701 "$P_CLI dtls=1 debug_level=2 \
7702 crt_file=data_files/server8_int-ca2.crt \
7703 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007704 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01007705 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007706 0 \
7707 -S "found fragmented DTLS handshake message" \
7708 -C "found fragmented DTLS handshake message" \
7709 -C "error"
7710
7711requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7712requires_config_enabled MBEDTLS_RSA_C
7713requires_config_enabled MBEDTLS_ECDSA_C
7714requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007715requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007716requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007717run_test "DTLS fragmenting: server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007718 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7719 crt_file=data_files/server7_int-ca.crt \
7720 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007721 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007722 max_frag_len=1024" \
7723 "$P_CLI dtls=1 debug_level=2 \
7724 crt_file=data_files/server8_int-ca2.crt \
7725 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007726 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007727 max_frag_len=2048" \
7728 0 \
7729 -S "found fragmented DTLS handshake message" \
7730 -c "found fragmented DTLS handshake message" \
7731 -C "error"
7732
Hanno Becker69ca0ad2018-08-24 12:11:35 +01007733# With the MFL extension, the server has no way of forcing
7734# the client to not exceed a certain MTU; hence, the following
7735# test can't be replicated with an MTU proxy such as the one
7736# `client-initiated, server only (max_frag_len)` below.
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007737requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7738requires_config_enabled MBEDTLS_RSA_C
7739requires_config_enabled MBEDTLS_ECDSA_C
7740requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007741requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +08007742requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007743run_test "DTLS fragmenting: server only (more) (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007744 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7745 crt_file=data_files/server7_int-ca.crt \
7746 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007747 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007748 max_frag_len=512" \
7749 "$P_CLI dtls=1 debug_level=2 \
7750 crt_file=data_files/server8_int-ca2.crt \
7751 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007752 hs_timeout=2500-60000 \
Hanno Becker69ca0ad2018-08-24 12:11:35 +01007753 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007754 0 \
7755 -S "found fragmented DTLS handshake message" \
7756 -c "found fragmented DTLS handshake message" \
7757 -C "error"
7758
7759requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7760requires_config_enabled MBEDTLS_RSA_C
7761requires_config_enabled MBEDTLS_ECDSA_C
7762requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007763requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007764requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007765run_test "DTLS fragmenting: client-initiated, server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007766 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
7767 crt_file=data_files/server7_int-ca.crt \
7768 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007769 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007770 max_frag_len=2048" \
7771 "$P_CLI dtls=1 debug_level=2 \
7772 crt_file=data_files/server8_int-ca2.crt \
7773 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007774 hs_timeout=2500-60000 \
7775 max_frag_len=1024" \
7776 0 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007777 -S "found fragmented DTLS handshake message" \
7778 -c "found fragmented DTLS handshake message" \
7779 -C "error"
7780
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007781# While not required by the standard defining the MFL extension
7782# (according to which it only applies to records, not to datagrams),
7783# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
7784# as otherwise there wouldn't be any means to communicate MTU restrictions
7785# to the peer.
7786# The next test checks that no datagrams significantly larger than the
7787# negotiated MFL are sent.
7788requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7789requires_config_enabled MBEDTLS_RSA_C
7790requires_config_enabled MBEDTLS_ECDSA_C
7791requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007792requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007793requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007794run_test "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -04007795 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007796 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
7797 crt_file=data_files/server7_int-ca.crt \
7798 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007799 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007800 max_frag_len=2048" \
7801 "$P_CLI dtls=1 debug_level=2 \
7802 crt_file=data_files/server8_int-ca2.crt \
7803 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007804 hs_timeout=2500-60000 \
7805 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007806 0 \
7807 -S "found fragmented DTLS handshake message" \
7808 -c "found fragmented DTLS handshake message" \
7809 -C "error"
7810
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007811requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7812requires_config_enabled MBEDTLS_RSA_C
7813requires_config_enabled MBEDTLS_ECDSA_C
7814requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007815requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007816requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007817run_test "DTLS fragmenting: client-initiated, both (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007818 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7819 crt_file=data_files/server7_int-ca.crt \
7820 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007821 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007822 max_frag_len=2048" \
7823 "$P_CLI dtls=1 debug_level=2 \
7824 crt_file=data_files/server8_int-ca2.crt \
7825 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007826 hs_timeout=2500-60000 \
7827 max_frag_len=1024" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02007828 0 \
7829 -s "found fragmented DTLS handshake message" \
7830 -c "found fragmented DTLS handshake message" \
7831 -C "error"
7832
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007833# While not required by the standard defining the MFL extension
7834# (according to which it only applies to records, not to datagrams),
7835# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
7836# as otherwise there wouldn't be any means to communicate MTU restrictions
7837# to the peer.
7838# The next test checks that no datagrams significantly larger than the
7839# negotiated MFL are sent.
7840requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7841requires_config_enabled MBEDTLS_RSA_C
7842requires_config_enabled MBEDTLS_ECDSA_C
7843requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007844requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007845requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007846run_test "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -04007847 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007848 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7849 crt_file=data_files/server7_int-ca.crt \
7850 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007851 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007852 max_frag_len=2048" \
7853 "$P_CLI dtls=1 debug_level=2 \
7854 crt_file=data_files/server8_int-ca2.crt \
7855 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007856 hs_timeout=2500-60000 \
7857 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01007858 0 \
7859 -s "found fragmented DTLS handshake message" \
7860 -c "found fragmented DTLS handshake message" \
7861 -C "error"
7862
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007863requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7864requires_config_enabled MBEDTLS_RSA_C
7865requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007866requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +08007867requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007868run_test "DTLS fragmenting: none (for reference) (MTU)" \
7869 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7870 crt_file=data_files/server7_int-ca.crt \
7871 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007872 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01007873 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007874 "$P_CLI dtls=1 debug_level=2 \
7875 crt_file=data_files/server8_int-ca2.crt \
7876 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007877 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01007878 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007879 0 \
7880 -S "found fragmented DTLS handshake message" \
7881 -C "found fragmented DTLS handshake message" \
7882 -C "error"
7883
7884requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7885requires_config_enabled MBEDTLS_RSA_C
7886requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007887requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +08007888requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007889run_test "DTLS fragmenting: client (MTU)" \
7890 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7891 crt_file=data_files/server7_int-ca.crt \
7892 key_file=data_files/server7.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -04007893 hs_timeout=3500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01007894 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007895 "$P_CLI dtls=1 debug_level=2 \
7896 crt_file=data_files/server8_int-ca2.crt \
7897 key_file=data_files/server8.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -04007898 hs_timeout=3500-60000 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007899 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007900 0 \
7901 -s "found fragmented DTLS handshake message" \
7902 -C "found fragmented DTLS handshake message" \
7903 -C "error"
7904
7905requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7906requires_config_enabled MBEDTLS_RSA_C
7907requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007908requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007909requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007910run_test "DTLS fragmenting: server (MTU)" \
7911 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7912 crt_file=data_files/server7_int-ca.crt \
7913 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007914 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007915 mtu=512" \
7916 "$P_CLI dtls=1 debug_level=2 \
7917 crt_file=data_files/server8_int-ca2.crt \
7918 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007919 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007920 mtu=2048" \
7921 0 \
7922 -S "found fragmented DTLS handshake message" \
7923 -c "found fragmented DTLS handshake message" \
7924 -C "error"
7925
7926requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7927requires_config_enabled MBEDTLS_RSA_C
7928requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007929requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007930requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -04007931run_test "DTLS fragmenting: both (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007932 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007933 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7934 crt_file=data_files/server7_int-ca.crt \
7935 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007936 hs_timeout=2500-60000 \
Andrzej Kurek95805282018-10-11 08:55:37 -04007937 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007938 "$P_CLI dtls=1 debug_level=2 \
7939 crt_file=data_files/server8_int-ca2.crt \
7940 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04007941 hs_timeout=2500-60000 \
7942 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02007943 0 \
7944 -s "found fragmented DTLS handshake message" \
7945 -c "found fragmented DTLS handshake message" \
7946 -C "error"
7947
Andrzej Kurek77826052018-10-11 07:34:08 -04007948# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04007949requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7950requires_config_enabled MBEDTLS_RSA_C
7951requires_config_enabled MBEDTLS_ECDSA_C
7952requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02007953requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04007954requires_config_enabled MBEDTLS_AES_C
7955requires_config_enabled MBEDTLS_GCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007956requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007957requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -04007958run_test "DTLS fragmenting: both (MTU=512)" \
Hanno Becker8d832182018-03-15 10:14:19 +00007959 -p "$P_PXY mtu=512" \
Hanno Becker72a4f032017-11-15 16:39:20 +00007960 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7961 crt_file=data_files/server7_int-ca.crt \
7962 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04007963 hs_timeout=2500-60000 \
Hanno Becker72a4f032017-11-15 16:39:20 +00007964 mtu=512" \
7965 "$P_CLI dtls=1 debug_level=2 \
7966 crt_file=data_files/server8_int-ca2.crt \
7967 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04007968 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7969 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02007970 mtu=512" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02007971 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02007972 -s "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02007973 -c "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02007974 -C "error"
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02007975
Andrzej Kurek7311c782018-10-11 06:49:41 -04007976# Test for automatic MTU reduction on repeated resend.
Andrzej Kurek77826052018-10-11 07:34:08 -04007977# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04007978# The ratio of max/min timeout should ideally equal 4 to accept two
7979# retransmissions, but in some cases (like both the server and client using
7980# fragmentation and auto-reduction) an extra retransmission might occur,
7981# hence the ratio of 8.
Hanno Becker37029eb2018-08-29 17:01:40 +01007982not_with_valgrind
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02007983requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7984requires_config_enabled MBEDTLS_RSA_C
7985requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02007986requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04007987requires_config_enabled MBEDTLS_AES_C
7988requires_config_enabled MBEDTLS_GCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01007989requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08007990requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine0d8b86a2019-09-20 18:03:11 +02007991run_test "DTLS fragmenting: proxy MTU: auto-reduction (not valgrind)" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02007992 -p "$P_PXY mtu=508" \
7993 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
7994 crt_file=data_files/server7_int-ca.crt \
Andrzej Kurek7311c782018-10-11 06:49:41 -04007995 key_file=data_files/server7.key \
7996 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02007997 "$P_CLI dtls=1 debug_level=2 \
7998 crt_file=data_files/server8_int-ca2.crt \
7999 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008000 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8001 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008002 0 \
8003 -s "found fragmented DTLS handshake message" \
8004 -c "found fragmented DTLS handshake message" \
8005 -C "error"
8006
Andrzej Kurek77826052018-10-11 07:34:08 -04008007# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Hanno Becker108992e2018-08-29 17:04:18 +01008008only_with_valgrind
8009requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8010requires_config_enabled MBEDTLS_RSA_C
8011requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008012requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008013requires_config_enabled MBEDTLS_AES_C
8014requires_config_enabled MBEDTLS_GCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008015requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008016requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine0d8b86a2019-09-20 18:03:11 +02008017run_test "DTLS fragmenting: proxy MTU: auto-reduction (with valgrind)" \
Hanno Becker108992e2018-08-29 17:04:18 +01008018 -p "$P_PXY mtu=508" \
8019 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8020 crt_file=data_files/server7_int-ca.crt \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008021 key_file=data_files/server7.key \
Hanno Becker108992e2018-08-29 17:04:18 +01008022 hs_timeout=250-10000" \
8023 "$P_CLI dtls=1 debug_level=2 \
8024 crt_file=data_files/server8_int-ca2.crt \
8025 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008026 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Hanno Becker108992e2018-08-29 17:04:18 +01008027 hs_timeout=250-10000" \
8028 0 \
8029 -s "found fragmented DTLS handshake message" \
8030 -c "found fragmented DTLS handshake message" \
8031 -C "error"
8032
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008033# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
Manuel Pégourié-Gonnard3d183ce2018-08-22 09:56:22 +02008034# OTOH the client might resend if the server is to slow to reset after sending
8035# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008036not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008037requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8038requires_config_enabled MBEDTLS_RSA_C
8039requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008040requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008041requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -04008042run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008043 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008044 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8045 crt_file=data_files/server7_int-ca.crt \
8046 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008047 hs_timeout=10000-60000 \
8048 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008049 "$P_CLI dtls=1 debug_level=2 \
8050 crt_file=data_files/server8_int-ca2.crt \
8051 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008052 hs_timeout=10000-60000 \
8053 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008054 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008055 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008056 -s "found fragmented DTLS handshake message" \
8057 -c "found fragmented DTLS handshake message" \
8058 -C "error"
8059
Andrzej Kurek77826052018-10-11 07:34:08 -04008060# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008061# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
8062# OTOH the client might resend if the server is to slow to reset after sending
8063# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008064not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008065requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8066requires_config_enabled MBEDTLS_RSA_C
8067requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008068requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008069requires_config_enabled MBEDTLS_AES_C
8070requires_config_enabled MBEDTLS_GCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008071requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008072requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -04008073run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=512)" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008074 -p "$P_PXY mtu=512" \
8075 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8076 crt_file=data_files/server7_int-ca.crt \
8077 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008078 hs_timeout=10000-60000 \
8079 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008080 "$P_CLI dtls=1 debug_level=2 \
8081 crt_file=data_files/server8_int-ca2.crt \
8082 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008083 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8084 hs_timeout=10000-60000 \
8085 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008086 0 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008087 -S "autoreduction" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008088 -s "found fragmented DTLS handshake message" \
8089 -c "found fragmented DTLS handshake message" \
8090 -C "error"
8091
Andrzej Kurek7311c782018-10-11 06:49:41 -04008092not_with_valgrind # spurious autoreduction due to timeout
8093requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8094requires_config_enabled MBEDTLS_RSA_C
8095requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008096requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008097requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -04008098run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008099 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008100 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8101 crt_file=data_files/server7_int-ca.crt \
8102 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008103 hs_timeout=10000-60000 \
8104 mtu=1024 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008105 "$P_CLI dtls=1 debug_level=2 \
8106 crt_file=data_files/server8_int-ca2.crt \
8107 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008108 hs_timeout=10000-60000 \
8109 mtu=1024 nbio=2" \
8110 0 \
8111 -S "autoreduction" \
8112 -s "found fragmented DTLS handshake message" \
8113 -c "found fragmented DTLS handshake message" \
8114 -C "error"
8115
Andrzej Kurek77826052018-10-11 07:34:08 -04008116# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008117not_with_valgrind # spurious autoreduction due to timeout
8118requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8119requires_config_enabled MBEDTLS_RSA_C
8120requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008121requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008122requires_config_enabled MBEDTLS_AES_C
8123requires_config_enabled MBEDTLS_GCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008124requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008125requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -04008126run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=512)" \
8127 -p "$P_PXY mtu=512" \
8128 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8129 crt_file=data_files/server7_int-ca.crt \
8130 key_file=data_files/server7.key \
8131 hs_timeout=10000-60000 \
8132 mtu=512 nbio=2" \
8133 "$P_CLI dtls=1 debug_level=2 \
8134 crt_file=data_files/server8_int-ca2.crt \
8135 key_file=data_files/server8.key \
8136 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8137 hs_timeout=10000-60000 \
8138 mtu=512 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008139 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008140 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008141 -s "found fragmented DTLS handshake message" \
8142 -c "found fragmented DTLS handshake message" \
8143 -C "error"
8144
Andrzej Kurek77826052018-10-11 07:34:08 -04008145# Forcing ciphersuite for this test to fit the MTU of 1450 with full config.
Hanno Beckerb841b4f2018-08-28 10:25:51 +01008146# This ensures things still work after session_reset().
8147# It also exercises the "resumed handshake" flow.
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008148# Since we don't support reading fragmented ClientHello yet,
8149# up the MTU to 1450 (larger than ClientHello with session ticket,
8150# but still smaller than client's Certificate to ensure fragmentation).
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008151# An autoreduction on the client-side might happen if the server is
8152# slow to reset, therefore omitting '-C "autoreduction"' below.
Manuel Pégourié-Gonnard2f2d9022018-08-21 12:17:54 +02008153# reco_delay avoids races where the client reconnects before the server has
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008154# resumed listening, which would result in a spurious autoreduction.
8155not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008156requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8157requires_config_enabled MBEDTLS_RSA_C
8158requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008159requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008160requires_config_enabled MBEDTLS_AES_C
8161requires_config_enabled MBEDTLS_GCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008162requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008163requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008164run_test "DTLS fragmenting: proxy MTU, resumed handshake" \
8165 -p "$P_PXY mtu=1450" \
8166 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8167 crt_file=data_files/server7_int-ca.crt \
8168 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008169 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008170 mtu=1450" \
8171 "$P_CLI dtls=1 debug_level=2 \
8172 crt_file=data_files/server8_int-ca2.crt \
8173 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008174 hs_timeout=10000-60000 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008175 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01008176 mtu=1450 reconnect=1 skip_close_notify=1 reco_delay=1" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008177 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008178 -S "autoreduction" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008179 -s "found fragmented DTLS handshake message" \
8180 -c "found fragmented DTLS handshake message" \
8181 -C "error"
8182
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008183# An autoreduction on the client-side might happen if the server is
8184# slow to reset, therefore omitting '-C "autoreduction"' below.
8185not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008186requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8187requires_config_enabled MBEDTLS_RSA_C
8188requires_config_enabled MBEDTLS_ECDSA_C
8189requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008190requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008191requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8192requires_config_enabled MBEDTLS_CHACHAPOLY_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008193requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008194requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008195run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \
8196 -p "$P_PXY mtu=512" \
8197 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8198 crt_file=data_files/server7_int-ca.crt \
8199 key_file=data_files/server7.key \
8200 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008201 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008202 mtu=512" \
8203 "$P_CLI dtls=1 debug_level=2 \
8204 crt_file=data_files/server8_int-ca2.crt \
8205 key_file=data_files/server8.key \
8206 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008207 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008208 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008209 mtu=512" \
8210 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008211 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008212 -s "found fragmented DTLS handshake message" \
8213 -c "found fragmented DTLS handshake message" \
8214 -C "error"
8215
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008216# An autoreduction on the client-side might happen if the server is
8217# slow to reset, therefore omitting '-C "autoreduction"' below.
8218not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008219requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8220requires_config_enabled MBEDTLS_RSA_C
8221requires_config_enabled MBEDTLS_ECDSA_C
8222requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008223requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008224requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8225requires_config_enabled MBEDTLS_AES_C
8226requires_config_enabled MBEDTLS_GCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008227requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008228requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008229run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \
8230 -p "$P_PXY mtu=512" \
8231 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8232 crt_file=data_files/server7_int-ca.crt \
8233 key_file=data_files/server7.key \
8234 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008235 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008236 mtu=512" \
8237 "$P_CLI dtls=1 debug_level=2 \
8238 crt_file=data_files/server8_int-ca2.crt \
8239 key_file=data_files/server8.key \
8240 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008241 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008242 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008243 mtu=512" \
8244 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008245 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008246 -s "found fragmented DTLS handshake message" \
8247 -c "found fragmented DTLS handshake message" \
8248 -C "error"
8249
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008250# An autoreduction on the client-side might happen if the server is
8251# slow to reset, therefore omitting '-C "autoreduction"' below.
8252not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008253requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8254requires_config_enabled MBEDTLS_RSA_C
8255requires_config_enabled MBEDTLS_ECDSA_C
8256requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008257requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008258requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8259requires_config_enabled MBEDTLS_AES_C
8260requires_config_enabled MBEDTLS_CCM_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008261requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008262requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008263run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008264 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008265 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8266 crt_file=data_files/server7_int-ca.crt \
8267 key_file=data_files/server7.key \
8268 exchanges=2 renegotiation=1 \
8269 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008270 hs_timeout=10000-60000 \
8271 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008272 "$P_CLI dtls=1 debug_level=2 \
8273 crt_file=data_files/server8_int-ca2.crt \
8274 key_file=data_files/server8.key \
8275 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008276 hs_timeout=10000-60000 \
8277 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008278 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008279 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008280 -s "found fragmented DTLS handshake message" \
8281 -c "found fragmented DTLS handshake message" \
8282 -C "error"
8283
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008284# An autoreduction on the client-side might happen if the server is
8285# slow to reset, therefore omitting '-C "autoreduction"' below.
8286not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008287requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8288requires_config_enabled MBEDTLS_RSA_C
8289requires_config_enabled MBEDTLS_ECDSA_C
8290requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008291requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008292requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8293requires_config_enabled MBEDTLS_AES_C
8294requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8295requires_config_enabled MBEDTLS_SSL_ENCRYPT_THEN_MAC
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008296requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008297requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008298run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008299 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008300 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8301 crt_file=data_files/server7_int-ca.crt \
8302 key_file=data_files/server7.key \
8303 exchanges=2 renegotiation=1 \
8304 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008305 hs_timeout=10000-60000 \
8306 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008307 "$P_CLI dtls=1 debug_level=2 \
8308 crt_file=data_files/server8_int-ca2.crt \
8309 key_file=data_files/server8.key \
8310 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008311 hs_timeout=10000-60000 \
8312 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008313 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008314 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008315 -s "found fragmented DTLS handshake message" \
8316 -c "found fragmented DTLS handshake message" \
8317 -C "error"
8318
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008319# An autoreduction on the client-side might happen if the server is
8320# slow to reset, therefore omitting '-C "autoreduction"' below.
8321not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008322requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8323requires_config_enabled MBEDTLS_RSA_C
8324requires_config_enabled MBEDTLS_ECDSA_C
8325requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008326requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008327requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8328requires_config_enabled MBEDTLS_AES_C
8329requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008330requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008331requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008332run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008333 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008334 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8335 crt_file=data_files/server7_int-ca.crt \
8336 key_file=data_files/server7.key \
8337 exchanges=2 renegotiation=1 \
8338 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 etm=0 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008339 hs_timeout=10000-60000 \
8340 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008341 "$P_CLI dtls=1 debug_level=2 \
8342 crt_file=data_files/server8_int-ca2.crt \
8343 key_file=data_files/server8.key \
8344 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008345 hs_timeout=10000-60000 \
8346 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008347 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008348 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008349 -s "found fragmented DTLS handshake message" \
8350 -c "found fragmented DTLS handshake message" \
8351 -C "error"
8352
Andrzej Kurek77826052018-10-11 07:34:08 -04008353# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008354requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8355requires_config_enabled MBEDTLS_RSA_C
8356requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008357requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008358requires_config_enabled MBEDTLS_AES_C
8359requires_config_enabled MBEDTLS_GCM_C
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008360client_needs_more_time 2
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008361requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008362requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008363run_test "DTLS fragmenting: proxy MTU + 3d" \
8364 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01008365 "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008366 crt_file=data_files/server7_int-ca.crt \
8367 key_file=data_files/server7.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02008368 hs_timeout=250-10000 mtu=512" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01008369 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008370 crt_file=data_files/server8_int-ca2.crt \
8371 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008372 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02008373 hs_timeout=250-10000 mtu=512" \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008374 0 \
8375 -s "found fragmented DTLS handshake message" \
8376 -c "found fragmented DTLS handshake message" \
8377 -C "error"
8378
Andrzej Kurek77826052018-10-11 07:34:08 -04008379# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008380requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8381requires_config_enabled MBEDTLS_RSA_C
8382requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskine6ee3bc02021-07-13 20:34:55 +02008383requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008384requires_config_enabled MBEDTLS_AES_C
8385requires_config_enabled MBEDTLS_GCM_C
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008386client_needs_more_time 2
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008387requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008388requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008389run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \
8390 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
8391 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8392 crt_file=data_files/server7_int-ca.crt \
8393 key_file=data_files/server7.key \
8394 hs_timeout=250-10000 mtu=512 nbio=2" \
8395 "$P_CLI dtls=1 debug_level=2 \
8396 crt_file=data_files/server8_int-ca2.crt \
8397 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008398 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008399 hs_timeout=250-10000 mtu=512 nbio=2" \
8400 0 \
8401 -s "found fragmented DTLS handshake message" \
8402 -c "found fragmented DTLS handshake message" \
8403 -C "error"
8404
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008405# interop tests for DTLS fragmentating with reliable connection
8406#
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008407# here and below we just want to test that the we fragment in a way that
8408# pleases other implementations, so we don't need the peer to fragment
8409requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8410requires_config_enabled MBEDTLS_RSA_C
8411requires_config_enabled MBEDTLS_ECDSA_C
8412requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02008413requires_gnutls
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008414requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008415requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008416run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \
8417 "$G_SRV -u" \
8418 "$P_CLI dtls=1 debug_level=2 \
8419 crt_file=data_files/server8_int-ca2.crt \
8420 key_file=data_files/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008421 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008422 0 \
8423 -c "fragmenting handshake message" \
8424 -C "error"
8425
Hanno Beckerb9a00862018-08-28 10:20:22 +01008426# We use --insecure for the GnuTLS client because it expects
8427# the hostname / IP it connects to to be the name used in the
8428# certificate obtained from the server. Here, however, it
8429# connects to 127.0.0.1 while our test certificates use 'localhost'
8430# as the server name in the certificate. This will make the
8431# certifiate validation fail, but passing --insecure makes
8432# GnuTLS continue the connection nonetheless.
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008433requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8434requires_config_enabled MBEDTLS_RSA_C
8435requires_config_enabled MBEDTLS_ECDSA_C
8436requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02008437requires_gnutls
Andrzej Kurekb4593462018-10-11 08:43:30 -04008438requires_not_i686
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008439requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008440requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008441run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02008442 "$P_SRV dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008443 crt_file=data_files/server7_int-ca.crt \
8444 key_file=data_files/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008445 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02008446 "$G_CLI -u --insecure 127.0.0.1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008447 0 \
8448 -s "fragmenting handshake message"
8449
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008450requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8451requires_config_enabled MBEDTLS_RSA_C
8452requires_config_enabled MBEDTLS_ECDSA_C
8453requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008454requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008455requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008456run_test "DTLS fragmenting: openssl server, DTLS 1.2" \
8457 "$O_SRV -dtls1_2 -verify 10" \
8458 "$P_CLI dtls=1 debug_level=2 \
8459 crt_file=data_files/server8_int-ca2.crt \
8460 key_file=data_files/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008461 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008462 0 \
8463 -c "fragmenting handshake message" \
8464 -C "error"
8465
8466requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8467requires_config_enabled MBEDTLS_RSA_C
8468requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008469requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008470requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008471requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008472run_test "DTLS fragmenting: openssl client, DTLS 1.2" \
8473 "$P_SRV dtls=1 debug_level=2 \
8474 crt_file=data_files/server7_int-ca.crt \
8475 key_file=data_files/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008476 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008477 "$O_CLI -dtls1_2" \
8478 0 \
8479 -s "fragmenting handshake message"
8480
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008481# interop tests for DTLS fragmentating with unreliable connection
8482#
8483# again we just want to test that the we fragment in a way that
8484# pleases other implementations, so we don't need the peer to fragment
8485requires_gnutls_next
8486requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8487requires_config_enabled MBEDTLS_RSA_C
8488requires_config_enabled MBEDTLS_ECDSA_C
8489requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02008490client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008491requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008492requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008493run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \
8494 -p "$P_PXY drop=8 delay=8 duplicate=8" \
8495 "$G_NEXT_SRV -u" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01008496 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008497 crt_file=data_files/server8_int-ca2.crt \
8498 key_file=data_files/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008499 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008500 0 \
8501 -c "fragmenting handshake message" \
8502 -C "error"
8503
8504requires_gnutls_next
8505requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8506requires_config_enabled MBEDTLS_RSA_C
8507requires_config_enabled MBEDTLS_ECDSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +01008508requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8509client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008510requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008511requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker3b8b40c2018-08-28 10:25:41 +01008512run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \
8513 -p "$P_PXY drop=8 delay=8 duplicate=8" \
8514 "$P_SRV dtls=1 debug_level=2 \
8515 crt_file=data_files/server7_int-ca.crt \
8516 key_file=data_files/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008517 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
k-stachowiak17a38d32019-02-18 15:29:56 +01008518 "$G_NEXT_CLI -u --insecure 127.0.0.1" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01008519 0 \
8520 -s "fragmenting handshake message"
8521
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02008522## Interop test with OpenSSL might trigger a bug in recent versions (including
8523## all versions installed on the CI machines), reported here:
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008524## Bug report: https://github.com/openssl/openssl/issues/6902
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02008525## They should be re-enabled once a fixed version of OpenSSL is available
8526## (this should happen in some 1.1.1_ release according to the ticket).
Hanno Becker3b8b40c2018-08-28 10:25:41 +01008527skip_next_test
8528requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8529requires_config_enabled MBEDTLS_RSA_C
8530requires_config_enabled MBEDTLS_ECDSA_C
8531requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8532client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008533requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008534requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker3b8b40c2018-08-28 10:25:41 +01008535run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \
8536 -p "$P_PXY drop=8 delay=8 duplicate=8" \
8537 "$O_SRV -dtls1_2 -verify 10" \
8538 "$P_CLI dtls=1 debug_level=2 \
8539 crt_file=data_files/server8_int-ca2.crt \
8540 key_file=data_files/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008541 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01008542 0 \
8543 -c "fragmenting handshake message" \
8544 -C "error"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008545
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02008546skip_next_test
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008547requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8548requires_config_enabled MBEDTLS_RSA_C
8549requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02008550requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8551client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +01008552requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +08008553requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02008554run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \
8555 -p "$P_PXY drop=8 delay=8 duplicate=8" \
8556 "$P_SRV dtls=1 debug_level=2 \
8557 crt_file=data_files/server7_int-ca.crt \
8558 key_file=data_files/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008559 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02008560 "$O_CLI -dtls1_2" \
8561 0 \
8562 -s "fragmenting handshake message"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008563
Ron Eldorb4655392018-07-05 18:25:39 +03008564# Tests for DTLS-SRTP (RFC 5764)
8565requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008566requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +03008567run_test "DTLS-SRTP all profiles supported" \
8568 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8569 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
8570 0 \
8571 -s "found use_srtp extension" \
8572 -s "found srtp profile" \
8573 -s "selected srtp profile" \
8574 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008575 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008576 -c "client hello, adding use_srtp extension" \
8577 -c "found use_srtp extension" \
8578 -c "found srtp profile" \
8579 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008580 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02008581 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03008582 -C "error"
8583
Johan Pascal9bc50b02020-09-24 12:01:13 +02008584
Ron Eldorb4655392018-07-05 18:25:39 +03008585requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008586requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +03008587run_test "DTLS-SRTP server supports all profiles. Client supports one profile." \
8588 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +02008589 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=5 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03008590 0 \
8591 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02008592 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
8593 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +03008594 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008595 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008596 -c "client hello, adding use_srtp extension" \
8597 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02008598 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +03008599 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008600 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02008601 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03008602 -C "error"
8603
8604requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008605requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008606run_test "DTLS-SRTP server supports one profile. Client supports all profiles." \
Johan Pascal43f94902020-09-22 12:25:52 +02008607 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03008608 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
8609 0 \
8610 -s "found use_srtp extension" \
8611 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02008612 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03008613 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008614 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008615 -c "client hello, adding use_srtp extension" \
8616 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02008617 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03008618 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008619 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02008620 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03008621 -C "error"
8622
8623requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008624requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +03008625run_test "DTLS-SRTP server and Client support only one matching profile." \
8626 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
8627 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
8628 0 \
8629 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02008630 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
8631 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03008632 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008633 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008634 -c "client hello, adding use_srtp extension" \
8635 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02008636 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03008637 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008638 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02008639 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03008640 -C "error"
8641
8642requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008643requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +03008644run_test "DTLS-SRTP server and Client support only one different profile." \
8645 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +02008646 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03008647 0 \
8648 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02008649 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03008650 -S "selected srtp profile" \
8651 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008652 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008653 -c "client hello, adding use_srtp extension" \
8654 -C "found use_srtp extension" \
8655 -C "found srtp profile" \
8656 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008657 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008658 -C "error"
8659
8660requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008661requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +03008662run_test "DTLS-SRTP server doesn't support use_srtp extension." \
8663 "$P_SRV dtls=1 debug_level=3" \
8664 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
8665 0 \
8666 -s "found use_srtp extension" \
8667 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008668 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008669 -c "client hello, adding use_srtp extension" \
8670 -C "found use_srtp extension" \
8671 -C "found srtp profile" \
8672 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008673 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008674 -C "error"
8675
8676requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008677requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +03008678run_test "DTLS-SRTP all profiles supported. mki used" \
8679 "$P_SRV dtls=1 use_srtp=1 support_mki=1 debug_level=3" \
8680 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
8681 0 \
8682 -s "found use_srtp extension" \
8683 -s "found srtp profile" \
8684 -s "selected srtp profile" \
8685 -s "server hello, adding use_srtp extension" \
8686 -s "dumping 'using mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008687 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03008688 -c "client hello, adding use_srtp extension" \
8689 -c "found use_srtp extension" \
8690 -c "found srtp profile" \
8691 -c "selected srtp profile" \
8692 -c "dumping 'sending mki' (8 bytes)" \
8693 -c "dumping 'received mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008694 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02008695 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Johan Pascal20c7db32020-10-26 22:45:58 +01008696 -g "find_in_both '^ *DTLS-SRTP mki value: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03008697 -C "error"
8698
8699requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008700requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +03008701run_test "DTLS-SRTP all profiles supported. server doesn't support mki." \
8702 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8703 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
8704 0 \
8705 -s "found use_srtp extension" \
8706 -s "found srtp profile" \
8707 -s "selected srtp profile" \
8708 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008709 -s "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01008710 -s "DTLS-SRTP no mki value negotiated"\
Ron Eldorb4655392018-07-05 18:25:39 +03008711 -S "dumping 'using mki' (8 bytes)" \
8712 -c "client hello, adding use_srtp extension" \
8713 -c "found use_srtp extension" \
8714 -c "found srtp profile" \
8715 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008716 -c "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01008717 -c "DTLS-SRTP no mki value negotiated"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02008718 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03008719 -c "dumping 'sending mki' (8 bytes)" \
8720 -C "dumping 'received mki' (8 bytes)" \
8721 -C "error"
8722
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008723requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008724requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008725run_test "DTLS-SRTP all profiles supported. openssl client." \
8726 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8727 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8728 0 \
8729 -s "found use_srtp extension" \
8730 -s "found srtp profile" \
8731 -s "selected srtp profile" \
8732 -s "server hello, adding use_srtp extension" \
8733 -s "DTLS-SRTP key material is"\
8734 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
8735 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_80"
8736
8737requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008738requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008739run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl client." \
8740 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8741 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8742 0 \
8743 -s "found use_srtp extension" \
8744 -s "found srtp profile" \
8745 -s "selected srtp profile" \
8746 -s "server hello, adding use_srtp extension" \
8747 -s "DTLS-SRTP key material is"\
8748 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
8749 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
8750
8751requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008752requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008753run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl client." \
8754 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8755 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8756 0 \
8757 -s "found use_srtp extension" \
8758 -s "found srtp profile" \
8759 -s "selected srtp profile" \
8760 -s "server hello, adding use_srtp extension" \
8761 -s "DTLS-SRTP key material is"\
8762 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
8763 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
8764
8765requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008766requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008767run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl client." \
8768 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
8769 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8770 0 \
8771 -s "found use_srtp extension" \
8772 -s "found srtp profile" \
8773 -s "selected srtp profile" \
8774 -s "server hello, adding use_srtp extension" \
8775 -s "DTLS-SRTP key material is"\
8776 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
8777 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
8778
8779requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008780requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008781run_test "DTLS-SRTP server and Client support only one matching profile. openssl client." \
8782 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
8783 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8784 0 \
8785 -s "found use_srtp extension" \
8786 -s "found srtp profile" \
8787 -s "selected srtp profile" \
8788 -s "server hello, adding use_srtp extension" \
8789 -s "DTLS-SRTP key material is"\
8790 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
8791 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
8792
8793requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008794requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008795run_test "DTLS-SRTP server and Client support only one different profile. openssl client." \
8796 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
8797 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8798 0 \
8799 -s "found use_srtp extension" \
8800 -s "found srtp profile" \
8801 -S "selected srtp profile" \
8802 -S "server hello, adding use_srtp extension" \
8803 -S "DTLS-SRTP key material is"\
8804 -C "SRTP Extension negotiated, profile"
8805
8806requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008807requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008808run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl client" \
8809 "$P_SRV dtls=1 debug_level=3" \
8810 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8811 0 \
8812 -s "found use_srtp extension" \
8813 -S "server hello, adding use_srtp extension" \
8814 -S "DTLS-SRTP key material is"\
8815 -C "SRTP Extension negotiated, profile"
8816
8817requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008818requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008819run_test "DTLS-SRTP all profiles supported. openssl server" \
8820 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8821 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
8822 0 \
8823 -c "client hello, adding use_srtp extension" \
8824 -c "found use_srtp extension" \
8825 -c "found srtp profile" \
8826 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
8827 -c "DTLS-SRTP key material is"\
8828 -C "error"
8829
8830requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008831requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008832run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl server." \
8833 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8834 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
8835 0 \
8836 -c "client hello, adding use_srtp extension" \
8837 -c "found use_srtp extension" \
8838 -c "found srtp profile" \
8839 -c "selected srtp profile" \
8840 -c "DTLS-SRTP key material is"\
8841 -C "error"
8842
8843requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008844requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008845run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl server." \
8846 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8847 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
8848 0 \
8849 -c "client hello, adding use_srtp extension" \
8850 -c "found use_srtp extension" \
8851 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
8852 -c "selected srtp profile" \
8853 -c "DTLS-SRTP key material is"\
8854 -C "error"
8855
8856requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008857requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008858run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl server." \
8859 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8860 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
8861 0 \
8862 -c "client hello, adding use_srtp extension" \
8863 -c "found use_srtp extension" \
8864 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
8865 -c "selected srtp profile" \
8866 -c "DTLS-SRTP key material is"\
8867 -C "error"
8868
8869requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008870requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008871run_test "DTLS-SRTP server and Client support only one matching profile. openssl server." \
8872 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8873 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
8874 0 \
8875 -c "client hello, adding use_srtp extension" \
8876 -c "found use_srtp extension" \
8877 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
8878 -c "selected srtp profile" \
8879 -c "DTLS-SRTP key material is"\
8880 -C "error"
8881
8882requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008883requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008884run_test "DTLS-SRTP server and Client support only one different profile. openssl server." \
8885 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8886 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
8887 0 \
8888 -c "client hello, adding use_srtp extension" \
8889 -C "found use_srtp extension" \
8890 -C "found srtp profile" \
8891 -C "selected srtp profile" \
8892 -C "DTLS-SRTP key material is"\
8893 -C "error"
8894
8895requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008896requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008897run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl server" \
8898 "$O_SRV -dtls" \
8899 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
8900 0 \
8901 -c "client hello, adding use_srtp extension" \
8902 -C "found use_srtp extension" \
8903 -C "found srtp profile" \
8904 -C "selected srtp profile" \
8905 -C "DTLS-SRTP key material is"\
8906 -C "error"
8907
8908requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +08008909requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +02008910run_test "DTLS-SRTP all profiles supported. server doesn't support mki. openssl server." \
8911 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
8912 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
8913 0 \
8914 -c "client hello, adding use_srtp extension" \
8915 -c "found use_srtp extension" \
8916 -c "found srtp profile" \
8917 -c "selected srtp profile" \
8918 -c "DTLS-SRTP key material is"\
8919 -c "DTLS-SRTP no mki value negotiated"\
8920 -c "dumping 'sending mki' (8 bytes)" \
8921 -C "dumping 'received mki' (8 bytes)" \
8922 -C "error"
8923
8924requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02008925requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08008926requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008927run_test "DTLS-SRTP all profiles supported. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02008928 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8929 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008930 0 \
8931 -s "found use_srtp extension" \
8932 -s "found srtp profile" \
8933 -s "selected srtp profile" \
8934 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008935 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008936 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_80"
8937
8938requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02008939requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08008940requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008941run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02008942 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8943 "$G_CLI -u --srtp-profiles=SRTP_NULL_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_80:SRTP_NULL_SHA1_32:SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008944 0 \
8945 -s "found use_srtp extension" \
8946 -s "found srtp profile" \
8947 -s "selected srtp profile" \
8948 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008949 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008950 -c "SRTP profile: SRTP_NULL_HMAC_SHA1_80"
8951
8952requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02008953requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08008954requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008955run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02008956 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
8957 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008958 0 \
8959 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02008960 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
8961 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008962 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008963 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008964 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
8965
8966requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02008967requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08008968requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008969run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls client." \
Johan Pascal43f94902020-09-22 12:25:52 +02008970 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor5d991c92019-01-15 18:54:03 +02008971 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008972 0 \
8973 -s "found use_srtp extension" \
8974 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02008975 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008976 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008977 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008978 -c "SRTP profile: SRTP_NULL_SHA1_32"
8979
8980requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02008981requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08008982requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008983run_test "DTLS-SRTP server and Client support only one matching profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02008984 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
8985 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008986 0 \
8987 -s "found use_srtp extension" \
8988 -s "found srtp profile" \
8989 -s "selected srtp profile" \
8990 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02008991 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008992 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
8993
8994requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02008995requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08008996requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03008997run_test "DTLS-SRTP server and Client support only one different profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02008998 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
8999 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009000 0 \
9001 -s "found use_srtp extension" \
9002 -s "found srtp profile" \
9003 -S "selected srtp profile" \
9004 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009005 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009006 -C "SRTP profile:"
9007
9008requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009009requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009010requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009011run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls client" \
Ron Eldor5d991c92019-01-15 18:54:03 +02009012 "$P_SRV dtls=1 debug_level=3" \
9013 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009014 0 \
9015 -s "found use_srtp extension" \
9016 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009017 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009018 -C "SRTP profile:"
9019
9020requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009021requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009022requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009023run_test "DTLS-SRTP all profiles supported. gnutls server" \
9024 "$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" \
9025 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9026 0 \
9027 -c "client hello, adding use_srtp extension" \
9028 -c "found use_srtp extension" \
9029 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009030 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009031 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009032 -C "error"
9033
9034requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009035requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009036requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009037run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls server." \
9038 "$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" \
9039 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9040 0 \
9041 -c "client hello, adding use_srtp extension" \
9042 -c "found use_srtp extension" \
9043 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009044 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009045 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009046 -C "error"
9047
9048requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009049requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009050requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009051run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls server." \
9052 "$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" \
9053 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9054 0 \
9055 -c "client hello, adding use_srtp extension" \
9056 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009057 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009058 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009059 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009060 -C "error"
9061
9062requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009063requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009064requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009065run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls server." \
9066 "$G_SRV -u --srtp-profiles=SRTP_NULL_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009067 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009068 0 \
9069 -c "client hello, adding use_srtp extension" \
9070 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009071 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009072 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009073 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009074 -C "error"
9075
9076requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009077requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009078requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009079run_test "DTLS-SRTP server and Client support only one matching profile. gnutls server." \
9080 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
9081 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9082 0 \
9083 -c "client hello, adding use_srtp extension" \
9084 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009085 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009086 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009087 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009088 -C "error"
9089
9090requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009091requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009092requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009093run_test "DTLS-SRTP server and Client support only one different profile. gnutls server." \
9094 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
Johan Pascal43f94902020-09-22 12:25:52 +02009095 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009096 0 \
9097 -c "client hello, adding use_srtp extension" \
9098 -C "found use_srtp extension" \
9099 -C "found srtp profile" \
9100 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009101 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009102 -C "error"
9103
9104requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009105requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009106requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009107run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls server" \
9108 "$G_SRV -u" \
9109 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9110 0 \
9111 -c "client hello, adding use_srtp extension" \
9112 -C "found use_srtp extension" \
9113 -C "found srtp profile" \
9114 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009115 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009116 -C "error"
9117
9118requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009119requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08009120requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009121run_test "DTLS-SRTP all profiles supported. mki used. gnutls server." \
9122 "$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" \
9123 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9124 0 \
9125 -c "client hello, adding use_srtp extension" \
9126 -c "found use_srtp extension" \
9127 -c "found srtp profile" \
9128 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009129 -c "DTLS-SRTP key material is"\
Johan Pascal20c7db32020-10-26 22:45:58 +01009130 -c "DTLS-SRTP mki value:"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009131 -c "dumping 'sending mki' (8 bytes)" \
9132 -c "dumping 'received mki' (8 bytes)" \
9133 -C "error"
9134
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02009135# Tests for specific things with "unreliable" UDP connection
9136
9137not_with_valgrind # spurious resend due to timeout
Jerry Yuab082902021-12-23 18:02:22 +08009138requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02009139run_test "DTLS proxy: reference" \
9140 -p "$P_PXY" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02009141 "$P_SRV dtls=1 debug_level=2 hs_timeout=10000-20000" \
9142 "$P_CLI dtls=1 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02009143 0 \
9144 -C "replayed record" \
9145 -S "replayed record" \
Hanno Beckerb2a86c32019-07-19 15:43:09 +01009146 -C "Buffer record from epoch" \
9147 -S "Buffer record from epoch" \
9148 -C "ssl_buffer_message" \
9149 -S "ssl_buffer_message" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02009150 -C "discarding invalid record" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009151 -S "discarding invalid record" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02009152 -S "resend" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009153 -s "Extra-header:" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02009154 -c "HTTP/1.0 200 OK"
9155
9156not_with_valgrind # spurious resend due to timeout
Jerry Yuab082902021-12-23 18:02:22 +08009157requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009158run_test "DTLS proxy: duplicate every packet" \
9159 -p "$P_PXY duplicate=1" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02009160 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
9161 "$P_CLI dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009162 0 \
9163 -c "replayed record" \
9164 -s "replayed record" \
9165 -c "record from another epoch" \
9166 -s "record from another epoch" \
9167 -S "resend" \
9168 -s "Extra-header:" \
9169 -c "HTTP/1.0 200 OK"
9170
Jerry Yuab082902021-12-23 18:02:22 +08009171requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009172run_test "DTLS proxy: duplicate every packet, server anti-replay off" \
9173 -p "$P_PXY duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009174 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 anti_replay=0" \
9175 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02009176 0 \
9177 -c "replayed record" \
9178 -S "replayed record" \
9179 -c "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009180 -s "record from another epoch" \
9181 -c "resend" \
9182 -s "resend" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02009183 -s "Extra-header:" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009184 -c "HTTP/1.0 200 OK"
9185
Jerry Yuab082902021-12-23 18:02:22 +08009186requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02009187run_test "DTLS proxy: multiple records in same datagram" \
9188 -p "$P_PXY pack=50" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009189 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
9190 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02009191 0 \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009192 -c "next record in same datagram" \
9193 -s "next record in same datagram"
9194
Jerry Yuab082902021-12-23 18:02:22 +08009195requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009196run_test "DTLS proxy: multiple records in same datagram, duplicate every packet" \
9197 -p "$P_PXY pack=50 duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009198 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
9199 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02009200 0 \
9201 -c "next record in same datagram" \
9202 -s "next record in same datagram"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009203
Jerry Yuab082902021-12-23 18:02:22 +08009204requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02009205run_test "DTLS proxy: inject invalid AD record, default badmac_limit" \
9206 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009207 "$P_SRV dtls=1 dgram_packing=0 debug_level=1" \
9208 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009209 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009210 -c "discarding invalid record (mac)" \
9211 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009212 -s "Extra-header:" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009213 -c "HTTP/1.0 200 OK" \
9214 -S "too many records with bad MAC" \
9215 -S "Verification of the message MAC failed"
9216
Jerry Yuab082902021-12-23 18:02:22 +08009217requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009218run_test "DTLS proxy: inject invalid AD record, badmac_limit 1" \
9219 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009220 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=1" \
9221 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009222 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009223 -C "discarding invalid record (mac)" \
9224 -S "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009225 -S "Extra-header:" \
9226 -C "HTTP/1.0 200 OK" \
9227 -s "too many records with bad MAC" \
9228 -s "Verification of the message MAC failed"
9229
Jerry Yuab082902021-12-23 18:02:22 +08009230requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009231run_test "DTLS proxy: inject invalid AD record, badmac_limit 2" \
9232 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009233 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2" \
9234 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009235 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009236 -c "discarding invalid record (mac)" \
9237 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009238 -s "Extra-header:" \
9239 -c "HTTP/1.0 200 OK" \
9240 -S "too many records with bad MAC" \
9241 -S "Verification of the message MAC failed"
9242
Jerry Yuab082902021-12-23 18:02:22 +08009243requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009244run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\
9245 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009246 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2 exchanges=2" \
9247 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100 exchanges=2" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009248 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009249 -c "discarding invalid record (mac)" \
9250 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009251 -s "Extra-header:" \
9252 -c "HTTP/1.0 200 OK" \
9253 -s "too many records with bad MAC" \
9254 -s "Verification of the message MAC failed"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009255
Jerry Yuab082902021-12-23 18:02:22 +08009256requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009257run_test "DTLS proxy: delay ChangeCipherSpec" \
9258 -p "$P_PXY delay_ccs=1" \
Hanno Beckerc4305232018-08-14 13:41:21 +01009259 "$P_SRV dtls=1 debug_level=1 dgram_packing=0" \
9260 "$P_CLI dtls=1 debug_level=1 dgram_packing=0" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009261 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02009262 -c "record from another epoch" \
9263 -s "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009264 -s "Extra-header:" \
9265 -c "HTTP/1.0 200 OK"
9266
Hanno Beckeraa5d0c42018-08-16 13:15:19 +01009267# Tests for reordering support with DTLS
9268
Jerry Yuab082902021-12-23 18:02:22 +08009269requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker56cdfd12018-08-17 13:42:15 +01009270run_test "DTLS reordering: Buffer out-of-order handshake message on client" \
9271 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009272 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9273 hs_timeout=2500-60000" \
9274 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9275 hs_timeout=2500-60000" \
Hanno Beckere3842212018-08-16 15:28:59 +01009276 0 \
9277 -c "Buffering HS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009278 -c "Next handshake message has been buffered - load"\
9279 -S "Buffering HS message" \
9280 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009281 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009282 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009283 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009284 -S "Remember CCS message"
Hanno Beckere3842212018-08-16 15:28:59 +01009285
Jerry Yuab082902021-12-23 18:02:22 +08009286requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerdc1e9502018-08-28 16:02:33 +01009287run_test "DTLS reordering: Buffer out-of-order handshake message fragment on client" \
9288 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009289 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9290 hs_timeout=2500-60000" \
9291 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9292 hs_timeout=2500-60000" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +01009293 0 \
9294 -c "Buffering HS message" \
9295 -c "found fragmented DTLS handshake message"\
9296 -c "Next handshake message 1 not or only partially bufffered" \
9297 -c "Next handshake message has been buffered - load"\
9298 -S "Buffering HS message" \
9299 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009300 -C "Injecting buffered CCS message" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +01009301 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009302 -S "Injecting buffered CCS message" \
Hanno Beckeraa5d0c42018-08-16 13:15:19 +01009303 -S "Remember CCS message"
9304
Hanno Beckera1adcca2018-08-24 14:41:07 +01009305# The client buffers the ServerKeyExchange before receiving the fragmented
9306# Certificate message; at the time of writing, together these are aroudn 1200b
9307# in size, so that the bound below ensures that the certificate can be reassembled
9308# while keeping the ServerKeyExchange.
9309requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1300
Jerry Yuab082902021-12-23 18:02:22 +08009310requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera1adcca2018-08-24 14:41:07 +01009311run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next" \
Hanno Beckere3567052018-08-21 16:50:43 +01009312 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009313 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9314 hs_timeout=2500-60000" \
9315 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9316 hs_timeout=2500-60000" \
Hanno Beckere3567052018-08-21 16:50:43 +01009317 0 \
9318 -c "Buffering HS message" \
9319 -c "Next handshake message has been buffered - load"\
Hanno Beckera1adcca2018-08-24 14:41:07 +01009320 -C "attempt to make space by freeing buffered messages" \
9321 -S "Buffering HS message" \
9322 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009323 -C "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +01009324 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009325 -S "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +01009326 -S "Remember CCS message"
9327
9328# The size constraints ensure that the delayed certificate message can't
9329# be reassembled while keeping the ServerKeyExchange message, but it can
9330# when dropping it first.
9331requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 900
9332requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1299
Jerry Yuab082902021-12-23 18:02:22 +08009333requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera1adcca2018-08-24 14:41:07 +01009334run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" \
9335 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009336 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9337 hs_timeout=2500-60000" \
9338 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9339 hs_timeout=2500-60000" \
Hanno Beckera1adcca2018-08-24 14:41:07 +01009340 0 \
9341 -c "Buffering HS message" \
9342 -c "attempt to make space by freeing buffered future messages" \
9343 -c "Enough space available after freeing buffered HS messages" \
Hanno Beckere3567052018-08-21 16:50:43 +01009344 -S "Buffering HS message" \
9345 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009346 -C "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +01009347 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009348 -S "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +01009349 -S "Remember CCS message"
9350
Jerry Yuab082902021-12-23 18:02:22 +08009351requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker56cdfd12018-08-17 13:42:15 +01009352run_test "DTLS reordering: Buffer out-of-order handshake message on server" \
9353 -p "$P_PXY delay_cli=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009354 "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2 \
9355 hs_timeout=2500-60000" \
9356 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9357 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009358 0 \
9359 -C "Buffering HS message" \
9360 -C "Next handshake message has been buffered - load"\
9361 -s "Buffering HS message" \
9362 -s "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009363 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009364 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009365 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009366 -S "Remember CCS message"
9367
Jerry Yuab082902021-12-23 18:02:22 +08009368requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker56cdfd12018-08-17 13:42:15 +01009369run_test "DTLS reordering: Buffer out-of-order CCS message on client"\
9370 -p "$P_PXY delay_srv=NewSessionTicket" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009371 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9372 hs_timeout=2500-60000" \
9373 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9374 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009375 0 \
9376 -C "Buffering HS message" \
9377 -C "Next handshake message has been buffered - load"\
9378 -S "Buffering HS message" \
9379 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009380 -c "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009381 -c "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009382 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009383 -S "Remember CCS message"
9384
Jerry Yuab082902021-12-23 18:02:22 +08009385requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker56cdfd12018-08-17 13:42:15 +01009386run_test "DTLS reordering: Buffer out-of-order CCS message on server"\
9387 -p "$P_PXY delay_cli=ClientKeyExchange" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009388 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9389 hs_timeout=2500-60000" \
9390 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9391 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009392 0 \
9393 -C "Buffering HS message" \
9394 -C "Next handshake message has been buffered - load"\
9395 -S "Buffering HS message" \
9396 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009397 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009398 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009399 -s "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009400 -s "Remember CCS message"
9401
Jerry Yuab082902021-12-23 18:02:22 +08009402requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera1adcca2018-08-24 14:41:07 +01009403run_test "DTLS reordering: Buffer encrypted Finished message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009404 -p "$P_PXY delay_ccs=1" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009405 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9406 hs_timeout=2500-60000" \
9407 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9408 hs_timeout=2500-60000" \
Hanno Beckerb34149c2018-08-16 15:29:06 +01009409 0 \
9410 -s "Buffer record from epoch 1" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009411 -s "Found buffered record from current epoch - load" \
9412 -c "Buffer record from epoch 1" \
9413 -c "Found buffered record from current epoch - load"
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009414
Hanno Beckera1adcca2018-08-24 14:41:07 +01009415# In this test, both the fragmented NewSessionTicket and the ChangeCipherSpec
9416# from the server are delayed, so that the encrypted Finished message
9417# is received and buffered. When the fragmented NewSessionTicket comes
9418# in afterwards, the encrypted Finished message must be freed in order
9419# to make space for the NewSessionTicket to be reassembled.
9420# This works only in very particular circumstances:
9421# - MBEDTLS_SSL_DTLS_MAX_BUFFERING must be large enough to allow buffering
9422# of the NewSessionTicket, but small enough to also allow buffering of
9423# the encrypted Finished message.
9424# - The MTU setting on the server must be so small that the NewSessionTicket
9425# needs to be fragmented.
9426# - All messages sent by the server must be small enough to be either sent
9427# without fragmentation or be reassembled within the bounds of
9428# MBEDTLS_SSL_DTLS_MAX_BUFFERING. Achieve this by testing with a PSK-based
9429# handshake, omitting CRTs.
Manuel Pégourié-Gonnardeef4c752019-05-28 10:21:30 +02009430requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 190
9431requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 230
Jerry Yuab082902021-12-23 18:02:22 +08009432requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera1adcca2018-08-24 14:41:07 +01009433run_test "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket" \
9434 -p "$P_PXY delay_srv=NewSessionTicket delay_srv=NewSessionTicket delay_ccs=1" \
Manuel Pégourié-Gonnardeef4c752019-05-28 10:21:30 +02009435 "$P_SRV mtu=140 response_size=90 dgram_packing=0 psk=abc123 psk_identity=foo cookies=0 dtls=1 debug_level=2" \
Hanno Beckera1adcca2018-08-24 14:41:07 +01009436 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 psk=abc123 psk_identity=foo" \
9437 0 \
9438 -s "Buffer record from epoch 1" \
9439 -s "Found buffered record from current epoch - load" \
9440 -c "Buffer record from epoch 1" \
9441 -C "Found buffered record from current epoch - load" \
9442 -c "Enough space available after freeing future epoch record"
9443
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +02009444# Tests for "randomly unreliable connection": try a variety of flows and peers
9445
9446client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +08009447requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009448run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \
9449 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009450 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009451 psk=abc123" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009452 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009453 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
9454 0 \
9455 -s "Extra-header:" \
9456 -c "HTTP/1.0 200 OK"
9457
Janos Follath74537a62016-09-02 13:45:28 +01009458client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +08009459requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009460run_test "DTLS proxy: 3d, \"short\" RSA handshake" \
9461 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009462 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
9463 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009464 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
9465 0 \
9466 -s "Extra-header:" \
9467 -c "HTTP/1.0 200 OK"
9468
Janos Follath74537a62016-09-02 13:45:28 +01009469client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +08009470requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009471run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \
9472 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009473 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
9474 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009475 0 \
9476 -s "Extra-header:" \
9477 -c "HTTP/1.0 200 OK"
9478
Janos Follath74537a62016-09-02 13:45:28 +01009479client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +08009480requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009481run_test "DTLS proxy: 3d, FS, client auth" \
9482 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009483 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=required" \
9484 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009485 0 \
9486 -s "Extra-header:" \
9487 -c "HTTP/1.0 200 OK"
9488
Janos Follath74537a62016-09-02 13:45:28 +01009489client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +08009490requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009491run_test "DTLS proxy: 3d, FS, ticket" \
9492 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009493 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=none" \
9494 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009495 0 \
9496 -s "Extra-header:" \
9497 -c "HTTP/1.0 200 OK"
9498
Janos Follath74537a62016-09-02 13:45:28 +01009499client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +08009500requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02009501run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \
9502 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009503 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=required" \
9504 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009505 0 \
9506 -s "Extra-header:" \
9507 -c "HTTP/1.0 200 OK"
9508
Janos Follath74537a62016-09-02 13:45:28 +01009509client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +08009510requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009511run_test "DTLS proxy: 3d, max handshake, nbio" \
9512 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009513 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02009514 auth_mode=required" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009515 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009516 0 \
9517 -s "Extra-header:" \
9518 -c "HTTP/1.0 200 OK"
9519
Janos Follath74537a62016-09-02 13:45:28 +01009520client_needs_more_time 4
Jerry Yuab082902021-12-23 18:02:22 +08009521requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01009522requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +02009523run_test "DTLS proxy: 3d, min handshake, resumption" \
9524 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009525 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +02009526 psk=abc123 debug_level=3" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009527 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01009528 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +02009529 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
9530 0 \
9531 -s "a session has been resumed" \
9532 -c "a session has been resumed" \
9533 -s "Extra-header:" \
9534 -c "HTTP/1.0 200 OK"
9535
Janos Follath74537a62016-09-02 13:45:28 +01009536client_needs_more_time 4
Jerry Yuab082902021-12-23 18:02:22 +08009537requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01009538requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +02009539run_test "DTLS proxy: 3d, min handshake, resumption, nbio" \
9540 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009541 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +02009542 psk=abc123 debug_level=3 nbio=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009543 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01009544 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +02009545 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \
9546 0 \
9547 -s "a session has been resumed" \
9548 -c "a session has been resumed" \
9549 -s "Extra-header:" \
9550 -c "HTTP/1.0 200 OK"
9551
Janos Follath74537a62016-09-02 13:45:28 +01009552client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +01009553requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08009554requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009555run_test "DTLS proxy: 3d, min handshake, client-initiated renego" \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +02009556 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009557 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02009558 psk=abc123 renegotiation=1 debug_level=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009559 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02009560 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +02009561 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
9562 0 \
9563 -c "=> renegotiate" \
9564 -s "=> renegotiate" \
9565 -s "Extra-header:" \
9566 -c "HTTP/1.0 200 OK"
9567
Janos Follath74537a62016-09-02 13:45:28 +01009568client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +01009569requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08009570requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009571run_test "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \
9572 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009573 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02009574 psk=abc123 renegotiation=1 debug_level=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009575 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02009576 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009577 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
9578 0 \
9579 -c "=> renegotiate" \
9580 -s "=> renegotiate" \
9581 -s "Extra-header:" \
9582 -c "HTTP/1.0 200 OK"
9583
Janos Follath74537a62016-09-02 13:45:28 +01009584client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +01009585requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08009586requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02009587run_test "DTLS proxy: 3d, min handshake, server-initiated renego" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02009588 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009589 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02009590 psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02009591 debug_level=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009592 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02009593 renegotiation=1 exchanges=4 debug_level=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02009594 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
9595 0 \
9596 -c "=> renegotiate" \
9597 -s "=> renegotiate" \
9598 -s "Extra-header:" \
9599 -c "HTTP/1.0 200 OK"
9600
Janos Follath74537a62016-09-02 13:45:28 +01009601client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +01009602requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08009603requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02009604run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02009605 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009606 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02009607 psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02009608 debug_level=2 nbio=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009609 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02009610 renegotiation=1 exchanges=4 debug_level=2 nbio=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02009611 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
9612 0 \
9613 -c "=> renegotiate" \
9614 -s "=> renegotiate" \
9615 -s "Extra-header:" \
9616 -c "HTTP/1.0 200 OK"
9617
Manuel Pégourié-Gonnard82986c12018-09-03 10:50:21 +02009618## Interop tests with OpenSSL might trigger a bug in recent versions (including
9619## all versions installed on the CI machines), reported here:
9620## Bug report: https://github.com/openssl/openssl/issues/6902
9621## They should be re-enabled once a fixed version of OpenSSL is available
9622## (this should happen in some 1.1.1_ release according to the ticket).
9623skip_next_test
Janos Follath74537a62016-09-02 13:45:28 +01009624client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02009625not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +08009626requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009627run_test "DTLS proxy: 3d, openssl server" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +02009628 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
9629 "$O_SRV -dtls1 -mtu 2048" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009630 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +02009631 0 \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +02009632 -c "HTTP/1.0 200 OK"
9633
Manuel Pégourié-Gonnard82986c12018-09-03 10:50:21 +02009634skip_next_test # see above
Janos Follath74537a62016-09-02 13:45:28 +01009635client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02009636not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +08009637requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009638run_test "DTLS proxy: 3d, openssl server, fragmentation" \
9639 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
9640 "$O_SRV -dtls1 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009641 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009642 0 \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009643 -c "HTTP/1.0 200 OK"
9644
Manuel Pégourié-Gonnard82986c12018-09-03 10:50:21 +02009645skip_next_test # see above
Janos Follath74537a62016-09-02 13:45:28 +01009646client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02009647not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +08009648requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009649run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \
9650 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
9651 "$O_SRV -dtls1 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009652 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2 tickets=0" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009653 0 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009654 -c "HTTP/1.0 200 OK"
9655
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00009656requires_gnutls
Janos Follath74537a62016-09-02 13:45:28 +01009657client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02009658not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +08009659requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009660run_test "DTLS proxy: 3d, gnutls server" \
9661 -p "$P_PXY drop=5 delay=5 duplicate=5" \
9662 "$G_SRV -u --mtu 2048 -a" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009663 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009664 0 \
9665 -s "Extra-header:" \
9666 -c "Extra-header:"
9667
k-stachowiak17a38d32019-02-18 15:29:56 +01009668requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +01009669client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02009670not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +08009671requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009672run_test "DTLS proxy: 3d, gnutls server, fragmentation" \
9673 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +01009674 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009675 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02009676 0 \
9677 -s "Extra-header:" \
9678 -c "Extra-header:"
9679
k-stachowiak17a38d32019-02-18 15:29:56 +01009680requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +01009681client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02009682not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +08009683requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009684run_test "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \
9685 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +01009686 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009687 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02009688 0 \
9689 -s "Extra-header:" \
9690 -c "Extra-header:"
9691
Jerry Yuab082902021-12-23 18:02:22 +08009692requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorf75e2522019-05-14 20:38:49 +03009693run_test "export keys functionality" \
9694 "$P_SRV eap_tls=1 debug_level=3" \
9695 "$P_CLI eap_tls=1 debug_level=3" \
9696 0 \
Ron Eldor65d8c262019-06-04 13:05:36 +03009697 -c "EAP-TLS key material is:"\
9698 -s "EAP-TLS key material is:"\
9699 -c "EAP-TLS IV is:" \
9700 -s "EAP-TLS IV is:"
Ron Eldorf75e2522019-05-14 20:38:49 +03009701
Jerry Yu04029792021-08-10 16:45:37 +08009702# openssl feature tests: check if tls1.3 exists.
9703requires_openssl_tls1_3
Jerry Yuc502dff2021-12-03 10:04:08 +08009704run_test "TLS 1.3: Test openssl tls1_3 feature" \
Jerry Yu04029792021-08-10 16:45:37 +08009705 "$O_NEXT_SRV -tls1_3 -msg" \
9706 "$O_NEXT_CLI -tls1_3 -msg" \
9707 0 \
9708 -c "TLS 1.3" \
9709 -s "TLS 1.3"
9710
Jerry Yu75261df2021-09-02 17:40:08 +08009711# gnutls feature tests: check if TLS 1.3 is supported as well as the NO_TICKETS and DISABLE_TLS13_COMPAT_MODE options.
Jerry Yu04029792021-08-10 16:45:37 +08009712requires_gnutls_tls1_3
Jerry Yub12d81d2021-08-17 10:56:08 +08009713requires_gnutls_next_no_ticket
9714requires_gnutls_next_disable_tls13_compat
Jerry Yuc502dff2021-12-03 10:04:08 +08009715run_test "TLS 1.3: Test gnutls tls1_3 feature" \
Jerry Yu937ac672021-10-28 17:39:28 +08009716 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert " \
Jerry Yub12d81d2021-08-17 10:56:08 +08009717 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Jerry Yu04029792021-08-10 16:45:37 +08009718 0 \
9719 -s "Version: TLS1.3" \
9720 -c "Version: TLS1.3"
9721
Jerry Yuc46e9b42021-08-06 11:22:24 +08009722# TLS1.3 test cases
9723# TODO: remove or rewrite this test case if #4832 is resolved.
9724requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron6f135e12021-12-08 16:57:54 +01009725requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Jerry Yuc46e9b42021-08-06 11:22:24 +08009726skip_handshake_stage_check
Jerry Yuc502dff2021-12-03 10:04:08 +08009727run_test "TLS 1.3: Not supported version check: tls12 and tls13" \
Xiaofei Baid25fab62021-12-02 06:36:27 +00009728 "$P_SRV debug_level=1 min_version=tls12 max_version=tls13" \
9729 "$P_CLI debug_level=1 min_version=tls12 max_version=tls13" \
Jerry Yuc46e9b42021-08-06 11:22:24 +08009730 1 \
9731 -s "SSL - The requested feature is not available" \
9732 -c "SSL - The requested feature is not available" \
9733 -s "Hybrid TLS 1.2 + TLS 1.3 configurations are not yet supported" \
9734 -c "Hybrid TLS 1.2 + TLS 1.3 configurations are not yet supported"
9735
Ronald Cron6f135e12021-12-08 16:57:54 +01009736requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Jerry Yuc502dff2021-12-03 10:04:08 +08009737run_test "TLS 1.3: handshake dispatch test: tls13 only" \
Xiaofei Baid25fab62021-12-02 06:36:27 +00009738 "$P_SRV debug_level=2 min_version=tls13 max_version=tls13" \
9739 "$P_CLI debug_level=2 min_version=tls13 max_version=tls13" \
Jerry Yub9930e72021-08-06 17:11:51 +08009740 1 \
Jerry Yue3b34122021-09-28 17:53:35 +08009741 -s "tls13 server state: MBEDTLS_SSL_HELLO_REQUEST" \
9742 -c "tls13 client state: MBEDTLS_SSL_HELLO_REQUEST"
Jerry Yub9930e72021-08-06 17:11:51 +08009743
Jerry Yued2ef2d2021-08-19 18:11:43 +08009744requires_openssl_tls1_3
Ronald Cron6f135e12021-12-08 16:57:54 +01009745requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009746requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +01009747requires_config_enabled MBEDTLS_DEBUG_C
9748requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yuc502dff2021-12-03 10:04:08 +08009749run_test "TLS 1.3: minimal feature sets - openssl" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009750 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
Xiaofei Baid25fab62021-12-02 06:36:27 +00009751 "$P_CLI debug_level=3 min_version=tls13 max_version=tls13" \
Jerry Yue1b1e2d2021-10-29 17:46:32 +08009752 0 \
Jerry Yucdcc55f2021-11-11 13:26:33 +08009753 -c "tls13 client state: MBEDTLS_SSL_HELLO_REQUEST(0)" \
9754 -c "tls13 client state: MBEDTLS_SSL_SERVER_HELLO(2)" \
9755 -c "tls13 client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS(19)" \
9756 -c "tls13 client state: MBEDTLS_SSL_CERTIFICATE_REQUEST(5)" \
9757 -c "tls13 client state: MBEDTLS_SSL_SERVER_CERTIFICATE(3)" \
9758 -c "tls13 client state: MBEDTLS_SSL_CERTIFICATE_VERIFY(9)" \
9759 -c "tls13 client state: MBEDTLS_SSL_SERVER_FINISHED(13)" \
9760 -c "tls13 client state: MBEDTLS_SSL_CLIENT_FINISHED(11)" \
9761 -c "tls13 client state: MBEDTLS_SSL_FLUSH_BUFFERS(14)" \
9762 -c "tls13 client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP(15)" \
Xiaofei Bai746f9482021-11-12 08:53:56 +00009763 -c "<= ssl_tls13_process_server_hello" \
Jerry Yu745bb612021-10-13 22:01:04 +08009764 -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
9765 -c "ECDH curve: x25519" \
Xiaofei Bai746f9482021-11-12 08:53:56 +00009766 -c "=> ssl_tls13_process_server_hello" \
Jerry Yudaac3592021-10-29 20:01:42 +08009767 -c "<= parse encrypted extensions" \
Jerry Yu834886d2021-10-30 13:26:15 +08009768 -c "Certificate verification flags clear" \
Jerry Yu5398c102021-11-05 13:32:38 +08009769 -c "=> parse certificate verify" \
9770 -c "<= parse certificate verify" \
XiaokangQiand0aa3e92021-11-10 06:17:40 +00009771 -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
Jerry Yu6d38c192021-11-15 14:01:04 +08009772 -c "<= parse finished message" \
Gilles Peskinec63a1e02022-01-13 01:10:24 +01009773 -c "Protocol is TLSv1.3" \
Jerry Yu6d38c192021-11-15 14:01:04 +08009774 -c "HTTP/1.0 200 ok"
Jerry Yued2ef2d2021-08-19 18:11:43 +08009775
Jerry Yu76e31ec2021-09-22 21:16:27 +08009776requires_gnutls_tls1_3
Jerry Yu937ac672021-10-28 17:39:28 +08009777requires_gnutls_next_no_ticket
Ronald Cron6f135e12021-12-08 16:57:54 +01009778requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009779requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +01009780requires_config_enabled MBEDTLS_DEBUG_C
9781requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yuc502dff2021-12-03 10:04:08 +08009782run_test "TLS 1.3: minimal feature sets - gnutls" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009783 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
Xiaofei Baid25fab62021-12-02 06:36:27 +00009784 "$P_CLI debug_level=3 min_version=tls13 max_version=tls13" \
Jerry Yue1b1e2d2021-10-29 17:46:32 +08009785 0 \
Jerry Yucdcc55f2021-11-11 13:26:33 +08009786 -s "SERVER HELLO was queued" \
9787 -c "tls13 client state: MBEDTLS_SSL_HELLO_REQUEST(0)" \
9788 -c "tls13 client state: MBEDTLS_SSL_SERVER_HELLO(2)" \
9789 -c "tls13 client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS(19)" \
9790 -c "tls13 client state: MBEDTLS_SSL_CERTIFICATE_REQUEST(5)" \
9791 -c "tls13 client state: MBEDTLS_SSL_SERVER_CERTIFICATE(3)" \
9792 -c "tls13 client state: MBEDTLS_SSL_CERTIFICATE_VERIFY(9)" \
9793 -c "tls13 client state: MBEDTLS_SSL_SERVER_FINISHED(13)" \
9794 -c "tls13 client state: MBEDTLS_SSL_CLIENT_FINISHED(11)" \
9795 -c "tls13 client state: MBEDTLS_SSL_FLUSH_BUFFERS(14)" \
9796 -c "tls13 client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP(15)" \
Xiaofei Bai746f9482021-11-12 08:53:56 +00009797 -c "<= ssl_tls13_process_server_hello" \
Jerry Yu745bb612021-10-13 22:01:04 +08009798 -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
9799 -c "ECDH curve: x25519" \
Xiaofei Bai746f9482021-11-12 08:53:56 +00009800 -c "=> ssl_tls13_process_server_hello" \
Jerry Yudaac3592021-10-29 20:01:42 +08009801 -c "<= parse encrypted extensions" \
Jerry Yu834886d2021-10-30 13:26:15 +08009802 -c "Certificate verification flags clear" \
Jerry Yu5398c102021-11-05 13:32:38 +08009803 -c "=> parse certificate verify" \
9804 -c "<= parse certificate verify" \
XiaokangQiand0aa3e92021-11-10 06:17:40 +00009805 -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
Jerry Yu6d38c192021-11-15 14:01:04 +08009806 -c "<= parse finished message" \
Gilles Peskine860429f2022-02-12 00:44:48 +01009807 -c "Protocol is TLSv1.3" \
Jerry Yu6d38c192021-11-15 14:01:04 +08009808 -c "HTTP/1.0 200 OK"
XiaokangQiand0aa3e92021-11-10 06:17:40 +00009809
Ronald Cron6f135e12021-12-08 16:57:54 +01009810requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron7c0185f2021-11-30 09:16:24 +01009811requires_config_enabled MBEDTLS_DEBUG_C
9812requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009813skip_handshake_stage_check
9814requires_gnutls_tls1_3
Jerry Yuc502dff2021-12-03 10:04:08 +08009815run_test "TLS 1.3:Not supported version check:gnutls: srv max TLS 1.0" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009816 "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.0 -d 4" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009817 "$P_CLI min_version=tls13 max_version=tls13 debug_level=4" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009818 1 \
9819 -s "Client's version: 3.3" \
9820 -c "is a fatal alert message (msg 40)" \
9821 -S "Version: TLS1.0" \
9822 -C "Protocol is TLSv1.0"
9823
Ronald Cron6f135e12021-12-08 16:57:54 +01009824requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron7c0185f2021-11-30 09:16:24 +01009825requires_config_enabled MBEDTLS_DEBUG_C
9826requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009827skip_handshake_stage_check
9828requires_gnutls_tls1_3
Jerry Yuc502dff2021-12-03 10:04:08 +08009829run_test "TLS 1.3:Not supported version check:gnutls: srv max TLS 1.1" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009830 "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1 -d 4" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009831 "$P_CLI min_version=tls13 max_version=tls13 debug_level=4" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009832 1 \
9833 -s "Client's version: 3.3" \
9834 -c "is a fatal alert message (msg 40)" \
9835 -S "Version: TLS1.1" \
9836 -C "Protocol is TLSv1.1"
9837
Ronald Cron6f135e12021-12-08 16:57:54 +01009838requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron7c0185f2021-11-30 09:16:24 +01009839requires_config_enabled MBEDTLS_DEBUG_C
9840requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009841skip_handshake_stage_check
9842requires_gnutls_tls1_3
Jerry Yuc502dff2021-12-03 10:04:08 +08009843run_test "TLS 1.3:Not supported version check:gnutls: srv max TLS 1.2" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009844 "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2 -d 4" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009845 "$P_CLI min_version=tls13 max_version=tls13 debug_level=4" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009846 1 \
9847 -s "Client's version: 3.3" \
9848 -c "is a fatal alert message (msg 40)" \
9849 -S "Version: TLS1.2" \
9850 -C "Protocol is TLSv1.2"
9851
Ronald Cron6f135e12021-12-08 16:57:54 +01009852requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron7c0185f2021-11-30 09:16:24 +01009853requires_config_enabled MBEDTLS_DEBUG_C
9854requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009855skip_handshake_stage_check
9856requires_openssl_next
Jerry Yuc502dff2021-12-03 10:04:08 +08009857run_test "TLS 1.3:Not supported version check:openssl: srv max TLS 1.0" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009858 "$O_NEXT_SRV -msg -tls1" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009859 "$P_CLI min_version=tls13 max_version=tls13 debug_level=4" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009860 1 \
9861 -s "fatal protocol_version" \
9862 -c "is a fatal alert message (msg 70)" \
9863 -S "Version: TLS1.0" \
9864 -C "Protocol : TLSv1.0"
9865
Ronald Cron6f135e12021-12-08 16:57:54 +01009866requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron7c0185f2021-11-30 09:16:24 +01009867requires_config_enabled MBEDTLS_DEBUG_C
9868requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009869skip_handshake_stage_check
9870requires_openssl_next
Jerry Yuc502dff2021-12-03 10:04:08 +08009871run_test "TLS 1.3:Not supported version check:openssl: srv max TLS 1.1" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009872 "$O_NEXT_SRV -msg -tls1_1" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009873 "$P_CLI min_version=tls13 max_version=tls13 debug_level=4" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009874 1 \
9875 -s "fatal protocol_version" \
9876 -c "is a fatal alert message (msg 70)" \
9877 -S "Version: TLS1.1" \
9878 -C "Protocol : TLSv1.1"
9879
Ronald Cron6f135e12021-12-08 16:57:54 +01009880requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron7c0185f2021-11-30 09:16:24 +01009881requires_config_enabled MBEDTLS_DEBUG_C
9882requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009883skip_handshake_stage_check
9884requires_openssl_next
Jerry Yuc502dff2021-12-03 10:04:08 +08009885run_test "TLS 1.3:Not supported version check:openssl: srv max TLS 1.2" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009886 "$O_NEXT_SRV -msg -tls1_2" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009887 "$P_CLI min_version=tls13 max_version=tls13 debug_level=4" \
Jerry Yu8f9d7db2021-11-22 17:28:01 +08009888 1 \
9889 -s "fatal protocol_version" \
9890 -c "is a fatal alert message (msg 70)" \
9891 -S "Version: TLS1.2" \
9892 -C "Protocol : TLSv1.2"
9893
Jerry Yu936dffd2021-11-22 18:34:36 +08009894requires_openssl_tls1_3
Ronald Cron6f135e12021-12-08 16:57:54 +01009895requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009896requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +01009897requires_config_enabled MBEDTLS_DEBUG_C
9898requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yuc502dff2021-12-03 10:04:08 +08009899run_test "TLS 1.3: CertificateRequest check - openssl" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009900 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009901 "$P_CLI debug_level=4 force_version=tls13 " \
Jerry Yu936dffd2021-11-22 18:34:36 +08009902 1 \
Xiaofei Bai5d8598e2022-01-11 05:56:06 +00009903 -c "=> parse certificate request" \
Xiaofei Bai69fcd392022-01-20 08:25:00 +00009904 -c "got a certificate request" \
Xiaofei Bai5d8598e2022-01-11 05:56:06 +00009905 -c "<= parse certificate request"
Jerry Yu936dffd2021-11-22 18:34:36 +08009906
9907requires_gnutls_tls1_3
9908requires_gnutls_next_no_ticket
Ronald Cron6f135e12021-12-08 16:57:54 +01009909requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009910requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +01009911requires_config_enabled MBEDTLS_DEBUG_C
9912requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yuc502dff2021-12-03 10:04:08 +08009913run_test "TLS 1.3: CertificateRequest check - gnutls" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009914 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009915 "$P_CLI debug_level=3 min_version=tls13 max_version=tls13" \
Jerry Yu936dffd2021-11-22 18:34:36 +08009916 1 \
Xiaofei Bai5d8598e2022-01-11 05:56:06 +00009917 -c "=> parse certificate request" \
Xiaofei Bai69fcd392022-01-20 08:25:00 +00009918 -c "got a certificate request" \
Xiaofei Bai5d8598e2022-01-11 05:56:06 +00009919 -c "<= parse certificate request"
Jerry Yu936dffd2021-11-22 18:34:36 +08009920
Ronald Cron6f135e12021-12-08 16:57:54 +01009921requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009922requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +01009923requires_config_enabled MBEDTLS_DEBUG_C
9924requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yu8c5559d2021-11-22 21:15:41 +08009925requires_openssl_tls1_3
XiaokangQian7bae3b62022-01-26 06:31:39 +00009926run_test "TLS 1.3: HelloRetryRequest check, ciphersuite TLS_AES_128_GCM_SHA256 - openssl" \
9927 "$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" \
9928 "$P_CLI debug_level=4 force_version=tls13" \
9929 0 \
9930 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +00009931 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
9932 -c "tls13 client state: MBEDTLS_SSL_CLIENT_HELLO" \
XiaokangQian7bae3b62022-01-26 06:31:39 +00009933 -c "HTTP/1.0 200 ok"
9934
9935requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
9936requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
9937requires_config_enabled MBEDTLS_DEBUG_C
9938requires_config_enabled MBEDTLS_SSL_CLI_C
XiaokangQian7bae3b62022-01-26 06:31:39 +00009939requires_openssl_tls1_3
9940run_test "TLS 1.3: HelloRetryRequest check, ciphersuite TLS_AES_256_GCM_SHA384 - openssl" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009941 "$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" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009942 "$P_CLI debug_level=4 force_version=tls13" \
XiaokangQian6db08dd2022-01-18 06:36:23 +00009943 0 \
Jerry Yu8c5559d2021-11-22 21:15:41 +08009944 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +00009945 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
9946 -c "tls13 client state: MBEDTLS_SSL_CLIENT_HELLO" \
XiaokangQian6db08dd2022-01-18 06:36:23 +00009947 -c "HTTP/1.0 200 ok"
Jerry Yu8c5559d2021-11-22 21:15:41 +08009948
9949requires_gnutls_tls1_3
9950requires_gnutls_next_no_ticket
Ronald Cron6f135e12021-12-08 16:57:54 +01009951requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009952requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +01009953requires_config_enabled MBEDTLS_DEBUG_C
9954requires_config_enabled MBEDTLS_SSL_CLI_C
XiaokangQian7bae3b62022-01-26 06:31:39 +00009955run_test "TLS 1.3: HelloRetryRequest check, ciphersuite TLS_AES_128_GCM_SHA256 - gnutls" \
9956 "$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" \
9957 "$P_CLI debug_level=4 force_version=tls13" \
9958 0 \
9959 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +00009960 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
9961 -c "tls13 client state: MBEDTLS_SSL_CLIENT_HELLO" \
XiaokangQian7bae3b62022-01-26 06:31:39 +00009962 -c "HTTP/1.0 200 OK"
9963
9964requires_gnutls_tls1_3
9965requires_gnutls_next_no_ticket
9966requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
9967requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
9968requires_config_enabled MBEDTLS_DEBUG_C
9969requires_config_enabled MBEDTLS_SSL_CLI_C
XiaokangQian7bae3b62022-01-26 06:31:39 +00009970run_test "TLS 1.3: HelloRetryRequest check, ciphersuite TLS_AES_256_GCM_SHA384 - gnutls" \
XiaokangQian355e09a2022-01-20 11:14:50 +00009971 "$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" \
Jerry Yu52a6e7e2021-12-06 18:24:46 +08009972 "$P_CLI debug_level=4 force_version=tls13" \
XiaokangQian355e09a2022-01-20 11:14:50 +00009973 0 \
Jerry Yu8c5559d2021-11-22 21:15:41 +08009974 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +00009975 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
9976 -c "tls13 client state: MBEDTLS_SSL_CLIENT_HELLO" \
XiaokangQian355e09a2022-01-20 11:14:50 +00009977 -c "HTTP/1.0 200 OK"
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009978
Gilles Peskine2baaf602022-01-07 15:46:12 +01009979for i in opt-testcases/*.sh
Jerry Yucdcb6832021-11-29 16:50:13 +08009980do
Gilles Peskine5eb2b022022-01-07 15:47:02 +01009981 TEST_SUITE_NAME=${i##*/}
9982 TEST_SUITE_NAME=${TEST_SUITE_NAME%.*}
9983 . "$i"
Jerry Yucdcb6832021-11-29 16:50:13 +08009984done
Gilles Peskine5eb2b022022-01-07 15:47:02 +01009985unset TEST_SUITE_NAME
Jerry Yu305bfc32021-11-24 16:04:47 +08009986
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009987requires_openssl_tls1_3
Ronald Cron6f135e12021-12-08 16:57:54 +01009988requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009989requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +01009990requires_config_enabled MBEDTLS_DEBUG_C
9991requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Crona55c5a12021-11-30 09:32:47 +01009992run_test "TLS 1.3 m->O both peers do not support middlebox compatibility" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +01009993 "$O_NEXT_SRV -msg -tls1_3 -no_middlebox -num_tickets 0 -no_resume_ephemeral -no_cache" \
9994 "$P_CLI debug_level=3 min_version=tls13 max_version=tls13" \
9995 0 \
9996 -c "HTTP/1.0 200 ok"
9997
9998requires_openssl_tls1_3
Ronald Cron6f135e12021-12-08 16:57:54 +01009999requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010010000requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +010010001requires_config_enabled MBEDTLS_DEBUG_C
10002requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Crona55c5a12021-11-30 09:32:47 +010010003run_test "TLS 1.3 m->O server with middlebox compat support, not client" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010010004 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
10005 "$P_CLI debug_level=3 min_version=tls13 max_version=tls13" \
10006 1 \
10007 -c "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode"
10008
Ronald Crona55c5a12021-11-30 09:32:47 +010010009requires_gnutls_tls1_3
10010requires_gnutls_next_no_ticket
10011requires_gnutls_next_disable_tls13_compat
Ronald Cron6f135e12021-12-08 16:57:54 +010010012requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Crona55c5a12021-11-30 09:32:47 +010010013requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
10014requires_config_enabled MBEDTLS_DEBUG_C
10015requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Crona55c5a12021-11-30 09:32:47 +010010016run_test "TLS 1.3 m->G both peers do not support middlebox compatibility" \
10017 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert" \
10018 "$P_CLI debug_level=3 min_version=tls13 max_version=tls13" \
10019 0 \
10020 -c "HTTP/1.0 200 OK"
10021
10022requires_gnutls_tls1_3
10023requires_gnutls_next_no_ticket
Ronald Cron6f135e12021-12-08 16:57:54 +010010024requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Crona55c5a12021-11-30 09:32:47 +010010025requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
10026requires_config_enabled MBEDTLS_DEBUG_C
10027requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Crona55c5a12021-11-30 09:32:47 +010010028run_test "TLS 1.3 m->G server with middlebox compat support, not client" \
10029 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
10030 "$P_CLI debug_level=3 min_version=tls13 max_version=tls13" \
10031 1 \
10032 -c "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode"
10033
Piotr Nowicki0937ed22019-11-26 16:32:40 +010010034# Test heap memory usage after handshake
Jerry Yuab082902021-12-23 18:02:22 +080010035requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Piotr Nowicki0937ed22019-11-26 16:32:40 +010010036requires_config_enabled MBEDTLS_MEMORY_DEBUG
10037requires_config_enabled MBEDTLS_MEMORY_BUFFER_ALLOC_C
10038requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010039requires_max_content_len 16384
Piotr Nowicki0937ed22019-11-26 16:32:40 +010010040run_tests_memory_after_hanshake
10041
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +010010042# Final report
10043
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010044echo "------------------------------------------------------------------------"
10045
10046if [ $FAILS = 0 ]; then
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +010010047 printf "PASSED"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010048else
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +010010049 printf "FAILED"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010050fi
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +020010051PASSES=$(( $TESTS - $FAILS ))
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +020010052echo " ($PASSES / $TESTS tests ($SKIPS skipped))"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010053
10054exit $FAILS