blob: ba57a1d58a3ea26adfbcba172a43415cf84749c8 [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 Yubbfa1d82021-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() {
55 if git diff --quiet ../include/mbedtls/config.h 2>/dev/null; then
56 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
Paul Elliott633a74e2021-10-13 18:31:07 +010081if [ -n "${OPENSSL_NEXT:-}" ]; then
82 O_NEXT_SRV="$OPENSSL_NEXT s_server -www -cert data_files/server5.crt -key data_files/server5.key"
83 O_NEXT_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_NEXT s_client"
84else
85 O_NEXT_SRV=false
86 O_NEXT_CLI=false
87fi
88
Hanno Becker58e9dc32018-08-17 15:53:21 +010089if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020090 G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
91else
92 G_NEXT_SRV=false
93fi
94
Hanno Becker58e9dc32018-08-17 15:53:21 +010095if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020096 G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile data_files/test-ca_cat12.crt"
97else
98 G_NEXT_CLI=false
99fi
100
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100101TESTS=0
102FAILS=0
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200103SKIPS=0
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100104
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +0000105CONFIG_H='../include/mbedtls/config.h'
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +0200106
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100107MEMCHECK=0
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100108FILTER='.*'
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200109EXCLUDE='^$'
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100110
Paul Bakkere20310a2016-05-10 11:18:17 +0100111SHOW_TEST_NUMBER=0
Paul Bakkerb7584a52016-05-10 10:50:43 +0100112RUN_TEST_NUMBER=''
113
Paul Bakkeracaac852016-05-10 11:47:13 +0100114PRESERVE_LOGS=0
115
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200116# Pick a "unique" server port in the range 10000-19999, and a proxy
117# port which is this plus 10000. Each port number may be independently
118# overridden by a command line option.
119SRV_PORT=$(($$ % 10000 + 10000))
120PXY_PORT=$((SRV_PORT + 10000))
121
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100122print_usage() {
123 echo "Usage: $0 [options]"
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100124 printf " -h|--help\tPrint this help.\n"
125 printf " -m|--memcheck\tCheck memory leaks and errors.\n"
Gilles Peskine9fa4ed62020-08-26 22:35:46 +0200126 printf " -f|--filter\tOnly matching tests are executed (substring or BRE)\n"
127 printf " -e|--exclude\tMatching tests are excluded (substring or BRE)\n"
Paul Bakkerb7584a52016-05-10 10:50:43 +0100128 printf " -n|--number\tExecute only numbered test (comma-separated, e.g. '245,256')\n"
Paul Bakkere20310a2016-05-10 11:18:17 +0100129 printf " -s|--show-numbers\tShow test numbers in front of test names\n"
Paul Bakkeracaac852016-05-10 11:47:13 +0100130 printf " -p|--preserve-logs\tPreserve logs of successful tests as well\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200131 printf " --outcome-file\tFile where test outcomes are written\n"
132 printf " \t(default: \$MBEDTLS_TEST_OUTCOME_FILE, none if empty)\n"
133 printf " --port \tTCP/UDP port (default: randomish 1xxxx)\n"
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200134 printf " --proxy-port\tTCP/UDP proxy port (default: randomish 2xxxx)\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200135 printf " --seed \tInteger seed value to use for this test run\n"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100136}
137
138get_options() {
139 while [ $# -gt 0 ]; do
140 case "$1" in
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100141 -f|--filter)
142 shift; FILTER=$1
143 ;;
144 -e|--exclude)
145 shift; EXCLUDE=$1
146 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100147 -m|--memcheck)
148 MEMCHECK=1
149 ;;
Paul Bakkerb7584a52016-05-10 10:50:43 +0100150 -n|--number)
151 shift; RUN_TEST_NUMBER=$1
152 ;;
Paul Bakkere20310a2016-05-10 11:18:17 +0100153 -s|--show-numbers)
154 SHOW_TEST_NUMBER=1
155 ;;
Paul Bakkeracaac852016-05-10 11:47:13 +0100156 -p|--preserve-logs)
157 PRESERVE_LOGS=1
158 ;;
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200159 --port)
160 shift; SRV_PORT=$1
161 ;;
162 --proxy-port)
163 shift; PXY_PORT=$1
164 ;;
Andres AGf04f54d2016-10-10 15:46:20 +0100165 --seed)
166 shift; SEED="$1"
167 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100168 -h|--help)
169 print_usage
170 exit 0
171 ;;
172 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200173 echo "Unknown argument: '$1'"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100174 print_usage
175 exit 1
176 ;;
177 esac
178 shift
179 done
180}
181
Gilles Peskine560280b2019-09-16 15:17:38 +0200182# Make the outcome file path relative to the original directory, not
183# to .../tests
184case "$MBEDTLS_TEST_OUTCOME_FILE" in
185 [!/]*)
186 MBEDTLS_TEST_OUTCOME_FILE="$ORIGINAL_PWD/$MBEDTLS_TEST_OUTCOME_FILE"
187 ;;
188esac
189
Gilles Peskine64457492020-08-26 21:53:33 +0200190# Read boolean configuration options from config.h for easy and quick
191# testing. Skip non-boolean options (with something other than spaces
192# and a comment after "#define SYMBOL"). The variable contains a
193# space-separated list of symbols.
Jerry Yucf080ce2021-12-10 18:45:51 +0800194CONFIGS_ENABLED=" $(echo `$P_QUERY -l` )"
Hanno Becker3b8b40c2018-08-28 10:25:41 +0100195# Skip next test; use this macro to skip tests which are legitimate
196# in theory and expected to be re-introduced at some point, but
197# aren't expected to succeed at the moment due to problems outside
198# our control (such as bugs in other TLS implementations).
199skip_next_test() {
200 SKIP_NEXT="YES"
201}
202
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100203# skip next test if the flag is not enabled in config.h
204requires_config_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200205 case $CONFIGS_ENABLED in
Jerry Yu969c01a2021-12-10 20:29:02 +0800206 *" $1"[\ =]*) :;;
Gilles Peskine64457492020-08-26 21:53:33 +0200207 *) SKIP_NEXT="YES";;
208 esac
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100209}
210
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200211# skip next test if the flag is enabled in config.h
212requires_config_disabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200213 case $CONFIGS_ENABLED in
Jerry Yu969c01a2021-12-10 20:29:02 +0800214 *" $1"[\ =]*) SKIP_NEXT="YES";;
Gilles Peskine64457492020-08-26 21:53:33 +0200215 esac
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200216}
217
Hanno Becker7c48dd12018-08-28 16:09:22 +0100218get_config_value_or_default() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100219 # This function uses the query_config command line option to query the
220 # required Mbed TLS compile time configuration from the ssl_server2
221 # program. The command will always return a success value if the
222 # configuration is defined and the value will be printed to stdout.
223 #
224 # Note that if the configuration is not defined or is defined to nothing,
225 # the output of this function will be an empty string.
226 ${P_SRV} "query_config=${1}"
Hanno Becker7c48dd12018-08-28 16:09:22 +0100227}
228
229requires_config_value_at_least() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100230 VAL="$( get_config_value_or_default "$1" )"
231 if [ -z "$VAL" ]; then
232 # Should never happen
233 echo "Mbed TLS configuration $1 is not defined"
234 exit 1
235 elif [ "$VAL" -lt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100236 SKIP_NEXT="YES"
237 fi
238}
239
240requires_config_value_at_most() {
Hanno Becker7c48dd12018-08-28 16:09:22 +0100241 VAL=$( get_config_value_or_default "$1" )
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100242 if [ -z "$VAL" ]; then
243 # Should never happen
244 echo "Mbed TLS configuration $1 is not defined"
245 exit 1
246 elif [ "$VAL" -gt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100247 SKIP_NEXT="YES"
248 fi
249}
250
Yuto Takano8a693ef2021-07-02 13:10:41 +0100251requires_config_value_equals() {
252 VAL=$( get_config_value_or_default "$1" )
253 if [ -z "$VAL" ]; then
254 # Should never happen
255 echo "Mbed TLS configuration $1 is not defined"
256 exit 1
257 elif [ "$VAL" -ne "$2" ]; then
258 SKIP_NEXT="YES"
259 fi
260}
261
Gilles Peskine4b137d12022-04-08 19:33:07 +0200262# Require Mbed TLS to support the given protocol version.
263#
264# Inputs:
265# * $1: protocol version in mbedtls syntax (argument to force_version=)
266requires_protocol_version() {
267 # Support for DTLS is detected separately in detect_dtls().
268 case "$1" in
269 ssl3) requires_config_enabled MBEDTLS_SSL_PROTO_SSL3;;
270 tls1) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1;;
271 tls1_1|dtls1) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1;;
272 tls12|dtls12) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2;;
273 *) echo "Unknown required protocol version: $1"; exit 1;;
274 esac
275}
276
Gilles Peskine64457492020-08-26 21:53:33 +0200277# Space-separated list of ciphersuites supported by this build of
278# Mbed TLS.
279P_CIPHERSUITES=" $($P_CLI --help 2>/dev/null |
280 grep TLS- |
281 tr -s ' \n' ' ')"
Hanno Becker9d76d562018-11-16 17:27:29 +0000282requires_ciphersuite_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200283 case $P_CIPHERSUITES in
284 *" $1 "*) :;;
285 *) SKIP_NEXT="YES";;
286 esac
Hanno Becker9d76d562018-11-16 17:27:29 +0000287}
288
Gilles Peskine511fdf42022-04-08 19:26:26 +0200289# detect_required_features CMD [RUN_TEST_OPTION...]
290# If CMD (call to a TLS client or server program) requires certain features,
291# arrange to only run the following test case if those features are enabled.
292detect_required_features() {
Gilles Peskine0d721652020-06-26 23:35:53 +0200293 case "$1" in
Gilles Peskine4b137d12022-04-08 19:33:07 +0200294 *\ force_version=*)
295 tmp="${1##*\ force_version=}"
296 tmp="${tmp%%[!-0-9A-Z_a-z]*}"
297 requires_protocol_version "$tmp";;
298 esac
299
300 case "$1" in
Gilles Peskine511fdf42022-04-08 19:26:26 +0200301 *\ force_ciphersuite=*)
302 tmp="${1##*\ force_ciphersuite=}"
303 tmp="${tmp%%[!-0-9A-Z_a-z]*}"
304 case "$*" in
305 *"-s SSL - The server has no ciphersuites in common"*)
306 # This test case expects a ciphersuite mismatch, so it
307 # doesn't actually require the ciphersuite to be enabled.
308 :;;
309 *) requires_ciphersuite_enabled "$tmp";;
310 esac;;
Gilles Peskine0d721652020-06-26 23:35:53 +0200311 esac
312
Gilles Peskine3c985f62022-04-08 19:29:27 +0200313 case " $1 " in
314 *[-_\ =]tickets=[^0]*)
315 requires_config_enabled MBEDTLS_SSL_TICKET_C;;
316 esac
317 case " $1 " in
318 *[-_\ =]alpn=*)
319 requires_config_enabled MBEDTLS_SSL_ALPN;;
320 esac
321
Gilles Peskinebba3b4c2022-04-09 00:08:47 +0200322 case " $1 " in
323 *\ fallback=1\ *|*\ -fallback_scsv\ *)
324 requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV;;
325 esac
326
Gilles Peskine511fdf42022-04-08 19:26:26 +0200327 unset tmp
Gilles Peskine0d721652020-06-26 23:35:53 +0200328}
329
Gilles Peskine22cc6492022-03-14 18:21:24 +0100330requires_certificate_authentication () {
331 if [ "$PSK_ONLY" = "YES" ]; then
332 SKIP_NEXT="YES"
333 fi
334}
335
Gilles Peskine89d892f2022-02-25 19:52:52 +0100336adapt_cmd_for_psk () {
337 case "$2" in
338 *openssl*) s='-psk abc123 -nocert';;
339 *gnutls-*) s='--pskkey=abc123';;
340 *) s='psk=abc123';;
341 esac
342 eval $1='"$2 $s"'
343 unset s
344}
345
346# maybe_adapt_for_psk [RUN_TEST_OPTION...]
347# If running in a PSK-only build, maybe adapt the test to use a pre-shared key.
348#
349# If not running in a PSK-only build, do nothing.
350# If the test looks like it doesn't use a pre-shared key but can run with a
351# pre-shared key, pass a pre-shared key. If the test looks like it can't run
352# with a pre-shared key, skip it. If the test looks like it's already using
353# a pre-shared key, do nothing.
354#
Gilles Peskined5b1a302022-04-05 22:00:17 +0200355# This code does not consider builds with ECDHE-PSK or RSA-PSK.
Gilles Peskine89d892f2022-02-25 19:52:52 +0100356#
357# Inputs:
358# * $CLI_CMD, $SRV_CMD, $PXY_CMD: client/server/proxy commands.
359# * $PSK_ONLY: YES if running in a PSK-only build (no asymmetric key exchanges).
360# * "$@": options passed to run_test.
361#
362# Outputs:
363# * $CLI_CMD, $SRV_CMD: may be modified to add PSK-relevant arguments.
364# * $SKIP_NEXT: set to YES if the test can't run with PSK.
365maybe_adapt_for_psk() {
366 if [ "$PSK_ONLY" != "YES" ]; then
367 return
368 fi
369 if [ "$SKIP_NEXT" = "YES" ]; then
370 return
371 fi
372 case "$CLI_CMD $SRV_CMD" in
373 *[-_\ =]psk*|*[-_\ =]PSK*)
374 return;;
375 *force_ciphersuite*)
376 # The test case forces a non-PSK cipher suite. In some cases, a
377 # PSK cipher suite could be substituted, but we're not ready for
378 # that yet.
379 SKIP_NEXT="YES"
380 return;;
381 *\ auth_mode=*|*[-_\ =]crt[_=]*)
382 # The test case involves certificates. PSK won't do.
383 SKIP_NEXT="YES"
384 return;;
385 esac
386 adapt_cmd_for_psk CLI_CMD "$CLI_CMD"
387 adapt_cmd_for_psk SRV_CMD "$SRV_CMD"
388}
389
390case " $CONFIGS_ENABLED " in
391 *\ MBEDTLS_KEY_EXCHANGE_[^P]*) PSK_ONLY="NO";;
392 *\ MBEDTLS_KEY_EXCHANGE_P[^S]*) PSK_ONLY="NO";;
393 *\ MBEDTLS_KEY_EXCHANGE_PS[^K]*) PSK_ONLY="NO";;
394 *\ MBEDTLS_KEY_EXCHANGE_PSK[^_]*) PSK_ONLY="NO";;
395 *\ MBEDTLS_KEY_EXCHANGE_PSK_ENABLED\ *) PSK_ONLY="YES";;
396 *) PSK_ONLY="NO";;
397esac
398
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200399# skip next test if OpenSSL doesn't support FALLBACK_SCSV
400requires_openssl_with_fallback_scsv() {
401 if [ -z "${OPENSSL_HAS_FBSCSV:-}" ]; then
402 if $OPENSSL_CMD s_client -help 2>&1 | grep fallback_scsv >/dev/null
403 then
404 OPENSSL_HAS_FBSCSV="YES"
405 else
406 OPENSSL_HAS_FBSCSV="NO"
407 fi
408 fi
409 if [ "$OPENSSL_HAS_FBSCSV" = "NO" ]; then
410 SKIP_NEXT="YES"
411 fi
412}
413
Yuto Takanobec7cf72021-07-02 10:10:49 +0100414# skip next test if either IN_CONTENT_LEN or MAX_CONTENT_LEN are below a value
415requires_max_content_len() {
416 requires_config_value_at_least "MBEDTLS_SSL_IN_CONTENT_LEN" $1
417 requires_config_value_at_least "MBEDTLS_SSL_OUT_CONTENT_LEN" $1
418}
419
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200420# skip next test if GnuTLS isn't available
421requires_gnutls() {
422 if [ -z "${GNUTLS_AVAILABLE:-}" ]; then
Manuel Pégourié-Gonnard03db6b02015-06-26 15:45:30 +0200423 if ( which "$GNUTLS_CLI" && which "$GNUTLS_SERV" ) >/dev/null 2>&1; then
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200424 GNUTLS_AVAILABLE="YES"
425 else
426 GNUTLS_AVAILABLE="NO"
427 fi
428 fi
429 if [ "$GNUTLS_AVAILABLE" = "NO" ]; then
430 SKIP_NEXT="YES"
431 fi
432}
433
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200434# skip next test if GnuTLS-next isn't available
435requires_gnutls_next() {
436 if [ -z "${GNUTLS_NEXT_AVAILABLE:-}" ]; then
437 if ( which "${GNUTLS_NEXT_CLI:-}" && which "${GNUTLS_NEXT_SERV:-}" ) >/dev/null 2>&1; then
438 GNUTLS_NEXT_AVAILABLE="YES"
439 else
440 GNUTLS_NEXT_AVAILABLE="NO"
441 fi
442 fi
443 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
444 SKIP_NEXT="YES"
445 fi
446}
447
448# skip next test if OpenSSL-legacy isn't available
449requires_openssl_legacy() {
450 if [ -z "${OPENSSL_LEGACY_AVAILABLE:-}" ]; then
451 if which "${OPENSSL_LEGACY:-}" >/dev/null 2>&1; then
452 OPENSSL_LEGACY_AVAILABLE="YES"
453 else
454 OPENSSL_LEGACY_AVAILABLE="NO"
455 fi
456 fi
457 if [ "$OPENSSL_LEGACY_AVAILABLE" = "NO" ]; then
458 SKIP_NEXT="YES"
459 fi
460}
461
Paul Elliott633a74e2021-10-13 18:31:07 +0100462requires_openssl_next() {
463 if [ -z "${OPENSSL_NEXT_AVAILABLE:-}" ]; then
464 if which "${OPENSSL_NEXT:-}" >/dev/null 2>&1; then
465 OPENSSL_NEXT_AVAILABLE="YES"
466 else
467 OPENSSL_NEXT_AVAILABLE="NO"
468 fi
469 fi
470 if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
471 SKIP_NEXT="YES"
472 fi
473}
474
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200475# skip next test if IPv6 isn't available on this host
476requires_ipv6() {
477 if [ -z "${HAS_IPV6:-}" ]; then
478 $P_SRV server_addr='::1' > $SRV_OUT 2>&1 &
479 SRV_PID=$!
480 sleep 1
481 kill $SRV_PID >/dev/null 2>&1
482 if grep "NET - Binding of the socket failed" $SRV_OUT >/dev/null; then
483 HAS_IPV6="NO"
484 else
485 HAS_IPV6="YES"
486 fi
487 rm -r $SRV_OUT
488 fi
489
490 if [ "$HAS_IPV6" = "NO" ]; then
491 SKIP_NEXT="YES"
492 fi
493}
494
Andrzej Kurekb4593462018-10-11 08:43:30 -0400495# skip next test if it's i686 or uname is not available
496requires_not_i686() {
497 if [ -z "${IS_I686:-}" ]; then
498 IS_I686="YES"
499 if which "uname" >/dev/null 2>&1; then
500 if [ -z "$(uname -a | grep i686)" ]; then
501 IS_I686="NO"
502 fi
503 fi
504 fi
505 if [ "$IS_I686" = "YES" ]; then
506 SKIP_NEXT="YES"
507 fi
508}
509
Angus Grattonc4dd0732018-04-11 16:28:39 +1000510# Calculate the input & output maximum content lengths set in the config
Yuto Takanoab9e43332021-06-22 07:16:40 +0100511MAX_CONTENT_LEN=$( get_config_value_or_default "MBEDTLS_SSL_MAX_CONTENT_LEN" )
512MAX_IN_LEN=$( get_config_value_or_default "MBEDTLS_SSL_IN_CONTENT_LEN" )
513MAX_OUT_LEN=$( get_config_value_or_default "MBEDTLS_SSL_OUT_CONTENT_LEN" )
Angus Grattonc4dd0732018-04-11 16:28:39 +1000514
Yuto Takano18ddccc2021-06-21 19:43:33 +0100515# Calculate the maximum content length that fits both
Angus Grattonc4dd0732018-04-11 16:28:39 +1000516if [ "$MAX_IN_LEN" -lt "$MAX_CONTENT_LEN" ]; then
517 MAX_CONTENT_LEN="$MAX_IN_LEN"
518fi
519if [ "$MAX_OUT_LEN" -lt "$MAX_CONTENT_LEN" ]; then
520 MAX_CONTENT_LEN="$MAX_OUT_LEN"
521fi
522
523# skip the next test if the SSL output buffer is less than 16KB
524requires_full_size_output_buffer() {
525 if [ "$MAX_OUT_LEN" -ne 16384 ]; then
526 SKIP_NEXT="YES"
527 fi
528}
529
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +0200530# skip the next test if valgrind is in use
531not_with_valgrind() {
532 if [ "$MEMCHECK" -gt 0 ]; then
533 SKIP_NEXT="YES"
534 fi
535}
536
Paul Bakker362689d2016-05-13 10:33:25 +0100537# skip the next test if valgrind is NOT in use
538only_with_valgrind() {
539 if [ "$MEMCHECK" -eq 0 ]; then
540 SKIP_NEXT="YES"
541 fi
542}
543
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200544# multiply the client timeout delay by the given factor for the next test
Janos Follath74537a62016-09-02 13:45:28 +0100545client_needs_more_time() {
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200546 CLI_DELAY_FACTOR=$1
547}
548
Janos Follath74537a62016-09-02 13:45:28 +0100549# wait for the given seconds after the client finished in the next test
550server_needs_more_time() {
551 SRV_DELAY_SECONDS=$1
552}
553
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100554# print_name <name>
555print_name() {
Paul Bakkere20310a2016-05-10 11:18:17 +0100556 TESTS=$(( $TESTS + 1 ))
557 LINE=""
558
559 if [ "$SHOW_TEST_NUMBER" -gt 0 ]; then
560 LINE="$TESTS "
561 fi
562
563 LINE="$LINE$1"
Gilles Peskine231befa2020-08-26 20:05:11 +0200564 printf "%s " "$LINE"
Paul Bakkere20310a2016-05-10 11:18:17 +0100565 LEN=$(( 72 - `echo "$LINE" | wc -c` ))
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100566 for i in `seq 1 $LEN`; do printf '.'; done
567 printf ' '
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100568
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100569}
570
Gilles Peskine560280b2019-09-16 15:17:38 +0200571# record_outcome <outcome> [<failure-reason>]
572# The test name must be in $NAME.
573record_outcome() {
574 echo "$1"
575 if [ -n "$MBEDTLS_TEST_OUTCOME_FILE" ]; then
576 printf '%s;%s;%s;%s;%s;%s\n' \
577 "$MBEDTLS_TEST_PLATFORM" "$MBEDTLS_TEST_CONFIGURATION" \
578 "ssl-opt" "$NAME" \
579 "$1" "${2-}" \
580 >>"$MBEDTLS_TEST_OUTCOME_FILE"
581 fi
582}
583
Gilles Peskineaa1d6ad2021-10-20 14:17:02 +0200584# True if the presence of the given pattern in a log definitely indicates
585# that the test has failed. False if the presence is inconclusive.
586#
587# Inputs:
588# * $1: pattern found in the logs
589# * $TIMES_LEFT: >0 if retrying is an option
590#
591# Outputs:
592# * $outcome: set to a retry reason if the pattern is inconclusive,
593# unchanged otherwise.
594# * Return value: 1 if the pattern is inconclusive,
595# 0 if the failure is definitive.
596log_pattern_presence_is_conclusive() {
597 # If we've run out of attempts, then don't retry no matter what.
598 if [ $TIMES_LEFT -eq 0 ]; then
599 return 0
600 fi
601 case $1 in
602 "resend")
603 # An undesired resend may have been caused by the OS dropping or
604 # delaying a packet at an inopportune time.
605 outcome="RETRY(resend)"
606 return 1;;
607 esac
608}
609
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100610# fail <message>
611fail() {
Gilles Peskine560280b2019-09-16 15:17:38 +0200612 record_outcome "FAIL" "$1"
Manuel Pégourié-Gonnard3eec6042014-02-27 15:37:24 +0100613 echo " ! $1"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100614
Manuel Pégourié-Gonnardc2b00922014-08-31 16:46:04 +0200615 mv $SRV_OUT o-srv-${TESTS}.log
616 mv $CLI_OUT o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200617 if [ -n "$PXY_CMD" ]; then
618 mv $PXY_OUT o-pxy-${TESTS}.log
619 fi
620 echo " ! outputs saved to o-XXX-${TESTS}.log"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100621
Manuel Pégourié-Gonnard3f3302f2020-06-08 11:49:05 +0200622 if [ "${LOG_FAILURE_ON_STDOUT:-0}" != 0 ]; then
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200623 echo " ! server output:"
624 cat o-srv-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200625 echo " ! ========================================================"
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200626 echo " ! client output:"
627 cat o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200628 if [ -n "$PXY_CMD" ]; then
629 echo " ! ========================================================"
630 echo " ! proxy output:"
631 cat o-pxy-${TESTS}.log
632 fi
633 echo ""
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200634 fi
635
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +0200636 FAILS=$(( $FAILS + 1 ))
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100637}
638
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100639# is_polar <cmd_line>
640is_polar() {
Gilles Peskine64457492020-08-26 21:53:33 +0200641 case "$1" in
642 *ssl_client2*) true;;
643 *ssl_server2*) true;;
644 *) false;;
645 esac
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100646}
647
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +0200648# openssl s_server doesn't have -www with DTLS
649check_osrv_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +0200650 case "$SRV_CMD" in
651 *s_server*-dtls*)
652 NEEDS_INPUT=1
653 SRV_CMD="$( echo $SRV_CMD | sed s/-www// )";;
654 *) NEEDS_INPUT=0;;
655 esac
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +0200656}
657
658# provide input to commands that need it
659provide_input() {
660 if [ $NEEDS_INPUT -eq 0 ]; then
661 return
662 fi
663
664 while true; do
665 echo "HTTP/1.0 200 OK"
666 sleep 1
667 done
668}
669
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100670# has_mem_err <log_file_name>
671has_mem_err() {
672 if ( grep -F 'All heap blocks were freed -- no leaks are possible' "$1" &&
673 grep -F 'ERROR SUMMARY: 0 errors from 0 contexts' "$1" ) > /dev/null
674 then
675 return 1 # false: does not have errors
676 else
677 return 0 # true: has errors
678 fi
679}
680
Unknownd364f4c2019-09-02 10:42:57 -0400681# Wait for process $2 named $3 to be listening on port $1. Print error to $4.
Gilles Peskine418b5362017-12-14 18:58:42 +0100682if type lsof >/dev/null 2>/dev/null; then
Unknownd364f4c2019-09-02 10:42:57 -0400683 wait_app_start() {
Paul Elliottce777382021-10-20 15:59:33 +0100684 newline='
685'
Gilles Peskine418b5362017-12-14 18:58:42 +0100686 START_TIME=$(date +%s)
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200687 if [ "$DTLS" -eq 1 ]; then
Gilles Peskine418b5362017-12-14 18:58:42 +0100688 proto=UDP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200689 else
Gilles Peskine418b5362017-12-14 18:58:42 +0100690 proto=TCP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200691 fi
Gilles Peskine418b5362017-12-14 18:58:42 +0100692 # Make a tight loop, server normally takes less than 1s to start.
Paul Elliott6cd97ce2021-10-19 17:56:39 +0100693 while true; do
Paul Elliottce777382021-10-20 15:59:33 +0100694 SERVER_PIDS=$(lsof -a -n -b -i "$proto:$1" -F p)
695 # When we use a proxy, it will be listening on the same port we
696 # are checking for as well as the server and lsof will list both.
697 # If multiple PIDs are returned, each one will be on a separate
698 # line, each prepended with 'p'.
699 case ${newline}${SERVER_PIDS}${newline} in
700 *${newline}p${2}${newline}*) break;;
701 esac
Gilles Peskine418b5362017-12-14 18:58:42 +0100702 if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
Unknownd364f4c2019-09-02 10:42:57 -0400703 echo "$3 START TIMEOUT"
704 echo "$3 START TIMEOUT" >> $4
Gilles Peskine418b5362017-12-14 18:58:42 +0100705 break
706 fi
707 # Linux and *BSD support decimal arguments to sleep. On other
708 # OSes this may be a tight loop.
709 sleep 0.1 2>/dev/null || true
710 done
711 }
712else
Unknownd364f4c2019-09-02 10:42:57 -0400713 echo "Warning: lsof not available, wait_app_start = sleep"
714 wait_app_start() {
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200715 sleep "$START_DELAY"
Gilles Peskine418b5362017-12-14 18:58:42 +0100716 }
717fi
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200718
Unknownd364f4c2019-09-02 10:42:57 -0400719# Wait for server process $2 to be listening on port $1.
720wait_server_start() {
721 wait_app_start $1 $2 "SERVER" $SRV_OUT
722}
723
724# Wait for proxy process $2 to be listening on port $1.
725wait_proxy_start() {
726 wait_app_start $1 $2 "PROXY" $PXY_OUT
727}
728
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100729# Given the client or server debug output, parse the unix timestamp that is
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +0100730# included in the first 4 bytes of the random bytes and check that it's within
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100731# acceptable bounds
732check_server_hello_time() {
733 # Extract the time from the debug (lvl 3) output of the client
Andres Amaya Garcia67d8da52017-09-15 15:49:24 +0100734 SERVER_HELLO_TIME="$(sed -n 's/.*server hello, current time: //p' < "$1")"
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100735 # Get the Unix timestamp for now
736 CUR_TIME=$(date +'%s')
737 THRESHOLD_IN_SECS=300
738
739 # Check if the ServerHello time was printed
740 if [ -z "$SERVER_HELLO_TIME" ]; then
741 return 1
742 fi
743
744 # Check the time in ServerHello is within acceptable bounds
745 if [ $SERVER_HELLO_TIME -lt $(( $CUR_TIME - $THRESHOLD_IN_SECS )) ]; then
746 # The time in ServerHello is at least 5 minutes before now
747 return 1
748 elif [ $SERVER_HELLO_TIME -gt $(( $CUR_TIME + $THRESHOLD_IN_SECS )) ]; then
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +0100749 # The time in ServerHello is at least 5 minutes later than now
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100750 return 1
751 else
752 return 0
753 fi
754}
755
Piotr Nowicki0937ed22019-11-26 16:32:40 +0100756# Get handshake memory usage from server or client output and put it into the variable specified by the first argument
757handshake_memory_get() {
758 OUTPUT_VARIABLE="$1"
759 OUTPUT_FILE="$2"
760
761 # Get memory usage from a pattern like "Heap memory usage after handshake: 23112 bytes. Peak memory usage was 33112"
762 MEM_USAGE=$(sed -n 's/.*Heap memory usage after handshake: //p' < "$OUTPUT_FILE" | grep -o "[0-9]*" | head -1)
763
764 # Check if memory usage was read
765 if [ -z "$MEM_USAGE" ]; then
766 echo "Error: Can not read the value of handshake memory usage"
767 return 1
768 else
769 eval "$OUTPUT_VARIABLE=$MEM_USAGE"
770 return 0
771 fi
772}
773
774# Get handshake memory usage from server or client output and check if this value
775# is not higher than the maximum given by the first argument
776handshake_memory_check() {
777 MAX_MEMORY="$1"
778 OUTPUT_FILE="$2"
779
780 # Get memory usage
781 if ! handshake_memory_get "MEMORY_USAGE" "$OUTPUT_FILE"; then
782 return 1
783 fi
784
785 # Check if memory usage is below max value
786 if [ "$MEMORY_USAGE" -gt "$MAX_MEMORY" ]; then
787 echo "\nFailed: Handshake memory usage was $MEMORY_USAGE bytes," \
788 "but should be below $MAX_MEMORY bytes"
789 return 1
790 else
791 return 0
792 fi
793}
794
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200795# wait for client to terminate and set CLI_EXIT
796# must be called right after starting the client
797wait_client_done() {
798 CLI_PID=$!
799
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200800 CLI_DELAY=$(( $DOG_DELAY * $CLI_DELAY_FACTOR ))
801 CLI_DELAY_FACTOR=1
802
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200803 ( sleep $CLI_DELAY; echo "===CLIENT_TIMEOUT===" >> $CLI_OUT; kill $CLI_PID ) &
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200804 DOG_PID=$!
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200805
806 wait $CLI_PID
807 CLI_EXIT=$?
808
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200809 kill $DOG_PID >/dev/null 2>&1
810 wait $DOG_PID
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200811
812 echo "EXIT: $CLI_EXIT" >> $CLI_OUT
Janos Follath74537a62016-09-02 13:45:28 +0100813
814 sleep $SRV_DELAY_SECONDS
815 SRV_DELAY_SECONDS=0
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200816}
817
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200818# check if the given command uses dtls and sets global variable DTLS
819detect_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +0200820 case "$1" in
Paul Elliott405fccc2021-10-12 16:02:55 +0100821 *dtls=1*|*-dtls*|*-u*) DTLS=1;;
Gilles Peskine64457492020-08-26 21:53:33 +0200822 *) DTLS=0;;
823 esac
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200824}
825
Dave Rodgman0279c2f2021-02-10 12:45:41 +0000826# check if the given command uses gnutls and sets global variable CMD_IS_GNUTLS
827is_gnutls() {
828 case "$1" in
829 *gnutls-cli*)
830 CMD_IS_GNUTLS=1
831 ;;
832 *gnutls-serv*)
833 CMD_IS_GNUTLS=1
834 ;;
835 *)
836 CMD_IS_GNUTLS=0
837 ;;
838 esac
839}
840
Gilles Peskine64c683f2022-03-14 17:55:04 +0100841# Determine what calc_verify trace is to be expected, if any.
842#
843# calc_verify is only called for two things: to calculate the
844# extended master secret, and to process client authentication.
845#
846# Warning: the current implementation assumes that extended_ms is not
847# disabled on the client or on the server.
848#
849# Inputs:
Gilles Peskinef2e1f472022-04-06 22:23:45 +0200850# * $1: the value of the server auth_mode parameter.
851# 'required' if client authentication is expected,
852# 'none' or absent if not.
Gilles Peskine64c683f2022-03-14 17:55:04 +0100853# * $CONFIGS_ENABLED
854#
855# Outputs:
856# * $maybe_calc_verify: set to a trace expected in the debug logs
857set_maybe_calc_verify() {
858 maybe_calc_verify=
859 case $CONFIGS_ENABLED in
860 *\ MBEDTLS_SSL_EXTENDED_MASTER_SECRET\ *) :;;
861 *)
862 case ${1-} in
Gilles Peskinef2e1f472022-04-06 22:23:45 +0200863 ''|none) return;;
864 required) :;;
Gilles Peskine64c683f2022-03-14 17:55:04 +0100865 *) echo "Bad parameter 1 to set_maybe_calc_verify: $1"; exit 1;;
866 esac
867 esac
868 case $CONFIGS_ENABLED in
869 *\ MBEDTLS_USE_PSA_CRYPTO\ *) maybe_calc_verify="PSA calc verify";;
870 *) maybe_calc_verify="<= calc verify";;
871 esac
872}
873
Johan Pascal9bc50b02020-09-24 12:01:13 +0200874# Compare file content
875# Usage: find_in_both pattern file1 file2
876# extract from file1 the first line matching the pattern
877# check in file2 that the same line can be found
878find_in_both() {
879 srv_pattern=$(grep -m 1 "$1" "$2");
880 if [ -z "$srv_pattern" ]; then
881 return 1;
882 fi
883
884 if grep "$srv_pattern" $3 >/dev/null; then :
Johan Pascal10403152020-10-09 20:43:51 +0200885 return 0;
Johan Pascal9bc50b02020-09-24 12:01:13 +0200886 else
887 return 1;
888 fi
889}
890
Gilles Peskinef9022b02021-10-19 16:25:10 +0200891# Analyze the commands that will be used in a test.
892#
893# Analyze and possibly instrument $PXY_CMD, $CLI_CMD, $SRV_CMD to pass
894# extra arguments or go through wrappers.
Gilles Peskined5b1a302022-04-05 22:00:17 +0200895#
896# Inputs:
897# * $@: supplemental options to run_test() (after the mandatory arguments).
898# * $CLI_CMD, $PXY_CMD, $SRV_CMD: the client, proxy and server commands.
899# * $DTLS: 1 if DTLS, otherwise 0.
900#
901# Outputs:
902# * $CLI_CMD, $PXY_CMD, $SRV_CMD: may be tweaked.
Gilles Peskinef9022b02021-10-19 16:25:10 +0200903analyze_test_commands() {
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200904 # if the test uses DTLS but no custom proxy, add a simple proxy
905 # as it provides timing info that's useful to debug failures
Manuel Pégourié-Gonnard70fce982020-06-25 09:54:46 +0200906 if [ -z "$PXY_CMD" ] && [ "$DTLS" -eq 1 ]; then
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200907 PXY_CMD="$P_PXY"
Manuel Pégourié-Gonnard8779e9a2020-07-16 10:19:32 +0200908 case " $SRV_CMD " in
909 *' server_addr=::1 '*)
910 PXY_CMD="$PXY_CMD server_addr=::1 listen_addr=::1";;
911 esac
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200912 fi
913
Dave Rodgman0279c2f2021-02-10 12:45:41 +0000914 # update CMD_IS_GNUTLS variable
915 is_gnutls "$SRV_CMD"
916
917 # if the server uses gnutls but doesn't set priority, explicitly
918 # set the default priority
919 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
920 case "$SRV_CMD" in
921 *--priority*) :;;
922 *) SRV_CMD="$SRV_CMD --priority=NORMAL";;
923 esac
924 fi
925
926 # update CMD_IS_GNUTLS variable
927 is_gnutls "$CLI_CMD"
928
929 # if the client uses gnutls but doesn't set priority, explicitly
930 # set the default priority
931 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
932 case "$CLI_CMD" in
933 *--priority*) :;;
934 *) CLI_CMD="$CLI_CMD --priority=NORMAL";;
935 esac
936 fi
937
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200938 # fix client port
939 if [ -n "$PXY_CMD" ]; then
940 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$PXY_PORT/g )
941 else
942 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$SRV_PORT/g )
943 fi
944
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100945 # prepend valgrind to our commands if active
946 if [ "$MEMCHECK" -gt 0 ]; then
947 if is_polar "$SRV_CMD"; then
948 SRV_CMD="valgrind --leak-check=full $SRV_CMD"
949 fi
950 if is_polar "$CLI_CMD"; then
951 CLI_CMD="valgrind --leak-check=full $CLI_CMD"
952 fi
953 fi
Gilles Peskinef9022b02021-10-19 16:25:10 +0200954}
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100955
Gilles Peskinef9022b02021-10-19 16:25:10 +0200956# Check for failure conditions after a test case.
957#
958# Inputs from run_test:
959# * positional parameters: test options (see run_test documentation)
960# * $CLI_EXIT: client return code
961# * $CLI_EXPECT: expected client return code
962# * $SRV_RET: server return code
963# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files containing client/server/proxy logs
Gilles Peskinea28fd412021-10-19 17:23:25 +0200964# * $TIMES_LEFT: if nonzero, a RETRY outcome is allowed
Gilles Peskinef9022b02021-10-19 16:25:10 +0200965#
966# Outputs:
Gilles Peskine2d3c9f82021-10-19 18:00:10 +0200967# * $outcome: one of PASS/RETRY*/FAIL
Gilles Peskinef9022b02021-10-19 16:25:10 +0200968check_test_failure() {
Gilles Peskinea28fd412021-10-19 17:23:25 +0200969 outcome=FAIL
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200970
Gilles Peskinea28fd412021-10-19 17:23:25 +0200971 if [ $TIMES_LEFT -gt 0 ] &&
972 grep '===CLIENT_TIMEOUT===' $CLI_OUT >/dev/null
973 then
Gilles Peskine2d3c9f82021-10-19 18:00:10 +0200974 outcome="RETRY(client-timeout)"
Gilles Peskinea28fd412021-10-19 17:23:25 +0200975 return
976 fi
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200977
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100978 # check if the client and server went at least to the handshake stage
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200979 # (useful to avoid tests with only negative assertions and non-zero
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100980 # expected client exit to incorrectly succeed in case of catastrophic
981 # failure)
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100982 if is_polar "$SRV_CMD"; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200983 if grep "Performing the SSL/TLS handshake" $SRV_OUT >/dev/null; then :;
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100984 else
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100985 fail "server or client failed to reach handshake stage"
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100986 return
987 fi
988 fi
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100989 if is_polar "$CLI_CMD"; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200990 if grep "Performing the SSL/TLS handshake" $CLI_OUT >/dev/null; then :;
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100991 else
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100992 fail "server or client failed to reach handshake stage"
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100993 return
994 fi
995 fi
996
Gilles Peskineaaf866e2021-02-09 21:01:33 +0100997 # Check server exit code (only for Mbed TLS: GnuTLS and OpenSSL don't
998 # exit with status 0 when interrupted by a signal, and we don't really
999 # care anyway), in case e.g. the server reports a memory leak.
1000 if [ $SRV_RET != 0 ] && is_polar "$SRV_CMD"; then
Gilles Peskine7f919de2021-02-02 23:29:03 +01001001 fail "Server exited with status $SRV_RET"
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001002 return
1003 fi
1004
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001005 # check client exit code
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001006 if [ \( "$CLI_EXPECT" = 0 -a "$CLI_EXIT" != 0 \) -o \
1007 \( "$CLI_EXPECT" != 0 -a "$CLI_EXIT" = 0 \) ]
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001008 then
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001009 fail "bad client exit code (expected $CLI_EXPECT, got $CLI_EXIT)"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001010 return
1011 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001012
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001013 # check other assertions
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001014 # lines beginning with == are added by valgrind, ignore them
Paul Bakker1f650922016-05-13 10:16:46 +01001015 # lines with 'Serious error when reading debug info', are valgrind issues as well
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001016 while [ $# -gt 0 ]
1017 do
1018 case $1 in
1019 "-s")
Paul Bakker1f650922016-05-13 10:16:46 +01001020 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 +01001021 fail "pattern '$2' MUST be present in the Server output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001022 return
1023 fi
1024 ;;
1025
1026 "-c")
Paul Bakker1f650922016-05-13 10:16:46 +01001027 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 +01001028 fail "pattern '$2' MUST be present in the Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001029 return
1030 fi
1031 ;;
1032
1033 "-S")
Paul Bakker1f650922016-05-13 10:16:46 +01001034 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskineaa1d6ad2021-10-20 14:17:02 +02001035 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001036 fail "pattern '$2' MUST NOT be present in the Server output"
1037 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001038 return
1039 fi
1040 ;;
1041
1042 "-C")
Paul Bakker1f650922016-05-13 10:16:46 +01001043 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskineaa1d6ad2021-10-20 14:17:02 +02001044 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001045 fail "pattern '$2' MUST NOT be present in the Client output"
1046 fi
Simon Butcher8e004102016-10-14 00:48:33 +01001047 return
1048 fi
1049 ;;
1050
1051 # The filtering in the following two options (-u and -U) do the following
1052 # - ignore valgrind output
Antonin Décimo36e89b52019-01-23 15:24:37 +01001053 # - filter out everything but lines right after the pattern occurrences
Simon Butcher8e004102016-10-14 00:48:33 +01001054 # - keep one of each non-unique line
1055 # - count how many lines remain
1056 # A line with '--' will remain in the result from previous outputs, so the number of lines in the result will be 1
1057 # if there were no duplicates.
1058 "-U")
1059 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
1060 fail "lines following pattern '$2' must be unique in Server output"
1061 return
1062 fi
1063 ;;
1064
1065 "-u")
1066 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
1067 fail "lines following pattern '$2' must be unique in Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001068 return
1069 fi
1070 ;;
Andres Amaya Garcia93993de2017-09-06 15:38:07 +01001071 "-F")
1072 if ! $2 "$SRV_OUT"; then
1073 fail "function call to '$2' failed on Server output"
1074 return
1075 fi
1076 ;;
1077 "-f")
1078 if ! $2 "$CLI_OUT"; then
1079 fail "function call to '$2' failed on Client output"
1080 return
1081 fi
1082 ;;
Johan Pascal9bc50b02020-09-24 12:01:13 +02001083 "-g")
1084 if ! eval "$2 '$SRV_OUT' '$CLI_OUT'"; then
1085 fail "function call to '$2' failed on Server and Client output"
1086 return
1087 fi
1088 ;;
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001089
1090 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +02001091 echo "Unknown test: $1" >&2
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001092 exit 1
1093 esac
1094 shift 2
1095 done
1096
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001097 # check valgrind's results
1098 if [ "$MEMCHECK" -gt 0 ]; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001099 if is_polar "$SRV_CMD" && has_mem_err $SRV_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001100 fail "Server has memory errors"
1101 return
1102 fi
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001103 if is_polar "$CLI_CMD" && has_mem_err $CLI_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001104 fail "Client has memory errors"
1105 return
1106 fi
1107 fi
1108
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001109 # if we're here, everything is ok
Gilles Peskinea28fd412021-10-19 17:23:25 +02001110 outcome=PASS
Gilles Peskinef9022b02021-10-19 16:25:10 +02001111}
1112
Gilles Peskine5d8e7022021-10-19 16:35:35 +02001113# Run the current test case: start the server and if applicable the proxy, run
1114# the client, wait for all processes to finish or time out.
1115#
1116# Inputs:
1117# * $NAME: test case name
1118# * $CLI_CMD, $SRV_CMD, $PXY_CMD: commands to run
1119# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files to contain client/server/proxy logs
1120#
1121# Outputs:
1122# * $CLI_EXIT: client return code
1123# * $SRV_RET: server return code
1124do_run_test_once() {
1125 # run the commands
1126 if [ -n "$PXY_CMD" ]; then
1127 printf "# %s\n%s\n" "$NAME" "$PXY_CMD" > $PXY_OUT
1128 $PXY_CMD >> $PXY_OUT 2>&1 &
1129 PXY_PID=$!
1130 wait_proxy_start "$PXY_PORT" "$PXY_PID"
1131 fi
1132
1133 check_osrv_dtls
1134 printf '# %s\n%s\n' "$NAME" "$SRV_CMD" > $SRV_OUT
1135 provide_input | $SRV_CMD >> $SRV_OUT 2>&1 &
1136 SRV_PID=$!
1137 wait_server_start "$SRV_PORT" "$SRV_PID"
1138
1139 printf '# %s\n%s\n' "$NAME" "$CLI_CMD" > $CLI_OUT
1140 eval "$CLI_CMD" >> $CLI_OUT 2>&1 &
1141 wait_client_done
1142
1143 sleep 0.05
1144
1145 # terminate the server (and the proxy)
1146 kill $SRV_PID
1147 wait $SRV_PID
1148 SRV_RET=$?
1149
1150 if [ -n "$PXY_CMD" ]; then
1151 kill $PXY_PID >/dev/null 2>&1
1152 wait $PXY_PID
1153 fi
1154}
1155
Gilles Peskinef9022b02021-10-19 16:25:10 +02001156# Usage: run_test name [-p proxy_cmd] srv_cmd cli_cmd cli_exit [option [...]]
1157# Options: -s pattern pattern that must be present in server output
1158# -c pattern pattern that must be present in client output
1159# -u pattern lines after pattern must be unique in client output
1160# -f call shell function on client output
1161# -S pattern pattern that must be absent in server output
1162# -C pattern pattern that must be absent in client output
1163# -U pattern lines after pattern must be unique in server output
1164# -F call shell function on server output
1165# -g call shell function on server and client output
1166run_test() {
1167 NAME="$1"
1168 shift 1
1169
1170 if is_excluded "$NAME"; then
1171 SKIP_NEXT="NO"
1172 # There was no request to run the test, so don't record its outcome.
1173 return
1174 fi
1175
1176 print_name "$NAME"
1177
1178 # Do we only run numbered tests?
1179 if [ -n "$RUN_TEST_NUMBER" ]; then
1180 case ",$RUN_TEST_NUMBER," in
1181 *",$TESTS,"*) :;;
1182 *) SKIP_NEXT="YES";;
1183 esac
1184 fi
1185
1186 # does this test use a proxy?
1187 if [ "X$1" = "X-p" ]; then
1188 PXY_CMD="$2"
1189 shift 2
1190 else
1191 PXY_CMD=""
1192 fi
1193
1194 # get commands and client output
1195 SRV_CMD="$1"
1196 CLI_CMD="$2"
1197 CLI_EXPECT="$3"
1198 shift 3
1199
1200 # Check if test uses files
1201 case "$SRV_CMD $CLI_CMD" in
1202 *data_files/*)
1203 requires_config_enabled MBEDTLS_FS_IO;;
1204 esac
1205
Gilles Peskinee5f49582022-02-25 19:46:30 +01001206 # Check if the test uses DTLS.
1207 detect_dtls "$SRV_CMD"
1208 if [ "$DTLS" -eq 1 ]; then
1209 requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
1210 fi
1211
Gilles Peskine511fdf42022-04-08 19:26:26 +02001212 # If the client or server requires certain features that can be detected
1213 # from their command-line arguments, check that they're enabled.
1214 detect_required_features "$SRV_CMD" "$@"
1215 detect_required_features "$CLI_CMD" "$@"
Gilles Peskinef9022b02021-10-19 16:25:10 +02001216
Gilles Peskine89d892f2022-02-25 19:52:52 +01001217 # If we're in a PSK-only build and the test can be adapted to PSK, do that.
1218 maybe_adapt_for_psk "$@"
1219
Gilles Peskinef9022b02021-10-19 16:25:10 +02001220 # should we skip?
1221 if [ "X$SKIP_NEXT" = "XYES" ]; then
1222 SKIP_NEXT="NO"
1223 record_outcome "SKIP"
1224 SKIPS=$(( $SKIPS + 1 ))
1225 return
1226 fi
1227
1228 analyze_test_commands "$@"
1229
Andrzej Kurek363553b2022-04-01 08:52:06 -04001230 # One regular run and two retries
1231 TIMES_LEFT=3
Gilles Peskinef9022b02021-10-19 16:25:10 +02001232 while [ $TIMES_LEFT -gt 0 ]; do
1233 TIMES_LEFT=$(( $TIMES_LEFT - 1 ))
1234
Gilles Peskine5d8e7022021-10-19 16:35:35 +02001235 do_run_test_once
Gilles Peskinef9022b02021-10-19 16:25:10 +02001236
Gilles Peskinea28fd412021-10-19 17:23:25 +02001237 check_test_failure "$@"
1238 case $outcome in
1239 PASS) break;;
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001240 RETRY*) printf "$outcome ";;
Gilles Peskinea28fd412021-10-19 17:23:25 +02001241 FAIL) return;;
1242 esac
Gilles Peskinef9022b02021-10-19 16:25:10 +02001243 done
1244
Gilles Peskinea28fd412021-10-19 17:23:25 +02001245 # If we get this far, the test case passed.
Gilles Peskine560280b2019-09-16 15:17:38 +02001246 record_outcome "PASS"
Paul Bakkeracaac852016-05-10 11:47:13 +01001247 if [ "$PRESERVE_LOGS" -gt 0 ]; then
1248 mv $SRV_OUT o-srv-${TESTS}.log
1249 mv $CLI_OUT o-cli-${TESTS}.log
Hanno Becker7be2e5b2018-08-20 12:21:35 +01001250 if [ -n "$PXY_CMD" ]; then
1251 mv $PXY_OUT o-pxy-${TESTS}.log
1252 fi
Paul Bakkeracaac852016-05-10 11:47:13 +01001253 fi
1254
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001255 rm -f $SRV_OUT $CLI_OUT $PXY_OUT
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001256}
1257
Hanno Becker9b5853c2018-11-16 17:28:40 +00001258run_test_psa() {
1259 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine64c683f2022-03-14 17:55:04 +01001260 set_maybe_calc_verify none
Hanno Beckere9420c22018-11-20 11:37:34 +00001261 run_test "PSA-supported ciphersuite: $1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00001262 "$P_SRV debug_level=3 force_version=tls12" \
1263 "$P_CLI debug_level=3 force_version=tls12 force_ciphersuite=$1" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001264 0 \
1265 -c "Successfully setup PSA-based decryption cipher context" \
1266 -c "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001267 -c "$maybe_calc_verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001268 -c "calc PSA finished" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001269 -s "Successfully setup PSA-based decryption cipher context" \
1270 -s "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001271 -s "$maybe_calc_verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001272 -s "calc PSA finished" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001273 -C "Failed to setup PSA-based cipher context"\
1274 -S "Failed to setup PSA-based cipher context"\
1275 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001276 -c "Perform PSA-based ECDH computation."\
Andrzej Kureke85414e2019-01-15 05:23:59 -05001277 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001278 -S "error" \
1279 -C "error"
Gilles Peskine64c683f2022-03-14 17:55:04 +01001280 unset maybe_calc_verify
Hanno Becker9b5853c2018-11-16 17:28:40 +00001281}
1282
Hanno Becker354e2482019-01-08 11:40:25 +00001283run_test_psa_force_curve() {
1284 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine64c683f2022-03-14 17:55:04 +01001285 set_maybe_calc_verify none
Hanno Becker354e2482019-01-08 11:40:25 +00001286 run_test "PSA - ECDH with $1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00001287 "$P_SRV debug_level=4 force_version=tls12" \
1288 "$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 +00001289 0 \
Hanno Becker28f78442019-02-18 16:47:50 +00001290 -c "Successfully setup PSA-based decryption cipher context" \
1291 -c "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001292 -c "$maybe_calc_verify" \
Hanno Becker28f78442019-02-18 16:47:50 +00001293 -c "calc PSA finished" \
1294 -s "Successfully setup PSA-based decryption cipher context" \
1295 -s "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001296 -s "$maybe_calc_verify" \
Hanno Becker28f78442019-02-18 16:47:50 +00001297 -s "calc PSA finished" \
1298 -C "Failed to setup PSA-based cipher context"\
1299 -S "Failed to setup PSA-based cipher context"\
Hanno Becker354e2482019-01-08 11:40:25 +00001300 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001301 -c "Perform PSA-based ECDH computation."\
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001302 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001303 -S "error" \
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001304 -C "error"
Gilles Peskine64c683f2022-03-14 17:55:04 +01001305 unset maybe_calc_verify
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001306}
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 Baif40545d2021-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 Baif40545d2021-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 Elliottccba1292021-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 Peskine3aec89b2021-04-01 14:00:11 +02001479O_SRV="$O_SRV -accept $SRV_PORT"
Paul Elliottccba1292021-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 Elliottccba1292021-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
Paul Elliott633a74e2021-10-13 18:31:07 +01001489if [ -n "${OPENSSL_NEXT:-}" ]; then
1490 O_NEXT_SRV="$O_NEXT_SRV -accept $SRV_PORT"
Paul Elliottccba1292021-10-12 16:10:37 +01001491 O_NEXT_CLI="$O_NEXT_CLI -connect 127.0.0.1:+SRV_PORT"
Paul Elliott633a74e2021-10-13 18:31:07 +01001492fi
1493
Hanno Becker58e9dc32018-08-17 15:53:21 +01001494if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02001495 G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT"
1496fi
1497
Hanno Becker58e9dc32018-08-17 15:53:21 +01001498if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02001499 G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02001500fi
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01001501
Gilles Peskine62469d92017-05-10 10:13:59 +02001502# Allow SHA-1, because many of our test certificates use it
1503P_SRV="$P_SRV allow_sha1=1"
1504P_CLI="$P_CLI allow_sha1=1"
1505
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001506# Also pick a unique name for intermediate files
1507SRV_OUT="srv_out.$$"
1508CLI_OUT="cli_out.$$"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001509PXY_OUT="pxy_out.$$"
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001510SESSION="session.$$"
1511
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +02001512SKIP_NEXT="NO"
1513
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01001514trap cleanup INT TERM HUP
1515
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001516# Basic test
1517
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001518# Checks that:
1519# - things work with all ciphersuites active (used with config-full in all.sh)
Gilles Peskinede4cb352022-04-05 22:00:32 +02001520# - the expected parameters are selected
Gilles Peskinedf4ad902022-04-08 15:14:38 +02001521requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinedff48c12022-02-25 19:50:38 +01001522requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Gilles Peskinede4cb352022-04-05 22:00:32 +02001523requires_config_enabled MBEDTLS_SHA512_C # "signature_algorithm ext: 6"
1524requires_config_enabled MBEDTLS_ECP_DP_SECP521R1_ENABLED
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001525run_test "Default" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001526 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001527 "$P_CLI" \
1528 0 \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001529 -s "Protocol is TLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001530 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001531 -s "client hello v3, signature_algorithm ext: 6" \
1532 -s "ECDHE curve: secp521r1" \
1533 -S "error" \
1534 -C "error"
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001535
Gilles Peskinedf4ad902022-04-08 15:14:38 +02001536requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinedff48c12022-02-25 19:50:38 +01001537requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00001538run_test "Default, DTLS" \
1539 "$P_SRV dtls=1" \
1540 "$P_CLI dtls=1" \
1541 0 \
1542 -s "Protocol is DTLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001543 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256"
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00001544
Hanno Becker721f7c12020-08-17 12:17:32 +01001545run_test "TLS client auth: required" \
1546 "$P_SRV auth_mode=required" \
1547 "$P_CLI" \
1548 0 \
1549 -s "Verifying peer X.509 certificate... ok"
1550
Hanno Becker2f54a3c2020-08-17 12:14:06 +01001551requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1552requires_config_enabled MBEDTLS_ECDSA_C
1553requires_config_enabled MBEDTLS_SHA256_C
1554run_test "TLS: password protected client key" \
1555 "$P_SRV auth_mode=required" \
1556 "$P_CLI crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
1557 0
1558
1559requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1560requires_config_enabled MBEDTLS_ECDSA_C
1561requires_config_enabled MBEDTLS_SHA256_C
1562run_test "TLS: password protected server key" \
1563 "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
1564 "$P_CLI" \
1565 0
1566
1567requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1568requires_config_enabled MBEDTLS_ECDSA_C
1569requires_config_enabled MBEDTLS_RSA_C
1570requires_config_enabled MBEDTLS_SHA256_C
1571run_test "TLS: password protected server key, two certificates" \
1572 "$P_SRV \
1573 key_file=data_files/server5.key.enc key_pwd=PolarSSLTest crt_file=data_files/server5.crt \
1574 key_file2=data_files/server2.key.enc key_pwd2=PolarSSLTest crt_file2=data_files/server2.crt" \
1575 "$P_CLI" \
1576 0
1577
Manuel Pégourié-Gonnard342d2ca2020-01-02 11:58:00 +01001578requires_config_enabled MBEDTLS_ZLIB_SUPPORT
1579run_test "Default (compression enabled)" \
1580 "$P_SRV debug_level=3" \
1581 "$P_CLI debug_level=3" \
1582 0 \
1583 -s "Allocating compression buffer" \
1584 -c "Allocating compression buffer" \
1585 -s "Record expansion is unknown (compression)" \
1586 -c "Record expansion is unknown (compression)" \
1587 -S "error" \
1588 -C "error"
1589
Hanno Becker746aaf32019-03-28 15:25:23 +00001590requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
1591run_test "CA callback on client" \
1592 "$P_SRV debug_level=3" \
1593 "$P_CLI ca_callback=1 debug_level=3 " \
1594 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01001595 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00001596 -S "error" \
1597 -C "error"
1598
1599requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
1600requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1601requires_config_enabled MBEDTLS_ECDSA_C
1602requires_config_enabled MBEDTLS_SHA256_C
1603run_test "CA callback on server" \
1604 "$P_SRV auth_mode=required" \
1605 "$P_CLI ca_callback=1 debug_level=3 crt_file=data_files/server5.crt \
1606 key_file=data_files/server5.key" \
1607 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01001608 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00001609 -s "Verifying peer X.509 certificate... ok" \
1610 -S "error" \
1611 -C "error"
1612
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001613# Test using an opaque private key for client authentication
1614requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1615requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1616requires_config_enabled MBEDTLS_ECDSA_C
1617requires_config_enabled MBEDTLS_SHA256_C
1618run_test "Opaque key for client authentication" \
1619 "$P_SRV auth_mode=required" \
1620 "$P_CLI key_opaque=1 crt_file=data_files/server5.crt \
1621 key_file=data_files/server5.key" \
1622 0 \
1623 -c "key type: Opaque" \
1624 -s "Verifying peer X.509 certificate... ok" \
1625 -S "error" \
1626 -C "error"
1627
Hanno Becker9b5853c2018-11-16 17:28:40 +00001628# Test ciphersuites which we expect to be fully supported by PSA Crypto
1629# and check that we don't fall back to Mbed TLS' internal crypto primitives.
1630run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM
1631run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8
1632run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM
1633run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8
1634run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
1635run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
1636run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA
1637run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256
1638run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384
1639
Hanno Becker354e2482019-01-08 11:40:25 +00001640requires_config_enabled MBEDTLS_ECP_DP_SECP521R1_ENABLED
1641run_test_psa_force_curve "secp521r1"
1642requires_config_enabled MBEDTLS_ECP_DP_BP512R1_ENABLED
1643run_test_psa_force_curve "brainpoolP512r1"
1644requires_config_enabled MBEDTLS_ECP_DP_SECP384R1_ENABLED
1645run_test_psa_force_curve "secp384r1"
1646requires_config_enabled MBEDTLS_ECP_DP_BP384R1_ENABLED
1647run_test_psa_force_curve "brainpoolP384r1"
1648requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
1649run_test_psa_force_curve "secp256r1"
1650requires_config_enabled MBEDTLS_ECP_DP_SECP256K1_ENABLED
1651run_test_psa_force_curve "secp256k1"
1652requires_config_enabled MBEDTLS_ECP_DP_BP256R1_ENABLED
1653run_test_psa_force_curve "brainpoolP256r1"
1654requires_config_enabled MBEDTLS_ECP_DP_SECP224R1_ENABLED
1655run_test_psa_force_curve "secp224r1"
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01001656## SECP224K1 is buggy via the PSA API
Dave Rodgman52af7692022-03-31 14:27:24 +01001657## (https://github.com/Mbed-TLS/mbedtls/issues/3541),
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01001658## so it is disabled in PSA even when it's enabled in Mbed TLS.
1659## The proper dependency would be on PSA_WANT_ECC_SECP_K1_224 but
1660## dependencies on PSA symbols in ssl-opt.sh are not implemented yet.
1661#requires_config_enabled MBEDTLS_ECP_DP_SECP224K1_ENABLED
1662#run_test_psa_force_curve "secp224k1"
Hanno Becker354e2482019-01-08 11:40:25 +00001663requires_config_enabled MBEDTLS_ECP_DP_SECP192R1_ENABLED
1664run_test_psa_force_curve "secp192r1"
1665requires_config_enabled MBEDTLS_ECP_DP_SECP192K1_ENABLED
1666run_test_psa_force_curve "secp192k1"
1667
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001668# Test current time in ServerHello
1669requires_config_enabled MBEDTLS_HAVE_TIME
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001670run_test "ServerHello contains gmt_unix_time" \
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001671 "$P_SRV debug_level=3" \
1672 "$P_CLI debug_level=3" \
1673 0 \
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001674 -f "check_server_hello_time" \
1675 -F "check_server_hello_time"
1676
Simon Butcher8e004102016-10-14 00:48:33 +01001677# Test for uniqueness of IVs in AEAD ciphersuites
1678run_test "Unique IV in GCM" \
1679 "$P_SRV exchanges=20 debug_level=4" \
1680 "$P_CLI exchanges=20 debug_level=4 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
1681 0 \
1682 -u "IV used" \
1683 -U "IV used"
1684
Janos Follathee11be62019-04-04 12:03:30 +01001685# Tests for certificate verification callback
1686run_test "Configuration-specific CRT verification callback" \
1687 "$P_SRV debug_level=3" \
1688 "$P_CLI context_crt_cb=0 debug_level=3" \
1689 0 \
Janos Follathee11be62019-04-04 12:03:30 +01001690 -S "error" \
1691 -c "Verify requested for " \
1692 -c "Use configuration-specific verification callback" \
1693 -C "Use context-specific verification callback" \
1694 -C "error"
1695
Hanno Beckerefb440a2019-04-03 13:04:33 +01001696run_test "Context-specific CRT verification callback" \
1697 "$P_SRV debug_level=3" \
1698 "$P_CLI context_crt_cb=1 debug_level=3" \
1699 0 \
Hanno Beckerefb440a2019-04-03 13:04:33 +01001700 -S "error" \
Janos Follathee11be62019-04-04 12:03:30 +01001701 -c "Verify requested for " \
1702 -c "Use context-specific verification callback" \
1703 -C "Use configuration-specific verification callback" \
Hanno Beckerefb440a2019-04-03 13:04:33 +01001704 -C "error"
1705
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001706# Tests for rc4 option
1707
Simon Butchera410af52016-05-19 22:12:18 +01001708requires_config_enabled MBEDTLS_REMOVE_ARC4_CIPHERSUITES
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001709run_test "RC4: server disabled, client enabled" \
1710 "$P_SRV" \
1711 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
1712 1 \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01001713 -s "SSL - The server has no ciphersuites in common"
1714
Simon Butchera410af52016-05-19 22:12:18 +01001715requires_config_enabled MBEDTLS_REMOVE_ARC4_CIPHERSUITES
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01001716run_test "RC4: server half, client enabled" \
1717 "$P_SRV arc4=1" \
1718 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
1719 1 \
1720 -s "SSL - The server has no ciphersuites in common"
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001721
Gilles Peskinee70605c2022-04-08 17:22:03 +02001722requires_ciphersuite_enabled TLS-RSA-WITH-RC4-128-SHA
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001723run_test "RC4: server enabled, client disabled" \
1724 "$P_SRV force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
1725 "$P_CLI" \
1726 1 \
1727 -s "SSL - The server has no ciphersuites in common"
1728
Gilles Peskinee70605c2022-04-08 17:22:03 +02001729requires_ciphersuite_enabled TLS-RSA-WITH-RC4-128-SHA
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001730run_test "RC4: both enabled" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01001731 "$P_SRV force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001732 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
1733 0 \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01001734 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001735 -S "SSL - The server has no ciphersuites in common"
1736
Hanno Beckerd26bb202018-08-17 09:54:10 +01001737# Test empty CA list in CertificateRequest in TLS 1.1 and earlier
1738
1739requires_gnutls
Hanno Beckerd26bb202018-08-17 09:54:10 +01001740run_test "CertificateRequest with empty CA list, TLS 1.1 (GnuTLS server)" \
1741 "$G_SRV"\
1742 "$P_CLI force_version=tls1_1" \
1743 0
1744
1745requires_gnutls
Hanno Beckerd26bb202018-08-17 09:54:10 +01001746run_test "CertificateRequest with empty CA list, TLS 1.0 (GnuTLS server)" \
1747 "$G_SRV"\
1748 "$P_CLI force_version=tls1" \
1749 0
1750
Gilles Peskinebc70a182017-05-09 15:59:24 +02001751# Tests for SHA-1 support
1752
1753run_test "SHA-1 forbidden by default in server certificate" \
1754 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
1755 "$P_CLI debug_level=2 allow_sha1=0" \
1756 1 \
1757 -c "The certificate is signed with an unacceptable hash"
1758
1759run_test "SHA-1 explicitly allowed in server certificate" \
1760 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
1761 "$P_CLI allow_sha1=1" \
1762 0
1763
1764run_test "SHA-256 allowed by default in server certificate" \
1765 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2-sha256.crt" \
1766 "$P_CLI allow_sha1=0" \
1767 0
1768
1769run_test "SHA-1 forbidden by default in client certificate" \
1770 "$P_SRV auth_mode=required allow_sha1=0" \
1771 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
1772 1 \
1773 -s "The certificate is signed with an unacceptable hash"
1774
1775run_test "SHA-1 explicitly allowed in client certificate" \
1776 "$P_SRV auth_mode=required allow_sha1=1" \
1777 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
1778 0
1779
1780run_test "SHA-256 allowed by default in client certificate" \
1781 "$P_SRV auth_mode=required allow_sha1=0" \
1782 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha256.crt" \
1783 0
1784
Hanno Becker7ae8a762018-08-14 15:43:35 +01001785# Tests for datagram packing
1786run_test "DTLS: multiple records in same datagram, client and server" \
1787 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
1788 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
1789 0 \
1790 -c "next record in same datagram" \
1791 -s "next record in same datagram"
1792
1793run_test "DTLS: multiple records in same datagram, client only" \
1794 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
1795 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
1796 0 \
1797 -s "next record in same datagram" \
1798 -C "next record in same datagram"
1799
1800run_test "DTLS: multiple records in same datagram, server only" \
1801 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
1802 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
1803 0 \
1804 -S "next record in same datagram" \
1805 -c "next record in same datagram"
1806
1807run_test "DTLS: multiple records in same datagram, neither client nor server" \
1808 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
1809 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
1810 0 \
1811 -S "next record in same datagram" \
1812 -C "next record in same datagram"
1813
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001814# Tests for Truncated HMAC extension
1815
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001816run_test "Truncated HMAC: client default, server default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001817 "$P_SRV debug_level=4" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001818 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001819 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00001820 -s "dumping 'expected mac' (20 bytes)" \
1821 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001822
Hanno Becker32c55012017-11-10 08:42:54 +00001823requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001824run_test "Truncated HMAC: client disabled, server default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001825 "$P_SRV debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001826 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001827 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00001828 -s "dumping 'expected mac' (20 bytes)" \
1829 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001830
Hanno Becker32c55012017-11-10 08:42:54 +00001831requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001832run_test "Truncated HMAC: client enabled, server default" \
1833 "$P_SRV debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001834 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001835 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00001836 -s "dumping 'expected mac' (20 bytes)" \
1837 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001838
Hanno Becker32c55012017-11-10 08:42:54 +00001839requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001840run_test "Truncated HMAC: client enabled, server disabled" \
1841 "$P_SRV debug_level=4 trunc_hmac=0" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001842 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001843 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00001844 -s "dumping 'expected mac' (20 bytes)" \
1845 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001846
Hanno Becker32c55012017-11-10 08:42:54 +00001847requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Hanno Becker34d0c3f2017-11-17 15:46:24 +00001848run_test "Truncated HMAC: client disabled, server enabled" \
1849 "$P_SRV debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001850 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker34d0c3f2017-11-17 15:46:24 +00001851 0 \
1852 -s "dumping 'expected mac' (20 bytes)" \
1853 -S "dumping 'expected mac' (10 bytes)"
1854
1855requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001856run_test "Truncated HMAC: client enabled, server enabled" \
1857 "$P_SRV debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001858 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01001859 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00001860 -S "dumping 'expected mac' (20 bytes)" \
1861 -s "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001862
Hanno Becker4c4f4102017-11-10 09:16:05 +00001863run_test "Truncated HMAC, DTLS: client default, server default" \
1864 "$P_SRV dtls=1 debug_level=4" \
1865 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
1866 0 \
1867 -s "dumping 'expected mac' (20 bytes)" \
1868 -S "dumping 'expected mac' (10 bytes)"
1869
1870requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
1871run_test "Truncated HMAC, DTLS: client disabled, server default" \
1872 "$P_SRV dtls=1 debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001873 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00001874 0 \
1875 -s "dumping 'expected mac' (20 bytes)" \
1876 -S "dumping 'expected mac' (10 bytes)"
1877
1878requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
1879run_test "Truncated HMAC, DTLS: client enabled, server default" \
1880 "$P_SRV dtls=1 debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001881 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00001882 0 \
1883 -s "dumping 'expected mac' (20 bytes)" \
1884 -S "dumping 'expected mac' (10 bytes)"
1885
1886requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
1887run_test "Truncated HMAC, DTLS: client enabled, server disabled" \
1888 "$P_SRV dtls=1 debug_level=4 trunc_hmac=0" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001889 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00001890 0 \
1891 -s "dumping 'expected mac' (20 bytes)" \
1892 -S "dumping 'expected mac' (10 bytes)"
1893
1894requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
1895run_test "Truncated HMAC, DTLS: client disabled, server enabled" \
1896 "$P_SRV dtls=1 debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001897 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00001898 0 \
1899 -s "dumping 'expected mac' (20 bytes)" \
1900 -S "dumping 'expected mac' (10 bytes)"
1901
1902requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
1903run_test "Truncated HMAC, DTLS: client enabled, server enabled" \
1904 "$P_SRV dtls=1 debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00001905 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001906 0 \
1907 -S "dumping 'expected mac' (20 bytes)" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001908 -s "dumping 'expected mac' (10 bytes)"
1909
Jarno Lamsa2937d812019-06-04 11:33:23 +03001910# Tests for Context serialization
1911
1912requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001913run_test "Context serialization, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02001914 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001915 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1916 0 \
1917 -c "Deserializing connection..." \
1918 -S "Deserializing connection..."
1919
1920requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1921run_test "Context serialization, client serializes, ChaChaPoly" \
1922 "$P_SRV dtls=1 serialize=0 exchanges=2" \
1923 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1924 0 \
1925 -c "Deserializing connection..." \
1926 -S "Deserializing connection..."
1927
1928requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1929run_test "Context serialization, client serializes, GCM" \
1930 "$P_SRV dtls=1 serialize=0 exchanges=2" \
1931 "$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 +03001932 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03001933 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001934 -S "Deserializing connection..."
1935
1936requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01001937requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
1938run_test "Context serialization, client serializes, with CID" \
1939 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
1940 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
1941 0 \
1942 -c "Deserializing connection..." \
1943 -S "Deserializing connection..."
1944
1945requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001946run_test "Context serialization, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02001947 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001948 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1949 0 \
1950 -C "Deserializing connection..." \
1951 -s "Deserializing connection..."
1952
1953requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1954run_test "Context serialization, server serializes, ChaChaPoly" \
1955 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1956 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1957 0 \
1958 -C "Deserializing connection..." \
1959 -s "Deserializing connection..."
1960
1961requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1962run_test "Context serialization, server serializes, GCM" \
1963 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1964 "$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 +03001965 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03001966 -C "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03001967 -s "Deserializing connection..."
1968
1969requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01001970requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
1971run_test "Context serialization, server serializes, with CID" \
1972 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
1973 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
1974 0 \
1975 -C "Deserializing connection..." \
1976 -s "Deserializing connection..."
1977
1978requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001979run_test "Context serialization, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02001980 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01001981 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
1982 0 \
1983 -c "Deserializing connection..." \
1984 -s "Deserializing connection..."
1985
1986requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1987run_test "Context serialization, both serialize, ChaChaPoly" \
1988 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1989 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
1990 0 \
1991 -c "Deserializing connection..." \
1992 -s "Deserializing connection..."
1993
1994requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
1995run_test "Context serialization, both serialize, GCM" \
1996 "$P_SRV dtls=1 serialize=1 exchanges=2" \
1997 "$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 +03001998 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03001999 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002000 -s "Deserializing connection..."
2001
Jarno Lamsac2376f02019-06-06 10:44:14 +03002002requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002003requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2004run_test "Context serialization, both serialize, with CID" \
2005 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
2006 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
2007 0 \
2008 -c "Deserializing connection..." \
2009 -s "Deserializing connection..."
2010
2011requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002012run_test "Context serialization, re-init, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002013 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002014 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2015 0 \
2016 -c "Deserializing connection..." \
2017 -S "Deserializing connection..."
2018
2019requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2020run_test "Context serialization, re-init, client serializes, ChaChaPoly" \
2021 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2022 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2023 0 \
2024 -c "Deserializing connection..." \
2025 -S "Deserializing connection..."
2026
2027requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2028run_test "Context serialization, re-init, client serializes, GCM" \
2029 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2030 "$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 +03002031 0 \
2032 -c "Deserializing connection..." \
2033 -S "Deserializing connection..."
2034
Jarno Lamsac2376f02019-06-06 10:44:14 +03002035requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002036requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2037run_test "Context serialization, re-init, client serializes, with CID" \
2038 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
2039 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2040 0 \
2041 -c "Deserializing connection..." \
2042 -S "Deserializing connection..."
2043
2044requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002045run_test "Context serialization, re-init, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002046 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002047 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2048 0 \
2049 -C "Deserializing connection..." \
2050 -s "Deserializing connection..."
2051
2052requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2053run_test "Context serialization, re-init, server serializes, ChaChaPoly" \
2054 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2055 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2056 0 \
2057 -C "Deserializing connection..." \
2058 -s "Deserializing connection..."
2059
2060requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2061run_test "Context serialization, re-init, server serializes, GCM" \
2062 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2063 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002064 0 \
2065 -C "Deserializing connection..." \
2066 -s "Deserializing connection..."
2067
Jarno Lamsac2376f02019-06-06 10:44:14 +03002068requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002069requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2070run_test "Context serialization, re-init, server serializes, with CID" \
2071 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2072 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
2073 0 \
2074 -C "Deserializing connection..." \
2075 -s "Deserializing connection..."
2076
2077requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002078run_test "Context serialization, re-init, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002079 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002080 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2081 0 \
2082 -c "Deserializing connection..." \
2083 -s "Deserializing connection..."
2084
2085requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2086run_test "Context serialization, re-init, both serialize, ChaChaPoly" \
2087 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2088 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2089 0 \
2090 -c "Deserializing connection..." \
2091 -s "Deserializing connection..."
2092
2093requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2094run_test "Context serialization, re-init, both serialize, GCM" \
2095 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2096 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002097 0 \
2098 -c "Deserializing connection..." \
2099 -s "Deserializing connection..."
2100
Hanno Becker1b18fd32019-08-30 11:18:59 +01002101requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2102requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2103run_test "Context serialization, re-init, both serialize, with CID" \
2104 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2105 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2106 0 \
2107 -c "Deserializing connection..." \
2108 -s "Deserializing connection..."
2109
Piotr Nowicki3de298f2020-04-16 14:35:19 +02002110requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2111run_test "Saving the serialized context to a file" \
2112 "$P_SRV dtls=1 serialize=1 context_file=context_srv.txt" \
2113 "$P_CLI dtls=1 serialize=1 context_file=context_cli.txt" \
2114 0 \
2115 -s "Save serialized context to a file... ok" \
2116 -c "Save serialized context to a file... ok"
2117rm -f context_srv.txt
2118rm -f context_cli.txt
2119
Hanno Becker7cf463e2019-04-09 18:08:47 +01002120# Tests for DTLS Connection ID extension
2121
Hanno Becker7cf463e2019-04-09 18:08:47 +01002122# So far, the CID API isn't implemented, so we can't
2123# grep for output witnessing its use. This needs to be
2124# changed once the CID extension is implemented.
2125
Hanno Beckera0e20d02019-05-15 14:03:01 +01002126requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002127run_test "Connection ID: Cli enabled, Srv disabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002128 "$P_SRV debug_level=3 dtls=1 cid=0" \
2129 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2130 0 \
2131 -s "Disable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002132 -s "found CID extension" \
2133 -s "Client sent CID extension, but CID disabled" \
Hanno Becker6b78c832019-04-25 17:01:43 +01002134 -c "Enable use of CID extension." \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002135 -c "client hello, adding CID extension" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002136 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002137 -C "found CID extension" \
2138 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002139 -C "Copy CIDs into SSL transform" \
2140 -c "Use of Connection ID was rejected by the server"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002141
Hanno Beckera0e20d02019-05-15 14:03:01 +01002142requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002143run_test "Connection ID: Cli disabled, Srv enabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002144 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2145 "$P_CLI debug_level=3 dtls=1 cid=0" \
2146 0 \
2147 -c "Disable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002148 -C "client hello, adding CID extension" \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002149 -S "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002150 -s "Enable use of CID extension." \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002151 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002152 -C "found CID extension" \
2153 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002154 -C "Copy CIDs into SSL transform" \
Hanno Beckerb3e9dd52019-05-08 13:19:53 +01002155 -s "Use of Connection ID was not offered by client"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002156
Hanno Beckera0e20d02019-05-15 14:03:01 +01002157requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002158run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002159 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2160 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef" \
2161 0 \
2162 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002163 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002164 -c "client hello, adding CID extension" \
2165 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002166 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002167 -s "server hello, adding CID extension" \
2168 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002169 -c "Use of CID extension negotiated" \
2170 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002171 -c "Copy CIDs into SSL transform" \
2172 -c "Peer CID (length 2 Bytes): de ad" \
2173 -s "Peer CID (length 2 Bytes): be ef" \
2174 -s "Use of Connection ID has been negotiated" \
2175 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002176
Hanno Beckera0e20d02019-05-15 14:03:01 +01002177requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002178run_test "Connection ID, 3D: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002179 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002180 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead" \
2181 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef" \
2182 0 \
2183 -c "Enable use of CID extension." \
2184 -s "Enable use of CID extension." \
2185 -c "client hello, adding CID extension" \
2186 -s "found CID extension" \
2187 -s "Use of CID extension negotiated" \
2188 -s "server hello, adding CID extension" \
2189 -c "found CID extension" \
2190 -c "Use of CID extension negotiated" \
2191 -s "Copy CIDs into SSL transform" \
2192 -c "Copy CIDs into SSL transform" \
2193 -c "Peer CID (length 2 Bytes): de ad" \
2194 -s "Peer CID (length 2 Bytes): be ef" \
2195 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002196 -c "Use of Connection ID has been negotiated" \
2197 -c "ignoring unexpected CID" \
2198 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002199
Hanno Beckera0e20d02019-05-15 14:03:01 +01002200requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002201run_test "Connection ID, MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
2202 -p "$P_PXY mtu=800" \
2203 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
2204 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
2205 0 \
2206 -c "Enable use of CID extension." \
2207 -s "Enable use of CID extension." \
2208 -c "client hello, adding CID extension" \
2209 -s "found CID extension" \
2210 -s "Use of CID extension negotiated" \
2211 -s "server hello, adding CID extension" \
2212 -c "found CID extension" \
2213 -c "Use of CID extension negotiated" \
2214 -s "Copy CIDs into SSL transform" \
2215 -c "Copy CIDs into SSL transform" \
2216 -c "Peer CID (length 2 Bytes): de ad" \
2217 -s "Peer CID (length 2 Bytes): be ef" \
2218 -s "Use of Connection ID has been negotiated" \
2219 -c "Use of Connection ID has been negotiated"
2220
Hanno Beckera0e20d02019-05-15 14:03:01 +01002221requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002222run_test "Connection ID, 3D+MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002223 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002224 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
2225 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
2226 0 \
2227 -c "Enable use of CID extension." \
2228 -s "Enable use of CID extension." \
2229 -c "client hello, adding CID extension" \
2230 -s "found CID extension" \
2231 -s "Use of CID extension negotiated" \
2232 -s "server hello, adding CID extension" \
2233 -c "found CID extension" \
2234 -c "Use of CID extension negotiated" \
2235 -s "Copy CIDs into SSL transform" \
2236 -c "Copy CIDs into SSL transform" \
2237 -c "Peer CID (length 2 Bytes): de ad" \
2238 -s "Peer CID (length 2 Bytes): be ef" \
2239 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002240 -c "Use of Connection ID has been negotiated" \
2241 -c "ignoring unexpected CID" \
2242 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002243
Hanno Beckera0e20d02019-05-15 14:03:01 +01002244requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002245run_test "Connection ID: Cli+Srv enabled, Cli CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002246 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2247 "$P_CLI debug_level=3 dtls=1 cid=1" \
2248 0 \
2249 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002250 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002251 -c "client hello, adding CID extension" \
2252 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002253 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002254 -s "server hello, adding CID extension" \
2255 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002256 -c "Use of CID extension negotiated" \
2257 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002258 -c "Copy CIDs into SSL transform" \
2259 -c "Peer CID (length 4 Bytes): de ad be ef" \
2260 -s "Peer CID (length 0 Bytes):" \
2261 -s "Use of Connection ID has been negotiated" \
2262 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002263
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
Hanno Beckera0e20d02019-05-15 14:03:01 +01002284requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002285run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002286 "$P_SRV debug_level=3 dtls=1 cid=1" \
2287 "$P_CLI debug_level=3 dtls=1 cid=1" \
2288 0 \
2289 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002290 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002291 -c "client hello, adding CID extension" \
2292 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002293 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002294 -s "server hello, adding CID extension" \
2295 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002296 -c "Use of CID extension negotiated" \
2297 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002298 -c "Copy CIDs into SSL transform" \
2299 -S "Use of Connection ID has been negotiated" \
2300 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002301
Hanno Beckera0e20d02019-05-15 14:03:01 +01002302requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002303run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002304 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2305 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2306 0 \
2307 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002308 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002309 -c "client hello, adding CID extension" \
2310 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002311 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002312 -s "server hello, adding CID extension" \
2313 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002314 -c "Use of CID extension negotiated" \
2315 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002316 -c "Copy CIDs into SSL transform" \
2317 -c "Peer CID (length 2 Bytes): de ad" \
2318 -s "Peer CID (length 2 Bytes): be ef" \
2319 -s "Use of Connection ID has been negotiated" \
2320 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002321
Hanno Beckera0e20d02019-05-15 14:03:01 +01002322requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002323run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002324 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2325 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2326 0 \
2327 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002328 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002329 -c "client hello, adding CID extension" \
2330 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002331 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002332 -s "server hello, adding CID extension" \
2333 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002334 -c "Use of CID extension negotiated" \
2335 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002336 -c "Copy CIDs into SSL transform" \
2337 -c "Peer CID (length 4 Bytes): de ad be ef" \
2338 -s "Peer CID (length 0 Bytes):" \
2339 -s "Use of Connection ID has been negotiated" \
2340 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002341
Hanno Beckera0e20d02019-05-15 14:03:01 +01002342requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002343run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002344 "$P_SRV debug_level=3 dtls=1 cid=1" \
2345 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2346 0 \
2347 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002348 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002349 -c "client hello, adding CID extension" \
2350 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002351 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002352 -s "server hello, adding CID extension" \
2353 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002354 -c "Use of CID extension negotiated" \
2355 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002356 -c "Copy CIDs into SSL transform" \
2357 -s "Peer CID (length 4 Bytes): de ad be ef" \
2358 -c "Peer CID (length 0 Bytes):" \
2359 -s "Use of Connection ID has been negotiated" \
2360 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002361
Hanno Beckera0e20d02019-05-15 14:03:01 +01002362requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002363run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002364 "$P_SRV debug_level=3 dtls=1 cid=1" \
2365 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2366 0 \
2367 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002368 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002369 -c "client hello, adding CID extension" \
2370 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002371 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002372 -s "server hello, adding CID extension" \
2373 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002374 -c "Use of CID extension negotiated" \
2375 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002376 -c "Copy CIDs into SSL transform" \
2377 -S "Use of Connection ID has been negotiated" \
2378 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002379
Hanno Beckera0e20d02019-05-15 14:03:01 +01002380requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002381run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002382 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2383 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2384 0 \
2385 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002386 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002387 -c "client hello, adding CID extension" \
2388 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002389 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002390 -s "server hello, adding CID extension" \
2391 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002392 -c "Use of CID extension negotiated" \
2393 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002394 -c "Copy CIDs into SSL transform" \
2395 -c "Peer CID (length 2 Bytes): de ad" \
2396 -s "Peer CID (length 2 Bytes): be ef" \
2397 -s "Use of Connection ID has been negotiated" \
2398 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002399
Hanno Beckera0e20d02019-05-15 14:03:01 +01002400requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002401run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002402 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2403 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2404 0 \
2405 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002406 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002407 -c "client hello, adding CID extension" \
2408 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002409 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002410 -s "server hello, adding CID extension" \
2411 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002412 -c "Use of CID extension negotiated" \
2413 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002414 -c "Copy CIDs into SSL transform" \
2415 -c "Peer CID (length 4 Bytes): de ad be ef" \
2416 -s "Peer CID (length 0 Bytes):" \
2417 -s "Use of Connection ID has been negotiated" \
2418 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002419
Hanno Beckera0e20d02019-05-15 14:03:01 +01002420requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002421run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002422 "$P_SRV debug_level=3 dtls=1 cid=1" \
2423 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2424 0 \
2425 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002426 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002427 -c "client hello, adding CID extension" \
2428 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002429 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002430 -s "server hello, adding CID extension" \
2431 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002432 -c "Use of CID extension negotiated" \
2433 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002434 -c "Copy CIDs into SSL transform" \
2435 -s "Peer CID (length 4 Bytes): de ad be ef" \
2436 -c "Peer CID (length 0 Bytes):" \
2437 -s "Use of Connection ID has been negotiated" \
2438 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002439
Hanno Beckera0e20d02019-05-15 14:03:01 +01002440requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002441run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002442 "$P_SRV debug_level=3 dtls=1 cid=1" \
2443 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2444 0 \
2445 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002446 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002447 -c "client hello, adding CID extension" \
2448 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002449 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002450 -s "server hello, adding CID extension" \
2451 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002452 -c "Use of CID extension negotiated" \
2453 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002454 -c "Copy CIDs into SSL transform" \
2455 -S "Use of Connection ID has been negotiated" \
2456 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002457
Hanno Beckera0e20d02019-05-15 14:03:01 +01002458requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker9bae30d2019-04-23 11:52:44 +01002459requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002460run_test "Connection ID: Cli+Srv enabled, renegotiate without change of CID" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002461 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2462 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2463 0 \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002464 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2465 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2466 -s "(initial handshake) Use of Connection ID has been negotiated" \
2467 -c "(initial handshake) Use of Connection ID has been negotiated" \
2468 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2469 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2470 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2471 -c "(after renegotiation) Use of Connection ID has been negotiated"
2472
Hanno Beckera0e20d02019-05-15 14:03:01 +01002473requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002474requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002475run_test "Connection ID: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002476 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
2477 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2478 0 \
2479 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2480 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2481 -s "(initial handshake) Use of Connection ID has been negotiated" \
2482 -c "(initial handshake) Use of Connection ID has been negotiated" \
2483 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2484 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2485 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2486 -c "(after renegotiation) Use of Connection ID has been negotiated"
2487
Hanno Beckera0e20d02019-05-15 14:03:01 +01002488requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002489requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002490run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate with different CID" \
2491 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead cid_val_renego=beef renegotiation=1" \
2492 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2493 0 \
2494 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2495 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2496 -s "(initial handshake) Use of Connection ID has been negotiated" \
2497 -c "(initial handshake) Use of Connection ID has been negotiated" \
2498 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2499 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2500 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2501 -c "(after renegotiation) Use of Connection ID has been negotiated"
2502
Hanno Beckera0e20d02019-05-15 14:03:01 +01002503requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002504requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002505run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002506 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002507 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
2508 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2509 0 \
2510 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2511 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2512 -s "(initial handshake) Use of Connection ID has been negotiated" \
2513 -c "(initial handshake) Use of Connection ID has been negotiated" \
2514 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2515 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2516 -s "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002517 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2518 -c "ignoring unexpected CID" \
2519 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002520
Hanno Beckera0e20d02019-05-15 14:03:01 +01002521requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002522requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2523run_test "Connection ID: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002524 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2525 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2526 0 \
2527 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2528 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2529 -s "(initial handshake) Use of Connection ID has been negotiated" \
2530 -c "(initial handshake) Use of Connection ID has been negotiated" \
2531 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2532 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2533 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2534 -S "(after renegotiation) Use of Connection ID has been negotiated"
2535
Hanno Beckera0e20d02019-05-15 14:03:01 +01002536requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002537requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002538run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate without CID" \
2539 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2540 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2541 0 \
2542 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2543 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2544 -s "(initial handshake) Use of Connection ID has been negotiated" \
2545 -c "(initial handshake) Use of Connection ID has been negotiated" \
2546 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2547 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2548 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2549 -S "(after renegotiation) Use of Connection ID has been negotiated"
2550
Hanno Beckera0e20d02019-05-15 14:03:01 +01002551requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002552requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002553run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002554 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002555 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2556 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2557 0 \
2558 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2559 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2560 -s "(initial handshake) Use of Connection ID has been negotiated" \
2561 -c "(initial handshake) Use of Connection ID has been negotiated" \
2562 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2563 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2564 -C "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002565 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2566 -c "ignoring unexpected CID" \
2567 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002568
Hanno Beckera0e20d02019-05-15 14:03:01 +01002569requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002570requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2571run_test "Connection ID: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002572 "$P_SRV debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2573 "$P_CLI debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
2574 0 \
2575 -S "(initial handshake) Use of Connection ID has been negotiated" \
2576 -C "(initial handshake) Use of Connection ID has been negotiated" \
2577 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2578 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2579 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2580 -s "(after renegotiation) Use of Connection ID has been negotiated"
2581
Hanno Beckera0e20d02019-05-15 14:03:01 +01002582requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002583requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002584run_test "Connection ID, no packing: Cli+Srv enabled, CID on renegotiation" \
2585 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2586 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
2587 0 \
2588 -S "(initial handshake) Use of Connection ID has been negotiated" \
2589 -C "(initial handshake) Use of Connection ID has been negotiated" \
2590 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2591 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2592 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2593 -s "(after renegotiation) Use of Connection ID has been negotiated"
2594
Hanno Beckera0e20d02019-05-15 14:03:01 +01002595requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002596requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002597run_test "Connection ID, 3D+MTU: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002598 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002599 "$P_SRV debug_level=3 mtu=800 dtls=1 dgram_packing=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2600 "$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" \
2601 0 \
2602 -S "(initial handshake) Use of Connection ID has been negotiated" \
2603 -C "(initial handshake) Use of Connection ID has been negotiated" \
2604 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2605 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2606 -c "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002607 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2608 -c "ignoring unexpected CID" \
2609 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002610
Hanno Beckera0e20d02019-05-15 14:03:01 +01002611requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002612requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2613run_test "Connection ID: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002614 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2615 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2616 0 \
2617 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2618 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2619 -s "(initial handshake) Use of Connection ID has been negotiated" \
2620 -c "(initial handshake) Use of Connection ID has been negotiated" \
2621 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2622 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2623 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2624 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2625 -s "(after renegotiation) Use of Connection ID was not offered by client"
2626
Hanno Beckera0e20d02019-05-15 14:03:01 +01002627requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002628requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002629run_test "Connection ID, 3D: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002630 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002631 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2632 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2633 0 \
2634 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2635 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2636 -s "(initial handshake) Use of Connection ID has been negotiated" \
2637 -c "(initial handshake) Use of Connection ID has been negotiated" \
2638 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2639 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2640 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2641 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002642 -s "(after renegotiation) Use of Connection ID was not offered by client" \
2643 -c "ignoring unexpected CID" \
2644 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002645
Hanno Beckera0e20d02019-05-15 14:03:01 +01002646requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002647requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2648run_test "Connection ID: Cli+Srv enabled, Srv disables on renegotiation" \
2649 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2650 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2651 0 \
2652 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2653 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2654 -s "(initial handshake) Use of Connection ID has been negotiated" \
2655 -c "(initial handshake) Use of Connection ID has been negotiated" \
2656 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2657 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2658 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2659 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2660 -c "(after renegotiation) Use of Connection ID was rejected by the server"
2661
Hanno Beckera0e20d02019-05-15 14:03:01 +01002662requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002663requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2664run_test "Connection ID, 3D: Cli+Srv enabled, Srv disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002665 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002666 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2667 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2668 0 \
2669 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2670 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2671 -s "(initial handshake) Use of Connection ID has been negotiated" \
2672 -c "(initial handshake) Use of Connection ID has been negotiated" \
2673 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2674 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2675 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2676 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002677 -c "(after renegotiation) Use of Connection ID was rejected by the server" \
2678 -c "ignoring unexpected CID" \
2679 -s "ignoring unexpected CID"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002680
Yuto Takano71879532021-07-09 11:32:38 +01002681# This and the test below it require MAX_CONTENT_LEN to be at least MFL+1, because the
2682# tests check that the buffer contents are reallocated when the message is
2683# larger than the buffer.
Andrzej Kurekb6577832020-06-08 07:08:03 -04002684requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2685requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano71879532021-07-09 11:32:38 +01002686requires_max_content_len 513
Andrzej Kurekb6577832020-06-08 07:08:03 -04002687run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=512" \
2688 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
2689 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=512 dtls=1 cid=1 cid_val=beef" \
2690 0 \
2691 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2692 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2693 -s "(initial handshake) Use of Connection ID has been negotiated" \
2694 -c "(initial handshake) Use of Connection ID has been negotiated" \
2695 -s "Reallocating in_buf" \
2696 -s "Reallocating out_buf"
2697
2698requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2699requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano71879532021-07-09 11:32:38 +01002700requires_max_content_len 1025
Andrzej Kurekb6577832020-06-08 07:08:03 -04002701run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=1024" \
2702 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
2703 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=1024 dtls=1 cid=1 cid_val=beef" \
2704 0 \
2705 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2706 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2707 -s "(initial handshake) Use of Connection ID has been negotiated" \
2708 -c "(initial handshake) Use of Connection ID has been negotiated" \
2709 -s "Reallocating in_buf" \
2710 -s "Reallocating out_buf"
2711
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002712# Tests for Encrypt-then-MAC extension
2713
2714run_test "Encrypt then MAC: default" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002715 "$P_SRV debug_level=3 \
2716 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002717 "$P_CLI debug_level=3" \
2718 0 \
2719 -c "client hello, adding encrypt_then_mac extension" \
2720 -s "found encrypt then mac extension" \
2721 -s "server hello, adding encrypt then mac extension" \
2722 -c "found encrypt_then_mac extension" \
2723 -c "using encrypt then mac" \
2724 -s "using encrypt then mac"
2725
2726run_test "Encrypt then MAC: client enabled, server disabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002727 "$P_SRV debug_level=3 etm=0 \
2728 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002729 "$P_CLI debug_level=3 etm=1" \
2730 0 \
2731 -c "client hello, adding encrypt_then_mac extension" \
2732 -s "found encrypt then mac extension" \
2733 -S "server hello, adding encrypt then mac extension" \
2734 -C "found encrypt_then_mac extension" \
2735 -C "using encrypt then mac" \
2736 -S "using encrypt then mac"
2737
Manuel Pégourié-Gonnard78e745f2014-11-04 15:44:06 +01002738run_test "Encrypt then MAC: client enabled, aead cipher" \
2739 "$P_SRV debug_level=3 etm=1 \
2740 force_ciphersuite=TLS-RSA-WITH-AES-128-GCM-SHA256" \
2741 "$P_CLI debug_level=3 etm=1" \
2742 0 \
2743 -c "client hello, adding encrypt_then_mac extension" \
2744 -s "found encrypt then mac extension" \
2745 -S "server hello, adding encrypt then mac extension" \
2746 -C "found encrypt_then_mac extension" \
2747 -C "using encrypt then mac" \
2748 -S "using encrypt then mac"
2749
2750run_test "Encrypt then MAC: client enabled, stream cipher" \
2751 "$P_SRV debug_level=3 etm=1 \
2752 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01002753 "$P_CLI debug_level=3 etm=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard78e745f2014-11-04 15:44:06 +01002754 0 \
2755 -c "client hello, adding encrypt_then_mac extension" \
2756 -s "found encrypt then mac extension" \
2757 -S "server hello, adding encrypt then mac extension" \
2758 -C "found encrypt_then_mac extension" \
2759 -C "using encrypt then mac" \
2760 -S "using encrypt then mac"
2761
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002762run_test "Encrypt then MAC: client disabled, server enabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002763 "$P_SRV debug_level=3 etm=1 \
2764 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002765 "$P_CLI debug_level=3 etm=0" \
2766 0 \
2767 -C "client hello, adding encrypt_then_mac extension" \
2768 -S "found encrypt then mac extension" \
2769 -S "server hello, adding encrypt then mac extension" \
2770 -C "found encrypt_then_mac extension" \
2771 -C "using encrypt then mac" \
2772 -S "using encrypt then mac"
2773
2774run_test "Encrypt then MAC: client SSLv3, server enabled" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01002775 "$P_SRV debug_level=3 min_version=ssl3 \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002776 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002777 "$P_CLI debug_level=3 force_version=ssl3" \
2778 0 \
2779 -C "client hello, adding encrypt_then_mac extension" \
2780 -S "found encrypt then mac extension" \
2781 -S "server hello, adding encrypt then mac extension" \
2782 -C "found encrypt_then_mac extension" \
2783 -C "using encrypt then mac" \
2784 -S "using encrypt then mac"
2785
2786run_test "Encrypt then MAC: client enabled, server SSLv3" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002787 "$P_SRV debug_level=3 force_version=ssl3 \
2788 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01002789 "$P_CLI debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002790 0 \
2791 -c "client hello, adding encrypt_then_mac extension" \
Janos Follath00efff72016-05-06 13:48:23 +01002792 -S "found encrypt then mac extension" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002793 -S "server hello, adding encrypt then mac extension" \
2794 -C "found encrypt_then_mac extension" \
2795 -C "using encrypt then mac" \
2796 -S "using encrypt then mac"
2797
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002798# Tests for Extended Master Secret extension
2799
Gilles Peskine111fde42022-02-25 19:51:52 +01002800requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002801run_test "Extended Master Secret: default" \
2802 "$P_SRV debug_level=3" \
2803 "$P_CLI debug_level=3" \
2804 0 \
2805 -c "client hello, adding extended_master_secret extension" \
2806 -s "found extended master secret extension" \
2807 -s "server hello, adding extended master secret extension" \
2808 -c "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002809 -c "session hash for extended master secret" \
2810 -s "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002811
Gilles Peskine111fde42022-02-25 19:51:52 +01002812requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002813run_test "Extended Master Secret: client enabled, server disabled" \
2814 "$P_SRV debug_level=3 extended_ms=0" \
2815 "$P_CLI debug_level=3 extended_ms=1" \
2816 0 \
2817 -c "client hello, adding extended_master_secret extension" \
2818 -s "found extended master secret extension" \
2819 -S "server hello, adding extended master secret extension" \
2820 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002821 -C "session hash for extended master secret" \
2822 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002823
Gilles Peskine111fde42022-02-25 19:51:52 +01002824requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002825run_test "Extended Master Secret: client disabled, server enabled" \
2826 "$P_SRV debug_level=3 extended_ms=1" \
2827 "$P_CLI debug_level=3 extended_ms=0" \
2828 0 \
2829 -C "client hello, adding extended_master_secret extension" \
2830 -S "found extended master secret extension" \
2831 -S "server hello, adding extended master secret extension" \
2832 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002833 -C "session hash for extended master secret" \
2834 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02002835
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02002836run_test "Extended Master Secret: client SSLv3, server enabled" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01002837 "$P_SRV debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02002838 "$P_CLI debug_level=3 force_version=ssl3" \
2839 0 \
2840 -C "client hello, adding extended_master_secret extension" \
2841 -S "found extended master secret extension" \
2842 -S "server hello, adding extended master secret extension" \
2843 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002844 -C "session hash for extended master secret" \
2845 -S "session hash for extended master secret"
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02002846
2847run_test "Extended Master Secret: client enabled, server SSLv3" \
2848 "$P_SRV debug_level=3 force_version=ssl3" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01002849 "$P_CLI debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02002850 0 \
2851 -c "client hello, adding extended_master_secret extension" \
Janos Follath00efff72016-05-06 13:48:23 +01002852 -S "found extended master secret extension" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02002853 -S "server hello, adding extended master secret extension" \
2854 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02002855 -C "session hash for extended master secret" \
2856 -S "session hash for extended master secret"
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02002857
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002858# Tests for FALLBACK_SCSV
2859
2860run_test "Fallback SCSV: default" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02002861 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002862 "$P_CLI debug_level=3 force_version=tls1_1" \
2863 0 \
2864 -C "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002865 -S "received FALLBACK_SCSV" \
2866 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002867 -C "is a fatal alert message (msg 86)"
2868
2869run_test "Fallback SCSV: explicitly disabled" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02002870 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002871 "$P_CLI debug_level=3 force_version=tls1_1 fallback=0" \
2872 0 \
2873 -C "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002874 -S "received FALLBACK_SCSV" \
2875 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002876 -C "is a fatal alert message (msg 86)"
2877
2878run_test "Fallback SCSV: enabled" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02002879 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002880 "$P_CLI debug_level=3 force_version=tls1_1 fallback=1" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002881 1 \
2882 -c "adding FALLBACK_SCSV" \
2883 -s "received FALLBACK_SCSV" \
2884 -s "inapropriate fallback" \
2885 -c "is a fatal alert message (msg 86)"
2886
2887run_test "Fallback SCSV: enabled, max version" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02002888 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002889 "$P_CLI debug_level=3 fallback=1" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002890 0 \
2891 -c "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002892 -s "received FALLBACK_SCSV" \
2893 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02002894 -C "is a fatal alert message (msg 86)"
2895
2896requires_openssl_with_fallback_scsv
2897run_test "Fallback SCSV: default, openssl server" \
2898 "$O_SRV" \
2899 "$P_CLI debug_level=3 force_version=tls1_1 fallback=0" \
2900 0 \
2901 -C "adding FALLBACK_SCSV" \
2902 -C "is a fatal alert message (msg 86)"
2903
2904requires_openssl_with_fallback_scsv
2905run_test "Fallback SCSV: enabled, openssl server" \
2906 "$O_SRV" \
2907 "$P_CLI debug_level=3 force_version=tls1_1 fallback=1" \
2908 1 \
2909 -c "adding FALLBACK_SCSV" \
2910 -c "is a fatal alert message (msg 86)"
2911
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002912requires_openssl_with_fallback_scsv
2913run_test "Fallback SCSV: disabled, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02002914 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002915 "$O_CLI -tls1_1" \
2916 0 \
2917 -S "received FALLBACK_SCSV" \
2918 -S "inapropriate fallback"
2919
2920requires_openssl_with_fallback_scsv
2921run_test "Fallback SCSV: enabled, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02002922 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002923 "$O_CLI -tls1_1 -fallback_scsv" \
2924 1 \
2925 -s "received FALLBACK_SCSV" \
2926 -s "inapropriate fallback"
2927
2928requires_openssl_with_fallback_scsv
2929run_test "Fallback SCSV: enabled, max version, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02002930 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02002931 "$O_CLI -fallback_scsv" \
2932 0 \
2933 -s "received FALLBACK_SCSV" \
2934 -S "inapropriate fallback"
2935
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002936# Test sending and receiving empty application data records
2937
2938run_test "Encrypt then MAC: empty application data record" \
2939 "$P_SRV auth_mode=none debug_level=4 etm=1" \
2940 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA" \
2941 0 \
2942 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
2943 -s "dumping 'input payload after decrypt' (0 bytes)" \
2944 -c "0 bytes written in 1 fragments"
2945
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01002946run_test "Encrypt then MAC: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002947 "$P_SRV auth_mode=none debug_level=4 etm=0" \
2948 "$P_CLI auth_mode=none etm=0 request_size=0" \
2949 0 \
2950 -s "dumping 'input payload after decrypt' (0 bytes)" \
2951 -c "0 bytes written in 1 fragments"
2952
2953run_test "Encrypt then MAC, DTLS: empty application data record" \
2954 "$P_SRV auth_mode=none debug_level=4 etm=1 dtls=1" \
2955 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA dtls=1" \
2956 0 \
2957 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
2958 -s "dumping 'input payload after decrypt' (0 bytes)" \
2959 -c "0 bytes written in 1 fragments"
2960
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01002961run_test "Encrypt then MAC, DTLS: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01002962 "$P_SRV auth_mode=none debug_level=4 etm=0 dtls=1" \
2963 "$P_CLI auth_mode=none etm=0 request_size=0 dtls=1" \
2964 0 \
2965 -s "dumping 'input payload after decrypt' (0 bytes)" \
2966 -c "0 bytes written in 1 fragments"
2967
Gilles Peskined50177f2017-05-16 17:53:03 +02002968## ClientHello generated with
2969## "openssl s_client -CAfile tests/data_files/test-ca.crt -tls1_1 -connect localhost:4433 -cipher ..."
2970## then manually twiddling the ciphersuite list.
2971## The ClientHello content is spelled out below as a hex string as
2972## "prefix ciphersuite1 ciphersuite2 ciphersuite3 ciphersuite4 suffix".
2973## The expected response is an inappropriate_fallback alert.
Gilles Peskinebba3b4c2022-04-09 00:08:47 +02002974requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV
Gilles Peskined50177f2017-05-16 17:53:03 +02002975run_test "Fallback SCSV: beginning of list" \
2976 "$P_SRV debug_level=2" \
2977 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 5600 0031 0032 0033 0100000900230000000f000101' '15030200020256'" \
2978 0 \
2979 -s "received FALLBACK_SCSV" \
2980 -s "inapropriate fallback"
2981
Gilles Peskinebba3b4c2022-04-09 00:08:47 +02002982requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV
Gilles Peskined50177f2017-05-16 17:53:03 +02002983run_test "Fallback SCSV: end of list" \
2984 "$P_SRV debug_level=2" \
2985 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 0031 0032 0033 5600 0100000900230000000f000101' '15030200020256'" \
2986 0 \
2987 -s "received FALLBACK_SCSV" \
2988 -s "inapropriate fallback"
2989
2990## Here the expected response is a valid ServerHello prefix, up to the random.
Gilles Peskinebba3b4c2022-04-09 00:08:47 +02002991requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV
Gilles Peskined50177f2017-05-16 17:53:03 +02002992run_test "Fallback SCSV: not in list" \
2993 "$P_SRV debug_level=2" \
2994 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 0056 0031 0032 0033 0100000900230000000f000101' '16030200300200002c0302'" \
2995 0 \
2996 -S "received FALLBACK_SCSV" \
2997 -S "inapropriate fallback"
2998
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01002999# Tests for CBC 1/n-1 record splitting
3000
3001run_test "CBC Record splitting: TLS 1.2, no splitting" \
3002 "$P_SRV" \
3003 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
Xiaofei Baif40545d2021-12-02 08:43:35 +00003004 request_size=123 force_version=tls12" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003005 0 \
3006 -s "Read from client: 123 bytes read" \
3007 -S "Read from client: 1 bytes read" \
3008 -S "122 bytes read"
3009
3010run_test "CBC Record splitting: TLS 1.1, no splitting" \
3011 "$P_SRV" \
3012 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3013 request_size=123 force_version=tls1_1" \
3014 0 \
3015 -s "Read from client: 123 bytes read" \
3016 -S "Read from client: 1 bytes read" \
3017 -S "122 bytes read"
3018
3019run_test "CBC Record splitting: TLS 1.0, splitting" \
3020 "$P_SRV" \
3021 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3022 request_size=123 force_version=tls1" \
3023 0 \
3024 -S "Read from client: 123 bytes read" \
3025 -s "Read from client: 1 bytes read" \
3026 -s "122 bytes read"
3027
3028run_test "CBC Record splitting: SSLv3, splitting" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01003029 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003030 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3031 request_size=123 force_version=ssl3" \
3032 0 \
3033 -S "Read from client: 123 bytes read" \
3034 -s "Read from client: 1 bytes read" \
3035 -s "122 bytes read"
3036
3037run_test "CBC Record splitting: TLS 1.0 RC4, no splitting" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003038 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003039 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
3040 request_size=123 force_version=tls1" \
3041 0 \
3042 -s "Read from client: 123 bytes read" \
3043 -S "Read from client: 1 bytes read" \
3044 -S "122 bytes read"
3045
3046run_test "CBC Record splitting: TLS 1.0, splitting disabled" \
3047 "$P_SRV" \
3048 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3049 request_size=123 force_version=tls1 recsplit=0" \
3050 0 \
3051 -s "Read from client: 123 bytes read" \
3052 -S "Read from client: 1 bytes read" \
3053 -S "122 bytes read"
3054
Manuel Pégourié-Gonnarda852cf42015-01-13 20:56:15 +01003055run_test "CBC Record splitting: TLS 1.0, splitting, nbio" \
3056 "$P_SRV nbio=2" \
3057 "$P_CLI nbio=2 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3058 request_size=123 force_version=tls1" \
3059 0 \
3060 -S "Read from client: 123 bytes read" \
3061 -s "Read from client: 1 bytes read" \
3062 -s "122 bytes read"
3063
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003064# Tests for Session Tickets
3065
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003066run_test "Session resume using tickets: basic" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003067 "$P_SRV debug_level=3 tickets=1" \
3068 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003069 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003070 -c "client hello, adding session ticket extension" \
3071 -s "found session ticket extension" \
3072 -s "server hello, adding session ticket extension" \
3073 -c "found session_ticket extension" \
3074 -c "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003075 -S "session successfully restored from cache" \
3076 -s "session successfully restored from ticket" \
3077 -s "a session has been resumed" \
3078 -c "a session has been resumed"
3079
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003080run_test "Session resume using tickets: cache disabled" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003081 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
3082 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01003083 0 \
3084 -c "client hello, adding session ticket extension" \
3085 -s "found session ticket extension" \
3086 -s "server hello, adding session ticket extension" \
3087 -c "found session_ticket extension" \
3088 -c "parse new session ticket" \
3089 -S "session successfully restored from cache" \
3090 -s "session successfully restored from ticket" \
3091 -s "a session has been resumed" \
3092 -c "a session has been resumed"
3093
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003094run_test "Session resume using tickets: timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003095 "$P_SRV debug_level=3 tickets=1 cache_max=0 ticket_timeout=1" \
3096 "$P_CLI debug_level=3 tickets=1 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01003097 0 \
3098 -c "client hello, adding session ticket extension" \
3099 -s "found session ticket extension" \
3100 -s "server hello, adding session ticket extension" \
3101 -c "found session_ticket extension" \
3102 -c "parse new session ticket" \
3103 -S "session successfully restored from cache" \
3104 -S "session successfully restored from ticket" \
3105 -S "a session has been resumed" \
3106 -C "a session has been resumed"
3107
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003108run_test "Session resume using tickets: session copy" \
3109 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
3110 "$P_CLI debug_level=3 tickets=1 reconnect=1 reco_mode=0" \
3111 0 \
3112 -c "client hello, adding session ticket extension" \
3113 -s "found session ticket extension" \
3114 -s "server hello, adding session ticket extension" \
3115 -c "found session_ticket extension" \
3116 -c "parse new session ticket" \
3117 -S "session successfully restored from cache" \
3118 -s "session successfully restored from ticket" \
3119 -s "a session has been resumed" \
3120 -c "a session has been resumed"
3121
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003122run_test "Session resume using tickets: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01003123 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003124 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01003125 0 \
3126 -c "client hello, adding session ticket extension" \
3127 -c "found session_ticket extension" \
3128 -c "parse new session ticket" \
3129 -c "a session has been resumed"
3130
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003131run_test "Session resume using tickets: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003132 "$P_SRV debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02003133 "( $O_CLI -sess_out $SESSION; \
3134 $O_CLI -sess_in $SESSION; \
3135 rm -f $SESSION )" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01003136 0 \
3137 -s "found session ticket extension" \
3138 -s "server hello, adding session ticket extension" \
3139 -S "session successfully restored from cache" \
3140 -s "session successfully restored from ticket" \
3141 -s "a session has been resumed"
3142
Hanno Becker1d739932018-08-21 13:55:22 +01003143# Tests for Session Tickets with DTLS
3144
3145run_test "Session resume using tickets, DTLS: basic" \
3146 "$P_SRV debug_level=3 dtls=1 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003147 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003148 0 \
3149 -c "client hello, adding session ticket extension" \
3150 -s "found session ticket extension" \
3151 -s "server hello, adding session ticket extension" \
3152 -c "found session_ticket extension" \
3153 -c "parse new session ticket" \
3154 -S "session successfully restored from cache" \
3155 -s "session successfully restored from ticket" \
3156 -s "a session has been resumed" \
3157 -c "a session has been resumed"
3158
3159run_test "Session resume using tickets, DTLS: cache disabled" \
3160 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003161 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003162 0 \
3163 -c "client hello, adding session ticket extension" \
3164 -s "found session ticket extension" \
3165 -s "server hello, adding session ticket extension" \
3166 -c "found session_ticket extension" \
3167 -c "parse new session ticket" \
3168 -S "session successfully restored from cache" \
3169 -s "session successfully restored from ticket" \
3170 -s "a session has been resumed" \
3171 -c "a session has been resumed"
3172
3173run_test "Session resume using tickets, DTLS: timeout" \
3174 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0 ticket_timeout=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003175 "$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 +01003176 0 \
3177 -c "client hello, adding session ticket extension" \
3178 -s "found session ticket extension" \
3179 -s "server hello, adding session ticket extension" \
3180 -c "found session_ticket extension" \
3181 -c "parse new session ticket" \
3182 -S "session successfully restored from cache" \
3183 -S "session successfully restored from ticket" \
3184 -S "a session has been resumed" \
3185 -C "a session has been resumed"
3186
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003187run_test "Session resume using tickets, DTLS: session copy" \
3188 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003189 "$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 +02003190 0 \
3191 -c "client hello, adding session ticket extension" \
3192 -s "found session ticket extension" \
3193 -s "server hello, adding session ticket extension" \
3194 -c "found session_ticket extension" \
3195 -c "parse new session ticket" \
3196 -S "session successfully restored from cache" \
3197 -s "session successfully restored from ticket" \
3198 -s "a session has been resumed" \
3199 -c "a session has been resumed"
3200
Hanno Becker1d739932018-08-21 13:55:22 +01003201run_test "Session resume using tickets, DTLS: openssl server" \
3202 "$O_SRV -dtls1" \
3203 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \
3204 0 \
3205 -c "client hello, adding session ticket extension" \
3206 -c "found session_ticket extension" \
3207 -c "parse new session ticket" \
3208 -c "a session has been resumed"
3209
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003210# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott7ca2f392021-10-13 16:13:44 +01003211# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003212requires_openssl_next
Hanno Becker1d739932018-08-21 13:55:22 +01003213run_test "Session resume using tickets, DTLS: openssl client" \
3214 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003215 "( $O_NEXT_CLI -dtls1 -sess_out $SESSION; \
3216 $O_NEXT_CLI -dtls1 -sess_in $SESSION; \
Hanno Becker1d739932018-08-21 13:55:22 +01003217 rm -f $SESSION )" \
3218 0 \
3219 -s "found session ticket extension" \
3220 -s "server hello, adding session ticket extension" \
3221 -S "session successfully restored from cache" \
3222 -s "session successfully restored from ticket" \
3223 -s "a session has been resumed"
3224
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003225# Tests for Session Resume based on session-ID and cache
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003226
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003227run_test "Session resume using cache: tickets enabled on client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003228 "$P_SRV debug_level=3 tickets=0" \
3229 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003230 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003231 -c "client hello, adding session ticket extension" \
3232 -s "found session ticket extension" \
3233 -S "server hello, adding session ticket extension" \
3234 -C "found session_ticket extension" \
3235 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003236 -s "session successfully restored from cache" \
3237 -S "session successfully restored from ticket" \
3238 -s "a session has been resumed" \
3239 -c "a session has been resumed"
3240
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003241run_test "Session resume using cache: tickets enabled on server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003242 "$P_SRV debug_level=3 tickets=1" \
3243 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003244 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003245 -C "client hello, adding session ticket extension" \
3246 -S "found session ticket extension" \
3247 -S "server hello, adding session ticket extension" \
3248 -C "found session_ticket extension" \
3249 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003250 -s "session successfully restored from cache" \
3251 -S "session successfully restored from ticket" \
3252 -s "a session has been resumed" \
3253 -c "a session has been resumed"
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003254
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003255run_test "Session resume using cache: cache_max=0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003256 "$P_SRV debug_level=3 tickets=0 cache_max=0" \
3257 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003258 0 \
3259 -S "session successfully restored from cache" \
3260 -S "session successfully restored from ticket" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003261 -S "a session has been resumed" \
3262 -C "a session has been resumed"
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003263
Gilles Peskine111fde42022-02-25 19:51:52 +01003264requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003265run_test "Session resume using cache: cache_max=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003266 "$P_SRV debug_level=3 tickets=0 cache_max=1" \
3267 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003268 0 \
3269 -s "session successfully restored from cache" \
3270 -S "session successfully restored from ticket" \
3271 -s "a session has been resumed" \
3272 -c "a session has been resumed"
3273
Gilles Peskine111fde42022-02-25 19:51:52 +01003274requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard6df31962015-05-04 10:55:47 +02003275run_test "Session resume using cache: timeout > delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003276 "$P_SRV debug_level=3 tickets=0" \
3277 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=0" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003278 0 \
3279 -s "session successfully restored from cache" \
3280 -S "session successfully restored from ticket" \
3281 -s "a session has been resumed" \
3282 -c "a session has been resumed"
3283
Gilles Peskine111fde42022-02-25 19:51:52 +01003284requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003285run_test "Session resume using cache: timeout < delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003286 "$P_SRV debug_level=3 tickets=0 cache_timeout=1" \
3287 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003288 0 \
3289 -S "session successfully restored from cache" \
3290 -S "session successfully restored from ticket" \
3291 -S "a session has been resumed" \
3292 -C "a session has been resumed"
3293
Gilles Peskine111fde42022-02-25 19:51:52 +01003294requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003295run_test "Session resume using cache: no timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003296 "$P_SRV debug_level=3 tickets=0 cache_timeout=0" \
3297 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003298 0 \
3299 -s "session successfully restored from cache" \
3300 -S "session successfully restored from ticket" \
3301 -s "a session has been resumed" \
3302 -c "a session has been resumed"
3303
Gilles Peskine111fde42022-02-25 19:51:52 +01003304requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003305run_test "Session resume using cache: session copy" \
3306 "$P_SRV debug_level=3 tickets=0" \
3307 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_mode=0" \
3308 0 \
3309 -s "session successfully restored from cache" \
3310 -S "session successfully restored from ticket" \
3311 -s "a session has been resumed" \
3312 -c "a session has been resumed"
3313
Gilles Peskine111fde42022-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: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003316 "$P_SRV debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02003317 "( $O_CLI -sess_out $SESSION; \
3318 $O_CLI -sess_in $SESSION; \
3319 rm -f $SESSION )" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01003320 0 \
3321 -s "found session ticket extension" \
3322 -S "server hello, adding session ticket extension" \
3323 -s "session successfully restored from cache" \
3324 -S "session successfully restored from ticket" \
3325 -s "a session has been resumed"
3326
Gilles Peskine111fde42022-02-25 19:51:52 +01003327requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003328run_test "Session resume using cache: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01003329 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003330 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01003331 0 \
3332 -C "found session_ticket extension" \
3333 -C "parse new session ticket" \
3334 -c "a session has been resumed"
3335
Hanno Becker1d739932018-08-21 13:55:22 +01003336# Tests for Session Resume based on session-ID and cache, DTLS
3337
Gilles Peskine111fde42022-02-25 19:51:52 +01003338requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003339run_test "Session resume using cache, DTLS: tickets enabled on client" \
3340 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003341 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003342 0 \
3343 -c "client hello, adding session ticket extension" \
3344 -s "found session ticket extension" \
3345 -S "server hello, adding session ticket extension" \
3346 -C "found session_ticket extension" \
3347 -C "parse new session ticket" \
3348 -s "session successfully restored from cache" \
3349 -S "session successfully restored from ticket" \
3350 -s "a session has been resumed" \
3351 -c "a session has been resumed"
3352
Gilles Peskine111fde42022-02-25 19:51:52 +01003353requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003354run_test "Session resume using cache, DTLS: tickets enabled on server" \
3355 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003356 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003357 0 \
3358 -C "client hello, adding session ticket extension" \
3359 -S "found session ticket extension" \
3360 -S "server hello, adding session ticket extension" \
3361 -C "found session_ticket extension" \
3362 -C "parse new session ticket" \
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
Gilles Peskine111fde42022-02-25 19:51:52 +01003368requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003369run_test "Session resume using cache, DTLS: cache_max=0" \
3370 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003371 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003372 0 \
3373 -S "session successfully restored from cache" \
3374 -S "session successfully restored from ticket" \
3375 -S "a session has been resumed" \
3376 -C "a session has been resumed"
3377
Gilles Peskine111fde42022-02-25 19:51:52 +01003378requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003379run_test "Session resume using cache, DTLS: cache_max=1" \
3380 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003381 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003382 0 \
3383 -s "session successfully restored from cache" \
3384 -S "session successfully restored from ticket" \
3385 -s "a session has been resumed" \
3386 -c "a session has been resumed"
3387
Gilles Peskine111fde42022-02-25 19:51:52 +01003388requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003389run_test "Session resume using cache, DTLS: timeout > delay" \
3390 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003391 "$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 +01003392 0 \
3393 -s "session successfully restored from cache" \
3394 -S "session successfully restored from ticket" \
3395 -s "a session has been resumed" \
3396 -c "a session has been resumed"
3397
Gilles Peskine111fde42022-02-25 19:51:52 +01003398requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003399run_test "Session resume using cache, DTLS: timeout < delay" \
3400 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003401 "$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 +01003402 0 \
3403 -S "session successfully restored from cache" \
3404 -S "session successfully restored from ticket" \
3405 -S "a session has been resumed" \
3406 -C "a session has been resumed"
3407
Gilles Peskine111fde42022-02-25 19:51:52 +01003408requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003409run_test "Session resume using cache, DTLS: no timeout" \
3410 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003411 "$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 +01003412 0 \
3413 -s "session successfully restored from cache" \
3414 -S "session successfully restored from ticket" \
3415 -s "a session has been resumed" \
3416 -c "a session has been resumed"
3417
Gilles Peskine111fde42022-02-25 19:51:52 +01003418requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003419run_test "Session resume using cache, DTLS: session copy" \
3420 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003421 "$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 +02003422 0 \
3423 -s "session successfully restored from cache" \
3424 -S "session successfully restored from ticket" \
3425 -s "a session has been resumed" \
3426 -c "a session has been resumed"
3427
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003428# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott7ca2f392021-10-13 16:13:44 +01003429# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003430requires_openssl_next
Gilles Peskine111fde42022-02-25 19:51:52 +01003431requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003432run_test "Session resume using cache, DTLS: openssl client" \
3433 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003434 "( $O_NEXT_CLI -dtls1 -sess_out $SESSION; \
3435 $O_NEXT_CLI -dtls1 -sess_in $SESSION; \
Hanno Becker1d739932018-08-21 13:55:22 +01003436 rm -f $SESSION )" \
3437 0 \
3438 -s "found session ticket extension" \
3439 -S "server hello, adding session ticket extension" \
3440 -s "session successfully restored from cache" \
3441 -S "session successfully restored from ticket" \
3442 -s "a session has been resumed"
3443
Gilles Peskine111fde42022-02-25 19:51:52 +01003444requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003445run_test "Session resume using cache, DTLS: openssl server" \
3446 "$O_SRV -dtls1" \
3447 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
3448 0 \
3449 -C "found session_ticket extension" \
3450 -C "parse new session ticket" \
3451 -c "a session has been resumed"
3452
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003453# Tests for Max Fragment Length extension
3454
Hanno Becker4aed27e2017-09-18 15:00:34 +01003455requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Hanno Beckerc5266962017-09-18 15:01:50 +01003456run_test "Max fragment length: enabled, default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003457 "$P_SRV debug_level=3" \
3458 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003459 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003460 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3461 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3462 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3463 -s "Maximum output fragment length is $MAX_CONTENT_LEN" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003464 -C "client hello, adding max_fragment_length extension" \
3465 -S "found max fragment length extension" \
3466 -S "server hello, max_fragment_length extension" \
3467 -C "found max_fragment_length extension"
3468
Hanno Becker4aed27e2017-09-18 15:00:34 +01003469requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Hanno Beckerc5266962017-09-18 15:01:50 +01003470run_test "Max fragment length: enabled, default, larger message" \
3471 "$P_SRV debug_level=3" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003472 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003473 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003474 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3475 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3476 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3477 -s "Maximum output fragment length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003478 -C "client hello, adding max_fragment_length extension" \
3479 -S "found max fragment length extension" \
3480 -S "server hello, max_fragment_length extension" \
3481 -C "found max_fragment_length extension" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003482 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
3483 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01003484 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01003485
3486requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3487run_test "Max fragment length, DTLS: enabled, default, larger message" \
3488 "$P_SRV debug_level=3 dtls=1" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003489 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003490 1 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003491 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3492 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3493 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3494 -s "Maximum output fragment length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003495 -C "client hello, adding max_fragment_length extension" \
3496 -S "found max fragment length extension" \
3497 -S "server hello, max_fragment_length extension" \
3498 -C "found max_fragment_length extension" \
3499 -c "fragment larger than.*maximum "
3500
Angus Grattonc4dd0732018-04-11 16:28:39 +10003501# Run some tests with MBEDTLS_SSL_MAX_FRAGMENT_LENGTH disabled
3502# (session fragment length will be 16384 regardless of mbedtls
3503# content length configuration.)
3504
Hanno Beckerc5266962017-09-18 15:01:50 +01003505requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3506run_test "Max fragment length: disabled, larger message" \
3507 "$P_SRV debug_level=3" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003508 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003509 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003510 -C "Maximum input fragment length is 16384" \
3511 -C "Maximum output fragment length is 16384" \
3512 -S "Maximum input fragment length is 16384" \
3513 -S "Maximum output fragment length is 16384" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003514 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
3515 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01003516 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01003517
3518requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takano18ddccc2021-06-21 19:43:33 +01003519run_test "Max fragment length, DTLS: disabled, larger message" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003520 "$P_SRV debug_level=3 dtls=1" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003521 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003522 1 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003523 -C "Maximum input fragment length is 16384" \
3524 -C "Maximum output fragment length is 16384" \
3525 -S "Maximum input fragment length is 16384" \
3526 -S "Maximum output fragment length is 16384" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003527 -c "fragment larger than.*maximum "
3528
Yuto Takanobec7cf72021-07-02 10:10:49 +01003529requires_max_content_len 4096
Hanno Beckerc5266962017-09-18 15:01:50 +01003530requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003531run_test "Max fragment length: used by client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003532 "$P_SRV debug_level=3" \
3533 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003534 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003535 -c "Maximum input fragment length is 4096" \
3536 -c "Maximum output fragment length is 4096" \
3537 -s "Maximum input fragment length is 4096" \
3538 -s "Maximum output fragment length is 4096" \
3539 -c "client hello, adding max_fragment_length extension" \
3540 -s "found max fragment length extension" \
3541 -s "server hello, max_fragment_length extension" \
3542 -c "found max_fragment_length extension"
3543
Yuto Takanobec7cf72021-07-02 10:10:49 +01003544requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003545requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3546run_test "Max fragment length: client 512, server 1024" \
3547 "$P_SRV debug_level=3 max_frag_len=1024" \
3548 "$P_CLI debug_level=3 max_frag_len=512" \
3549 0 \
3550 -c "Maximum input fragment length is 512" \
3551 -c "Maximum output fragment length is 512" \
3552 -s "Maximum input fragment length is 512" \
3553 -s "Maximum output fragment length is 512" \
3554 -c "client hello, adding max_fragment_length extension" \
3555 -s "found max fragment length extension" \
3556 -s "server hello, max_fragment_length extension" \
3557 -c "found max_fragment_length extension"
3558
Yuto Takanobec7cf72021-07-02 10:10:49 +01003559requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003560requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3561run_test "Max fragment length: client 512, server 2048" \
3562 "$P_SRV debug_level=3 max_frag_len=2048" \
3563 "$P_CLI debug_level=3 max_frag_len=512" \
3564 0 \
3565 -c "Maximum input fragment length is 512" \
3566 -c "Maximum output fragment length is 512" \
3567 -s "Maximum input fragment length is 512" \
3568 -s "Maximum output fragment length is 512" \
3569 -c "client hello, adding max_fragment_length extension" \
3570 -s "found max fragment length extension" \
3571 -s "server hello, max_fragment_length extension" \
3572 -c "found max_fragment_length extension"
3573
Yuto Takanobec7cf72021-07-02 10:10:49 +01003574requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003575requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3576run_test "Max fragment length: client 512, server 4096" \
3577 "$P_SRV debug_level=3 max_frag_len=4096" \
3578 "$P_CLI debug_level=3 max_frag_len=512" \
3579 0 \
3580 -c "Maximum input fragment length is 512" \
3581 -c "Maximum output fragment length is 512" \
3582 -s "Maximum input fragment length is 512" \
3583 -s "Maximum output fragment length is 512" \
3584 -c "client hello, adding max_fragment_length extension" \
3585 -s "found max fragment length extension" \
3586 -s "server hello, max_fragment_length extension" \
3587 -c "found max_fragment_length extension"
3588
Yuto Takanobec7cf72021-07-02 10:10:49 +01003589requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003590requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3591run_test "Max fragment length: client 1024, server 512" \
3592 "$P_SRV debug_level=3 max_frag_len=512" \
3593 "$P_CLI debug_level=3 max_frag_len=1024" \
3594 0 \
3595 -c "Maximum input fragment length is 1024" \
3596 -c "Maximum output fragment length is 1024" \
3597 -s "Maximum input fragment length is 1024" \
3598 -s "Maximum output fragment length is 512" \
3599 -c "client hello, adding max_fragment_length extension" \
3600 -s "found max fragment length extension" \
3601 -s "server hello, max_fragment_length extension" \
3602 -c "found max_fragment_length extension"
3603
Yuto Takanobec7cf72021-07-02 10:10:49 +01003604requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003605requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3606run_test "Max fragment length: client 1024, server 2048" \
3607 "$P_SRV debug_level=3 max_frag_len=2048" \
3608 "$P_CLI debug_level=3 max_frag_len=1024" \
3609 0 \
3610 -c "Maximum input fragment length is 1024" \
3611 -c "Maximum output fragment length is 1024" \
3612 -s "Maximum input fragment length is 1024" \
3613 -s "Maximum output fragment length is 1024" \
3614 -c "client hello, adding max_fragment_length extension" \
3615 -s "found max fragment length extension" \
3616 -s "server hello, max_fragment_length extension" \
3617 -c "found max_fragment_length extension"
3618
Yuto Takanobec7cf72021-07-02 10:10:49 +01003619requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003620requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3621run_test "Max fragment length: client 1024, server 4096" \
3622 "$P_SRV debug_level=3 max_frag_len=4096" \
3623 "$P_CLI debug_level=3 max_frag_len=1024" \
3624 0 \
3625 -c "Maximum input fragment length is 1024" \
3626 -c "Maximum output fragment length is 1024" \
3627 -s "Maximum input fragment length is 1024" \
3628 -s "Maximum output fragment length is 1024" \
3629 -c "client hello, adding max_fragment_length extension" \
3630 -s "found max fragment length extension" \
3631 -s "server hello, max_fragment_length extension" \
3632 -c "found max_fragment_length extension"
3633
Yuto Takanobec7cf72021-07-02 10:10:49 +01003634requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003635requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3636run_test "Max fragment length: client 2048, server 512" \
3637 "$P_SRV debug_level=3 max_frag_len=512" \
3638 "$P_CLI debug_level=3 max_frag_len=2048" \
3639 0 \
3640 -c "Maximum input fragment length is 2048" \
3641 -c "Maximum output fragment length is 2048" \
3642 -s "Maximum input fragment length is 2048" \
3643 -s "Maximum output fragment length is 512" \
3644 -c "client hello, adding max_fragment_length extension" \
3645 -s "found max fragment length extension" \
3646 -s "server hello, max_fragment_length extension" \
3647 -c "found max_fragment_length extension"
3648
Yuto Takanobec7cf72021-07-02 10:10:49 +01003649requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003650requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3651run_test "Max fragment length: client 2048, server 1024" \
3652 "$P_SRV debug_level=3 max_frag_len=1024" \
3653 "$P_CLI debug_level=3 max_frag_len=2048" \
3654 0 \
3655 -c "Maximum input fragment length is 2048" \
3656 -c "Maximum output fragment length is 2048" \
3657 -s "Maximum input fragment length is 2048" \
3658 -s "Maximum output fragment length is 1024" \
3659 -c "client hello, adding max_fragment_length extension" \
3660 -s "found max fragment length extension" \
3661 -s "server hello, max_fragment_length extension" \
3662 -c "found max_fragment_length extension"
3663
Yuto Takanobec7cf72021-07-02 10:10:49 +01003664requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003665requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3666run_test "Max fragment length: client 2048, server 4096" \
3667 "$P_SRV debug_level=3 max_frag_len=4096" \
3668 "$P_CLI debug_level=3 max_frag_len=2048" \
3669 0 \
3670 -c "Maximum input fragment length is 2048" \
3671 -c "Maximum output fragment length is 2048" \
3672 -s "Maximum input fragment length is 2048" \
3673 -s "Maximum output fragment length is 2048" \
3674 -c "client hello, adding max_fragment_length extension" \
3675 -s "found max fragment length extension" \
3676 -s "server hello, max_fragment_length extension" \
3677 -c "found max_fragment_length extension"
3678
Yuto Takanobec7cf72021-07-02 10:10:49 +01003679requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003680requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3681run_test "Max fragment length: client 4096, server 512" \
3682 "$P_SRV debug_level=3 max_frag_len=512" \
3683 "$P_CLI debug_level=3 max_frag_len=4096" \
3684 0 \
3685 -c "Maximum input fragment length is 4096" \
3686 -c "Maximum output fragment length is 4096" \
3687 -s "Maximum input fragment length is 4096" \
3688 -s "Maximum output fragment length is 512" \
3689 -c "client hello, adding max_fragment_length extension" \
3690 -s "found max fragment length extension" \
3691 -s "server hello, max_fragment_length extension" \
3692 -c "found max_fragment_length extension"
3693
Yuto Takanobec7cf72021-07-02 10:10:49 +01003694requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003695requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3696run_test "Max fragment length: client 4096, server 1024" \
3697 "$P_SRV debug_level=3 max_frag_len=1024" \
3698 "$P_CLI debug_level=3 max_frag_len=4096" \
3699 0 \
3700 -c "Maximum input fragment length is 4096" \
3701 -c "Maximum output fragment length is 4096" \
3702 -s "Maximum input fragment length is 4096" \
3703 -s "Maximum output fragment length is 1024" \
3704 -c "client hello, adding max_fragment_length extension" \
3705 -s "found max fragment length extension" \
3706 -s "server hello, max_fragment_length extension" \
3707 -c "found max_fragment_length extension"
3708
Yuto Takanobec7cf72021-07-02 10:10:49 +01003709requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003710requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3711run_test "Max fragment length: client 4096, server 2048" \
3712 "$P_SRV debug_level=3 max_frag_len=2048" \
3713 "$P_CLI debug_level=3 max_frag_len=4096" \
3714 0 \
3715 -c "Maximum input fragment length is 4096" \
3716 -c "Maximum output fragment length is 4096" \
3717 -s "Maximum input fragment length is 4096" \
3718 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003719 -c "client hello, adding max_fragment_length extension" \
3720 -s "found max fragment length extension" \
3721 -s "server hello, max_fragment_length extension" \
3722 -c "found max_fragment_length extension"
3723
Yuto Takanobec7cf72021-07-02 10:10:49 +01003724requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01003725requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003726run_test "Max fragment length: used by server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003727 "$P_SRV debug_level=3 max_frag_len=4096" \
3728 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003729 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003730 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3731 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3732 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3733 -s "Maximum output fragment length is 4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003734 -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"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003738
Yuto Takanobec7cf72021-07-02 10:10:49 +01003739requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01003740requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003741requires_gnutls
3742run_test "Max fragment length: gnutls server" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003743 "$G_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003744 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003745 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003746 -c "Maximum input fragment length is 4096" \
3747 -c "Maximum output fragment length is 4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003748 -c "client hello, adding max_fragment_length extension" \
3749 -c "found max_fragment_length extension"
3750
Yuto Takanobec7cf72021-07-02 10:10:49 +01003751requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01003752requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003753run_test "Max fragment length: client, message just fits" \
3754 "$P_SRV debug_level=3" \
3755 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2048" \
3756 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003757 -c "Maximum input fragment length is 2048" \
3758 -c "Maximum output fragment length is 2048" \
3759 -s "Maximum input fragment length is 2048" \
3760 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003761 -c "client hello, adding max_fragment_length extension" \
3762 -s "found max fragment length extension" \
3763 -s "server hello, max_fragment_length extension" \
3764 -c "found max_fragment_length extension" \
3765 -c "2048 bytes written in 1 fragments" \
3766 -s "2048 bytes read"
3767
Yuto Takanobec7cf72021-07-02 10:10:49 +01003768requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01003769requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003770run_test "Max fragment length: client, larger message" \
3771 "$P_SRV debug_level=3" \
3772 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2345" \
3773 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003774 -c "Maximum input fragment length is 2048" \
3775 -c "Maximum output fragment length is 2048" \
3776 -s "Maximum input fragment length is 2048" \
3777 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003778 -c "client hello, adding max_fragment_length extension" \
3779 -s "found max fragment length extension" \
3780 -s "server hello, max_fragment_length extension" \
3781 -c "found max_fragment_length extension" \
3782 -c "2345 bytes written in 2 fragments" \
3783 -s "2048 bytes read" \
3784 -s "297 bytes read"
3785
Yuto Takanobec7cf72021-07-02 10:10:49 +01003786requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01003787requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard23eb74d2015-01-21 14:37:13 +00003788run_test "Max fragment length: DTLS client, larger message" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003789 "$P_SRV debug_level=3 dtls=1" \
3790 "$P_CLI debug_level=3 dtls=1 max_frag_len=2048 request_size=2345" \
3791 1 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003792 -c "Maximum input fragment length is 2048" \
3793 -c "Maximum output fragment length is 2048" \
3794 -s "Maximum input fragment length is 2048" \
3795 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02003796 -c "client hello, adding max_fragment_length extension" \
3797 -s "found max fragment length extension" \
3798 -s "server hello, max_fragment_length extension" \
3799 -c "found max_fragment_length extension" \
3800 -c "fragment larger than.*maximum"
3801
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003802# Tests for renegotiation
3803
Hanno Becker6a243642017-10-12 15:18:45 +01003804# Renegotiation SCSV always added, regardless of SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003805run_test "Renegotiation: none, for reference" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003806 "$P_SRV debug_level=3 exchanges=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003807 "$P_CLI debug_level=3 exchanges=2" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003808 0 \
3809 -C "client hello, adding renegotiation extension" \
3810 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3811 -S "found renegotiation extension" \
3812 -s "server hello, secure renegotiation extension" \
3813 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003814 -C "=> renegotiate" \
3815 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003816 -S "write hello request"
3817
Hanno Becker6a243642017-10-12 15:18:45 +01003818requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003819run_test "Renegotiation: client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003820 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003821 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003822 0 \
3823 -c "client hello, adding renegotiation extension" \
3824 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3825 -s "found renegotiation extension" \
3826 -s "server hello, secure renegotiation extension" \
3827 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003828 -c "=> renegotiate" \
3829 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003830 -S "write hello request"
3831
Hanno Becker6a243642017-10-12 15:18:45 +01003832requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003833run_test "Renegotiation: server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003834 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003835 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003836 0 \
3837 -c "client hello, adding renegotiation extension" \
3838 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3839 -s "found renegotiation extension" \
3840 -s "server hello, secure renegotiation extension" \
3841 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003842 -c "=> renegotiate" \
3843 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003844 -s "write hello request"
3845
Janos Follathb0f148c2017-10-05 12:29:42 +01003846# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
3847# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
3848# algorithm stronger than SHA-1 is enabled in config.h
Hanno Becker6a243642017-10-12 15:18:45 +01003849requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follathb0f148c2017-10-05 12:29:42 +01003850run_test "Renegotiation: Signature Algorithms parsing, client-initiated" \
3851 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
3852 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
3853 0 \
3854 -c "client hello, adding renegotiation extension" \
3855 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3856 -s "found renegotiation extension" \
3857 -s "server hello, secure renegotiation extension" \
3858 -c "found renegotiation extension" \
3859 -c "=> renegotiate" \
3860 -s "=> renegotiate" \
3861 -S "write hello request" \
3862 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
3863
3864# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
3865# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
3866# algorithm stronger than SHA-1 is enabled in config.h
Hanno Becker6a243642017-10-12 15:18:45 +01003867requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follathb0f148c2017-10-05 12:29:42 +01003868run_test "Renegotiation: Signature Algorithms parsing, server-initiated" \
3869 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
3870 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
3871 0 \
3872 -c "client hello, adding renegotiation extension" \
3873 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3874 -s "found renegotiation extension" \
3875 -s "server hello, secure renegotiation extension" \
3876 -c "found renegotiation extension" \
3877 -c "=> renegotiate" \
3878 -s "=> renegotiate" \
3879 -s "write hello request" \
3880 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
3881
Hanno Becker6a243642017-10-12 15:18:45 +01003882requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003883run_test "Renegotiation: double" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003884 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003885 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003886 0 \
3887 -c "client hello, adding renegotiation extension" \
3888 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3889 -s "found renegotiation extension" \
3890 -s "server hello, secure renegotiation extension" \
3891 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003892 -c "=> renegotiate" \
3893 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003894 -s "write hello request"
3895
Hanno Becker6a243642017-10-12 15:18:45 +01003896requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Andrzej Kurek8ea68722020-04-03 06:40:47 -04003897requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobec7cf72021-07-02 10:10:49 +01003898requires_max_content_len 2048
Andrzej Kurek8ea68722020-04-03 06:40:47 -04003899run_test "Renegotiation with max fragment length: client 2048, server 512" \
3900 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1 max_frag_len=512" \
3901 "$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" \
3902 0 \
3903 -c "Maximum input fragment length is 2048" \
3904 -c "Maximum output fragment length is 2048" \
3905 -s "Maximum input fragment length is 2048" \
3906 -s "Maximum output fragment length is 512" \
3907 -c "client hello, adding max_fragment_length extension" \
3908 -s "found max fragment length extension" \
3909 -s "server hello, max_fragment_length extension" \
3910 -c "found max_fragment_length extension" \
3911 -c "client hello, adding renegotiation extension" \
3912 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3913 -s "found renegotiation extension" \
3914 -s "server hello, secure renegotiation extension" \
3915 -c "found renegotiation extension" \
3916 -c "=> renegotiate" \
3917 -s "=> renegotiate" \
3918 -s "write hello request"
3919
3920requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003921run_test "Renegotiation: client-initiated, server-rejected" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003922 "$P_SRV debug_level=3 exchanges=2 renegotiation=0 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 1 \
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é-Gonnardfae355e2014-07-04 14:32:27 +02003932 -S "write hello request" \
Manuel Pégourié-Gonnard65919622014-08-19 12:50:30 +02003933 -c "SSL - Unexpected message at ServerHello in renegotiation" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02003934 -c "failed"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003935
Hanno Becker6a243642017-10-12 15:18:45 +01003936requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003937run_test "Renegotiation: server-initiated, client-rejected, default" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003938 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003939 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003940 0 \
3941 -C "client hello, adding renegotiation extension" \
3942 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3943 -S "found renegotiation extension" \
3944 -s "server hello, secure renegotiation extension" \
3945 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01003946 -C "=> renegotiate" \
3947 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003948 -s "write hello request" \
Manuel Pégourié-Gonnarda9964db2014-07-03 19:29:16 +02003949 -S "SSL - An unexpected message was received from our peer" \
3950 -S "failed"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01003951
Hanno Becker6a243642017-10-12 15:18:45 +01003952requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003953run_test "Renegotiation: server-initiated, client-rejected, not enforced" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003954 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003955 renego_delay=-1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003956 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02003957 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 "SSL - An unexpected message was received from our peer" \
3967 -S "failed"
3968
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02003969# delay 2 for 1 alert record + 1 application data record
Hanno Becker6a243642017-10-12 15:18:45 +01003970requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003971run_test "Renegotiation: server-initiated, client-rejected, delay 2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003972 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003973 renego_delay=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003974 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02003975 0 \
3976 -C "client hello, adding renegotiation extension" \
3977 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
3978 -S "found renegotiation extension" \
3979 -s "server hello, secure renegotiation extension" \
3980 -c "found renegotiation extension" \
3981 -C "=> renegotiate" \
3982 -S "=> renegotiate" \
3983 -s "write hello request" \
3984 -S "SSL - An unexpected message was received from our peer" \
3985 -S "failed"
3986
Hanno Becker6a243642017-10-12 15:18:45 +01003987requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003988run_test "Renegotiation: server-initiated, client-rejected, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003989 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01003990 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003991 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02003992 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" \
3998 -C "=> renegotiate" \
3999 -S "=> renegotiate" \
4000 -s "write hello request" \
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02004001 -s "SSL - An unexpected message was received from our peer"
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004002
Hanno Becker6a243642017-10-12 15:18:45 +01004003requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004004run_test "Renegotiation: server-initiated, client-accepted, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004005 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004006 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004007 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004008 0 \
4009 -c "client hello, adding renegotiation extension" \
4010 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4011 -s "found renegotiation extension" \
4012 -s "server hello, secure renegotiation extension" \
4013 -c "found renegotiation extension" \
4014 -c "=> renegotiate" \
4015 -s "=> renegotiate" \
4016 -s "write hello request" \
4017 -S "SSL - An unexpected message was received from our peer" \
4018 -S "failed"
4019
Hanno Becker6a243642017-10-12 15:18:45 +01004020requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004021run_test "Renegotiation: periodic, just below period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004022 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004023 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
4024 0 \
4025 -C "client hello, adding renegotiation extension" \
4026 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4027 -S "found renegotiation extension" \
4028 -s "server hello, secure renegotiation extension" \
4029 -c "found renegotiation extension" \
4030 -S "record counter limit reached: renegotiate" \
4031 -C "=> renegotiate" \
4032 -S "=> renegotiate" \
4033 -S "write hello request" \
4034 -S "SSL - An unexpected message was received from our peer" \
4035 -S "failed"
4036
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004037# one extra exchange to be able to complete renego
Hanno Becker6a243642017-10-12 15:18:45 +01004038requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004039run_test "Renegotiation: periodic, just above period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004040 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004041 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004042 0 \
4043 -c "client hello, adding renegotiation extension" \
4044 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4045 -s "found renegotiation extension" \
4046 -s "server hello, secure renegotiation extension" \
4047 -c "found renegotiation extension" \
4048 -s "record counter limit reached: renegotiate" \
4049 -c "=> renegotiate" \
4050 -s "=> renegotiate" \
4051 -s "write hello request" \
4052 -S "SSL - An unexpected message was received from our peer" \
4053 -S "failed"
4054
Hanno Becker6a243642017-10-12 15:18:45 +01004055requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004056run_test "Renegotiation: periodic, two times period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004057 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004058 "$P_CLI debug_level=3 exchanges=7 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004059 0 \
4060 -c "client hello, adding renegotiation extension" \
4061 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4062 -s "found renegotiation extension" \
4063 -s "server hello, secure renegotiation extension" \
4064 -c "found renegotiation extension" \
4065 -s "record counter limit reached: renegotiate" \
4066 -c "=> renegotiate" \
4067 -s "=> renegotiate" \
4068 -s "write hello request" \
4069 -S "SSL - An unexpected message was received from our peer" \
4070 -S "failed"
4071
Hanno Becker6a243642017-10-12 15:18:45 +01004072requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004073run_test "Renegotiation: periodic, above period, disabled" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004074 "$P_SRV debug_level=3 exchanges=9 renegotiation=0 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004075 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
4076 0 \
4077 -C "client hello, adding renegotiation extension" \
4078 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4079 -S "found renegotiation extension" \
4080 -s "server hello, secure renegotiation extension" \
4081 -c "found renegotiation extension" \
4082 -S "record counter limit reached: renegotiate" \
4083 -C "=> renegotiate" \
4084 -S "=> renegotiate" \
4085 -S "write hello request" \
4086 -S "SSL - An unexpected message was received from our peer" \
4087 -S "failed"
4088
Hanno Becker6a243642017-10-12 15:18:45 +01004089requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004090run_test "Renegotiation: nbio, client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004091 "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004092 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02004093 0 \
4094 -c "client hello, adding renegotiation extension" \
4095 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4096 -s "found renegotiation extension" \
4097 -s "server hello, secure renegotiation extension" \
4098 -c "found renegotiation extension" \
4099 -c "=> renegotiate" \
4100 -s "=> renegotiate" \
4101 -S "write hello request"
4102
Hanno Becker6a243642017-10-12 15:18:45 +01004103requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004104run_test "Renegotiation: nbio, server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004105 "$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 +02004106 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02004107 0 \
4108 -c "client hello, adding renegotiation extension" \
4109 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4110 -s "found renegotiation extension" \
4111 -s "server hello, secure renegotiation extension" \
4112 -c "found renegotiation extension" \
4113 -c "=> renegotiate" \
4114 -s "=> renegotiate" \
4115 -s "write hello request"
4116
Hanno Becker6a243642017-10-12 15:18:45 +01004117requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004118run_test "Renegotiation: openssl server, client-initiated" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02004119 "$O_SRV -www" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004120 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004121 0 \
4122 -c "client hello, adding renegotiation extension" \
4123 -c "found renegotiation extension" \
4124 -c "=> renegotiate" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004125 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004126 -C "error" \
4127 -c "HTTP/1.0 200 [Oo][Kk]"
4128
Paul Bakker539d9722015-02-08 16:18:35 +01004129requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004130requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004131run_test "Renegotiation: gnutls server strict, client-initiated" \
4132 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004133 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004134 0 \
4135 -c "client hello, adding renegotiation extension" \
4136 -c "found renegotiation extension" \
4137 -c "=> renegotiate" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004138 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004139 -C "error" \
4140 -c "HTTP/1.0 200 [Oo][Kk]"
4141
Paul Bakker539d9722015-02-08 16:18:35 +01004142requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004143requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004144run_test "Renegotiation: gnutls server unsafe, client-initiated default" \
4145 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4146 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
4147 1 \
4148 -c "client hello, adding renegotiation extension" \
4149 -C "found renegotiation extension" \
4150 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004151 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004152 -c "error" \
4153 -C "HTTP/1.0 200 [Oo][Kk]"
4154
Paul Bakker539d9722015-02-08 16:18:35 +01004155requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004156requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004157run_test "Renegotiation: gnutls server unsafe, client-inititated no legacy" \
4158 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4159 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
4160 allow_legacy=0" \
4161 1 \
4162 -c "client hello, adding renegotiation extension" \
4163 -C "found renegotiation extension" \
4164 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004165 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004166 -c "error" \
4167 -C "HTTP/1.0 200 [Oo][Kk]"
4168
Paul Bakker539d9722015-02-08 16:18:35 +01004169requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004170requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004171run_test "Renegotiation: gnutls server unsafe, client-inititated legacy" \
4172 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4173 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
4174 allow_legacy=1" \
4175 0 \
4176 -c "client hello, adding renegotiation extension" \
4177 -C "found renegotiation extension" \
4178 -c "=> renegotiate" \
4179 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004180 -C "error" \
4181 -c "HTTP/1.0 200 [Oo][Kk]"
4182
Hanno Becker6a243642017-10-12 15:18:45 +01004183requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard30d16eb2014-08-19 17:43:50 +02004184run_test "Renegotiation: DTLS, client-initiated" \
4185 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1" \
4186 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
4187 0 \
4188 -c "client hello, adding renegotiation extension" \
4189 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4190 -s "found renegotiation extension" \
4191 -s "server hello, secure renegotiation extension" \
4192 -c "found renegotiation extension" \
4193 -c "=> renegotiate" \
4194 -s "=> renegotiate" \
4195 -S "write hello request"
4196
Hanno Becker6a243642017-10-12 15:18:45 +01004197requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02004198run_test "Renegotiation: DTLS, server-initiated" \
4199 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnarddf9a0a82014-10-02 14:17:18 +02004200 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 \
4201 read_timeout=1000 max_resend=2" \
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02004202 0 \
4203 -c "client hello, adding renegotiation extension" \
4204 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4205 -s "found renegotiation extension" \
4206 -s "server hello, secure renegotiation extension" \
4207 -c "found renegotiation extension" \
4208 -c "=> renegotiate" \
4209 -s "=> renegotiate" \
4210 -s "write hello request"
4211
Hanno Becker6a243642017-10-12 15:18:45 +01004212requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Andres AG692ad842017-01-19 16:30:57 +00004213run_test "Renegotiation: DTLS, renego_period overflow" \
4214 "$P_SRV debug_level=3 dtls=1 exchanges=4 renegotiation=1 renego_period=18446462598732840962 auth_mode=optional" \
4215 "$P_CLI debug_level=3 dtls=1 exchanges=4 renegotiation=1" \
4216 0 \
4217 -c "client hello, adding renegotiation extension" \
4218 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4219 -s "found renegotiation extension" \
4220 -s "server hello, secure renegotiation extension" \
4221 -s "record counter limit reached: renegotiate" \
4222 -c "=> renegotiate" \
4223 -s "=> renegotiate" \
Hanno Becker6a243642017-10-12 15:18:45 +01004224 -s "write hello request"
Andres AG692ad842017-01-19 16:30:57 +00004225
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00004226requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004227requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02004228run_test "Renegotiation: DTLS, gnutls server, client-initiated" \
4229 "$G_SRV -u --mtu 4096" \
4230 "$P_CLI debug_level=3 dtls=1 exchanges=1 renegotiation=1 renegotiate=1" \
4231 0 \
4232 -c "client hello, adding renegotiation extension" \
4233 -c "found renegotiation extension" \
4234 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004235 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02004236 -C "error" \
4237 -s "Extra-header:"
4238
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004239# Test for the "secure renegotation" extension only (no actual renegotiation)
4240
Paul Bakker539d9722015-02-08 16:18:35 +01004241requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004242run_test "Renego ext: gnutls server strict, client default" \
4243 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
4244 "$P_CLI debug_level=3" \
4245 0 \
4246 -c "found renegotiation extension" \
4247 -C "error" \
4248 -c "HTTP/1.0 200 [Oo][Kk]"
4249
Paul Bakker539d9722015-02-08 16:18:35 +01004250requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004251run_test "Renego ext: gnutls server unsafe, client default" \
4252 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4253 "$P_CLI debug_level=3" \
4254 0 \
4255 -C "found renegotiation extension" \
4256 -C "error" \
4257 -c "HTTP/1.0 200 [Oo][Kk]"
4258
Paul Bakker539d9722015-02-08 16:18:35 +01004259requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004260run_test "Renego ext: gnutls server unsafe, client break legacy" \
4261 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4262 "$P_CLI debug_level=3 allow_legacy=-1" \
4263 1 \
4264 -C "found renegotiation extension" \
4265 -c "error" \
4266 -C "HTTP/1.0 200 [Oo][Kk]"
4267
Paul Bakker539d9722015-02-08 16:18:35 +01004268requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004269run_test "Renego ext: gnutls client strict, server default" \
4270 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004271 "$G_CLI --priority=NORMAL:%SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004272 0 \
4273 -s "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4274 -s "server hello, secure renegotiation extension"
4275
Paul Bakker539d9722015-02-08 16:18:35 +01004276requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004277run_test "Renego ext: gnutls client unsafe, server default" \
4278 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004279 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004280 0 \
4281 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4282 -S "server hello, secure renegotiation extension"
4283
Paul Bakker539d9722015-02-08 16:18:35 +01004284requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004285run_test "Renego ext: gnutls client unsafe, server break legacy" \
4286 "$P_SRV debug_level=3 allow_legacy=-1" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004287 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004288 1 \
4289 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4290 -S "server hello, secure renegotiation extension"
4291
Janos Follath0b242342016-02-17 10:11:21 +00004292# Tests for silently dropping trailing extra bytes in .der certificates
4293
4294requires_gnutls
4295run_test "DER format: no trailing bytes" \
4296 "$P_SRV crt_file=data_files/server5-der0.crt \
4297 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004298 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004299 0 \
4300 -c "Handshake was completed" \
4301
4302requires_gnutls
4303run_test "DER format: with a trailing zero byte" \
4304 "$P_SRV crt_file=data_files/server5-der1a.crt \
4305 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004306 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004307 0 \
4308 -c "Handshake was completed" \
4309
4310requires_gnutls
4311run_test "DER format: with a trailing random byte" \
4312 "$P_SRV crt_file=data_files/server5-der1b.crt \
4313 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004314 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004315 0 \
4316 -c "Handshake was completed" \
4317
4318requires_gnutls
4319run_test "DER format: with 2 trailing random bytes" \
4320 "$P_SRV crt_file=data_files/server5-der2.crt \
4321 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004322 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004323 0 \
4324 -c "Handshake was completed" \
4325
4326requires_gnutls
4327run_test "DER format: with 4 trailing random bytes" \
4328 "$P_SRV crt_file=data_files/server5-der4.crt \
4329 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004330 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004331 0 \
4332 -c "Handshake was completed" \
4333
4334requires_gnutls
4335run_test "DER format: with 8 trailing random bytes" \
4336 "$P_SRV crt_file=data_files/server5-der8.crt \
4337 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004338 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004339 0 \
4340 -c "Handshake was completed" \
4341
4342requires_gnutls
4343run_test "DER format: with 9 trailing random bytes" \
4344 "$P_SRV crt_file=data_files/server5-der9.crt \
4345 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004346 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004347 0 \
4348 -c "Handshake was completed" \
4349
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03004350# Tests for auth_mode, there are duplicated tests using ca callback for authentication
4351# When updating these tests, modify the matching authentication tests accordingly
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004352
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004353run_test "Authentication: server badcert, client required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004354 "$P_SRV crt_file=data_files/server5-badsign.crt \
4355 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004356 "$P_CLI debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004357 1 \
4358 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004359 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004360 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004361 -c "X509 - Certificate verification failed"
4362
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004363run_test "Authentication: server badcert, client optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004364 "$P_SRV crt_file=data_files/server5-badsign.crt \
4365 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004366 "$P_CLI debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004367 0 \
4368 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004369 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004370 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004371 -C "X509 - Certificate verification failed"
4372
Hanno Beckere6706e62017-05-15 16:05:15 +01004373run_test "Authentication: server goodcert, client optional, no trusted CA" \
4374 "$P_SRV" \
4375 "$P_CLI debug_level=3 auth_mode=optional ca_file=none ca_path=none" \
4376 0 \
4377 -c "x509_verify_cert() returned" \
4378 -c "! The certificate is not correctly signed by the trusted CA" \
4379 -c "! Certificate verification flags"\
4380 -C "! mbedtls_ssl_handshake returned" \
4381 -C "X509 - Certificate verification failed" \
4382 -C "SSL - No CA Chain is set, but required to operate"
4383
4384run_test "Authentication: server goodcert, client required, no trusted CA" \
4385 "$P_SRV" \
4386 "$P_CLI debug_level=3 auth_mode=required ca_file=none ca_path=none" \
4387 1 \
4388 -c "x509_verify_cert() returned" \
4389 -c "! The certificate is not correctly signed by the trusted CA" \
4390 -c "! Certificate verification flags"\
4391 -c "! mbedtls_ssl_handshake returned" \
4392 -c "SSL - No CA Chain is set, but required to operate"
4393
4394# The purpose of the next two tests is to test the client's behaviour when receiving a server
4395# certificate with an unsupported elliptic curve. This should usually not happen because
4396# the client informs the server about the supported curves - it does, though, in the
4397# corner case of a static ECDH suite, because the server doesn't check the curve on that
4398# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
4399# different means to have the server ignoring the client's supported curve list.
4400
4401requires_config_enabled MBEDTLS_ECP_C
4402run_test "Authentication: server ECDH p256v1, client required, p256v1 unsupported" \
4403 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4404 crt_file=data_files/server5.ku-ka.crt" \
4405 "$P_CLI debug_level=3 auth_mode=required curves=secp521r1" \
4406 1 \
4407 -c "bad certificate (EC key curve)"\
4408 -c "! Certificate verification flags"\
4409 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
4410
4411requires_config_enabled MBEDTLS_ECP_C
4412run_test "Authentication: server ECDH p256v1, client optional, p256v1 unsupported" \
4413 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4414 crt_file=data_files/server5.ku-ka.crt" \
4415 "$P_CLI debug_level=3 auth_mode=optional curves=secp521r1" \
4416 1 \
4417 -c "bad certificate (EC key curve)"\
4418 -c "! Certificate verification flags"\
4419 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
4420
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004421run_test "Authentication: server badcert, client none" \
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01004422 "$P_SRV crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004423 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004424 "$P_CLI debug_level=1 auth_mode=none" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004425 0 \
4426 -C "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004427 -C "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004428 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004429 -C "X509 - Certificate verification failed"
4430
Simon Butcher99000142016-10-13 17:21:01 +01004431run_test "Authentication: client SHA256, server required" \
4432 "$P_SRV auth_mode=required" \
4433 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4434 key_file=data_files/server6.key \
4435 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
4436 0 \
4437 -c "Supported Signature Algorithm found: 4," \
4438 -c "Supported Signature Algorithm found: 5,"
4439
4440run_test "Authentication: client SHA384, server required" \
4441 "$P_SRV auth_mode=required" \
4442 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4443 key_file=data_files/server6.key \
4444 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
4445 0 \
4446 -c "Supported Signature Algorithm found: 4," \
4447 -c "Supported Signature Algorithm found: 5,"
4448
Gilles Peskinefd8332e2017-05-03 16:25:07 +02004449run_test "Authentication: client has no cert, server required (SSLv3)" \
4450 "$P_SRV debug_level=3 min_version=ssl3 auth_mode=required" \
4451 "$P_CLI debug_level=3 force_version=ssl3 crt_file=none \
4452 key_file=data_files/server5.key" \
4453 1 \
4454 -S "skip write certificate request" \
4455 -C "skip parse certificate request" \
4456 -c "got a certificate request" \
4457 -c "got no certificate to send" \
4458 -S "x509_verify_cert() returned" \
4459 -s "client has no certificate" \
4460 -s "! mbedtls_ssl_handshake returned" \
4461 -c "! mbedtls_ssl_handshake returned" \
4462 -s "No client certification received from the client, but required by the authentication mode"
4463
4464run_test "Authentication: client has no cert, server required (TLS)" \
4465 "$P_SRV debug_level=3 auth_mode=required" \
4466 "$P_CLI debug_level=3 crt_file=none \
4467 key_file=data_files/server5.key" \
4468 1 \
4469 -S "skip write certificate request" \
4470 -C "skip parse certificate request" \
4471 -c "got a certificate request" \
4472 -c "= write certificate$" \
4473 -C "skip write certificate$" \
4474 -S "x509_verify_cert() returned" \
4475 -s "client has no certificate" \
4476 -s "! mbedtls_ssl_handshake returned" \
4477 -c "! mbedtls_ssl_handshake returned" \
4478 -s "No client certification received from the client, but required by the authentication mode"
4479
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004480run_test "Authentication: client badcert, server required" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004481 "$P_SRV debug_level=3 auth_mode=required" \
4482 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004483 key_file=data_files/server5.key" \
4484 1 \
4485 -S "skip write certificate request" \
4486 -C "skip parse certificate request" \
4487 -c "got a certificate request" \
4488 -C "skip write certificate" \
4489 -C "skip write certificate verify" \
4490 -S "skip parse certificate verify" \
4491 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02004492 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004493 -s "! mbedtls_ssl_handshake returned" \
Gilles Peskine1cc8e342017-05-03 16:28:34 +02004494 -s "send alert level=2 message=48" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004495 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004496 -s "X509 - Certificate verification failed"
Gilles Peskine1cc8e342017-05-03 16:28:34 +02004497# We don't check that the client receives the alert because it might
4498# detect that its write end of the connection is closed and abort
4499# before reading the alert message.
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004500
Gilles Peskine8c681b72022-01-07 23:10:56 +01004501run_test "Authentication: client cert self-signed and trusted, server required" \
4502 "$P_SRV debug_level=3 auth_mode=required ca_file=data_files/server5-selfsigned.crt" \
4503 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4504 key_file=data_files/server5.key" \
4505 0 \
4506 -S "skip write certificate request" \
4507 -C "skip parse certificate request" \
4508 -c "got a certificate request" \
4509 -C "skip write certificate" \
4510 -C "skip write certificate verify" \
4511 -S "skip parse certificate verify" \
4512 -S "x509_verify_cert() returned" \
4513 -S "! The certificate is not correctly signed" \
4514 -S "X509 - Certificate verification failed"
4515
Janos Follath89baba22017-04-10 14:34:35 +01004516run_test "Authentication: client cert not trusted, server required" \
4517 "$P_SRV debug_level=3 auth_mode=required" \
4518 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4519 key_file=data_files/server5.key" \
4520 1 \
4521 -S "skip write certificate request" \
4522 -C "skip parse certificate request" \
4523 -c "got a certificate request" \
4524 -C "skip write certificate" \
4525 -C "skip write certificate verify" \
4526 -S "skip parse certificate verify" \
4527 -s "x509_verify_cert() returned" \
4528 -s "! The certificate is not correctly signed by the trusted CA" \
4529 -s "! mbedtls_ssl_handshake returned" \
4530 -c "! mbedtls_ssl_handshake returned" \
4531 -s "X509 - Certificate verification failed"
4532
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004533run_test "Authentication: client badcert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004534 "$P_SRV debug_level=3 auth_mode=optional" \
4535 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004536 key_file=data_files/server5.key" \
4537 0 \
4538 -S "skip write certificate request" \
4539 -C "skip parse certificate request" \
4540 -c "got a certificate request" \
4541 -C "skip write certificate" \
4542 -C "skip write certificate verify" \
4543 -S "skip parse certificate verify" \
4544 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004545 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004546 -S "! mbedtls_ssl_handshake returned" \
4547 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004548 -S "X509 - Certificate verification failed"
4549
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004550run_test "Authentication: client badcert, server none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004551 "$P_SRV debug_level=3 auth_mode=none" \
4552 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004553 key_file=data_files/server5.key" \
4554 0 \
4555 -s "skip write certificate request" \
4556 -C "skip parse certificate request" \
4557 -c "got no certificate request" \
4558 -c "skip write certificate" \
4559 -c "skip write certificate verify" \
4560 -s "skip parse certificate verify" \
4561 -S "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004562 -S "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004563 -S "! mbedtls_ssl_handshake returned" \
4564 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004565 -S "X509 - Certificate verification failed"
4566
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004567run_test "Authentication: client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004568 "$P_SRV debug_level=3 auth_mode=optional" \
4569 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004570 0 \
4571 -S "skip write certificate request" \
4572 -C "skip parse certificate request" \
4573 -c "got a certificate request" \
4574 -C "skip write certificate$" \
4575 -C "got no certificate to send" \
4576 -S "SSLv3 client has no certificate" \
4577 -c "skip write certificate verify" \
4578 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004579 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004580 -S "! mbedtls_ssl_handshake returned" \
4581 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004582 -S "X509 - Certificate verification failed"
4583
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004584run_test "Authentication: openssl client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004585 "$P_SRV debug_level=3 auth_mode=optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004586 "$O_CLI" \
4587 0 \
4588 -S "skip write certificate request" \
4589 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004590 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004591 -S "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004592 -S "X509 - Certificate verification failed"
4593
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004594run_test "Authentication: client no cert, openssl server optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004595 "$O_SRV -verify 10" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004596 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004597 0 \
4598 -C "skip parse certificate request" \
4599 -c "got a certificate request" \
4600 -C "skip write certificate$" \
4601 -c "skip write certificate verify" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004602 -C "! mbedtls_ssl_handshake returned"
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004603
Gilles Peskinefd8332e2017-05-03 16:25:07 +02004604run_test "Authentication: client no cert, openssl server required" \
4605 "$O_SRV -Verify 10" \
4606 "$P_CLI debug_level=3 crt_file=none key_file=none" \
4607 1 \
4608 -C "skip parse certificate request" \
4609 -c "got a certificate request" \
4610 -C "skip write certificate$" \
4611 -c "skip write certificate verify" \
4612 -c "! mbedtls_ssl_handshake returned"
4613
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004614run_test "Authentication: client no cert, ssl3" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004615 "$P_SRV debug_level=3 auth_mode=optional force_version=ssl3" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01004616 "$P_CLI debug_level=3 crt_file=none key_file=none min_version=ssl3" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004617 0 \
4618 -S "skip write certificate request" \
4619 -C "skip parse certificate request" \
4620 -c "got a certificate request" \
4621 -C "skip write certificate$" \
4622 -c "skip write certificate verify" \
4623 -c "got no certificate to send" \
4624 -s "SSLv3 client has no certificate" \
4625 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004626 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004627 -S "! mbedtls_ssl_handshake returned" \
4628 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004629 -S "X509 - Certificate verification failed"
4630
Yuto Takanoccdd25c2021-07-02 13:05:15 +01004631# This script assumes that MBEDTLS_X509_MAX_INTERMEDIATE_CA has its default
4632# value, defined here as MAX_IM_CA. Some test cases will be skipped if the
4633# library is configured with a different value.
Hanno Beckera6bca9f2017-07-26 13:35:11 +01004634
Simon Butcherbcfa6f42017-07-28 15:59:35 +01004635MAX_IM_CA='8'
Hanno Beckera6bca9f2017-07-26 13:35:11 +01004636
Yuto Takanoccdd25c2021-07-02 13:05:15 +01004637# The tests for the max_int tests can pass with any number higher than MAX_IM_CA
4638# because only a chain of MAX_IM_CA length is tested. Equally, the max_int+1
4639# tests can pass with any number less than MAX_IM_CA. However, stricter preconditions
4640# are in place so that the semantics are consistent with the test description.
Yuto Takano8a693ef2021-07-02 13:10:41 +01004641requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004642requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004643run_test "Authentication: server max_int chain, client default" \
4644 "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
4645 key_file=data_files/dir-maxpath/09.key" \
4646 "$P_CLI server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
4647 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004648 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004649
Yuto Takano8a693ef2021-07-02 13:10:41 +01004650requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004651requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004652run_test "Authentication: server max_int+1 chain, client default" \
4653 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4654 key_file=data_files/dir-maxpath/10.key" \
4655 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
4656 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004657 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004658
Yuto Takano8a693ef2021-07-02 13:10:41 +01004659requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004660requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004661run_test "Authentication: server max_int+1 chain, client optional" \
4662 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4663 key_file=data_files/dir-maxpath/10.key" \
4664 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
4665 auth_mode=optional" \
4666 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004667 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004668
Yuto Takano8a693ef2021-07-02 13:10:41 +01004669requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004670requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004671run_test "Authentication: server max_int+1 chain, client none" \
4672 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4673 key_file=data_files/dir-maxpath/10.key" \
4674 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
4675 auth_mode=none" \
4676 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004677 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004678
Yuto Takano8a693ef2021-07-02 13:10:41 +01004679requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004680requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004681run_test "Authentication: client max_int+1 chain, server default" \
4682 "$P_SRV ca_file=data_files/dir-maxpath/00.crt" \
4683 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4684 key_file=data_files/dir-maxpath/10.key" \
4685 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004686 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004687
Yuto Takano8a693ef2021-07-02 13:10:41 +01004688requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004689requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004690run_test "Authentication: client max_int+1 chain, server optional" \
4691 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
4692 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4693 key_file=data_files/dir-maxpath/10.key" \
4694 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004695 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004696
Yuto Takano8a693ef2021-07-02 13:10:41 +01004697requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004698requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004699run_test "Authentication: client max_int+1 chain, server required" \
4700 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4701 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4702 key_file=data_files/dir-maxpath/10.key" \
4703 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004704 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004705
Yuto Takano8a693ef2021-07-02 13:10:41 +01004706requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004707requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004708run_test "Authentication: client max_int chain, server required" \
4709 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4710 "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
4711 key_file=data_files/dir-maxpath/09.key" \
4712 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004713 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004714
Janos Follath89baba22017-04-10 14:34:35 +01004715# Tests for CA list in CertificateRequest messages
4716
4717run_test "Authentication: send CA list in CertificateRequest (default)" \
4718 "$P_SRV debug_level=3 auth_mode=required" \
4719 "$P_CLI crt_file=data_files/server6.crt \
4720 key_file=data_files/server6.key" \
4721 0 \
4722 -s "requested DN"
4723
4724run_test "Authentication: do not send CA list in CertificateRequest" \
4725 "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
4726 "$P_CLI crt_file=data_files/server6.crt \
4727 key_file=data_files/server6.key" \
4728 0 \
4729 -S "requested DN"
4730
4731run_test "Authentication: send CA list in CertificateRequest, client self signed" \
4732 "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
4733 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4734 key_file=data_files/server5.key" \
4735 1 \
4736 -S "requested DN" \
4737 -s "x509_verify_cert() returned" \
4738 -s "! The certificate is not correctly signed by the trusted CA" \
4739 -s "! mbedtls_ssl_handshake returned" \
4740 -c "! mbedtls_ssl_handshake returned" \
4741 -s "X509 - Certificate verification failed"
4742
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03004743# Tests for auth_mode, using CA callback, these are duplicated from the authentication tests
4744# When updating these tests, modify the matching authentication tests accordingly
Hanno Becker746aaf32019-03-28 15:25:23 +00004745
4746requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4747run_test "Authentication, CA callback: server badcert, client required" \
4748 "$P_SRV crt_file=data_files/server5-badsign.crt \
4749 key_file=data_files/server5.key" \
4750 "$P_CLI ca_callback=1 debug_level=3 auth_mode=required" \
4751 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004752 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004753 -c "x509_verify_cert() returned" \
4754 -c "! The certificate is not correctly signed by the trusted CA" \
4755 -c "! mbedtls_ssl_handshake returned" \
4756 -c "X509 - Certificate verification failed"
4757
4758requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4759run_test "Authentication, CA callback: server badcert, client optional" \
4760 "$P_SRV crt_file=data_files/server5-badsign.crt \
4761 key_file=data_files/server5.key" \
4762 "$P_CLI ca_callback=1 debug_level=3 auth_mode=optional" \
4763 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004764 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004765 -c "x509_verify_cert() returned" \
4766 -c "! The certificate is not correctly signed by the trusted CA" \
4767 -C "! mbedtls_ssl_handshake returned" \
4768 -C "X509 - Certificate verification failed"
4769
4770# The purpose of the next two tests is to test the client's behaviour when receiving a server
4771# certificate with an unsupported elliptic curve. This should usually not happen because
4772# the client informs the server about the supported curves - it does, though, in the
4773# corner case of a static ECDH suite, because the server doesn't check the curve on that
4774# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
4775# different means to have the server ignoring the client's supported curve list.
4776
4777requires_config_enabled MBEDTLS_ECP_C
4778requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4779run_test "Authentication, CA callback: server ECDH p256v1, client required, p256v1 unsupported" \
4780 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4781 crt_file=data_files/server5.ku-ka.crt" \
4782 "$P_CLI ca_callback=1 debug_level=3 auth_mode=required curves=secp521r1" \
4783 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004784 -c "use CA callback for X.509 CRT verification" \
4785 -c "bad certificate (EC key curve)" \
4786 -c "! Certificate verification flags" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004787 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
4788
4789requires_config_enabled MBEDTLS_ECP_C
4790requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4791run_test "Authentication, CA callback: server ECDH p256v1, client optional, p256v1 unsupported" \
4792 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4793 crt_file=data_files/server5.ku-ka.crt" \
4794 "$P_CLI ca_callback=1 debug_level=3 auth_mode=optional curves=secp521r1" \
4795 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004796 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004797 -c "bad certificate (EC key curve)"\
4798 -c "! Certificate verification flags"\
4799 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
4800
4801requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4802run_test "Authentication, CA callback: client SHA256, server required" \
4803 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4804 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4805 key_file=data_files/server6.key \
4806 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
4807 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004808 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004809 -c "Supported Signature Algorithm found: 4," \
4810 -c "Supported Signature Algorithm found: 5,"
4811
4812requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4813run_test "Authentication, CA callback: client SHA384, server required" \
4814 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4815 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4816 key_file=data_files/server6.key \
4817 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
4818 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004819 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004820 -c "Supported Signature Algorithm found: 4," \
4821 -c "Supported Signature Algorithm found: 5,"
4822
4823requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4824run_test "Authentication, CA callback: client badcert, server required" \
4825 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4826 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
4827 key_file=data_files/server5.key" \
4828 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004829 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004830 -S "skip write certificate request" \
4831 -C "skip parse certificate request" \
4832 -c "got a certificate request" \
4833 -C "skip write certificate" \
4834 -C "skip write certificate verify" \
4835 -S "skip parse certificate verify" \
4836 -s "x509_verify_cert() returned" \
4837 -s "! The certificate is not correctly signed by the trusted CA" \
4838 -s "! mbedtls_ssl_handshake returned" \
4839 -s "send alert level=2 message=48" \
4840 -c "! mbedtls_ssl_handshake returned" \
4841 -s "X509 - Certificate verification failed"
4842# We don't check that the client receives the alert because it might
4843# detect that its write end of the connection is closed and abort
4844# before reading the alert message.
4845
4846requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4847run_test "Authentication, CA callback: client cert not trusted, server required" \
4848 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
4849 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4850 key_file=data_files/server5.key" \
4851 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004852 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004853 -S "skip write certificate request" \
4854 -C "skip parse certificate request" \
4855 -c "got a certificate request" \
4856 -C "skip write certificate" \
4857 -C "skip write certificate verify" \
4858 -S "skip parse certificate verify" \
4859 -s "x509_verify_cert() returned" \
4860 -s "! The certificate is not correctly signed by the trusted CA" \
4861 -s "! mbedtls_ssl_handshake returned" \
4862 -c "! mbedtls_ssl_handshake returned" \
4863 -s "X509 - Certificate verification failed"
4864
4865requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4866run_test "Authentication, CA callback: client badcert, server optional" \
4867 "$P_SRV ca_callback=1 debug_level=3 auth_mode=optional" \
4868 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
4869 key_file=data_files/server5.key" \
4870 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004871 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004872 -S "skip write certificate request" \
4873 -C "skip parse certificate request" \
4874 -c "got a certificate request" \
4875 -C "skip write certificate" \
4876 -C "skip write certificate verify" \
4877 -S "skip parse certificate verify" \
4878 -s "x509_verify_cert() returned" \
4879 -s "! The certificate is not correctly signed by the trusted CA" \
4880 -S "! mbedtls_ssl_handshake returned" \
4881 -C "! mbedtls_ssl_handshake returned" \
4882 -S "X509 - Certificate verification failed"
4883
Yuto Takano8a693ef2021-07-02 13:10:41 +01004884requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00004885requires_full_size_output_buffer
4886requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4887run_test "Authentication, CA callback: server max_int chain, client default" \
4888 "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
4889 key_file=data_files/dir-maxpath/09.key" \
4890 "$P_CLI ca_callback=1 debug_level=3 server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
4891 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004892 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004893 -C "X509 - A fatal error occurred"
4894
Yuto Takano8a693ef2021-07-02 13:10:41 +01004895requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00004896requires_full_size_output_buffer
4897requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4898run_test "Authentication, CA callback: server max_int+1 chain, client default" \
4899 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4900 key_file=data_files/dir-maxpath/10.key" \
4901 "$P_CLI debug_level=3 ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
4902 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004903 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004904 -c "X509 - A fatal error occurred"
4905
Yuto Takano8a693ef2021-07-02 13:10:41 +01004906requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00004907requires_full_size_output_buffer
4908requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4909run_test "Authentication, CA callback: server max_int+1 chain, client optional" \
4910 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4911 key_file=data_files/dir-maxpath/10.key" \
4912 "$P_CLI ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
4913 debug_level=3 auth_mode=optional" \
4914 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004915 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004916 -c "X509 - A fatal error occurred"
4917
Yuto Takano8a693ef2021-07-02 13:10:41 +01004918requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00004919requires_full_size_output_buffer
4920requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4921run_test "Authentication, CA callback: client max_int+1 chain, server optional" \
4922 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
4923 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4924 key_file=data_files/dir-maxpath/10.key" \
4925 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004926 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004927 -s "X509 - A fatal error occurred"
4928
Yuto Takano8a693ef2021-07-02 13:10:41 +01004929requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00004930requires_full_size_output_buffer
4931requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4932run_test "Authentication, CA callback: client max_int+1 chain, server required" \
4933 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4934 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4935 key_file=data_files/dir-maxpath/10.key" \
4936 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004937 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004938 -s "X509 - A fatal error occurred"
4939
Yuto Takano8a693ef2021-07-02 13:10:41 +01004940requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00004941requires_full_size_output_buffer
4942requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
4943run_test "Authentication, CA callback: client max_int chain, server required" \
4944 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4945 "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
4946 key_file=data_files/dir-maxpath/09.key" \
4947 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01004948 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00004949 -S "X509 - A fatal error occurred"
4950
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01004951# Tests for certificate selection based on SHA verson
4952
4953run_test "Certificate hash: client TLS 1.2 -> SHA-2" \
4954 "$P_SRV crt_file=data_files/server5.crt \
4955 key_file=data_files/server5.key \
4956 crt_file2=data_files/server5-sha1.crt \
4957 key_file2=data_files/server5.key" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00004958 "$P_CLI force_version=tls12" \
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01004959 0 \
4960 -c "signed using.*ECDSA with SHA256" \
4961 -C "signed using.*ECDSA with SHA1"
4962
4963run_test "Certificate hash: client TLS 1.1 -> SHA-1" \
4964 "$P_SRV crt_file=data_files/server5.crt \
4965 key_file=data_files/server5.key \
4966 crt_file2=data_files/server5-sha1.crt \
4967 key_file2=data_files/server5.key" \
4968 "$P_CLI force_version=tls1_1" \
4969 0 \
4970 -C "signed using.*ECDSA with SHA256" \
4971 -c "signed using.*ECDSA with SHA1"
4972
4973run_test "Certificate hash: client TLS 1.0 -> SHA-1" \
4974 "$P_SRV crt_file=data_files/server5.crt \
4975 key_file=data_files/server5.key \
4976 crt_file2=data_files/server5-sha1.crt \
4977 key_file2=data_files/server5.key" \
4978 "$P_CLI force_version=tls1" \
4979 0 \
4980 -C "signed using.*ECDSA with SHA256" \
4981 -c "signed using.*ECDSA with SHA1"
4982
4983run_test "Certificate hash: client TLS 1.1, no SHA-1 -> SHA-2 (order 1)" \
4984 "$P_SRV crt_file=data_files/server5.crt \
4985 key_file=data_files/server5.key \
4986 crt_file2=data_files/server6.crt \
4987 key_file2=data_files/server6.key" \
4988 "$P_CLI force_version=tls1_1" \
4989 0 \
4990 -c "serial number.*09" \
4991 -c "signed using.*ECDSA with SHA256" \
4992 -C "signed using.*ECDSA with SHA1"
4993
4994run_test "Certificate hash: client TLS 1.1, no SHA-1 -> SHA-2 (order 2)" \
4995 "$P_SRV crt_file=data_files/server6.crt \
4996 key_file=data_files/server6.key \
4997 crt_file2=data_files/server5.crt \
4998 key_file2=data_files/server5.key" \
4999 "$P_CLI force_version=tls1_1" \
5000 0 \
5001 -c "serial number.*0A" \
5002 -c "signed using.*ECDSA with SHA256" \
5003 -C "signed using.*ECDSA with SHA1"
5004
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005005# tests for SNI
5006
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005007run_test "SNI: no SNI callback" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005008 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005009 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005010 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005011 0 \
5012 -S "parse ServerName extension" \
5013 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
5014 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005015
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005016run_test "SNI: matching cert 1" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005017 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005018 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005019 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 +02005020 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005021 0 \
5022 -s "parse ServerName extension" \
5023 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5024 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005025
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005026run_test "SNI: matching cert 2" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005027 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005028 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005029 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 +02005030 "$P_CLI server_name=polarssl.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005031 0 \
5032 -s "parse ServerName extension" \
5033 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5034 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005035
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005036run_test "SNI: no matching cert" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005037 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005038 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005039 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 +02005040 "$P_CLI server_name=nonesuch.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005041 1 \
5042 -s "parse ServerName extension" \
5043 -s "ssl_sni_wrapper() returned" \
5044 -s "mbedtls_ssl_handshake returned" \
5045 -c "mbedtls_ssl_handshake returned" \
5046 -c "SSL - A fatal alert message was received from our peer"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005047
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005048run_test "SNI: client auth no override: optional" \
5049 "$P_SRV debug_level=3 auth_mode=optional \
5050 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5051 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
5052 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005053 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005054 -S "skip write certificate request" \
5055 -C "skip parse certificate request" \
5056 -c "got a certificate request" \
5057 -C "skip write certificate" \
5058 -C "skip write certificate verify" \
5059 -S "skip parse certificate verify"
5060
5061run_test "SNI: client auth override: none -> optional" \
5062 "$P_SRV debug_level=3 auth_mode=none \
5063 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5064 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
5065 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005066 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005067 -S "skip write certificate request" \
5068 -C "skip parse certificate request" \
5069 -c "got a certificate request" \
5070 -C "skip write certificate" \
5071 -C "skip write certificate verify" \
5072 -S "skip parse certificate verify"
5073
5074run_test "SNI: client auth override: optional -> none" \
5075 "$P_SRV debug_level=3 auth_mode=optional \
5076 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5077 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
5078 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005079 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005080 -s "skip write certificate request" \
5081 -C "skip parse certificate request" \
5082 -c "got no certificate request" \
5083 -c "skip write certificate" \
5084 -c "skip write certificate verify" \
5085 -s "skip parse certificate verify"
5086
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005087run_test "SNI: CA no override" \
5088 "$P_SRV debug_level=3 auth_mode=optional \
5089 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5090 ca_file=data_files/test-ca.crt \
5091 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
5092 "$P_CLI debug_level=3 server_name=localhost \
5093 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5094 1 \
5095 -S "skip write certificate request" \
5096 -C "skip parse certificate request" \
5097 -c "got a certificate request" \
5098 -C "skip write certificate" \
5099 -C "skip write certificate verify" \
5100 -S "skip parse certificate verify" \
5101 -s "x509_verify_cert() returned" \
5102 -s "! The certificate is not correctly signed by the trusted CA" \
5103 -S "The certificate has been revoked (is on a CRL)"
5104
5105run_test "SNI: CA override" \
5106 "$P_SRV debug_level=3 auth_mode=optional \
5107 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5108 ca_file=data_files/test-ca.crt \
5109 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
5110 "$P_CLI debug_level=3 server_name=localhost \
5111 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5112 0 \
5113 -S "skip write certificate request" \
5114 -C "skip parse certificate request" \
5115 -c "got a certificate request" \
5116 -C "skip write certificate" \
5117 -C "skip write certificate verify" \
5118 -S "skip parse certificate verify" \
5119 -S "x509_verify_cert() returned" \
5120 -S "! The certificate is not correctly signed by the trusted CA" \
5121 -S "The certificate has been revoked (is on a CRL)"
5122
5123run_test "SNI: CA override with CRL" \
5124 "$P_SRV debug_level=3 auth_mode=optional \
5125 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5126 ca_file=data_files/test-ca.crt \
5127 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
5128 "$P_CLI debug_level=3 server_name=localhost \
5129 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5130 1 \
5131 -S "skip write certificate request" \
5132 -C "skip parse certificate request" \
5133 -c "got a certificate request" \
5134 -C "skip write certificate" \
5135 -C "skip write certificate verify" \
5136 -S "skip parse certificate verify" \
5137 -s "x509_verify_cert() returned" \
5138 -S "! The certificate is not correctly signed by the trusted CA" \
5139 -s "The certificate has been revoked (is on a CRL)"
5140
Andres AG1a834452016-12-07 10:01:30 +00005141# Tests for SNI and DTLS
5142
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005143run_test "SNI: DTLS, no SNI callback" \
5144 "$P_SRV debug_level=3 dtls=1 \
5145 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
5146 "$P_CLI server_name=localhost dtls=1" \
5147 0 \
5148 -S "parse ServerName extension" \
5149 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
5150 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5151
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005152run_test "SNI: DTLS, matching cert 1" \
Andres AG1a834452016-12-07 10:01:30 +00005153 "$P_SRV debug_level=3 dtls=1 \
5154 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5155 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5156 "$P_CLI server_name=localhost dtls=1" \
5157 0 \
5158 -s "parse ServerName extension" \
5159 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5160 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5161
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005162run_test "SNI: DTLS, matching cert 2" \
5163 "$P_SRV debug_level=3 dtls=1 \
5164 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5165 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5166 "$P_CLI server_name=polarssl.example dtls=1" \
5167 0 \
5168 -s "parse ServerName extension" \
5169 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5170 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
5171
5172run_test "SNI: DTLS, no matching cert" \
5173 "$P_SRV debug_level=3 dtls=1 \
5174 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5175 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5176 "$P_CLI server_name=nonesuch.example dtls=1" \
5177 1 \
5178 -s "parse ServerName extension" \
5179 -s "ssl_sni_wrapper() returned" \
5180 -s "mbedtls_ssl_handshake returned" \
5181 -c "mbedtls_ssl_handshake returned" \
5182 -c "SSL - A fatal alert message was received from our peer"
5183
5184run_test "SNI: DTLS, client auth no override: optional" \
5185 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5186 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5187 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
5188 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5189 0 \
5190 -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
5197run_test "SNI: DTLS, client auth override: none -> optional" \
5198 "$P_SRV debug_level=3 auth_mode=none dtls=1 \
5199 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5200 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
5201 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5202 0 \
5203 -S "skip write certificate request" \
5204 -C "skip parse certificate request" \
5205 -c "got a certificate request" \
5206 -C "skip write certificate" \
5207 -C "skip write certificate verify" \
5208 -S "skip parse certificate verify"
5209
5210run_test "SNI: DTLS, client auth override: optional -> none" \
5211 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5212 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5213 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
5214 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5215 0 \
5216 -s "skip write certificate request" \
5217 -C "skip parse certificate request" \
5218 -c "got no certificate request" \
5219 -c "skip write certificate" \
5220 -c "skip write certificate verify" \
5221 -s "skip parse certificate verify"
5222
5223run_test "SNI: DTLS, CA no override" \
5224 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5225 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5226 ca_file=data_files/test-ca.crt \
5227 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
5228 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5229 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5230 1 \
5231 -S "skip write certificate request" \
5232 -C "skip parse certificate request" \
5233 -c "got a certificate request" \
5234 -C "skip write certificate" \
5235 -C "skip write certificate verify" \
5236 -S "skip parse certificate verify" \
5237 -s "x509_verify_cert() returned" \
5238 -s "! The certificate is not correctly signed by the trusted CA" \
5239 -S "The certificate has been revoked (is on a CRL)"
5240
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005241run_test "SNI: DTLS, CA override" \
Andres AG1a834452016-12-07 10:01:30 +00005242 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5243 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5244 ca_file=data_files/test-ca.crt \
5245 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
5246 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5247 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5248 0 \
5249 -S "skip write certificate request" \
5250 -C "skip parse certificate request" \
5251 -c "got a certificate request" \
5252 -C "skip write certificate" \
5253 -C "skip write certificate verify" \
5254 -S "skip parse certificate verify" \
5255 -S "x509_verify_cert() returned" \
5256 -S "! The certificate is not correctly signed by the trusted CA" \
5257 -S "The certificate has been revoked (is on a CRL)"
5258
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005259run_test "SNI: DTLS, CA override with CRL" \
Andres AG1a834452016-12-07 10:01:30 +00005260 "$P_SRV debug_level=3 auth_mode=optional \
5261 crt_file=data_files/server5.crt key_file=data_files/server5.key dtls=1 \
5262 ca_file=data_files/test-ca.crt \
5263 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
5264 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5265 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5266 1 \
5267 -S "skip write certificate request" \
5268 -C "skip parse certificate request" \
5269 -c "got a certificate request" \
5270 -C "skip write certificate" \
5271 -C "skip write certificate verify" \
5272 -S "skip parse certificate verify" \
5273 -s "x509_verify_cert() returned" \
5274 -S "! The certificate is not correctly signed by the trusted CA" \
5275 -s "The certificate has been revoked (is on a CRL)"
5276
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005277# Tests for non-blocking I/O: exercise a variety of handshake flows
5278
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005279run_test "Non-blocking I/O: basic handshake" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005280 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
5281 "$P_CLI nbio=2 tickets=0" \
5282 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005283 -S "mbedtls_ssl_handshake returned" \
5284 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005285 -c "Read from server: .* bytes read"
5286
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005287run_test "Non-blocking I/O: client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005288 "$P_SRV nbio=2 tickets=0 auth_mode=required" \
5289 "$P_CLI nbio=2 tickets=0" \
5290 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005291 -S "mbedtls_ssl_handshake returned" \
5292 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005293 -c "Read from server: .* bytes read"
5294
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005295run_test "Non-blocking I/O: ticket" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005296 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
5297 "$P_CLI nbio=2 tickets=1" \
5298 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005299 -S "mbedtls_ssl_handshake returned" \
5300 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005301 -c "Read from server: .* bytes read"
5302
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005303run_test "Non-blocking I/O: ticket + client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005304 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
5305 "$P_CLI nbio=2 tickets=1" \
5306 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005307 -S "mbedtls_ssl_handshake returned" \
5308 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005309 -c "Read from server: .* bytes read"
5310
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005311run_test "Non-blocking I/O: ticket + client auth + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005312 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
5313 "$P_CLI nbio=2 tickets=1 reconnect=1" \
5314 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005315 -S "mbedtls_ssl_handshake returned" \
5316 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005317 -c "Read from server: .* bytes read"
5318
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005319run_test "Non-blocking I/O: ticket + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005320 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
5321 "$P_CLI nbio=2 tickets=1 reconnect=1" \
5322 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005323 -S "mbedtls_ssl_handshake returned" \
5324 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005325 -c "Read from server: .* bytes read"
5326
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005327run_test "Non-blocking I/O: session-id resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005328 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
5329 "$P_CLI nbio=2 tickets=0 reconnect=1" \
5330 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005331 -S "mbedtls_ssl_handshake returned" \
5332 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005333 -c "Read from server: .* bytes read"
5334
Hanno Becker00076712017-11-15 16:39:08 +00005335# Tests for event-driven I/O: exercise a variety of handshake flows
5336
5337run_test "Event-driven I/O: basic handshake" \
5338 "$P_SRV event=1 tickets=0 auth_mode=none" \
5339 "$P_CLI event=1 tickets=0" \
5340 0 \
5341 -S "mbedtls_ssl_handshake returned" \
5342 -C "mbedtls_ssl_handshake returned" \
5343 -c "Read from server: .* bytes read"
5344
5345run_test "Event-driven I/O: client auth" \
5346 "$P_SRV event=1 tickets=0 auth_mode=required" \
5347 "$P_CLI event=1 tickets=0" \
5348 0 \
5349 -S "mbedtls_ssl_handshake returned" \
5350 -C "mbedtls_ssl_handshake returned" \
5351 -c "Read from server: .* bytes read"
5352
5353run_test "Event-driven I/O: ticket" \
5354 "$P_SRV event=1 tickets=1 auth_mode=none" \
5355 "$P_CLI event=1 tickets=1" \
5356 0 \
5357 -S "mbedtls_ssl_handshake returned" \
5358 -C "mbedtls_ssl_handshake returned" \
5359 -c "Read from server: .* bytes read"
5360
5361run_test "Event-driven I/O: ticket + client auth" \
5362 "$P_SRV event=1 tickets=1 auth_mode=required" \
5363 "$P_CLI event=1 tickets=1" \
5364 0 \
5365 -S "mbedtls_ssl_handshake returned" \
5366 -C "mbedtls_ssl_handshake returned" \
5367 -c "Read from server: .* bytes read"
5368
5369run_test "Event-driven I/O: ticket + client auth + resume" \
5370 "$P_SRV event=1 tickets=1 auth_mode=required" \
5371 "$P_CLI event=1 tickets=1 reconnect=1" \
5372 0 \
5373 -S "mbedtls_ssl_handshake returned" \
5374 -C "mbedtls_ssl_handshake returned" \
5375 -c "Read from server: .* bytes read"
5376
5377run_test "Event-driven I/O: ticket + resume" \
5378 "$P_SRV event=1 tickets=1 auth_mode=none" \
5379 "$P_CLI event=1 tickets=1 reconnect=1" \
5380 0 \
5381 -S "mbedtls_ssl_handshake returned" \
5382 -C "mbedtls_ssl_handshake returned" \
5383 -c "Read from server: .* bytes read"
5384
5385run_test "Event-driven I/O: session-id resume" \
5386 "$P_SRV event=1 tickets=0 auth_mode=none" \
5387 "$P_CLI event=1 tickets=0 reconnect=1" \
5388 0 \
5389 -S "mbedtls_ssl_handshake returned" \
5390 -C "mbedtls_ssl_handshake returned" \
5391 -c "Read from server: .* bytes read"
5392
Hanno Becker6a33f592018-03-13 11:38:46 +00005393run_test "Event-driven I/O, DTLS: basic handshake" \
5394 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
5395 "$P_CLI dtls=1 event=1 tickets=0" \
5396 0 \
5397 -c "Read from server: .* bytes read"
5398
5399run_test "Event-driven I/O, DTLS: client auth" \
5400 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
5401 "$P_CLI dtls=1 event=1 tickets=0" \
5402 0 \
5403 -c "Read from server: .* bytes read"
5404
5405run_test "Event-driven I/O, DTLS: ticket" \
5406 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
5407 "$P_CLI dtls=1 event=1 tickets=1" \
5408 0 \
5409 -c "Read from server: .* bytes read"
5410
5411run_test "Event-driven I/O, DTLS: ticket + client auth" \
5412 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
5413 "$P_CLI dtls=1 event=1 tickets=1" \
5414 0 \
5415 -c "Read from server: .* bytes read"
5416
5417run_test "Event-driven I/O, DTLS: ticket + client auth + resume" \
5418 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005419 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005420 0 \
5421 -c "Read from server: .* bytes read"
5422
5423run_test "Event-driven I/O, DTLS: ticket + resume" \
5424 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005425 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005426 0 \
5427 -c "Read from server: .* bytes read"
5428
5429run_test "Event-driven I/O, DTLS: session-id resume" \
5430 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005431 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005432 0 \
5433 -c "Read from server: .* bytes read"
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005434
5435# This test demonstrates the need for the mbedtls_ssl_check_pending function.
5436# During session resumption, the client will send its ApplicationData record
5437# within the same datagram as the Finished messages. In this situation, the
5438# server MUST NOT idle on the underlying transport after handshake completion,
5439# because the ApplicationData request has already been queued internally.
5440run_test "Event-driven I/O, DTLS: session-id resume, UDP packing" \
Hanno Becker8d832182018-03-15 10:14:19 +00005441 -p "$P_PXY pack=50" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005442 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005443 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005444 0 \
5445 -c "Read from server: .* bytes read"
5446
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005447# Tests for version negotiation
5448
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005449requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005450run_test "Version check: all -> 1.2" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005451 "$P_SRV" \
5452 "$P_CLI" \
5453 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005454 -S "mbedtls_ssl_handshake returned" \
5455 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005456 -s "Protocol is TLSv1.2" \
5457 -c "Protocol is TLSv1.2"
5458
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005459requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005460run_test "Version check: cli max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005461 "$P_SRV" \
5462 "$P_CLI max_version=tls1_1" \
5463 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005464 -S "mbedtls_ssl_handshake returned" \
5465 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005466 -s "Protocol is TLSv1.1" \
5467 -c "Protocol is TLSv1.1"
5468
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005469requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005470run_test "Version check: srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005471 "$P_SRV max_version=tls1_1" \
5472 "$P_CLI" \
5473 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005474 -S "mbedtls_ssl_handshake returned" \
5475 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005476 -s "Protocol is TLSv1.1" \
5477 -c "Protocol is TLSv1.1"
5478
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005479requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005480run_test "Version check: cli+srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005481 "$P_SRV max_version=tls1_1" \
5482 "$P_CLI max_version=tls1_1" \
5483 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005484 -S "mbedtls_ssl_handshake returned" \
5485 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005486 -s "Protocol is TLSv1.1" \
5487 -c "Protocol is TLSv1.1"
5488
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005489requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005490run_test "Version check: cli max 1.1, srv min 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005491 "$P_SRV min_version=tls1_1" \
5492 "$P_CLI max_version=tls1_1" \
5493 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005494 -S "mbedtls_ssl_handshake returned" \
5495 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005496 -s "Protocol is TLSv1.1" \
5497 -c "Protocol is TLSv1.1"
5498
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005499requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005500run_test "Version check: cli min 1.1, srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005501 "$P_SRV max_version=tls1_1" \
5502 "$P_CLI min_version=tls1_1" \
5503 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005504 -S "mbedtls_ssl_handshake returned" \
5505 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005506 -s "Protocol is TLSv1.1" \
5507 -c "Protocol is TLSv1.1"
5508
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005509run_test "Version check: cli min 1.2, srv max 1.1 -> fail" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005510 "$P_SRV max_version=tls1_1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00005511 "$P_CLI min_version=tls12" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005512 1 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005513 -s "mbedtls_ssl_handshake returned" \
5514 -c "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005515 -c "SSL - Handshake protocol not within min/max boundaries"
5516
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005517run_test "Version check: srv min 1.2, cli max 1.1 -> fail" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00005518 "$P_SRV min_version=tls12" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005519 "$P_CLI max_version=tls1_1" \
5520 1 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005521 -s "mbedtls_ssl_handshake returned" \
5522 -c "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005523 -s "SSL - Handshake protocol not within min/max boundaries"
5524
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005525# Tests for ALPN extension
5526
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005527run_test "ALPN: none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005528 "$P_SRV debug_level=3" \
5529 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005530 0 \
5531 -C "client hello, adding alpn extension" \
5532 -S "found alpn extension" \
5533 -C "got an alert message, type: \\[2:120]" \
5534 -S "server hello, adding alpn extension" \
5535 -C "found alpn extension " \
5536 -C "Application Layer Protocol is" \
5537 -S "Application Layer Protocol is"
5538
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005539run_test "ALPN: client only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005540 "$P_SRV debug_level=3" \
5541 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005542 0 \
5543 -c "client hello, adding alpn extension" \
5544 -s "found alpn extension" \
5545 -C "got an alert message, type: \\[2:120]" \
5546 -S "server hello, adding alpn extension" \
5547 -C "found alpn extension " \
5548 -c "Application Layer Protocol is (none)" \
5549 -S "Application Layer Protocol is"
5550
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005551run_test "ALPN: server only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005552 "$P_SRV debug_level=3 alpn=abc,1234" \
5553 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005554 0 \
5555 -C "client hello, adding alpn extension" \
5556 -S "found alpn extension" \
5557 -C "got an alert message, type: \\[2:120]" \
5558 -S "server hello, adding alpn extension" \
5559 -C "found alpn extension " \
5560 -C "Application Layer Protocol is" \
5561 -s "Application Layer Protocol is (none)"
5562
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005563run_test "ALPN: both, common cli1-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005564 "$P_SRV debug_level=3 alpn=abc,1234" \
5565 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005566 0 \
5567 -c "client hello, adding alpn extension" \
5568 -s "found alpn extension" \
5569 -C "got an alert message, type: \\[2:120]" \
5570 -s "server hello, adding alpn extension" \
5571 -c "found alpn extension" \
5572 -c "Application Layer Protocol is abc" \
5573 -s "Application Layer Protocol is abc"
5574
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005575run_test "ALPN: both, common cli2-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005576 "$P_SRV debug_level=3 alpn=abc,1234" \
5577 "$P_CLI debug_level=3 alpn=1234,abc" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005578 0 \
5579 -c "client hello, adding alpn extension" \
5580 -s "found alpn extension" \
5581 -C "got an alert message, type: \\[2:120]" \
5582 -s "server hello, adding alpn extension" \
5583 -c "found alpn extension" \
5584 -c "Application Layer Protocol is abc" \
5585 -s "Application Layer Protocol is abc"
5586
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005587run_test "ALPN: both, common cli1-srv2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005588 "$P_SRV debug_level=3 alpn=abc,1234" \
5589 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005590 0 \
5591 -c "client hello, adding alpn extension" \
5592 -s "found alpn extension" \
5593 -C "got an alert message, type: \\[2:120]" \
5594 -s "server hello, adding alpn extension" \
5595 -c "found alpn extension" \
5596 -c "Application Layer Protocol is 1234" \
5597 -s "Application Layer Protocol is 1234"
5598
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005599run_test "ALPN: both, no common" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005600 "$P_SRV debug_level=3 alpn=abc,123" \
5601 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005602 1 \
5603 -c "client hello, adding alpn extension" \
5604 -s "found alpn extension" \
5605 -c "got an alert message, type: \\[2:120]" \
5606 -S "server hello, adding alpn extension" \
5607 -C "found alpn extension" \
5608 -C "Application Layer Protocol is 1234" \
5609 -S "Application Layer Protocol is 1234"
5610
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +02005611
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005612# Tests for keyUsage in leaf certificates, part 1:
5613# server-side certificate/suite selection
5614
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005615run_test "keyUsage srv: RSA, digitalSignature -> (EC)DHE-RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005616 "$P_SRV key_file=data_files/server2.key \
5617 crt_file=data_files/server2.ku-ds.crt" \
5618 "$P_CLI" \
5619 0 \
Manuel Pégourié-Gonnard17cde5f2014-05-22 14:42:39 +02005620 -c "Ciphersuite is TLS-[EC]*DHE-RSA-WITH-"
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005621
5622
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005623run_test "keyUsage srv: RSA, keyEncipherment -> RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005624 "$P_SRV key_file=data_files/server2.key \
5625 crt_file=data_files/server2.ku-ke.crt" \
5626 "$P_CLI" \
5627 0 \
5628 -c "Ciphersuite is TLS-RSA-WITH-"
5629
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005630run_test "keyUsage srv: RSA, keyAgreement -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005631 "$P_SRV key_file=data_files/server2.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005632 crt_file=data_files/server2.ku-ka.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005633 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005634 1 \
5635 -C "Ciphersuite is "
5636
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005637run_test "keyUsage srv: ECDSA, digitalSignature -> ECDHE-ECDSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005638 "$P_SRV key_file=data_files/server5.key \
5639 crt_file=data_files/server5.ku-ds.crt" \
5640 "$P_CLI" \
5641 0 \
5642 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-"
5643
5644
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005645run_test "keyUsage srv: ECDSA, keyAgreement -> ECDH-" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005646 "$P_SRV key_file=data_files/server5.key \
5647 crt_file=data_files/server5.ku-ka.crt" \
5648 "$P_CLI" \
5649 0 \
5650 -c "Ciphersuite is TLS-ECDH-"
5651
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005652run_test "keyUsage srv: ECDSA, keyEncipherment -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005653 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005654 crt_file=data_files/server5.ku-ke.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005655 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005656 1 \
5657 -C "Ciphersuite is "
5658
5659# Tests for keyUsage in leaf certificates, part 2:
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005660# client-side checking of server cert
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005661
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005662run_test "keyUsage cli: DigitalSignature+KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005663 "$O_SRV -key data_files/server2.key \
5664 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005665 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005666 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5667 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005668 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005669 -C "Processing of the Certificate handshake message failed" \
5670 -c "Ciphersuite is TLS-"
5671
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005672run_test "keyUsage cli: DigitalSignature+KeyEncipherment, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005673 "$O_SRV -key data_files/server2.key \
5674 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005675 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005676 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5677 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005678 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005679 -C "Processing of the Certificate handshake message failed" \
5680 -c "Ciphersuite is TLS-"
5681
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005682run_test "keyUsage cli: KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005683 "$O_SRV -key data_files/server2.key \
5684 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005685 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005686 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5687 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005688 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005689 -C "Processing of the Certificate handshake message failed" \
5690 -c "Ciphersuite is TLS-"
5691
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005692run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005693 "$O_SRV -key data_files/server2.key \
5694 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005695 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005696 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5697 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005698 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005699 -c "Processing of the Certificate handshake message failed" \
5700 -C "Ciphersuite is TLS-"
5701
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01005702run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail, soft" \
5703 "$O_SRV -key data_files/server2.key \
5704 -cert data_files/server2.ku-ke.crt" \
5705 "$P_CLI debug_level=1 auth_mode=optional \
5706 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5707 0 \
5708 -c "bad certificate (usage extensions)" \
5709 -C "Processing of the Certificate handshake message failed" \
5710 -c "Ciphersuite is TLS-" \
5711 -c "! Usage does not match the keyUsage extension"
5712
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005713run_test "keyUsage cli: DigitalSignature, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005714 "$O_SRV -key data_files/server2.key \
5715 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005716 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005717 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5718 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005719 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005720 -C "Processing of the Certificate handshake message failed" \
5721 -c "Ciphersuite is TLS-"
5722
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005723run_test "keyUsage cli: DigitalSignature, RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005724 "$O_SRV -key data_files/server2.key \
5725 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005726 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005727 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5728 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005729 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005730 -c "Processing of the Certificate handshake message failed" \
5731 -C "Ciphersuite is TLS-"
5732
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01005733run_test "keyUsage cli: DigitalSignature, RSA: fail, soft" \
5734 "$O_SRV -key data_files/server2.key \
5735 -cert data_files/server2.ku-ds.crt" \
5736 "$P_CLI debug_level=1 auth_mode=optional \
5737 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5738 0 \
5739 -c "bad certificate (usage extensions)" \
5740 -C "Processing of the Certificate handshake message failed" \
5741 -c "Ciphersuite is TLS-" \
5742 -c "! Usage does not match the keyUsage extension"
5743
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005744# Tests for keyUsage in leaf certificates, part 3:
5745# server-side checking of client cert
5746
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005747run_test "keyUsage cli-auth: RSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005748 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005749 "$O_CLI -key data_files/server2.key \
5750 -cert data_files/server2.ku-ds.crt" \
5751 0 \
5752 -S "bad certificate (usage extensions)" \
5753 -S "Processing of the Certificate handshake message failed"
5754
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005755run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005756 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005757 "$O_CLI -key data_files/server2.key \
5758 -cert data_files/server2.ku-ke.crt" \
5759 0 \
5760 -s "bad certificate (usage extensions)" \
5761 -S "Processing of the Certificate handshake message failed"
5762
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005763run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005764 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005765 "$O_CLI -key data_files/server2.key \
5766 -cert data_files/server2.ku-ke.crt" \
5767 1 \
5768 -s "bad certificate (usage extensions)" \
5769 -s "Processing of the Certificate handshake message failed"
5770
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005771run_test "keyUsage cli-auth: ECDSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005772 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005773 "$O_CLI -key data_files/server5.key \
5774 -cert data_files/server5.ku-ds.crt" \
5775 0 \
5776 -S "bad certificate (usage extensions)" \
5777 -S "Processing of the Certificate handshake message failed"
5778
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005779run_test "keyUsage cli-auth: ECDSA, KeyAgreement: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005780 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005781 "$O_CLI -key data_files/server5.key \
5782 -cert data_files/server5.ku-ka.crt" \
5783 0 \
5784 -s "bad certificate (usage extensions)" \
5785 -S "Processing of the Certificate handshake message failed"
5786
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005787# Tests for extendedKeyUsage, part 1: server-side certificate/suite selection
5788
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005789run_test "extKeyUsage srv: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005790 "$P_SRV key_file=data_files/server5.key \
5791 crt_file=data_files/server5.eku-srv.crt" \
5792 "$P_CLI" \
5793 0
5794
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005795run_test "extKeyUsage srv: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005796 "$P_SRV key_file=data_files/server5.key \
5797 crt_file=data_files/server5.eku-srv.crt" \
5798 "$P_CLI" \
5799 0
5800
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005801run_test "extKeyUsage srv: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005802 "$P_SRV key_file=data_files/server5.key \
5803 crt_file=data_files/server5.eku-cs_any.crt" \
5804 "$P_CLI" \
5805 0
5806
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005807run_test "extKeyUsage srv: codeSign -> fail" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02005808 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005809 crt_file=data_files/server5.eku-cli.crt" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02005810 "$P_CLI" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005811 1
5812
5813# Tests for extendedKeyUsage, part 2: client-side checking of server cert
5814
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005815run_test "extKeyUsage cli: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005816 "$O_SRV -key data_files/server5.key \
5817 -cert data_files/server5.eku-srv.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005818 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005819 0 \
5820 -C "bad certificate (usage extensions)" \
5821 -C "Processing of the Certificate handshake message failed" \
5822 -c "Ciphersuite is TLS-"
5823
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005824run_test "extKeyUsage cli: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005825 "$O_SRV -key data_files/server5.key \
5826 -cert data_files/server5.eku-srv_cli.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005827 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005828 0 \
5829 -C "bad certificate (usage extensions)" \
5830 -C "Processing of the Certificate handshake message failed" \
5831 -c "Ciphersuite is TLS-"
5832
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005833run_test "extKeyUsage cli: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005834 "$O_SRV -key data_files/server5.key \
5835 -cert data_files/server5.eku-cs_any.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005836 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005837 0 \
5838 -C "bad certificate (usage extensions)" \
5839 -C "Processing of the Certificate handshake message failed" \
5840 -c "Ciphersuite is TLS-"
5841
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005842run_test "extKeyUsage cli: codeSign -> fail" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005843 "$O_SRV -key data_files/server5.key \
5844 -cert data_files/server5.eku-cs.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005845 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005846 1 \
5847 -c "bad certificate (usage extensions)" \
5848 -c "Processing of the Certificate handshake message failed" \
5849 -C "Ciphersuite is TLS-"
5850
5851# Tests for extendedKeyUsage, part 3: server-side checking of client cert
5852
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005853run_test "extKeyUsage cli-auth: clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005854 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005855 "$O_CLI -key data_files/server5.key \
5856 -cert data_files/server5.eku-cli.crt" \
5857 0 \
5858 -S "bad certificate (usage extensions)" \
5859 -S "Processing of the Certificate handshake message failed"
5860
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005861run_test "extKeyUsage cli-auth: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005862 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005863 "$O_CLI -key data_files/server5.key \
5864 -cert data_files/server5.eku-srv_cli.crt" \
5865 0 \
5866 -S "bad certificate (usage extensions)" \
5867 -S "Processing of the Certificate handshake message failed"
5868
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005869run_test "extKeyUsage cli-auth: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005870 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005871 "$O_CLI -key data_files/server5.key \
5872 -cert data_files/server5.eku-cs_any.crt" \
5873 0 \
5874 -S "bad certificate (usage extensions)" \
5875 -S "Processing of the Certificate handshake message failed"
5876
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005877run_test "extKeyUsage cli-auth: codeSign -> fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005878 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005879 "$O_CLI -key data_files/server5.key \
5880 -cert data_files/server5.eku-cs.crt" \
5881 0 \
5882 -s "bad certificate (usage extensions)" \
5883 -S "Processing of the Certificate handshake message failed"
5884
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005885run_test "extKeyUsage cli-auth: codeSign -> fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005886 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02005887 "$O_CLI -key data_files/server5.key \
5888 -cert data_files/server5.eku-cs.crt" \
5889 1 \
5890 -s "bad certificate (usage extensions)" \
5891 -s "Processing of the Certificate handshake message failed"
5892
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02005893# Tests for DHM parameters loading
5894
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005895run_test "DHM parameters: reference" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02005896 "$P_SRV" \
5897 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5898 debug_level=3" \
5899 0 \
5900 -c "value of 'DHM: P ' (2048 bits)" \
Hanno Becker13be9902017-09-27 17:17:30 +01005901 -c "value of 'DHM: G ' (2 bits)"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02005902
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005903run_test "DHM parameters: other parameters" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02005904 "$P_SRV dhm_file=data_files/dhparams.pem" \
5905 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5906 debug_level=3" \
5907 0 \
5908 -c "value of 'DHM: P ' (1024 bits)" \
5909 -c "value of 'DHM: G ' (2 bits)"
5910
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02005911# Tests for DHM client-side size checking
5912
5913run_test "DHM size: server default, client default, OK" \
5914 "$P_SRV" \
5915 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5916 debug_level=1" \
5917 0 \
5918 -C "DHM prime too short:"
5919
5920run_test "DHM size: server default, client 2048, OK" \
5921 "$P_SRV" \
5922 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5923 debug_level=1 dhmlen=2048" \
5924 0 \
5925 -C "DHM prime too short:"
5926
5927run_test "DHM size: server 1024, client default, OK" \
5928 "$P_SRV dhm_file=data_files/dhparams.pem" \
5929 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5930 debug_level=1" \
5931 0 \
5932 -C "DHM prime too short:"
5933
Gilles Peskinec6b0d962020-12-08 22:31:52 +01005934run_test "DHM size: server 999, client 999, OK" \
5935 "$P_SRV dhm_file=data_files/dh.999.pem" \
5936 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5937 debug_level=1 dhmlen=999" \
5938 0 \
5939 -C "DHM prime too short:"
5940
5941run_test "DHM size: server 1000, client 1000, OK" \
5942 "$P_SRV dhm_file=data_files/dh.1000.pem" \
5943 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5944 debug_level=1 dhmlen=1000" \
5945 0 \
5946 -C "DHM prime too short:"
5947
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02005948run_test "DHM size: server 1000, client default, rejected" \
5949 "$P_SRV dhm_file=data_files/dh.1000.pem" \
5950 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5951 debug_level=1" \
5952 1 \
5953 -c "DHM prime too short:"
5954
Gilles Peskinec6b0d962020-12-08 22:31:52 +01005955run_test "DHM size: server 1000, client 1001, rejected" \
5956 "$P_SRV dhm_file=data_files/dh.1000.pem" \
5957 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5958 debug_level=1 dhmlen=1001" \
5959 1 \
5960 -c "DHM prime too short:"
5961
5962run_test "DHM size: server 999, client 1000, rejected" \
5963 "$P_SRV dhm_file=data_files/dh.999.pem" \
5964 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5965 debug_level=1 dhmlen=1000" \
5966 1 \
5967 -c "DHM prime too short:"
5968
5969run_test "DHM size: server 998, client 999, rejected" \
5970 "$P_SRV dhm_file=data_files/dh.998.pem" \
5971 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5972 debug_level=1 dhmlen=999" \
5973 1 \
5974 -c "DHM prime too short:"
5975
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02005976run_test "DHM size: server default, client 2049, rejected" \
5977 "$P_SRV" \
5978 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
5979 debug_level=1 dhmlen=2049" \
5980 1 \
5981 -c "DHM prime too short:"
5982
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02005983# Tests for PSK callback
5984
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005985run_test "PSK callback: psk, no callback" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02005986 "$P_SRV psk=abc123 psk_identity=foo" \
5987 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
5988 psk_identity=foo psk=abc123" \
5989 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01005990 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02005991 -S "SSL - Unknown identity received" \
5992 -S "SSL - Verification of the message MAC failed"
5993
Hanno Beckerf7027512018-10-23 15:27:39 +01005994requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
5995run_test "PSK callback: opaque psk on client, no callback" \
5996 "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00005997 "$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 +00005998 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01005999 0 \
6000 -c "skip PMS generation for opaque PSK"\
6001 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006002 -C "session hash for extended master secret"\
6003 -S "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006004 -S "SSL - None of the common ciphersuites is usable" \
6005 -S "SSL - Unknown identity received" \
6006 -S "SSL - Verification of the message MAC failed"
6007
6008requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6009run_test "PSK callback: opaque psk on client, no callback, SHA-384" \
6010 "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006011 "$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 +00006012 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006013 0 \
6014 -c "skip PMS generation for opaque PSK"\
6015 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006016 -C "session hash for extended master secret"\
6017 -S "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006018 -S "SSL - None of the common ciphersuites is usable" \
6019 -S "SSL - Unknown identity received" \
6020 -S "SSL - Verification of the message MAC failed"
6021
6022requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6023run_test "PSK callback: opaque psk on client, no callback, EMS" \
6024 "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006025 "$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 +00006026 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006027 0 \
6028 -c "skip PMS generation for opaque PSK"\
6029 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006030 -c "session hash for extended master secret"\
6031 -s "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006032 -S "SSL - None of the common ciphersuites is usable" \
6033 -S "SSL - Unknown identity received" \
6034 -S "SSL - Verification of the message MAC failed"
6035
6036requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6037run_test "PSK callback: opaque psk on client, no callback, SHA-384, EMS" \
6038 "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006039 "$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 +00006040 psk_identity=foo psk=abc123 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006041 0 \
6042 -c "skip PMS generation for opaque PSK"\
6043 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006044 -c "session hash for extended master secret"\
6045 -s "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006046 -S "SSL - None of the common ciphersuites is usable" \
6047 -S "SSL - Unknown identity received" \
6048 -S "SSL - Verification of the message MAC failed"
6049
Hanno Becker28c79dc2018-10-26 13:15:08 +01006050requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6051run_test "PSK callback: raw psk on client, static opaque on server, no callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006052 "$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" \
6053 "$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 +01006054 psk_identity=foo psk=abc123" \
6055 0 \
6056 -C "skip PMS generation for opaque PSK"\
6057 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006058 -C "session hash for extended master secret"\
6059 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006060 -S "SSL - None of the common ciphersuites is usable" \
6061 -S "SSL - Unknown identity received" \
6062 -S "SSL - Verification of the message MAC failed"
6063
6064requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6065run_test "PSK callback: raw psk on client, static opaque on server, no callback, SHA-384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006066 "$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" \
6067 "$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 +01006068 psk_identity=foo psk=abc123" \
6069 0 \
6070 -C "skip PMS generation for opaque PSK"\
6071 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006072 -C "session hash for extended master secret"\
6073 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006074 -S "SSL - None of the common ciphersuites is usable" \
6075 -S "SSL - Unknown identity received" \
6076 -S "SSL - Verification of the message MAC failed"
6077
6078requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6079run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006080 "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006081 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006082 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006083 psk_identity=foo psk=abc123 extended_ms=1" \
6084 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006085 -c "session hash for extended master secret"\
6086 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006087 -C "skip PMS generation for opaque PSK"\
6088 -s "skip PMS generation for opaque PSK"\
6089 -S "SSL - None of the common ciphersuites is usable" \
6090 -S "SSL - Unknown identity received" \
6091 -S "SSL - Verification of the message MAC failed"
6092
6093requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6094run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS, SHA384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006095 "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006096 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006097 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006098 psk_identity=foo psk=abc123 extended_ms=1" \
6099 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006100 -c "session hash for extended master secret"\
6101 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006102 -C "skip PMS generation for opaque PSK"\
6103 -s "skip PMS generation for opaque PSK"\
6104 -S "SSL - None of the common ciphersuites is usable" \
6105 -S "SSL - Unknown identity received" \
6106 -S "SSL - Verification of the message MAC failed"
6107
6108requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6109run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006110 "$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" \
6111 "$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 +01006112 psk_identity=def psk=beef" \
6113 0 \
6114 -C "skip PMS generation for opaque PSK"\
6115 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006116 -C "session hash for extended master secret"\
6117 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006118 -S "SSL - None of the common ciphersuites is usable" \
6119 -S "SSL - Unknown identity received" \
6120 -S "SSL - Verification of the message MAC failed"
6121
6122requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6123run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, SHA-384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006124 "$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" \
6125 "$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 +01006126 psk_identity=def psk=beef" \
6127 0 \
6128 -C "skip PMS generation for opaque PSK"\
6129 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006130 -C "session hash for extended master secret"\
6131 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006132 -S "SSL - None of the common ciphersuites is usable" \
6133 -S "SSL - Unknown identity received" \
6134 -S "SSL - Verification of the message MAC failed"
6135
6136requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6137run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006138 "$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 +01006139 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006140 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006141 psk_identity=abc psk=dead extended_ms=1" \
6142 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006143 -c "session hash for extended master secret"\
6144 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006145 -C "skip PMS generation for opaque PSK"\
6146 -s "skip PMS generation for opaque PSK"\
6147 -S "SSL - None of the common ciphersuites is usable" \
6148 -S "SSL - Unknown identity received" \
6149 -S "SSL - Verification of the message MAC failed"
6150
6151requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6152run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS, SHA384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006153 "$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 +01006154 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006155 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006156 psk_identity=abc psk=dead extended_ms=1" \
6157 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006158 -c "session hash for extended master secret"\
6159 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006160 -C "skip PMS generation for opaque PSK"\
6161 -s "skip PMS generation for opaque PSK"\
6162 -S "SSL - None of the common ciphersuites is usable" \
6163 -S "SSL - Unknown identity received" \
6164 -S "SSL - Verification of the message MAC failed"
6165
6166requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6167run_test "PSK callback: raw psk on client, mismatching static raw PSK on server, opaque PSK from callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006168 "$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" \
6169 "$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 +01006170 psk_identity=def psk=beef" \
6171 0 \
6172 -C "skip PMS generation for opaque PSK"\
6173 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006174 -C "session hash for extended master secret"\
6175 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006176 -S "SSL - None of the common ciphersuites is usable" \
6177 -S "SSL - Unknown identity received" \
6178 -S "SSL - Verification of the message MAC failed"
6179
6180requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6181run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, opaque PSK from callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006182 "$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" \
6183 "$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 +01006184 psk_identity=def psk=beef" \
6185 0 \
6186 -C "skip PMS generation for opaque PSK"\
6187 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006188 -C "session hash for extended master secret"\
6189 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006190 -S "SSL - None of the common ciphersuites is usable" \
6191 -S "SSL - Unknown identity received" \
6192 -S "SSL - Verification of the message MAC failed"
6193
6194requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6195run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, raw PSK from callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006196 "$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" \
6197 "$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 +01006198 psk_identity=def psk=beef" \
6199 0 \
6200 -C "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006201 -C "session hash for extended master secret"\
6202 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006203 -S "SSL - None of the common ciphersuites is usable" \
6204 -S "SSL - Unknown identity received" \
6205 -S "SSL - Verification of the message MAC failed"
6206
6207requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6208run_test "PSK callback: raw psk on client, id-matching but wrong raw PSK on server, opaque PSK from callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006209 "$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" \
6210 "$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 +01006211 psk_identity=def psk=beef" \
6212 0 \
6213 -C "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006214 -C "session hash for extended master secret"\
6215 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006216 -S "SSL - None of the common ciphersuites is usable" \
6217 -S "SSL - Unknown identity received" \
6218 -S "SSL - Verification of the message MAC failed"
6219
6220requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6221run_test "PSK callback: raw psk on client, matching opaque PSK on server, wrong opaque PSK from callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006222 "$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" \
6223 "$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 +01006224 psk_identity=def psk=beef" \
6225 1 \
6226 -s "SSL - Verification of the message MAC failed"
6227
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006228run_test "PSK callback: no psk, no callback" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02006229 "$P_SRV" \
6230 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6231 psk_identity=foo psk=abc123" \
6232 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006233 -s "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006234 -S "SSL - Unknown identity received" \
6235 -S "SSL - Verification of the message MAC failed"
6236
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006237run_test "PSK callback: callback overrides other settings" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006238 "$P_SRV psk=abc123 psk_identity=foo psk_list=abc,dead,def,beef" \
6239 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6240 psk_identity=foo psk=abc123" \
6241 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006242 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006243 -s "SSL - Unknown identity received" \
6244 -S "SSL - Verification of the message MAC failed"
6245
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006246run_test "PSK callback: first id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006247 "$P_SRV psk_list=abc,dead,def,beef" \
6248 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6249 psk_identity=abc psk=dead" \
6250 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006251 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006252 -S "SSL - Unknown identity received" \
6253 -S "SSL - Verification of the message MAC failed"
6254
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006255run_test "PSK callback: second id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006256 "$P_SRV psk_list=abc,dead,def,beef" \
6257 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6258 psk_identity=def psk=beef" \
6259 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006260 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006261 -S "SSL - Unknown identity received" \
6262 -S "SSL - Verification of the message MAC failed"
6263
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006264run_test "PSK callback: no match" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006265 "$P_SRV psk_list=abc,dead,def,beef" \
6266 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6267 psk_identity=ghi psk=beef" \
6268 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006269 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006270 -s "SSL - Unknown identity received" \
6271 -S "SSL - Verification of the message MAC failed"
6272
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006273run_test "PSK callback: wrong key" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006274 "$P_SRV psk_list=abc,dead,def,beef" \
6275 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6276 psk_identity=abc psk=beef" \
6277 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006278 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006279 -S "SSL - Unknown identity received" \
6280 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006281
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006282# Tests for EC J-PAKE
6283
Hanno Beckerfa452c42020-08-14 15:42:49 +01006284requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006285run_test "ECJPAKE: client not configured" \
6286 "$P_SRV debug_level=3" \
6287 "$P_CLI debug_level=3" \
6288 0 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006289 -C "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006290 -C "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006291 -S "found ecjpake kkpp extension" \
6292 -S "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006293 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006294 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006295 -C "found ecjpake_kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006296 -S "None of the common ciphersuites is usable"
6297
Hanno Beckerfa452c42020-08-14 15:42:49 +01006298requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006299run_test "ECJPAKE: server not configured" \
6300 "$P_SRV debug_level=3" \
6301 "$P_CLI debug_level=3 ecjpake_pw=bla \
6302 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6303 1 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006304 -c "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006305 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006306 -s "found ecjpake kkpp extension" \
6307 -s "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006308 -s "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006309 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006310 -C "found ecjpake_kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006311 -s "None of the common ciphersuites is usable"
6312
Hanno Beckerfa452c42020-08-14 15:42:49 +01006313requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006314run_test "ECJPAKE: working, TLS" \
6315 "$P_SRV debug_level=3 ecjpake_pw=bla" \
6316 "$P_CLI debug_level=3 ecjpake_pw=bla \
6317 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
Manuel Pégourié-Gonnard0f1660a2015-09-16 22:41:06 +02006318 0 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006319 -c "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006320 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006321 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006322 -s "found ecjpake kkpp extension" \
6323 -S "skip ecjpake kkpp extension" \
6324 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006325 -s "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006326 -c "found ecjpake_kkpp extension" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006327 -S "None of the common ciphersuites is usable" \
6328 -S "SSL - Verification of the message MAC failed"
6329
Janos Follath74537a62016-09-02 13:45:28 +01006330server_needs_more_time 1
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006331requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006332run_test "ECJPAKE: password mismatch, TLS" \
6333 "$P_SRV debug_level=3 ecjpake_pw=bla" \
6334 "$P_CLI debug_level=3 ecjpake_pw=bad \
6335 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6336 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006337 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006338 -s "SSL - Verification of the message MAC failed"
6339
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006340requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006341run_test "ECJPAKE: working, DTLS" \
6342 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
6343 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
6344 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6345 0 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006346 -c "re-using cached ecjpake parameters" \
6347 -S "SSL - Verification of the message MAC failed"
6348
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006349requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006350run_test "ECJPAKE: working, DTLS, no cookie" \
6351 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla cookies=0" \
6352 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
6353 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6354 0 \
6355 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006356 -S "SSL - Verification of the message MAC failed"
6357
Janos Follath74537a62016-09-02 13:45:28 +01006358server_needs_more_time 1
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006359requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006360run_test "ECJPAKE: password mismatch, DTLS" \
6361 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
6362 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bad \
6363 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6364 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006365 -c "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006366 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006367
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02006368# for tests with configs/config-thread.h
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006369requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02006370run_test "ECJPAKE: working, DTLS, nolog" \
6371 "$P_SRV dtls=1 ecjpake_pw=bla" \
6372 "$P_CLI dtls=1 ecjpake_pw=bla \
6373 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6374 0
6375
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006376# Tests for ciphersuites per version
6377
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006378requires_config_enabled MBEDTLS_CAMELLIA_C
6379requires_config_enabled MBEDTLS_AES_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006380run_test "Per-version suites: SSL3" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006381 "$P_SRV min_version=ssl3 version_suites=TLS-RSA-WITH-CAMELLIA-128-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006382 "$P_CLI force_version=ssl3" \
6383 0 \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006384 -c "Ciphersuite is TLS-RSA-WITH-CAMELLIA-128-CBC-SHA"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006385
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006386requires_config_enabled MBEDTLS_CAMELLIA_C
6387requires_config_enabled MBEDTLS_AES_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006388run_test "Per-version suites: TLS 1.0" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006389 "$P_SRV version_suites=TLS-RSA-WITH-CAMELLIA-128-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01006390 "$P_CLI force_version=tls1 arc4=1" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006391 0 \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006392 -c "Ciphersuite is TLS-RSA-WITH-AES-256-CBC-SHA"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006393
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006394requires_config_enabled MBEDTLS_CAMELLIA_C
6395requires_config_enabled MBEDTLS_AES_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006396run_test "Per-version suites: TLS 1.1" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006397 "$P_SRV version_suites=TLS-RSA-WITH-CAMELLIA-128-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006398 "$P_CLI force_version=tls1_1" \
6399 0 \
6400 -c "Ciphersuite is TLS-RSA-WITH-AES-128-CBC-SHA"
6401
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006402requires_config_enabled MBEDTLS_CAMELLIA_C
6403requires_config_enabled MBEDTLS_AES_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006404run_test "Per-version suites: TLS 1.2" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006405 "$P_SRV version_suites=TLS-RSA-WITH-CAMELLIA-128-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006406 "$P_CLI force_version=tls12" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006407 0 \
6408 -c "Ciphersuite is TLS-RSA-WITH-AES-128-GCM-SHA256"
6409
Manuel Pégourié-Gonnard4cc8c632015-07-23 12:24:03 +02006410# Test for ClientHello without extensions
6411
Manuel Pégourié-Gonnardd55bc202015-08-04 16:22:30 +02006412requires_gnutls
Manuel Pégourié-Gonnardbc4da292020-01-30 12:45:14 +01006413run_test "ClientHello without extensions" \
Manuel Pégourié-Gonnard77cbeff2020-01-30 10:58:57 +01006414 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02006415 "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION localhost" \
Gilles Peskine5d2511c2017-05-12 13:16:40 +02006416 0 \
6417 -s "dumping 'client hello extensions' (0 bytes)"
6418
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006419# Tests for mbedtls_ssl_get_bytes_avail()
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006420
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006421# The server first reads buffer_size-1 bytes, then reads the remainder.
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006422run_test "mbedtls_ssl_get_bytes_avail: no extra data" \
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006423 "$P_SRV buffer_size=100" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006424 "$P_CLI request_size=100" \
6425 0 \
6426 -s "Read from client: 100 bytes read$"
6427
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006428run_test "mbedtls_ssl_get_bytes_avail: extra data (+1)" \
6429 "$P_SRV buffer_size=100" \
6430 "$P_CLI request_size=101" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006431 0 \
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006432 -s "Read from client: 101 bytes read (100 + 1)"
6433
6434requires_max_content_len 200
6435run_test "mbedtls_ssl_get_bytes_avail: extra data (*2)" \
6436 "$P_SRV buffer_size=100" \
6437 "$P_CLI request_size=200" \
6438 0 \
6439 -s "Read from client: 200 bytes read (100 + 100)"
6440
6441run_test "mbedtls_ssl_get_bytes_avail: extra data (max)" \
6442 "$P_SRV buffer_size=100" \
6443 "$P_CLI request_size=$MAX_CONTENT_LEN" \
6444 0 \
6445 -s "Read from client: $MAX_CONTENT_LEN bytes read (100 + $((MAX_CONTENT_LEN - 100)))"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006446
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006447# Tests for small client packets
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006448
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006449run_test "Small client packet SSLv3 BlockCipher" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01006450 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006451 "$P_CLI request_size=1 force_version=ssl3 \
6452 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6453 0 \
6454 -s "Read from client: 1 bytes read"
6455
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006456run_test "Small client packet SSLv3 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006457 "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006458 "$P_CLI request_size=1 force_version=ssl3 \
6459 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6460 0 \
6461 -s "Read from client: 1 bytes read"
6462
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006463run_test "Small client packet TLS 1.0 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006464 "$P_SRV" \
6465 "$P_CLI request_size=1 force_version=tls1 \
6466 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6467 0 \
6468 -s "Read from client: 1 bytes read"
6469
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006470run_test "Small client packet TLS 1.0 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006471 "$P_SRV" \
6472 "$P_CLI request_size=1 force_version=tls1 etm=0 \
6473 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6474 0 \
6475 -s "Read from client: 1 bytes read"
6476
Hanno Becker32c55012017-11-10 08:42:54 +00006477requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006478run_test "Small client packet TLS 1.0 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006479 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006480 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006481 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006482 0 \
6483 -s "Read from client: 1 bytes read"
6484
Hanno Becker32c55012017-11-10 08:42:54 +00006485requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006486run_test "Small client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006487 "$P_SRV trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006488 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006489 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006490 0 \
6491 -s "Read from client: 1 bytes read"
6492
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006493run_test "Small client packet TLS 1.0 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006494 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006495 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker8501f982017-11-10 08:59:04 +00006496 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6497 0 \
6498 -s "Read from client: 1 bytes read"
6499
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006500run_test "Small client packet TLS 1.0 StreamCipher, without EtM" \
Hanno Becker8501f982017-11-10 08:59:04 +00006501 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6502 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006503 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006504 0 \
6505 -s "Read from client: 1 bytes read"
6506
6507requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006508run_test "Small client packet TLS 1.0 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006509 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006510 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006511 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006512 0 \
6513 -s "Read from client: 1 bytes read"
6514
Hanno Becker8501f982017-11-10 08:59:04 +00006515requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006516run_test "Small client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006517 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6518 "$P_CLI request_size=1 force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
6519 trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006520 0 \
6521 -s "Read from client: 1 bytes read"
6522
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006523run_test "Small client packet TLS 1.1 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006524 "$P_SRV" \
6525 "$P_CLI request_size=1 force_version=tls1_1 \
6526 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6527 0 \
6528 -s "Read from client: 1 bytes read"
6529
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006530run_test "Small client packet TLS 1.1 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006531 "$P_SRV" \
Hanno Becker8501f982017-11-10 08:59:04 +00006532 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006533 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006534 0 \
6535 -s "Read from client: 1 bytes read"
6536
6537requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006538run_test "Small client packet TLS 1.1 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006539 "$P_SRV trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006540 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006541 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006542 0 \
6543 -s "Read from client: 1 bytes read"
6544
6545requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006546run_test "Small client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006547 "$P_SRV trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006548 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006549 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006550 0 \
6551 -s "Read from client: 1 bytes read"
6552
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006553run_test "Small client packet TLS 1.1 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006554 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006555 "$P_CLI request_size=1 force_version=tls1_1 \
6556 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6557 0 \
6558 -s "Read from client: 1 bytes read"
6559
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006560run_test "Small client packet TLS 1.1 StreamCipher, without EtM" \
Hanno Becker8501f982017-11-10 08:59:04 +00006561 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006562 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006563 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006564 0 \
6565 -s "Read from client: 1 bytes read"
6566
Hanno Becker8501f982017-11-10 08:59:04 +00006567requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006568run_test "Small client packet TLS 1.1 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006569 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006570 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006571 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006572 0 \
6573 -s "Read from client: 1 bytes read"
6574
Hanno Becker32c55012017-11-10 08:42:54 +00006575requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006576run_test "Small client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006577 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006578 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006579 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006580 0 \
6581 -s "Read from client: 1 bytes read"
6582
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006583run_test "Small client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006584 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006585 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006586 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6587 0 \
6588 -s "Read from client: 1 bytes read"
6589
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006590run_test "Small client packet TLS 1.2 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006591 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006592 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006593 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006594 0 \
6595 -s "Read from client: 1 bytes read"
6596
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006597run_test "Small client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006598 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006599 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01006600 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006601 0 \
6602 -s "Read from client: 1 bytes read"
6603
Hanno Becker32c55012017-11-10 08:42:54 +00006604requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006605run_test "Small client packet TLS 1.2 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006606 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006607 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006608 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006609 0 \
6610 -s "Read from client: 1 bytes read"
6611
Hanno Becker8501f982017-11-10 08:59:04 +00006612requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006613run_test "Small client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006614 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006615 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006616 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006617 0 \
6618 -s "Read from client: 1 bytes read"
6619
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006620run_test "Small client packet TLS 1.2 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006621 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006622 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006623 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6624 0 \
6625 -s "Read from client: 1 bytes read"
6626
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006627run_test "Small client packet TLS 1.2 StreamCipher, without EtM" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006628 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006629 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006630 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006631 0 \
6632 -s "Read from client: 1 bytes read"
6633
Hanno Becker32c55012017-11-10 08:42:54 +00006634requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006635run_test "Small client packet TLS 1.2 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006636 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006637 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006638 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006639 0 \
6640 -s "Read from client: 1 bytes read"
6641
Hanno Becker8501f982017-11-10 08:59:04 +00006642requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006643run_test "Small client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006644 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006645 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006646 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006647 0 \
6648 -s "Read from client: 1 bytes read"
6649
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006650run_test "Small client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006651 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006652 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006653 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
6654 0 \
6655 -s "Read from client: 1 bytes read"
6656
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 Baif40545d2021-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
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006667run_test "Small client packet DTLS 1.0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006668 "$P_SRV dtls=1 force_version=dtls1" \
6669 "$P_CLI dtls=1 request_size=1 \
6670 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6671 0 \
6672 -s "Read from client: 1 bytes read"
6673
6674requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006675run_test "Small client packet DTLS 1.0, without EtM" \
Hanno Beckere2148042017-11-10 08:59:18 +00006676 "$P_SRV dtls=1 force_version=dtls1 etm=0" \
6677 "$P_CLI dtls=1 request_size=1 \
6678 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6679 0 \
6680 -s "Read from client: 1 bytes read"
6681
6682requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6683requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006684run_test "Small client packet DTLS 1.0, truncated hmac" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006685 "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1" \
6686 "$P_CLI dtls=1 request_size=1 trunc_hmac=1 \
Hanno Beckere2148042017-11-10 08:59:18 +00006687 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6688 0 \
6689 -s "Read from client: 1 bytes read"
6690
6691requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6692requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006693run_test "Small client packet DTLS 1.0, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006694 "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006695 "$P_CLI dtls=1 request_size=1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006696 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
Hanno Beckere2148042017-11-10 08:59:18 +00006697 0 \
6698 -s "Read from client: 1 bytes read"
6699
6700requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006701run_test "Small client packet DTLS 1.2" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006702 "$P_SRV dtls=1 force_version=dtls12" \
Hanno Beckere2148042017-11-10 08:59:18 +00006703 "$P_CLI dtls=1 request_size=1 \
6704 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6705 0 \
6706 -s "Read from client: 1 bytes read"
6707
6708requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006709run_test "Small client packet DTLS 1.2, without EtM" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006710 "$P_SRV dtls=1 force_version=dtls12 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006711 "$P_CLI dtls=1 request_size=1 \
6712 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6713 0 \
6714 -s "Read from client: 1 bytes read"
6715
6716requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6717requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006718run_test "Small client packet DTLS 1.2, truncated hmac" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006719 "$P_SRV dtls=1 force_version=dtls12 trunc_hmac=1" \
Hanno Beckere2148042017-11-10 08:59:18 +00006720 "$P_CLI dtls=1 request_size=1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006721 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Beckere2148042017-11-10 08:59:18 +00006722 0 \
6723 -s "Read from client: 1 bytes read"
6724
6725requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6726requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006727run_test "Small client packet DTLS 1.2, without EtM, truncated MAC" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006728 "$P_SRV dtls=1 force_version=dtls12 trunc_hmac=1 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006729 "$P_CLI dtls=1 request_size=1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006730 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
Hanno Beckere2148042017-11-10 08:59:18 +00006731 0 \
6732 -s "Read from client: 1 bytes read"
6733
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006734# Tests for small server packets
6735
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006736run_test "Small server packet SSLv3 BlockCipher" \
6737 "$P_SRV response_size=1 min_version=ssl3" \
6738 "$P_CLI force_version=ssl3 \
6739 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6740 0 \
6741 -c "Read from server: 1 bytes read"
6742
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006743run_test "Small server packet SSLv3 StreamCipher" \
6744 "$P_SRV response_size=1 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6745 "$P_CLI force_version=ssl3 \
6746 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6747 0 \
6748 -c "Read from server: 1 bytes read"
6749
6750run_test "Small server packet TLS 1.0 BlockCipher" \
6751 "$P_SRV response_size=1" \
6752 "$P_CLI force_version=tls1 \
6753 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6754 0 \
6755 -c "Read from server: 1 bytes read"
6756
6757run_test "Small server packet TLS 1.0 BlockCipher, without EtM" \
6758 "$P_SRV response_size=1" \
6759 "$P_CLI force_version=tls1 etm=0 \
6760 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6761 0 \
6762 -c "Read from server: 1 bytes read"
6763
6764requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6765run_test "Small server packet TLS 1.0 BlockCipher, truncated MAC" \
6766 "$P_SRV response_size=1 trunc_hmac=1" \
6767 "$P_CLI force_version=tls1 \
6768 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
6769 0 \
6770 -c "Read from server: 1 bytes read"
6771
6772requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6773run_test "Small server packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
6774 "$P_SRV response_size=1 trunc_hmac=1" \
6775 "$P_CLI force_version=tls1 \
6776 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
6777 0 \
6778 -c "Read from server: 1 bytes read"
6779
6780run_test "Small server packet TLS 1.0 StreamCipher" \
6781 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6782 "$P_CLI force_version=tls1 \
6783 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6784 0 \
6785 -c "Read from server: 1 bytes read"
6786
6787run_test "Small server packet TLS 1.0 StreamCipher, without EtM" \
6788 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6789 "$P_CLI force_version=tls1 \
6790 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
6791 0 \
6792 -c "Read from server: 1 bytes read"
6793
6794requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6795run_test "Small server packet TLS 1.0 StreamCipher, truncated MAC" \
6796 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6797 "$P_CLI force_version=tls1 \
6798 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6799 0 \
6800 -c "Read from server: 1 bytes read"
6801
6802requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6803run_test "Small server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
6804 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6805 "$P_CLI force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
6806 trunc_hmac=1 etm=0" \
6807 0 \
6808 -c "Read from server: 1 bytes read"
6809
6810run_test "Small server packet TLS 1.1 BlockCipher" \
6811 "$P_SRV response_size=1" \
6812 "$P_CLI force_version=tls1_1 \
6813 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6814 0 \
6815 -c "Read from server: 1 bytes read"
6816
6817run_test "Small server packet TLS 1.1 BlockCipher, without EtM" \
6818 "$P_SRV response_size=1" \
6819 "$P_CLI force_version=tls1_1 \
6820 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
6821 0 \
6822 -c "Read from server: 1 bytes read"
6823
6824requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6825run_test "Small server packet TLS 1.1 BlockCipher, truncated MAC" \
6826 "$P_SRV response_size=1 trunc_hmac=1" \
6827 "$P_CLI force_version=tls1_1 \
6828 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
6829 0 \
6830 -c "Read from server: 1 bytes read"
6831
6832requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6833run_test "Small server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
6834 "$P_SRV response_size=1 trunc_hmac=1" \
6835 "$P_CLI force_version=tls1_1 \
6836 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
6837 0 \
6838 -c "Read from server: 1 bytes read"
6839
6840run_test "Small server packet TLS 1.1 StreamCipher" \
6841 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6842 "$P_CLI force_version=tls1_1 \
6843 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6844 0 \
6845 -c "Read from server: 1 bytes read"
6846
6847run_test "Small server packet TLS 1.1 StreamCipher, without EtM" \
6848 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6849 "$P_CLI force_version=tls1_1 \
6850 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
6851 0 \
6852 -c "Read from server: 1 bytes read"
6853
6854requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6855run_test "Small server packet TLS 1.1 StreamCipher, truncated MAC" \
6856 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6857 "$P_CLI force_version=tls1_1 \
6858 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6859 0 \
6860 -c "Read from server: 1 bytes read"
6861
6862requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6863run_test "Small server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
6864 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6865 "$P_CLI force_version=tls1_1 \
6866 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
6867 0 \
6868 -c "Read from server: 1 bytes read"
6869
6870run_test "Small server packet TLS 1.2 BlockCipher" \
6871 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006872 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006873 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6874 0 \
6875 -c "Read from server: 1 bytes read"
6876
6877run_test "Small server packet TLS 1.2 BlockCipher, without EtM" \
6878 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006879 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006880 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
6881 0 \
6882 -c "Read from server: 1 bytes read"
6883
6884run_test "Small server packet TLS 1.2 BlockCipher larger MAC" \
6885 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006886 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006887 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
6888 0 \
6889 -c "Read from server: 1 bytes read"
6890
6891requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6892run_test "Small server packet TLS 1.2 BlockCipher, truncated MAC" \
6893 "$P_SRV response_size=1 trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006894 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006895 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
6896 0 \
6897 -c "Read from server: 1 bytes read"
6898
6899requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6900run_test "Small server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
6901 "$P_SRV response_size=1 trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006902 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006903 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
6904 0 \
6905 -c "Read from server: 1 bytes read"
6906
6907run_test "Small server packet TLS 1.2 StreamCipher" \
6908 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006909 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006910 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6911 0 \
6912 -c "Read from server: 1 bytes read"
6913
6914run_test "Small server packet TLS 1.2 StreamCipher, without EtM" \
6915 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006916 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006917 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
6918 0 \
6919 -c "Read from server: 1 bytes read"
6920
6921requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6922run_test "Small server packet TLS 1.2 StreamCipher, truncated MAC" \
6923 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006924 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006925 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6926 0 \
6927 -c "Read from server: 1 bytes read"
6928
6929requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6930run_test "Small server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
6931 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006932 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006933 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
6934 0 \
6935 -c "Read from server: 1 bytes read"
6936
6937run_test "Small server packet TLS 1.2 AEAD" \
6938 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006939 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006940 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
6941 0 \
6942 -c "Read from server: 1 bytes read"
6943
6944run_test "Small server packet TLS 1.2 AEAD shorter tag" \
6945 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006946 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006947 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
6948 0 \
6949 -c "Read from server: 1 bytes read"
6950
6951# Tests for small server packets in DTLS
6952
6953requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6954run_test "Small server packet DTLS 1.0" \
6955 "$P_SRV dtls=1 response_size=1 force_version=dtls1" \
6956 "$P_CLI dtls=1 \
6957 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6958 0 \
6959 -c "Read from server: 1 bytes read"
6960
6961requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6962run_test "Small server packet DTLS 1.0, without EtM" \
6963 "$P_SRV dtls=1 response_size=1 force_version=dtls1 etm=0" \
6964 "$P_CLI dtls=1 \
6965 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6966 0 \
6967 -c "Read from server: 1 bytes read"
6968
6969requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6970requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6971run_test "Small server packet DTLS 1.0, truncated hmac" \
6972 "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1" \
6973 "$P_CLI dtls=1 trunc_hmac=1 \
6974 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6975 0 \
6976 -c "Read from server: 1 bytes read"
6977
6978requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6979requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
6980run_test "Small server packet DTLS 1.0, without EtM, truncated MAC" \
6981 "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1 etm=0" \
6982 "$P_CLI dtls=1 \
6983 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
6984 0 \
6985 -c "Read from server: 1 bytes read"
6986
6987requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6988run_test "Small server packet DTLS 1.2" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006989 "$P_SRV dtls=1 response_size=1 force_version=dtls12" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006990 "$P_CLI dtls=1 \
6991 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6992 0 \
6993 -c "Read from server: 1 bytes read"
6994
6995requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6996run_test "Small server packet DTLS 1.2, without EtM" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006997 "$P_SRV dtls=1 response_size=1 force_version=dtls12 etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006998 "$P_CLI dtls=1 \
6999 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7000 0 \
7001 -c "Read from server: 1 bytes read"
7002
7003requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7004requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7005run_test "Small server packet DTLS 1.2, truncated hmac" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007006 "$P_SRV dtls=1 response_size=1 force_version=dtls12 trunc_hmac=1" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007007 "$P_CLI dtls=1 \
7008 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
7009 0 \
7010 -c "Read from server: 1 bytes read"
7011
7012requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7013requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7014run_test "Small server packet DTLS 1.2, without EtM, truncated MAC" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007015 "$P_SRV dtls=1 response_size=1 force_version=dtls12 trunc_hmac=1 etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007016 "$P_CLI dtls=1 \
7017 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
7018 0 \
7019 -c "Read from server: 1 bytes read"
7020
Janos Follath00efff72016-05-06 13:48:23 +01007021# A test for extensions in SSLv3
Yuto Takanoa49124e2021-07-08 15:56:33 +01007022requires_max_content_len 4096
Janos Follath00efff72016-05-06 13:48:23 +01007023run_test "SSLv3 with extensions, server side" \
7024 "$P_SRV min_version=ssl3 debug_level=3" \
7025 "$P_CLI force_version=ssl3 tickets=1 max_frag_len=4096 alpn=abc,1234" \
7026 0 \
7027 -S "dumping 'client hello extensions'" \
7028 -S "server hello, total extension length:"
7029
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007030# Test for large client packets
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007031
Angus Grattonc4dd0732018-04-11 16:28:39 +10007032# How many fragments do we expect to write $1 bytes?
7033fragments_for_write() {
7034 echo "$(( ( $1 + $MAX_OUT_LEN - 1 ) / $MAX_OUT_LEN ))"
7035}
7036
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007037run_test "Large client packet SSLv3 BlockCipher" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01007038 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007039 "$P_CLI request_size=16384 force_version=ssl3 recsplit=0 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007040 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7041 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007042 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7043 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007044
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007045run_test "Large client packet SSLv3 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007046 "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007047 "$P_CLI request_size=16384 force_version=ssl3 \
7048 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7049 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007050 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7051 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007052
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007053run_test "Large client packet TLS 1.0 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007054 "$P_SRV" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007055 "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007056 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7057 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007058 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7059 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007060
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007061run_test "Large client packet TLS 1.0 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007062 "$P_SRV" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007063 "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \
7064 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7065 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007066 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007067
Hanno Becker32c55012017-11-10 08:42:54 +00007068requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007069run_test "Large client packet TLS 1.0 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007070 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007071 "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007072 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007073 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007074 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7075 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007076
Hanno Becker32c55012017-11-10 08:42:54 +00007077requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007078run_test "Large client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007079 "$P_SRV trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007080 "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007081 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007082 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007083 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007084
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007085run_test "Large client packet TLS 1.0 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007086 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007087 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007088 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7089 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007090 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007091
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007092run_test "Large client packet TLS 1.0 StreamCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007093 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7094 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007095 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007096 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007097 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007098
7099requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007100run_test "Large client packet TLS 1.0 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007101 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007102 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007103 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007104 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007105 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007106
Hanno Becker278fc7a2017-11-10 09:16:28 +00007107requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007108run_test "Large client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007109 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007110 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007111 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007112 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007113 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7114 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007115
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007116run_test "Large client packet TLS 1.1 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007117 "$P_SRV" \
7118 "$P_CLI request_size=16384 force_version=tls1_1 \
7119 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7120 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007121 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7122 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007123
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007124run_test "Large client packet TLS 1.1 BlockCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007125 "$P_SRV" \
7126 "$P_CLI request_size=16384 force_version=tls1_1 etm=0 \
7127 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007128 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007129 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007130
Hanno Becker32c55012017-11-10 08:42:54 +00007131requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007132run_test "Large client packet TLS 1.1 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007133 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007134 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007135 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007136 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007137 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007138
Hanno Becker32c55012017-11-10 08:42:54 +00007139requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007140run_test "Large client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007141 "$P_SRV trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007142 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007143 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007144 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007145 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007146
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007147run_test "Large client packet TLS 1.1 StreamCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007148 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7149 "$P_CLI request_size=16384 force_version=tls1_1 \
7150 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7151 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007152 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7153 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007154
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007155run_test "Large client packet TLS 1.1 StreamCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007156 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007157 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007158 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007159 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007160 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7161 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007162
Hanno Becker278fc7a2017-11-10 09:16:28 +00007163requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007164run_test "Large client packet TLS 1.1 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007165 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007166 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007167 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007168 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007169 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007170
Hanno Becker278fc7a2017-11-10 09:16:28 +00007171requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007172run_test "Large client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007173 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007174 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007175 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007176 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007177 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7178 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007179
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007180run_test "Large client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007181 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007182 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007183 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7184 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007185 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7186 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007187
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007188run_test "Large client packet TLS 1.2 BlockCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007189 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007190 "$P_CLI request_size=16384 force_version=tls12 etm=0 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007191 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7192 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007193 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007194
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007195run_test "Large client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007196 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007197 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007198 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007199 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007200 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7201 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007202
Hanno Becker32c55012017-11-10 08:42:54 +00007203requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007204run_test "Large client packet TLS 1.2 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007205 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007206 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007207 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007208 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007209 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007210
Hanno Becker278fc7a2017-11-10 09:16:28 +00007211requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007212run_test "Large client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007213 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007214 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007215 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007216 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007217 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7218 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007219
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007220run_test "Large client packet TLS 1.2 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007221 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007222 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007223 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7224 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007225 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7226 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007227
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007228run_test "Large client packet TLS 1.2 StreamCipher, without EtM" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007229 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007230 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007231 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7232 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007233 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007234
Hanno Becker32c55012017-11-10 08:42:54 +00007235requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007236run_test "Large client packet TLS 1.2 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007237 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007238 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007239 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007240 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007241 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007242
Hanno Becker278fc7a2017-11-10 09:16:28 +00007243requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007244run_test "Large client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007245 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007246 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007247 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007248 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007249 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7250 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007251
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007252run_test "Large client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007253 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007254 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007255 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
7256 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007257 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7258 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007259
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007260run_test "Large client packet TLS 1.2 AEAD shorter tag" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007261 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007262 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007263 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
7264 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007265 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7266 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007267
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007268# Test for large server packets
Yuto Takanoa49124e2021-07-08 15:56:33 +01007269# The tests below fail when the server's OUT_CONTENT_LEN is less than 16384.
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007270run_test "Large server packet SSLv3 StreamCipher" \
7271 "$P_SRV response_size=16384 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7272 "$P_CLI force_version=ssl3 \
7273 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7274 0 \
7275 -c "Read from server: 16384 bytes read"
7276
Andrzej Kurek6a4f2242018-08-27 08:00:13 -04007277# Checking next 4 tests logs for 1n-1 split against BEAST too
Andrzej Kurek6a4f2242018-08-27 08:00:13 -04007278run_test "Large server packet SSLv3 BlockCipher" \
7279 "$P_SRV response_size=16384 min_version=ssl3" \
7280 "$P_CLI force_version=ssl3 recsplit=0 \
7281 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7282 0 \
7283 -c "Read from server: 1 bytes read"\
7284 -c "16383 bytes read"\
7285 -C "Read from server: 16384 bytes read"
7286
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007287run_test "Large server packet TLS 1.0 BlockCipher" \
7288 "$P_SRV response_size=16384" \
7289 "$P_CLI force_version=tls1 recsplit=0 \
7290 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7291 0 \
7292 -c "Read from server: 1 bytes read"\
7293 -c "16383 bytes read"\
7294 -C "Read from server: 16384 bytes read"
7295
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007296run_test "Large server packet TLS 1.0 BlockCipher, without EtM" \
7297 "$P_SRV response_size=16384" \
7298 "$P_CLI force_version=tls1 etm=0 recsplit=0 \
7299 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7300 0 \
7301 -c "Read from server: 1 bytes read"\
7302 -c "16383 bytes read"\
7303 -C "Read from server: 16384 bytes read"
7304
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007305requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7306run_test "Large server packet TLS 1.0 BlockCipher truncated MAC" \
7307 "$P_SRV response_size=16384" \
7308 "$P_CLI force_version=tls1 recsplit=0 \
7309 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
7310 trunc_hmac=1" \
7311 0 \
7312 -c "Read from server: 1 bytes read"\
7313 -c "16383 bytes read"\
7314 -C "Read from server: 16384 bytes read"
7315
7316requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7317run_test "Large server packet TLS 1.0 StreamCipher truncated MAC" \
7318 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7319 "$P_CLI force_version=tls1 \
7320 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
7321 trunc_hmac=1" \
7322 0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007323 -s "16384 bytes written in 1 fragments" \
7324 -c "Read from server: 16384 bytes read"
7325
7326run_test "Large server packet TLS 1.0 StreamCipher" \
7327 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7328 "$P_CLI force_version=tls1 \
7329 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7330 0 \
7331 -s "16384 bytes written in 1 fragments" \
7332 -c "Read from server: 16384 bytes read"
7333
7334run_test "Large server packet TLS 1.0 StreamCipher, without EtM" \
7335 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7336 "$P_CLI force_version=tls1 \
7337 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7338 0 \
7339 -s "16384 bytes written in 1 fragments" \
7340 -c "Read from server: 16384 bytes read"
7341
7342requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7343run_test "Large server packet TLS 1.0 StreamCipher, truncated MAC" \
7344 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7345 "$P_CLI force_version=tls1 \
7346 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7347 0 \
7348 -s "16384 bytes written in 1 fragments" \
7349 -c "Read from server: 16384 bytes read"
7350
7351requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7352run_test "Large server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
7353 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7354 "$P_CLI force_version=tls1 \
7355 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7356 0 \
7357 -s "16384 bytes written in 1 fragments" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007358 -c "Read from server: 16384 bytes read"
7359
7360run_test "Large server packet TLS 1.1 BlockCipher" \
7361 "$P_SRV response_size=16384" \
7362 "$P_CLI force_version=tls1_1 \
7363 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7364 0 \
7365 -c "Read from server: 16384 bytes read"
7366
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007367run_test "Large server packet TLS 1.1 BlockCipher, without EtM" \
7368 "$P_SRV response_size=16384" \
7369 "$P_CLI force_version=tls1_1 etm=0 \
7370 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007371 0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007372 -s "16384 bytes written in 1 fragments" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007373 -c "Read from server: 16384 bytes read"
7374
7375requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7376run_test "Large server packet TLS 1.1 BlockCipher truncated MAC" \
7377 "$P_SRV response_size=16384" \
7378 "$P_CLI force_version=tls1_1 \
7379 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
7380 trunc_hmac=1" \
7381 0 \
7382 -c "Read from server: 16384 bytes read"
7383
7384requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007385run_test "Large server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
7386 "$P_SRV response_size=16384 trunc_hmac=1" \
7387 "$P_CLI force_version=tls1_1 \
7388 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
7389 0 \
7390 -s "16384 bytes written in 1 fragments" \
7391 -c "Read from server: 16384 bytes read"
7392
7393run_test "Large server packet TLS 1.1 StreamCipher" \
7394 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7395 "$P_CLI force_version=tls1_1 \
7396 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7397 0 \
7398 -c "Read from server: 16384 bytes read"
7399
7400run_test "Large server packet TLS 1.1 StreamCipher, without EtM" \
7401 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7402 "$P_CLI force_version=tls1_1 \
7403 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7404 0 \
7405 -s "16384 bytes written in 1 fragments" \
7406 -c "Read from server: 16384 bytes read"
7407
7408requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007409run_test "Large server packet TLS 1.1 StreamCipher truncated MAC" \
7410 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7411 "$P_CLI force_version=tls1_1 \
7412 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
7413 trunc_hmac=1" \
7414 0 \
7415 -c "Read from server: 16384 bytes read"
7416
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007417run_test "Large server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
7418 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7419 "$P_CLI force_version=tls1_1 \
7420 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7421 0 \
7422 -s "16384 bytes written in 1 fragments" \
7423 -c "Read from server: 16384 bytes read"
7424
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007425run_test "Large server packet TLS 1.2 BlockCipher" \
7426 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007427 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007428 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7429 0 \
7430 -c "Read from server: 16384 bytes read"
7431
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007432run_test "Large server packet TLS 1.2 BlockCipher, without EtM" \
7433 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007434 "$P_CLI force_version=tls12 etm=0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007435 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7436 0 \
7437 -s "16384 bytes written in 1 fragments" \
7438 -c "Read from server: 16384 bytes read"
7439
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007440run_test "Large server packet TLS 1.2 BlockCipher larger MAC" \
7441 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007442 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007443 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
7444 0 \
7445 -c "Read from server: 16384 bytes read"
7446
7447requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7448run_test "Large server packet TLS 1.2 BlockCipher truncated MAC" \
7449 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007450 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007451 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
7452 trunc_hmac=1" \
7453 0 \
7454 -c "Read from server: 16384 bytes read"
7455
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007456run_test "Large server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
7457 "$P_SRV response_size=16384 trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007458 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007459 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
7460 0 \
7461 -s "16384 bytes written in 1 fragments" \
7462 -c "Read from server: 16384 bytes read"
7463
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007464run_test "Large server packet TLS 1.2 StreamCipher" \
7465 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007466 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007467 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7468 0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007469 -s "16384 bytes written in 1 fragments" \
7470 -c "Read from server: 16384 bytes read"
7471
7472run_test "Large server packet TLS 1.2 StreamCipher, without EtM" \
7473 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007474 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007475 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7476 0 \
7477 -s "16384 bytes written in 1 fragments" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007478 -c "Read from server: 16384 bytes read"
7479
7480requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7481run_test "Large server packet TLS 1.2 StreamCipher truncated MAC" \
7482 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007483 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007484 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
7485 trunc_hmac=1" \
7486 0 \
7487 -c "Read from server: 16384 bytes read"
7488
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007489requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7490run_test "Large server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
7491 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007492 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007493 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7494 0 \
7495 -s "16384 bytes written in 1 fragments" \
7496 -c "Read from server: 16384 bytes read"
7497
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007498run_test "Large server packet TLS 1.2 AEAD" \
7499 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007500 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007501 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
7502 0 \
7503 -c "Read from server: 16384 bytes read"
7504
7505run_test "Large server packet TLS 1.2 AEAD shorter tag" \
7506 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007507 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007508 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
7509 0 \
7510 -c "Read from server: 16384 bytes read"
7511
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007512# Tests for restartable ECC
7513
7514requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7515run_test "EC restart: TLS, default" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007516 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007517 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007518 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007519 debug_level=1" \
7520 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007521 -C "x509_verify_cert.*4b00" \
7522 -C "mbedtls_pk_verify.*4b00" \
7523 -C "mbedtls_ecdh_make_public.*4b00" \
7524 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007525
7526requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7527run_test "EC restart: TLS, max_ops=0" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007528 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007529 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007530 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007531 debug_level=1 ec_max_ops=0" \
7532 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007533 -C "x509_verify_cert.*4b00" \
7534 -C "mbedtls_pk_verify.*4b00" \
7535 -C "mbedtls_ecdh_make_public.*4b00" \
7536 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007537
7538requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7539run_test "EC restart: TLS, max_ops=65535" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007540 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007541 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007542 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007543 debug_level=1 ec_max_ops=65535" \
7544 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007545 -C "x509_verify_cert.*4b00" \
7546 -C "mbedtls_pk_verify.*4b00" \
7547 -C "mbedtls_ecdh_make_public.*4b00" \
7548 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007549
7550requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7551run_test "EC restart: TLS, max_ops=1000" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007552 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007553 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007554 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007555 debug_level=1 ec_max_ops=1000" \
7556 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007557 -c "x509_verify_cert.*4b00" \
7558 -c "mbedtls_pk_verify.*4b00" \
7559 -c "mbedtls_ecdh_make_public.*4b00" \
7560 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007561
7562requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007563run_test "EC restart: TLS, max_ops=1000, badsign" \
7564 "$P_SRV auth_mode=required \
7565 crt_file=data_files/server5-badsign.crt \
7566 key_file=data_files/server5.key" \
7567 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7568 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7569 debug_level=1 ec_max_ops=1000" \
7570 1 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007571 -c "x509_verify_cert.*4b00" \
7572 -C "mbedtls_pk_verify.*4b00" \
7573 -C "mbedtls_ecdh_make_public.*4b00" \
7574 -C "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007575 -c "! The certificate is not correctly signed by the trusted CA" \
7576 -c "! mbedtls_ssl_handshake returned" \
7577 -c "X509 - Certificate verification failed"
7578
7579requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7580run_test "EC restart: TLS, max_ops=1000, auth_mode=optional badsign" \
7581 "$P_SRV auth_mode=required \
7582 crt_file=data_files/server5-badsign.crt \
7583 key_file=data_files/server5.key" \
7584 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7585 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7586 debug_level=1 ec_max_ops=1000 auth_mode=optional" \
7587 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007588 -c "x509_verify_cert.*4b00" \
7589 -c "mbedtls_pk_verify.*4b00" \
7590 -c "mbedtls_ecdh_make_public.*4b00" \
7591 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007592 -c "! The certificate is not correctly signed by the trusted CA" \
7593 -C "! mbedtls_ssl_handshake returned" \
7594 -C "X509 - Certificate verification failed"
7595
7596requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7597run_test "EC restart: TLS, max_ops=1000, auth_mode=none badsign" \
7598 "$P_SRV auth_mode=required \
7599 crt_file=data_files/server5-badsign.crt \
7600 key_file=data_files/server5.key" \
7601 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7602 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7603 debug_level=1 ec_max_ops=1000 auth_mode=none" \
7604 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007605 -C "x509_verify_cert.*4b00" \
7606 -c "mbedtls_pk_verify.*4b00" \
7607 -c "mbedtls_ecdh_make_public.*4b00" \
7608 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007609 -C "! The certificate is not correctly signed by the trusted CA" \
7610 -C "! mbedtls_ssl_handshake returned" \
7611 -C "X509 - Certificate verification failed"
7612
7613requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007614run_test "EC restart: DTLS, max_ops=1000" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007615 "$P_SRV auth_mode=required dtls=1" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007616 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007617 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007618 dtls=1 debug_level=1 ec_max_ops=1000" \
7619 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007620 -c "x509_verify_cert.*4b00" \
7621 -c "mbedtls_pk_verify.*4b00" \
7622 -c "mbedtls_ecdh_make_public.*4b00" \
7623 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007624
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007625requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7626run_test "EC restart: TLS, max_ops=1000 no client auth" \
7627 "$P_SRV" \
7628 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7629 debug_level=1 ec_max_ops=1000" \
7630 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007631 -c "x509_verify_cert.*4b00" \
7632 -c "mbedtls_pk_verify.*4b00" \
7633 -c "mbedtls_ecdh_make_public.*4b00" \
7634 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007635
7636requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7637run_test "EC restart: TLS, max_ops=1000, ECDHE-PSK" \
7638 "$P_SRV psk=abc123" \
7639 "$P_CLI force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \
7640 psk=abc123 debug_level=1 ec_max_ops=1000" \
7641 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007642 -C "x509_verify_cert.*4b00" \
7643 -C "mbedtls_pk_verify.*4b00" \
7644 -C "mbedtls_ecdh_make_public.*4b00" \
7645 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007646
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007647# Tests of asynchronous private key support in SSL
7648
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007649requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007650run_test "SSL async private: sign, delay=0" \
7651 "$P_SRV \
7652 async_operations=s async_private_delay1=0 async_private_delay2=0" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007653 "$P_CLI" \
7654 0 \
7655 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007656 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007657
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007658requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007659run_test "SSL async private: sign, delay=1" \
7660 "$P_SRV \
7661 async_operations=s async_private_delay1=1 async_private_delay2=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007662 "$P_CLI" \
7663 0 \
7664 -s "Async sign callback: using key slot " \
7665 -s "Async resume (slot [0-9]): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007666 -s "Async resume (slot [0-9]): sign done, status=0"
7667
Gilles Peskine12d0cc12018-04-26 15:06:56 +02007668requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
7669run_test "SSL async private: sign, delay=2" \
7670 "$P_SRV \
7671 async_operations=s async_private_delay1=2 async_private_delay2=2" \
7672 "$P_CLI" \
7673 0 \
7674 -s "Async sign callback: using key slot " \
7675 -U "Async sign callback: using key slot " \
7676 -s "Async resume (slot [0-9]): call 1 more times." \
7677 -s "Async resume (slot [0-9]): call 0 more times." \
7678 -s "Async resume (slot [0-9]): sign done, status=0"
7679
Gilles Peskined3268832018-04-26 06:23:59 +02007680# Test that the async callback correctly signs the 36-byte hash of TLS 1.0/1.1
7681# with RSA PKCS#1v1.5 as used in TLS 1.0/1.1.
7682requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskined3268832018-04-26 06:23:59 +02007683run_test "SSL async private: sign, RSA, TLS 1.1" \
7684 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt \
7685 async_operations=s async_private_delay1=0 async_private_delay2=0" \
7686 "$P_CLI force_version=tls1_1" \
7687 0 \
7688 -s "Async sign callback: using key slot " \
7689 -s "Async resume (slot [0-9]): sign done, status=0"
7690
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007691requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine807d74a2018-04-30 10:30:49 +02007692run_test "SSL async private: sign, SNI" \
7693 "$P_SRV debug_level=3 \
7694 async_operations=s async_private_delay1=0 async_private_delay2=0 \
7695 crt_file=data_files/server5.crt key_file=data_files/server5.key \
7696 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
7697 "$P_CLI server_name=polarssl.example" \
7698 0 \
7699 -s "Async sign callback: using key slot " \
7700 -s "Async resume (slot [0-9]): sign done, status=0" \
7701 -s "parse ServerName extension" \
7702 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
7703 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
7704
7705requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007706run_test "SSL async private: decrypt, delay=0" \
7707 "$P_SRV \
7708 async_operations=d async_private_delay1=0 async_private_delay2=0" \
7709 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7710 0 \
7711 -s "Async decrypt callback: using key slot " \
7712 -s "Async resume (slot [0-9]): decrypt done, status=0"
7713
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007714requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007715run_test "SSL async private: decrypt, delay=1" \
7716 "$P_SRV \
7717 async_operations=d async_private_delay1=1 async_private_delay2=1" \
7718 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7719 0 \
7720 -s "Async decrypt callback: using key slot " \
7721 -s "Async resume (slot [0-9]): call 0 more times." \
7722 -s "Async resume (slot [0-9]): decrypt done, status=0"
7723
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007724requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007725run_test "SSL async private: decrypt RSA-PSK, delay=0" \
7726 "$P_SRV psk=abc123 \
7727 async_operations=d async_private_delay1=0 async_private_delay2=0" \
7728 "$P_CLI psk=abc123 \
7729 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
7730 0 \
7731 -s "Async decrypt callback: using key slot " \
7732 -s "Async resume (slot [0-9]): decrypt done, status=0"
7733
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007734requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007735run_test "SSL async private: decrypt RSA-PSK, delay=1" \
7736 "$P_SRV psk=abc123 \
7737 async_operations=d async_private_delay1=1 async_private_delay2=1" \
7738 "$P_CLI psk=abc123 \
7739 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
7740 0 \
7741 -s "Async decrypt callback: using key slot " \
7742 -s "Async resume (slot [0-9]): call 0 more times." \
7743 -s "Async resume (slot [0-9]): decrypt done, status=0"
7744
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007745requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007746run_test "SSL async private: sign callback not present" \
7747 "$P_SRV \
7748 async_operations=d async_private_delay1=1 async_private_delay2=1" \
7749 "$P_CLI; [ \$? -eq 1 ] &&
7750 $P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7751 0 \
7752 -S "Async sign callback" \
7753 -s "! mbedtls_ssl_handshake returned" \
7754 -s "The own private key or pre-shared key is not set, but needed" \
7755 -s "Async resume (slot [0-9]): decrypt done, status=0" \
7756 -s "Successful connection"
7757
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007758requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007759run_test "SSL async private: decrypt callback not present" \
7760 "$P_SRV debug_level=1 \
7761 async_operations=s async_private_delay1=1 async_private_delay2=1" \
7762 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA;
7763 [ \$? -eq 1 ] && $P_CLI" \
7764 0 \
7765 -S "Async decrypt callback" \
7766 -s "! mbedtls_ssl_handshake returned" \
7767 -s "got no RSA private key" \
7768 -s "Async resume (slot [0-9]): sign done, status=0" \
7769 -s "Successful connection"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007770
7771# key1: ECDSA, key2: RSA; use key1 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007772requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007773run_test "SSL async private: slot 0 used with key1" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007774 "$P_SRV \
7775 async_operations=s async_private_delay1=1 \
7776 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7777 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007778 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
7779 0 \
7780 -s "Async sign callback: using key slot 0," \
7781 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007782 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007783
7784# key1: ECDSA, key2: RSA; use key2 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007785requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007786run_test "SSL async private: slot 0 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007787 "$P_SRV \
7788 async_operations=s async_private_delay2=1 \
7789 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7790 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007791 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7792 0 \
7793 -s "Async sign callback: using key slot 0," \
7794 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007795 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007796
7797# key1: ECDSA, key2: RSA; use key2 from slot 1
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007798requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinead28bf02018-04-26 00:19:16 +02007799run_test "SSL async private: slot 1 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007800 "$P_SRV \
Gilles Peskine168dae82018-04-25 23:35:42 +02007801 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007802 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7803 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007804 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7805 0 \
7806 -s "Async sign callback: using key slot 1," \
7807 -s "Async resume (slot 1): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007808 -s "Async resume (slot 1): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007809
7810# key1: ECDSA, key2: RSA; use key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007811requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007812run_test "SSL async private: fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007813 "$P_SRV \
7814 async_operations=s async_private_delay1=1 \
7815 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7816 key_file2=data_files/server2.key crt_file2=data_files/server2.crt " \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007817 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7818 0 \
7819 -s "Async sign callback: no key matches this certificate."
7820
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007821requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007822run_test "SSL async private: sign, error in start" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007823 "$P_SRV \
7824 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7825 async_private_error=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007826 "$P_CLI" \
7827 1 \
7828 -s "Async sign callback: injected error" \
7829 -S "Async resume" \
Gilles Peskine37289cd2018-04-27 11:50:14 +02007830 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007831 -s "! mbedtls_ssl_handshake returned"
7832
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007833requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007834run_test "SSL async private: sign, cancel after start" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007835 "$P_SRV \
7836 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7837 async_private_error=2" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007838 "$P_CLI" \
7839 1 \
7840 -s "Async sign callback: using key slot " \
7841 -S "Async resume" \
7842 -s "Async cancel"
7843
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007844requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007845run_test "SSL async private: sign, error in resume" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007846 "$P_SRV \
7847 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7848 async_private_error=3" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007849 "$P_CLI" \
7850 1 \
7851 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007852 -s "Async resume callback: sign done but injected error" \
Gilles Peskine37289cd2018-04-27 11:50:14 +02007853 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007854 -s "! mbedtls_ssl_handshake returned"
7855
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007856requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007857run_test "SSL async private: decrypt, error in start" \
7858 "$P_SRV \
7859 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7860 async_private_error=1" \
7861 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7862 1 \
7863 -s "Async decrypt callback: injected error" \
7864 -S "Async resume" \
7865 -S "Async cancel" \
7866 -s "! mbedtls_ssl_handshake returned"
7867
7868requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
7869run_test "SSL async private: decrypt, cancel after start" \
7870 "$P_SRV \
7871 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7872 async_private_error=2" \
7873 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7874 1 \
7875 -s "Async decrypt callback: using key slot " \
7876 -S "Async resume" \
7877 -s "Async cancel"
7878
7879requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
7880run_test "SSL async private: decrypt, error in resume" \
7881 "$P_SRV \
7882 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7883 async_private_error=3" \
7884 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7885 1 \
7886 -s "Async decrypt callback: using key slot " \
7887 -s "Async resume callback: decrypt done but injected error" \
7888 -S "Async cancel" \
7889 -s "! mbedtls_ssl_handshake returned"
7890
7891requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007892run_test "SSL async private: cancel after start then operate correctly" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007893 "$P_SRV \
7894 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7895 async_private_error=-2" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007896 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
7897 0 \
7898 -s "Async cancel" \
7899 -s "! mbedtls_ssl_handshake returned" \
7900 -s "Async resume" \
7901 -s "Successful connection"
7902
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007903requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007904run_test "SSL async private: error in resume then operate correctly" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007905 "$P_SRV \
7906 async_operations=s async_private_delay1=1 async_private_delay2=1 \
7907 async_private_error=-3" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007908 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
7909 0 \
7910 -s "! mbedtls_ssl_handshake returned" \
7911 -s "Async resume" \
7912 -s "Successful connection"
7913
7914# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007915requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007916run_test "SSL async private: cancel after start then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007917 "$P_SRV \
7918 async_operations=s async_private_delay1=1 async_private_error=-2 \
7919 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7920 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007921 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
7922 [ \$? -eq 1 ] &&
7923 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7924 0 \
Gilles Peskinededa75a2018-04-30 10:02:45 +02007925 -s "Async sign callback: using key slot 0" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007926 -S "Async resume" \
7927 -s "Async cancel" \
7928 -s "! mbedtls_ssl_handshake returned" \
7929 -s "Async sign callback: no key matches this certificate." \
7930 -s "Successful connection"
7931
7932# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007933requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02007934run_test "SSL async private: sign, error in resume then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007935 "$P_SRV \
7936 async_operations=s async_private_delay1=1 async_private_error=-3 \
7937 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7938 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01007939 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
7940 [ \$? -eq 1 ] &&
7941 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
7942 0 \
7943 -s "Async resume" \
7944 -s "! mbedtls_ssl_handshake returned" \
7945 -s "Async sign callback: no key matches this certificate." \
7946 -s "Successful connection"
7947
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007948requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007949requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02007950run_test "SSL async private: renegotiation: client-initiated, sign" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007951 "$P_SRV \
7952 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007953 exchanges=2 renegotiation=1" \
7954 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \
7955 0 \
7956 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007957 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007958
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007959requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007960requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02007961run_test "SSL async private: renegotiation: server-initiated, sign" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007962 "$P_SRV \
7963 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007964 exchanges=2 renegotiation=1 renegotiate=1" \
7965 "$P_CLI exchanges=2 renegotiation=1" \
7966 0 \
7967 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007968 -s "Async resume (slot [0-9]): sign done, status=0"
7969
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007970requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007971requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02007972run_test "SSL async private: renegotiation: client-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007973 "$P_SRV \
7974 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7975 exchanges=2 renegotiation=1" \
7976 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1 \
7977 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7978 0 \
7979 -s "Async decrypt callback: using key slot " \
7980 -s "Async resume (slot [0-9]): decrypt done, status=0"
7981
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007982requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007983requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02007984run_test "SSL async private: renegotiation: server-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007985 "$P_SRV \
7986 async_operations=d async_private_delay1=1 async_private_delay2=1 \
7987 exchanges=2 renegotiation=1 renegotiate=1" \
7988 "$P_CLI exchanges=2 renegotiation=1 \
7989 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7990 0 \
7991 -s "Async decrypt callback: using key slot " \
7992 -s "Async resume (slot [0-9]): decrypt done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007993
Ron Eldor58093c82018-06-28 13:22:05 +03007994# Tests for ECC extensions (rfc 4492)
7995
Ron Eldor643df7c2018-06-28 16:17:00 +03007996requires_config_enabled MBEDTLS_AES_C
7997requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
7998requires_config_enabled MBEDTLS_SHA256_C
7999requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008000run_test "Force a non ECC ciphersuite in the client side" \
8001 "$P_SRV debug_level=3" \
Ron Eldor643df7c2018-06-28 16:17:00 +03008002 "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +03008003 0 \
8004 -C "client hello, adding supported_elliptic_curves extension" \
8005 -C "client hello, adding supported_point_formats extension" \
8006 -S "found supported elliptic curves extension" \
8007 -S "found supported point formats extension"
8008
Ron Eldor643df7c2018-06-28 16:17:00 +03008009requires_config_enabled MBEDTLS_AES_C
8010requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8011requires_config_enabled MBEDTLS_SHA256_C
8012requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008013run_test "Force a non ECC ciphersuite in the server side" \
Ron Eldor643df7c2018-06-28 16:17:00 +03008014 "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +03008015 "$P_CLI debug_level=3" \
8016 0 \
8017 -C "found supported_point_formats extension" \
8018 -S "server hello, supported_point_formats extension"
8019
Ron Eldor643df7c2018-06-28 16:17:00 +03008020requires_config_enabled MBEDTLS_AES_C
8021requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8022requires_config_enabled MBEDTLS_SHA256_C
8023requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008024run_test "Force an ECC ciphersuite in the client side" \
8025 "$P_SRV debug_level=3" \
8026 "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
8027 0 \
8028 -c "client hello, adding supported_elliptic_curves extension" \
8029 -c "client hello, adding supported_point_formats extension" \
8030 -s "found supported elliptic curves extension" \
8031 -s "found supported point formats extension"
8032
Ron Eldor643df7c2018-06-28 16:17:00 +03008033requires_config_enabled MBEDTLS_AES_C
8034requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8035requires_config_enabled MBEDTLS_SHA256_C
8036requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008037run_test "Force an ECC ciphersuite in the server side" \
8038 "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
8039 "$P_CLI debug_level=3" \
8040 0 \
8041 -c "found supported_point_formats extension" \
8042 -s "server hello, supported_point_formats extension"
8043
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008044# Tests for DTLS HelloVerifyRequest
8045
8046run_test "DTLS cookie: enabled" \
8047 "$P_SRV dtls=1 debug_level=2" \
8048 "$P_CLI dtls=1 debug_level=2" \
8049 0 \
8050 -s "cookie verification failed" \
8051 -s "cookie verification passed" \
8052 -S "cookie verification skipped" \
8053 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008054 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008055 -S "SSL - The requested feature is not available"
8056
8057run_test "DTLS cookie: disabled" \
8058 "$P_SRV dtls=1 debug_level=2 cookies=0" \
8059 "$P_CLI dtls=1 debug_level=2" \
8060 0 \
8061 -S "cookie verification failed" \
8062 -S "cookie verification passed" \
8063 -s "cookie verification skipped" \
8064 -C "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008065 -S "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008066 -S "SSL - The requested feature is not available"
8067
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008068run_test "DTLS cookie: default (failing)" \
8069 "$P_SRV dtls=1 debug_level=2 cookies=-1" \
8070 "$P_CLI dtls=1 debug_level=2 hs_timeout=100-400" \
8071 1 \
8072 -s "cookie verification failed" \
8073 -S "cookie verification passed" \
8074 -S "cookie verification skipped" \
8075 -C "received hello verify request" \
8076 -S "hello verification requested" \
8077 -s "SSL - The requested feature is not available"
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008078
8079requires_ipv6
8080run_test "DTLS cookie: enabled, IPv6" \
8081 "$P_SRV dtls=1 debug_level=2 server_addr=::1" \
8082 "$P_CLI dtls=1 debug_level=2 server_addr=::1" \
8083 0 \
8084 -s "cookie verification failed" \
8085 -s "cookie verification passed" \
8086 -S "cookie verification skipped" \
8087 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008088 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008089 -S "SSL - The requested feature is not available"
8090
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02008091run_test "DTLS cookie: enabled, nbio" \
8092 "$P_SRV dtls=1 nbio=2 debug_level=2" \
8093 "$P_CLI dtls=1 nbio=2 debug_level=2" \
8094 0 \
8095 -s "cookie verification failed" \
8096 -s "cookie verification passed" \
8097 -S "cookie verification skipped" \
8098 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008099 -s "hello verification requested" \
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02008100 -S "SSL - The requested feature is not available"
8101
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008102# Tests for client reconnecting from the same port with DTLS
8103
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008104not_with_valgrind # spurious resend
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008105run_test "DTLS client reconnect from same port: reference" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02008106 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
8107 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008108 0 \
8109 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008110 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008111 -S "Client initiated reconnection from same port"
8112
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008113not_with_valgrind # spurious resend
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008114run_test "DTLS client reconnect from same port: reconnect" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02008115 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
8116 "$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 +02008117 0 \
8118 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008119 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008120 -s "Client initiated reconnection from same port"
8121
Paul Bakker362689d2016-05-13 10:33:25 +01008122not_with_valgrind # server/client too slow to respond in time (next test has higher timeouts)
8123run_test "DTLS client reconnect from same port: reconnect, nbio, no valgrind" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008124 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 nbio=2" \
8125 "$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 +02008126 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008127 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008128 -s "Client initiated reconnection from same port"
8129
Paul Bakker362689d2016-05-13 10:33:25 +01008130only_with_valgrind # Only with valgrind, do previous test but with higher read_timeout and hs_timeout
8131run_test "DTLS client reconnect from same port: reconnect, nbio, valgrind" \
8132 "$P_SRV dtls=1 exchanges=2 read_timeout=2000 nbio=2 hs_timeout=1500-6000" \
8133 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=1500-3000 reconnect_hard=1" \
8134 0 \
8135 -S "The operation timed out" \
8136 -s "Client initiated reconnection from same port"
8137
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008138run_test "DTLS client reconnect from same port: no cookies" \
8139 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 cookies=0" \
Manuel Pégourié-Gonnard6ad23b92015-09-15 12:57:46 +02008140 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-8000 reconnect_hard=1" \
8141 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008142 -s "The operation timed out" \
8143 -S "Client initiated reconnection from same port"
8144
Manuel Pégourié-Gonnardbaad2de2020-03-13 11:11:02 +01008145run_test "DTLS client reconnect from same port: attacker-injected" \
8146 -p "$P_PXY inject_clihlo=1" \
8147 "$P_SRV dtls=1 exchanges=2 debug_level=1" \
8148 "$P_CLI dtls=1 exchanges=2" \
8149 0 \
8150 -s "possible client reconnect from the same port" \
8151 -S "Client initiated reconnection from same port"
8152
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008153# Tests for various cases of client authentication with DTLS
8154# (focused on handshake flows and message parsing)
8155
8156run_test "DTLS client auth: required" \
8157 "$P_SRV dtls=1 auth_mode=required" \
8158 "$P_CLI dtls=1" \
8159 0 \
8160 -s "Verifying peer X.509 certificate... ok"
8161
8162run_test "DTLS client auth: optional, client has no cert" \
8163 "$P_SRV dtls=1 auth_mode=optional" \
8164 "$P_CLI dtls=1 crt_file=none key_file=none" \
8165 0 \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01008166 -s "! Certificate was missing"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008167
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01008168run_test "DTLS client auth: none, client has no cert" \
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008169 "$P_SRV dtls=1 auth_mode=none" \
8170 "$P_CLI dtls=1 crt_file=none key_file=none debug_level=2" \
8171 0 \
8172 -c "skip write certificate$" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01008173 -s "! Certificate verification was skipped"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008174
Manuel Pégourié-Gonnard0a885742015-08-04 12:08:35 +02008175run_test "DTLS wrong PSK: badmac alert" \
8176 "$P_SRV dtls=1 psk=abc123 force_ciphersuite=TLS-PSK-WITH-AES-128-GCM-SHA256" \
8177 "$P_CLI dtls=1 psk=abc124" \
8178 1 \
8179 -s "SSL - Verification of the message MAC failed" \
8180 -c "SSL - A fatal alert message was received from our peer"
8181
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02008182# Tests for receiving fragmented handshake messages with DTLS
8183
8184requires_gnutls
8185run_test "DTLS reassembly: no fragmentation (gnutls server)" \
8186 "$G_SRV -u --mtu 2048 -a" \
8187 "$P_CLI dtls=1 debug_level=2" \
8188 0 \
8189 -C "found fragmented DTLS handshake message" \
8190 -C "error"
8191
8192requires_gnutls
8193run_test "DTLS reassembly: some fragmentation (gnutls server)" \
8194 "$G_SRV -u --mtu 512" \
8195 "$P_CLI dtls=1 debug_level=2" \
8196 0 \
8197 -c "found fragmented DTLS handshake message" \
8198 -C "error"
8199
8200requires_gnutls
8201run_test "DTLS reassembly: more fragmentation (gnutls server)" \
8202 "$G_SRV -u --mtu 128" \
8203 "$P_CLI dtls=1 debug_level=2" \
8204 0 \
8205 -c "found fragmented DTLS handshake message" \
8206 -C "error"
8207
8208requires_gnutls
8209run_test "DTLS reassembly: more fragmentation, nbio (gnutls server)" \
8210 "$G_SRV -u --mtu 128" \
8211 "$P_CLI dtls=1 nbio=2 debug_level=2" \
8212 0 \
8213 -c "found fragmented DTLS handshake message" \
8214 -C "error"
8215
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008216requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01008217requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008218run_test "DTLS reassembly: fragmentation, renego (gnutls server)" \
8219 "$G_SRV -u --mtu 256" \
8220 "$P_CLI debug_level=3 dtls=1 renegotiation=1 renegotiate=1" \
8221 0 \
8222 -c "found fragmented DTLS handshake message" \
8223 -c "client hello, adding renegotiation extension" \
8224 -c "found renegotiation extension" \
8225 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02008226 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008227 -C "error" \
8228 -s "Extra-header:"
8229
8230requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01008231requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008232run_test "DTLS reassembly: fragmentation, nbio, renego (gnutls server)" \
8233 "$G_SRV -u --mtu 256" \
8234 "$P_CLI debug_level=3 nbio=2 dtls=1 renegotiation=1 renegotiate=1" \
8235 0 \
8236 -c "found fragmented DTLS handshake message" \
8237 -c "client hello, adding renegotiation extension" \
8238 -c "found renegotiation extension" \
8239 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02008240 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008241 -C "error" \
8242 -s "Extra-header:"
8243
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02008244run_test "DTLS reassembly: no fragmentation (openssl server)" \
8245 "$O_SRV -dtls1 -mtu 2048" \
8246 "$P_CLI dtls=1 debug_level=2" \
8247 0 \
8248 -C "found fragmented DTLS handshake message" \
8249 -C "error"
8250
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02008251run_test "DTLS reassembly: some fragmentation (openssl server)" \
8252 "$O_SRV -dtls1 -mtu 768" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02008253 "$P_CLI dtls=1 debug_level=2" \
8254 0 \
8255 -c "found fragmented DTLS handshake message" \
8256 -C "error"
8257
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02008258run_test "DTLS reassembly: more fragmentation (openssl server)" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02008259 "$O_SRV -dtls1 -mtu 256" \
8260 "$P_CLI dtls=1 debug_level=2" \
8261 0 \
8262 -c "found fragmented DTLS handshake message" \
8263 -C "error"
8264
8265run_test "DTLS reassembly: fragmentation, nbio (openssl server)" \
8266 "$O_SRV -dtls1 -mtu 256" \
8267 "$P_CLI dtls=1 nbio=2 debug_level=2" \
8268 0 \
8269 -c "found fragmented DTLS handshake message" \
8270 -C "error"
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02008271
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008272# Tests for sending fragmented handshake messages with DTLS
8273#
8274# Use client auth when we need the client to send large messages,
8275# and use large cert chains on both sides too (the long chains we have all use
8276# both RSA and ECDSA, but ideally we should have long chains with either).
8277# Sizes reached (UDP payload):
8278# - 2037B for server certificate
8279# - 1542B for client certificate
8280# - 1013B for newsessionticket
8281# - all others below 512B
8282# All those tests assume MAX_CONTENT_LEN is at least 2048
8283
8284requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8285requires_config_enabled MBEDTLS_RSA_C
8286requires_config_enabled MBEDTLS_ECDSA_C
8287requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008288requires_max_content_len 4096
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008289run_test "DTLS fragmenting: none (for reference)" \
8290 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8291 crt_file=data_files/server7_int-ca.crt \
8292 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008293 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008294 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008295 "$P_CLI dtls=1 debug_level=2 \
8296 crt_file=data_files/server8_int-ca2.crt \
8297 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008298 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008299 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008300 0 \
8301 -S "found fragmented DTLS handshake message" \
8302 -C "found fragmented DTLS handshake message" \
8303 -C "error"
8304
8305requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8306requires_config_enabled MBEDTLS_RSA_C
8307requires_config_enabled MBEDTLS_ECDSA_C
8308requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008309requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008310run_test "DTLS fragmenting: server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008311 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8312 crt_file=data_files/server7_int-ca.crt \
8313 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008314 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008315 max_frag_len=1024" \
8316 "$P_CLI dtls=1 debug_level=2 \
8317 crt_file=data_files/server8_int-ca2.crt \
8318 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008319 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008320 max_frag_len=2048" \
8321 0 \
8322 -S "found fragmented DTLS handshake message" \
8323 -c "found fragmented DTLS handshake message" \
8324 -C "error"
8325
Hanno Becker69ca0ad2018-08-24 12:11:35 +01008326# With the MFL extension, the server has no way of forcing
8327# the client to not exceed a certain MTU; hence, the following
8328# test can't be replicated with an MTU proxy such as the one
8329# `client-initiated, server only (max_frag_len)` below.
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008330requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8331requires_config_enabled MBEDTLS_RSA_C
8332requires_config_enabled MBEDTLS_ECDSA_C
8333requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008334requires_max_content_len 4096
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008335run_test "DTLS fragmenting: server only (more) (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008336 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8337 crt_file=data_files/server7_int-ca.crt \
8338 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008339 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008340 max_frag_len=512" \
8341 "$P_CLI dtls=1 debug_level=2 \
8342 crt_file=data_files/server8_int-ca2.crt \
8343 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008344 hs_timeout=2500-60000 \
Hanno Becker69ca0ad2018-08-24 12:11:35 +01008345 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008346 0 \
8347 -S "found fragmented DTLS handshake message" \
8348 -c "found fragmented DTLS handshake message" \
8349 -C "error"
8350
8351requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8352requires_config_enabled MBEDTLS_RSA_C
8353requires_config_enabled MBEDTLS_ECDSA_C
8354requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008355requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008356run_test "DTLS fragmenting: client-initiated, server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008357 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
8358 crt_file=data_files/server7_int-ca.crt \
8359 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008360 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008361 max_frag_len=2048" \
8362 "$P_CLI dtls=1 debug_level=2 \
8363 crt_file=data_files/server8_int-ca2.crt \
8364 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008365 hs_timeout=2500-60000 \
8366 max_frag_len=1024" \
8367 0 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008368 -S "found fragmented DTLS handshake message" \
8369 -c "found fragmented DTLS handshake message" \
8370 -C "error"
8371
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008372# While not required by the standard defining the MFL extension
8373# (according to which it only applies to records, not to datagrams),
8374# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
8375# as otherwise there wouldn't be any means to communicate MTU restrictions
8376# to the peer.
8377# The next test checks that no datagrams significantly larger than the
8378# negotiated MFL are sent.
8379requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8380requires_config_enabled MBEDTLS_RSA_C
8381requires_config_enabled MBEDTLS_ECDSA_C
8382requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008383requires_max_content_len 2048
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008384run_test "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -04008385 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008386 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
8387 crt_file=data_files/server7_int-ca.crt \
8388 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008389 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008390 max_frag_len=2048" \
8391 "$P_CLI dtls=1 debug_level=2 \
8392 crt_file=data_files/server8_int-ca2.crt \
8393 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008394 hs_timeout=2500-60000 \
8395 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008396 0 \
8397 -S "found fragmented DTLS handshake message" \
8398 -c "found fragmented DTLS handshake message" \
8399 -C "error"
8400
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008401requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8402requires_config_enabled MBEDTLS_RSA_C
8403requires_config_enabled MBEDTLS_ECDSA_C
8404requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008405requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008406run_test "DTLS fragmenting: client-initiated, both (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008407 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8408 crt_file=data_files/server7_int-ca.crt \
8409 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008410 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008411 max_frag_len=2048" \
8412 "$P_CLI dtls=1 debug_level=2 \
8413 crt_file=data_files/server8_int-ca2.crt \
8414 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008415 hs_timeout=2500-60000 \
8416 max_frag_len=1024" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008417 0 \
8418 -s "found fragmented DTLS handshake message" \
8419 -c "found fragmented DTLS handshake message" \
8420 -C "error"
8421
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008422# While not required by the standard defining the MFL extension
8423# (according to which it only applies to records, not to datagrams),
8424# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
8425# as otherwise there wouldn't be any means to communicate MTU restrictions
8426# to the peer.
8427# The next test checks that no datagrams significantly larger than the
8428# negotiated MFL are sent.
8429requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8430requires_config_enabled MBEDTLS_RSA_C
8431requires_config_enabled MBEDTLS_ECDSA_C
8432requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008433requires_max_content_len 2048
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008434run_test "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -04008435 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008436 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8437 crt_file=data_files/server7_int-ca.crt \
8438 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008439 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008440 max_frag_len=2048" \
8441 "$P_CLI dtls=1 debug_level=2 \
8442 crt_file=data_files/server8_int-ca2.crt \
8443 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008444 hs_timeout=2500-60000 \
8445 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008446 0 \
8447 -s "found fragmented DTLS handshake message" \
8448 -c "found fragmented DTLS handshake message" \
8449 -C "error"
8450
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008451requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8452requires_config_enabled MBEDTLS_RSA_C
8453requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008454requires_max_content_len 4096
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008455run_test "DTLS fragmenting: none (for reference) (MTU)" \
8456 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8457 crt_file=data_files/server7_int-ca.crt \
8458 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008459 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008460 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008461 "$P_CLI dtls=1 debug_level=2 \
8462 crt_file=data_files/server8_int-ca2.crt \
8463 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008464 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008465 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008466 0 \
8467 -S "found fragmented DTLS handshake message" \
8468 -C "found fragmented DTLS handshake message" \
8469 -C "error"
8470
8471requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8472requires_config_enabled MBEDTLS_RSA_C
8473requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008474requires_max_content_len 4096
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008475run_test "DTLS fragmenting: client (MTU)" \
8476 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8477 crt_file=data_files/server7_int-ca.crt \
8478 key_file=data_files/server7.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -04008479 hs_timeout=3500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008480 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008481 "$P_CLI dtls=1 debug_level=2 \
8482 crt_file=data_files/server8_int-ca2.crt \
8483 key_file=data_files/server8.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -04008484 hs_timeout=3500-60000 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008485 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008486 0 \
8487 -s "found fragmented DTLS handshake message" \
8488 -C "found fragmented DTLS handshake message" \
8489 -C "error"
8490
8491requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8492requires_config_enabled MBEDTLS_RSA_C
8493requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008494requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008495run_test "DTLS fragmenting: server (MTU)" \
8496 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8497 crt_file=data_files/server7_int-ca.crt \
8498 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008499 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008500 mtu=512" \
8501 "$P_CLI dtls=1 debug_level=2 \
8502 crt_file=data_files/server8_int-ca2.crt \
8503 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008504 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008505 mtu=2048" \
8506 0 \
8507 -S "found fragmented DTLS handshake message" \
8508 -c "found fragmented DTLS handshake message" \
8509 -C "error"
8510
8511requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8512requires_config_enabled MBEDTLS_RSA_C
8513requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008514requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008515run_test "DTLS fragmenting: both (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008516 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008517 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8518 crt_file=data_files/server7_int-ca.crt \
8519 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008520 hs_timeout=2500-60000 \
Andrzej Kurek95805282018-10-11 08:55:37 -04008521 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008522 "$P_CLI dtls=1 debug_level=2 \
8523 crt_file=data_files/server8_int-ca2.crt \
8524 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008525 hs_timeout=2500-60000 \
8526 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008527 0 \
8528 -s "found fragmented DTLS handshake message" \
8529 -c "found fragmented DTLS handshake message" \
8530 -C "error"
8531
Andrzej Kurek77826052018-10-11 07:34:08 -04008532# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008533requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8534requires_config_enabled MBEDTLS_RSA_C
8535requires_config_enabled MBEDTLS_ECDSA_C
8536requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008537requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008538requires_config_enabled MBEDTLS_AES_C
8539requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008540requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008541run_test "DTLS fragmenting: both (MTU=512)" \
Hanno Becker8d832182018-03-15 10:14:19 +00008542 -p "$P_PXY mtu=512" \
Hanno Becker72a4f032017-11-15 16:39:20 +00008543 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8544 crt_file=data_files/server7_int-ca.crt \
8545 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008546 hs_timeout=2500-60000 \
Hanno Becker72a4f032017-11-15 16:39:20 +00008547 mtu=512" \
8548 "$P_CLI dtls=1 debug_level=2 \
8549 crt_file=data_files/server8_int-ca2.crt \
8550 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008551 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8552 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02008553 mtu=512" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02008554 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02008555 -s "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02008556 -c "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02008557 -C "error"
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02008558
Andrzej Kurek7311c782018-10-11 06:49:41 -04008559# Test for automatic MTU reduction on repeated resend.
Andrzej Kurek77826052018-10-11 07:34:08 -04008560# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008561# The ratio of max/min timeout should ideally equal 4 to accept two
8562# retransmissions, but in some cases (like both the server and client using
8563# fragmentation and auto-reduction) an extra retransmission might occur,
8564# hence the ratio of 8.
Hanno Becker37029eb2018-08-29 17:01:40 +01008565not_with_valgrind
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008566requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8567requires_config_enabled MBEDTLS_RSA_C
8568requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008569requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008570requires_config_enabled MBEDTLS_AES_C
8571requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008572requires_max_content_len 2048
Gilles Peskine0d8b86a2019-09-20 18:03:11 +02008573run_test "DTLS fragmenting: proxy MTU: auto-reduction (not valgrind)" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008574 -p "$P_PXY mtu=508" \
8575 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8576 crt_file=data_files/server7_int-ca.crt \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008577 key_file=data_files/server7.key \
8578 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008579 "$P_CLI dtls=1 debug_level=2 \
8580 crt_file=data_files/server8_int-ca2.crt \
8581 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008582 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8583 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008584 0 \
8585 -s "found fragmented DTLS handshake message" \
8586 -c "found fragmented DTLS handshake message" \
8587 -C "error"
8588
Andrzej Kurek77826052018-10-11 07:34:08 -04008589# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Hanno Becker108992e2018-08-29 17:04:18 +01008590only_with_valgrind
8591requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8592requires_config_enabled MBEDTLS_RSA_C
8593requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008594requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008595requires_config_enabled MBEDTLS_AES_C
8596requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008597requires_max_content_len 2048
Gilles Peskine0d8b86a2019-09-20 18:03:11 +02008598run_test "DTLS fragmenting: proxy MTU: auto-reduction (with valgrind)" \
Hanno Becker108992e2018-08-29 17:04:18 +01008599 -p "$P_PXY mtu=508" \
8600 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8601 crt_file=data_files/server7_int-ca.crt \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008602 key_file=data_files/server7.key \
Hanno Becker108992e2018-08-29 17:04:18 +01008603 hs_timeout=250-10000" \
8604 "$P_CLI dtls=1 debug_level=2 \
8605 crt_file=data_files/server8_int-ca2.crt \
8606 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008607 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Hanno Becker108992e2018-08-29 17:04:18 +01008608 hs_timeout=250-10000" \
8609 0 \
8610 -s "found fragmented DTLS handshake message" \
8611 -c "found fragmented DTLS handshake message" \
8612 -C "error"
8613
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008614# 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 +02008615# OTOH the client might resend if the server is to slow to reset after sending
8616# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008617not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008618requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8619requires_config_enabled MBEDTLS_RSA_C
8620requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008621requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008622run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008623 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008624 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8625 crt_file=data_files/server7_int-ca.crt \
8626 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008627 hs_timeout=10000-60000 \
8628 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008629 "$P_CLI dtls=1 debug_level=2 \
8630 crt_file=data_files/server8_int-ca2.crt \
8631 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008632 hs_timeout=10000-60000 \
8633 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008634 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008635 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008636 -s "found fragmented DTLS handshake message" \
8637 -c "found fragmented DTLS handshake message" \
8638 -C "error"
8639
Andrzej Kurek77826052018-10-11 07:34:08 -04008640# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008641# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
8642# OTOH the client might resend if the server is to slow to reset after sending
8643# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008644not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008645requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8646requires_config_enabled MBEDTLS_RSA_C
8647requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008648requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008649requires_config_enabled MBEDTLS_AES_C
8650requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008651requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008652run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=512)" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008653 -p "$P_PXY mtu=512" \
8654 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8655 crt_file=data_files/server7_int-ca.crt \
8656 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008657 hs_timeout=10000-60000 \
8658 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008659 "$P_CLI dtls=1 debug_level=2 \
8660 crt_file=data_files/server8_int-ca2.crt \
8661 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008662 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8663 hs_timeout=10000-60000 \
8664 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008665 0 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008666 -S "autoreduction" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008667 -s "found fragmented DTLS handshake message" \
8668 -c "found fragmented DTLS handshake message" \
8669 -C "error"
8670
Andrzej Kurek7311c782018-10-11 06:49:41 -04008671not_with_valgrind # spurious autoreduction due to timeout
8672requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8673requires_config_enabled MBEDTLS_RSA_C
8674requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008675requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008676run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008677 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008678 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8679 crt_file=data_files/server7_int-ca.crt \
8680 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008681 hs_timeout=10000-60000 \
8682 mtu=1024 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008683 "$P_CLI dtls=1 debug_level=2 \
8684 crt_file=data_files/server8_int-ca2.crt \
8685 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008686 hs_timeout=10000-60000 \
8687 mtu=1024 nbio=2" \
8688 0 \
8689 -S "autoreduction" \
8690 -s "found fragmented DTLS handshake message" \
8691 -c "found fragmented DTLS handshake message" \
8692 -C "error"
8693
Andrzej Kurek77826052018-10-11 07:34:08 -04008694# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008695not_with_valgrind # spurious autoreduction due to timeout
8696requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8697requires_config_enabled MBEDTLS_RSA_C
8698requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008699requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008700requires_config_enabled MBEDTLS_AES_C
8701requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008702requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008703run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=512)" \
8704 -p "$P_PXY mtu=512" \
8705 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8706 crt_file=data_files/server7_int-ca.crt \
8707 key_file=data_files/server7.key \
8708 hs_timeout=10000-60000 \
8709 mtu=512 nbio=2" \
8710 "$P_CLI dtls=1 debug_level=2 \
8711 crt_file=data_files/server8_int-ca2.crt \
8712 key_file=data_files/server8.key \
8713 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8714 hs_timeout=10000-60000 \
8715 mtu=512 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008716 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008717 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008718 -s "found fragmented DTLS handshake message" \
8719 -c "found fragmented DTLS handshake message" \
8720 -C "error"
8721
Andrzej Kurek77826052018-10-11 07:34:08 -04008722# Forcing ciphersuite for this test to fit the MTU of 1450 with full config.
Hanno Beckerb841b4f2018-08-28 10:25:51 +01008723# This ensures things still work after session_reset().
8724# It also exercises the "resumed handshake" flow.
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008725# Since we don't support reading fragmented ClientHello yet,
8726# up the MTU to 1450 (larger than ClientHello with session ticket,
8727# but still smaller than client's Certificate to ensure fragmentation).
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008728# An autoreduction on the client-side might happen if the server is
8729# slow to reset, therefore omitting '-C "autoreduction"' below.
Manuel Pégourié-Gonnard2f2d9022018-08-21 12:17:54 +02008730# reco_delay avoids races where the client reconnects before the server has
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008731# resumed listening, which would result in a spurious autoreduction.
8732not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008733requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8734requires_config_enabled MBEDTLS_RSA_C
8735requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008736requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008737requires_config_enabled MBEDTLS_AES_C
8738requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008739requires_max_content_len 2048
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008740run_test "DTLS fragmenting: proxy MTU, resumed handshake" \
8741 -p "$P_PXY mtu=1450" \
8742 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8743 crt_file=data_files/server7_int-ca.crt \
8744 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008745 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008746 mtu=1450" \
8747 "$P_CLI dtls=1 debug_level=2 \
8748 crt_file=data_files/server8_int-ca2.crt \
8749 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008750 hs_timeout=10000-60000 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008751 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01008752 mtu=1450 reconnect=1 skip_close_notify=1 reco_delay=1" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008753 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008754 -S "autoreduction" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02008755 -s "found fragmented DTLS handshake message" \
8756 -c "found fragmented DTLS handshake message" \
8757 -C "error"
8758
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008759# An autoreduction on the client-side might happen if the server is
8760# slow to reset, therefore omitting '-C "autoreduction"' below.
8761not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008762requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8763requires_config_enabled MBEDTLS_RSA_C
8764requires_config_enabled MBEDTLS_ECDSA_C
8765requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008766requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008767requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8768requires_config_enabled MBEDTLS_CHACHAPOLY_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008769requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008770run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \
8771 -p "$P_PXY mtu=512" \
8772 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8773 crt_file=data_files/server7_int-ca.crt \
8774 key_file=data_files/server7.key \
8775 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008776 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008777 mtu=512" \
8778 "$P_CLI dtls=1 debug_level=2 \
8779 crt_file=data_files/server8_int-ca2.crt \
8780 key_file=data_files/server8.key \
8781 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008782 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008783 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008784 mtu=512" \
8785 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008786 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008787 -s "found fragmented DTLS handshake message" \
8788 -c "found fragmented DTLS handshake message" \
8789 -C "error"
8790
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008791# An autoreduction on the client-side might happen if the server is
8792# slow to reset, therefore omitting '-C "autoreduction"' below.
8793not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008794requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8795requires_config_enabled MBEDTLS_RSA_C
8796requires_config_enabled MBEDTLS_ECDSA_C
8797requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008798requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008799requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8800requires_config_enabled MBEDTLS_AES_C
8801requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008802requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008803run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \
8804 -p "$P_PXY mtu=512" \
8805 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8806 crt_file=data_files/server7_int-ca.crt \
8807 key_file=data_files/server7.key \
8808 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008809 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008810 mtu=512" \
8811 "$P_CLI dtls=1 debug_level=2 \
8812 crt_file=data_files/server8_int-ca2.crt \
8813 key_file=data_files/server8.key \
8814 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008815 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008816 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008817 mtu=512" \
8818 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008819 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008820 -s "found fragmented DTLS handshake message" \
8821 -c "found fragmented DTLS handshake message" \
8822 -C "error"
8823
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008824# An autoreduction on the client-side might happen if the server is
8825# slow to reset, therefore omitting '-C "autoreduction"' below.
8826not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008827requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8828requires_config_enabled MBEDTLS_RSA_C
8829requires_config_enabled MBEDTLS_ECDSA_C
8830requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008831requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008832requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8833requires_config_enabled MBEDTLS_AES_C
8834requires_config_enabled MBEDTLS_CCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008835requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008836run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008837 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008838 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8839 crt_file=data_files/server7_int-ca.crt \
8840 key_file=data_files/server7.key \
8841 exchanges=2 renegotiation=1 \
8842 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008843 hs_timeout=10000-60000 \
8844 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008845 "$P_CLI dtls=1 debug_level=2 \
8846 crt_file=data_files/server8_int-ca2.crt \
8847 key_file=data_files/server8.key \
8848 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008849 hs_timeout=10000-60000 \
8850 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008851 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008852 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008853 -s "found fragmented DTLS handshake message" \
8854 -c "found fragmented DTLS handshake message" \
8855 -C "error"
8856
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008857# An autoreduction on the client-side might happen if the server is
8858# slow to reset, therefore omitting '-C "autoreduction"' below.
8859not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008860requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8861requires_config_enabled MBEDTLS_RSA_C
8862requires_config_enabled MBEDTLS_ECDSA_C
8863requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008864requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008865requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8866requires_config_enabled MBEDTLS_AES_C
8867requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8868requires_config_enabled MBEDTLS_SSL_ENCRYPT_THEN_MAC
Yuto Takanoa49124e2021-07-08 15:56:33 +01008869requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008870run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008871 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008872 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8873 crt_file=data_files/server7_int-ca.crt \
8874 key_file=data_files/server7.key \
8875 exchanges=2 renegotiation=1 \
8876 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008877 hs_timeout=10000-60000 \
8878 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008879 "$P_CLI dtls=1 debug_level=2 \
8880 crt_file=data_files/server8_int-ca2.crt \
8881 key_file=data_files/server8.key \
8882 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008883 hs_timeout=10000-60000 \
8884 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008885 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008886 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008887 -s "found fragmented DTLS handshake message" \
8888 -c "found fragmented DTLS handshake message" \
8889 -C "error"
8890
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008891# An autoreduction on the client-side might happen if the server is
8892# slow to reset, therefore omitting '-C "autoreduction"' below.
8893not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008894requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8895requires_config_enabled MBEDTLS_RSA_C
8896requires_config_enabled MBEDTLS_ECDSA_C
8897requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008898requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008899requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8900requires_config_enabled MBEDTLS_AES_C
8901requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
Yuto Takanoa49124e2021-07-08 15:56:33 +01008902requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008903run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008904 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008905 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8906 crt_file=data_files/server7_int-ca.crt \
8907 key_file=data_files/server7.key \
8908 exchanges=2 renegotiation=1 \
8909 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 etm=0 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008910 hs_timeout=10000-60000 \
8911 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008912 "$P_CLI dtls=1 debug_level=2 \
8913 crt_file=data_files/server8_int-ca2.crt \
8914 key_file=data_files/server8.key \
8915 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008916 hs_timeout=10000-60000 \
8917 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008918 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008919 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008920 -s "found fragmented DTLS handshake message" \
8921 -c "found fragmented DTLS handshake message" \
8922 -C "error"
8923
Andrzej Kurek77826052018-10-11 07:34:08 -04008924# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008925requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8926requires_config_enabled MBEDTLS_RSA_C
8927requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008928requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008929requires_config_enabled MBEDTLS_AES_C
8930requires_config_enabled MBEDTLS_GCM_C
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008931client_needs_more_time 2
Yuto Takanoa49124e2021-07-08 15:56:33 +01008932requires_max_content_len 2048
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008933run_test "DTLS fragmenting: proxy MTU + 3d" \
8934 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01008935 "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008936 crt_file=data_files/server7_int-ca.crt \
8937 key_file=data_files/server7.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02008938 hs_timeout=250-10000 mtu=512" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01008939 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008940 crt_file=data_files/server8_int-ca2.crt \
8941 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008942 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02008943 hs_timeout=250-10000 mtu=512" \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02008944 0 \
8945 -s "found fragmented DTLS handshake message" \
8946 -c "found fragmented DTLS handshake message" \
8947 -C "error"
8948
Andrzej Kurek77826052018-10-11 07:34:08 -04008949# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008950requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8951requires_config_enabled MBEDTLS_RSA_C
8952requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008953requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008954requires_config_enabled MBEDTLS_AES_C
8955requires_config_enabled MBEDTLS_GCM_C
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008956client_needs_more_time 2
Yuto Takanoa49124e2021-07-08 15:56:33 +01008957requires_max_content_len 2048
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008958run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \
8959 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
8960 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8961 crt_file=data_files/server7_int-ca.crt \
8962 key_file=data_files/server7.key \
8963 hs_timeout=250-10000 mtu=512 nbio=2" \
8964 "$P_CLI dtls=1 debug_level=2 \
8965 crt_file=data_files/server8_int-ca2.crt \
8966 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008967 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008968 hs_timeout=250-10000 mtu=512 nbio=2" \
8969 0 \
8970 -s "found fragmented DTLS handshake message" \
8971 -c "found fragmented DTLS handshake message" \
8972 -C "error"
8973
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02008974# interop tests for DTLS fragmentating with reliable connection
8975#
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008976# here and below we just want to test that the we fragment in a way that
8977# pleases other implementations, so we don't need the peer to fragment
8978requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8979requires_config_enabled MBEDTLS_RSA_C
8980requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02008981requires_gnutls
Yuto Takanoa49124e2021-07-08 15:56:33 +01008982requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008983run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \
8984 "$G_SRV -u" \
8985 "$P_CLI dtls=1 debug_level=2 \
8986 crt_file=data_files/server8_int-ca2.crt \
8987 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00008988 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008989 0 \
8990 -c "fragmenting handshake message" \
8991 -C "error"
8992
8993requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8994requires_config_enabled MBEDTLS_RSA_C
8995requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02008996requires_gnutls
Yuto Takano75ab9282021-07-26 08:27:47 +01008997requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02008998run_test "DTLS fragmenting: gnutls server, DTLS 1.0" \
8999 "$G_SRV -u" \
9000 "$P_CLI dtls=1 debug_level=2 \
9001 crt_file=data_files/server8_int-ca2.crt \
9002 key_file=data_files/server8.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009003 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009004 0 \
9005 -c "fragmenting handshake message" \
9006 -C "error"
9007
Hanno Beckerb9a00862018-08-28 10:20:22 +01009008# We use --insecure for the GnuTLS client because it expects
9009# the hostname / IP it connects to to be the name used in the
9010# certificate obtained from the server. Here, however, it
9011# connects to 127.0.0.1 while our test certificates use 'localhost'
9012# as the server name in the certificate. This will make the
9013# certifiate validation fail, but passing --insecure makes
9014# GnuTLS continue the connection nonetheless.
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009015requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9016requires_config_enabled MBEDTLS_RSA_C
9017requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02009018requires_gnutls
Andrzej Kurekb4593462018-10-11 08:43:30 -04009019requires_not_i686
Yuto Takanoa49124e2021-07-08 15:56:33 +01009020requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009021run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009022 "$P_SRV dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009023 crt_file=data_files/server7_int-ca.crt \
9024 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009025 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009026 "$G_CLI -u --insecure 127.0.0.1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009027 0 \
9028 -s "fragmenting handshake message"
9029
Hanno Beckerb9a00862018-08-28 10:20:22 +01009030# See previous test for the reason to use --insecure
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009031requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9032requires_config_enabled MBEDTLS_RSA_C
9033requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02009034requires_gnutls
Andrzej Kurekb4593462018-10-11 08:43:30 -04009035requires_not_i686
Yuto Takano75ab9282021-07-26 08:27:47 +01009036requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009037run_test "DTLS fragmenting: gnutls client, DTLS 1.0" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009038 "$P_SRV dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009039 crt_file=data_files/server7_int-ca.crt \
9040 key_file=data_files/server7.key \
9041 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009042 "$G_CLI -u --insecure 127.0.0.1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009043 0 \
9044 -s "fragmenting handshake message"
9045
9046requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9047requires_config_enabled MBEDTLS_RSA_C
9048requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01009049requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009050run_test "DTLS fragmenting: openssl server, DTLS 1.2" \
9051 "$O_SRV -dtls1_2 -verify 10" \
9052 "$P_CLI dtls=1 debug_level=2 \
9053 crt_file=data_files/server8_int-ca2.crt \
9054 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009055 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009056 0 \
9057 -c "fragmenting handshake message" \
9058 -C "error"
9059
9060requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9061requires_config_enabled MBEDTLS_RSA_C
9062requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takano75ab9282021-07-26 08:27:47 +01009063requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009064run_test "DTLS fragmenting: openssl server, DTLS 1.0" \
9065 "$O_SRV -dtls1 -verify 10" \
9066 "$P_CLI dtls=1 debug_level=2 \
9067 crt_file=data_files/server8_int-ca2.crt \
9068 key_file=data_files/server8.key \
9069 mtu=512 force_version=dtls1" \
9070 0 \
9071 -c "fragmenting handshake message" \
9072 -C "error"
9073
9074requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9075requires_config_enabled MBEDTLS_RSA_C
9076requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01009077requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009078run_test "DTLS fragmenting: openssl client, DTLS 1.2" \
9079 "$P_SRV dtls=1 debug_level=2 \
9080 crt_file=data_files/server7_int-ca.crt \
9081 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009082 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009083 "$O_CLI -dtls1_2" \
9084 0 \
9085 -s "fragmenting handshake message"
9086
9087requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9088requires_config_enabled MBEDTLS_RSA_C
9089requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takano75ab9282021-07-26 08:27:47 +01009090requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009091run_test "DTLS fragmenting: openssl client, DTLS 1.0" \
9092 "$P_SRV dtls=1 debug_level=2 \
9093 crt_file=data_files/server7_int-ca.crt \
9094 key_file=data_files/server7.key \
9095 mtu=512 force_version=dtls1" \
9096 "$O_CLI -dtls1" \
9097 0 \
9098 -s "fragmenting handshake message"
9099
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009100# interop tests for DTLS fragmentating with unreliable connection
9101#
9102# again we just want to test that the we fragment in a way that
9103# pleases other implementations, so we don't need the peer to fragment
9104requires_gnutls_next
9105requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9106requires_config_enabled MBEDTLS_RSA_C
9107requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009108client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009109requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009110run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \
9111 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9112 "$G_NEXT_SRV -u" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009113 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009114 crt_file=data_files/server8_int-ca2.crt \
9115 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009116 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009117 0 \
9118 -c "fragmenting handshake message" \
9119 -C "error"
9120
9121requires_gnutls_next
9122requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9123requires_config_enabled MBEDTLS_RSA_C
9124requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009125client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009126requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009127run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \
9128 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9129 "$G_NEXT_SRV -u" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009130 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009131 crt_file=data_files/server8_int-ca2.crt \
9132 key_file=data_files/server8.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009133 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009134 0 \
9135 -c "fragmenting handshake message" \
9136 -C "error"
9137
k-stachowiak17a38d32019-02-18 15:29:56 +01009138requires_gnutls_next
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009139requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9140requires_config_enabled MBEDTLS_RSA_C
9141requires_config_enabled MBEDTLS_ECDSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009142client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009143requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009144run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \
9145 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9146 "$P_SRV dtls=1 debug_level=2 \
9147 crt_file=data_files/server7_int-ca.crt \
9148 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009149 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
k-stachowiak17a38d32019-02-18 15:29:56 +01009150 "$G_NEXT_CLI -u --insecure 127.0.0.1" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009151 0 \
9152 -s "fragmenting handshake message"
9153
k-stachowiak17a38d32019-02-18 15:29:56 +01009154requires_gnutls_next
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009155requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9156requires_config_enabled MBEDTLS_RSA_C
9157requires_config_enabled MBEDTLS_ECDSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009158client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009159requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009160run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \
9161 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9162 "$P_SRV dtls=1 debug_level=2 \
9163 crt_file=data_files/server7_int-ca.crt \
9164 key_file=data_files/server7.key \
9165 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
k-stachowiak17a38d32019-02-18 15:29:56 +01009166 "$G_NEXT_CLI -u --insecure 127.0.0.1" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009167 0 \
9168 -s "fragmenting handshake message"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009169
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009170## Interop test with OpenSSL might trigger a bug in recent versions (including
9171## all versions installed on the CI machines), reported here:
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009172## Bug report: https://github.com/openssl/openssl/issues/6902
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009173## They should be re-enabled once a fixed version of OpenSSL is available
9174## (this should happen in some 1.1.1_ release according to the ticket).
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009175skip_next_test
9176requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9177requires_config_enabled MBEDTLS_RSA_C
9178requires_config_enabled MBEDTLS_ECDSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009179client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009180requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009181run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \
9182 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9183 "$O_SRV -dtls1_2 -verify 10" \
9184 "$P_CLI dtls=1 debug_level=2 \
9185 crt_file=data_files/server8_int-ca2.crt \
9186 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009187 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009188 0 \
9189 -c "fragmenting handshake message" \
9190 -C "error"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009191
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009192skip_next_test
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009193requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9194requires_config_enabled MBEDTLS_RSA_C
9195requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009196client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009197requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009198run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \
9199 -p "$P_PXY drop=8 delay=8 duplicate=8" \
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009200 "$O_SRV -dtls1 -verify 10" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009201 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009202 crt_file=data_files/server8_int-ca2.crt \
9203 key_file=data_files/server8.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009204 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009205 0 \
9206 -c "fragmenting handshake message" \
9207 -C "error"
9208
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009209skip_next_test
9210requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9211requires_config_enabled MBEDTLS_RSA_C
9212requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009213client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009214requires_max_content_len 2048
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009215run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \
9216 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9217 "$P_SRV dtls=1 debug_level=2 \
9218 crt_file=data_files/server7_int-ca.crt \
9219 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009220 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009221 "$O_CLI -dtls1_2" \
9222 0 \
9223 -s "fragmenting handshake message"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009224
9225# -nbio is added to prevent s_client from blocking in case of duplicated
9226# messages at the end of the handshake
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009227skip_next_test
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009228requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9229requires_config_enabled MBEDTLS_RSA_C
9230requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009231client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009232requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009233run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \
9234 -p "$P_PXY drop=8 delay=8 duplicate=8" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009235 "$P_SRV dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009236 crt_file=data_files/server7_int-ca.crt \
9237 key_file=data_files/server7.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009238 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009239 "$O_CLI -nbio -dtls1" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009240 0 \
9241 -s "fragmenting handshake message"
9242
Ron Eldorb4655392018-07-05 18:25:39 +03009243# Tests for DTLS-SRTP (RFC 5764)
9244requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9245run_test "DTLS-SRTP all profiles supported" \
9246 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9247 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9248 0 \
9249 -s "found use_srtp extension" \
9250 -s "found srtp profile" \
9251 -s "selected srtp profile" \
9252 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009253 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009254 -c "client hello, adding use_srtp extension" \
9255 -c "found use_srtp extension" \
9256 -c "found srtp profile" \
9257 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009258 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009259 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009260 -C "error"
9261
Johan Pascal9bc50b02020-09-24 12:01:13 +02009262
Ron Eldorb4655392018-07-05 18:25:39 +03009263requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9264run_test "DTLS-SRTP server supports all profiles. Client supports one profile." \
9265 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +02009266 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=5 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03009267 0 \
9268 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009269 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
9270 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +03009271 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009272 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009273 -c "client hello, adding use_srtp extension" \
9274 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009275 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +03009276 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009277 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009278 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009279 -C "error"
9280
9281requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009282run_test "DTLS-SRTP server supports one profile. Client supports all profiles." \
Johan Pascal43f94902020-09-22 12:25:52 +02009283 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03009284 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9285 0 \
9286 -s "found use_srtp extension" \
9287 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009288 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009289 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009290 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009291 -c "client hello, adding use_srtp extension" \
9292 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009293 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009294 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009295 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009296 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009297 -C "error"
9298
9299requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9300run_test "DTLS-SRTP server and Client support only one matching profile." \
9301 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9302 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9303 0 \
9304 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009305 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
9306 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009307 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009308 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009309 -c "client hello, adding use_srtp extension" \
9310 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009311 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009312 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009313 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009314 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009315 -C "error"
9316
9317requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9318run_test "DTLS-SRTP server and Client support only one different profile." \
9319 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +02009320 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03009321 0 \
9322 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009323 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009324 -S "selected srtp profile" \
9325 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009326 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009327 -c "client hello, adding use_srtp extension" \
9328 -C "found use_srtp extension" \
9329 -C "found srtp profile" \
9330 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009331 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009332 -C "error"
9333
9334requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9335run_test "DTLS-SRTP server doesn't support use_srtp extension." \
9336 "$P_SRV dtls=1 debug_level=3" \
9337 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9338 0 \
9339 -s "found use_srtp extension" \
9340 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009341 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009342 -c "client hello, adding use_srtp extension" \
9343 -C "found use_srtp extension" \
9344 -C "found srtp profile" \
9345 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009346 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009347 -C "error"
9348
9349requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9350run_test "DTLS-SRTP all profiles supported. mki used" \
9351 "$P_SRV dtls=1 use_srtp=1 support_mki=1 debug_level=3" \
9352 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9353 0 \
9354 -s "found use_srtp extension" \
9355 -s "found srtp profile" \
9356 -s "selected srtp profile" \
9357 -s "server hello, adding use_srtp extension" \
9358 -s "dumping 'using mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009359 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009360 -c "client hello, adding use_srtp extension" \
9361 -c "found use_srtp extension" \
9362 -c "found srtp profile" \
9363 -c "selected srtp profile" \
9364 -c "dumping 'sending mki' (8 bytes)" \
9365 -c "dumping 'received mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009366 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009367 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Johan Pascal20c7db32020-10-26 22:45:58 +01009368 -g "find_in_both '^ *DTLS-SRTP mki value: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009369 -C "error"
9370
9371requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9372run_test "DTLS-SRTP all profiles supported. server doesn't support mki." \
9373 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9374 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9375 0 \
9376 -s "found use_srtp extension" \
9377 -s "found srtp profile" \
9378 -s "selected srtp profile" \
9379 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009380 -s "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01009381 -s "DTLS-SRTP no mki value negotiated"\
Ron Eldorb4655392018-07-05 18:25:39 +03009382 -S "dumping 'using mki' (8 bytes)" \
9383 -c "client hello, adding use_srtp extension" \
9384 -c "found use_srtp extension" \
9385 -c "found srtp profile" \
9386 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009387 -c "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01009388 -c "DTLS-SRTP no mki value negotiated"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009389 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009390 -c "dumping 'sending mki' (8 bytes)" \
9391 -C "dumping 'received mki' (8 bytes)" \
9392 -C "error"
9393
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009394requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9395run_test "DTLS-SRTP all profiles supported. openssl client." \
9396 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009397 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009398 0 \
9399 -s "found use_srtp extension" \
9400 -s "found srtp profile" \
9401 -s "selected srtp profile" \
9402 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009403 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009404 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009405 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_80"
9406
9407requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9408run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl client." \
9409 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009410 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009411 0 \
9412 -s "found use_srtp extension" \
9413 -s "found srtp profile" \
9414 -s "selected srtp profile" \
9415 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009416 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009417 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009418 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9419
9420requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9421run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl client." \
9422 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009423 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009424 0 \
9425 -s "found use_srtp extension" \
9426 -s "found srtp profile" \
9427 -s "selected srtp profile" \
9428 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009429 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009430 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009431 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9432
9433requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9434run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl client." \
9435 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009436 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009437 0 \
9438 -s "found use_srtp extension" \
9439 -s "found srtp profile" \
9440 -s "selected srtp profile" \
9441 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009442 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009443 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009444 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9445
9446requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9447run_test "DTLS-SRTP server and Client support only one matching profile. openssl client." \
9448 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009449 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009450 0 \
9451 -s "found use_srtp extension" \
9452 -s "found srtp profile" \
9453 -s "selected srtp profile" \
9454 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009455 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009456 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009457 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9458
9459requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9460run_test "DTLS-SRTP server and Client support only one different profile. openssl client." \
9461 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009462 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009463 0 \
9464 -s "found use_srtp extension" \
9465 -s "found srtp profile" \
9466 -S "selected srtp profile" \
9467 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009468 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009469 -C "SRTP Extension negotiated, profile"
9470
9471requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9472run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl client" \
9473 "$P_SRV dtls=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009474 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009475 0 \
9476 -s "found use_srtp extension" \
9477 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009478 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009479 -C "SRTP Extension negotiated, profile"
9480
9481requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9482run_test "DTLS-SRTP all profiles supported. openssl server" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009483 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009484 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9485 0 \
9486 -c "client hello, adding use_srtp extension" \
9487 -c "found use_srtp extension" \
9488 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009489 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009490 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009491 -C "error"
9492
9493requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9494run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009495 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009496 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9497 0 \
9498 -c "client hello, adding use_srtp extension" \
9499 -c "found use_srtp extension" \
9500 -c "found srtp profile" \
9501 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009502 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009503 -C "error"
9504
9505requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9506run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009507 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009508 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9509 0 \
9510 -c "client hello, adding use_srtp extension" \
9511 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009512 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009513 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009514 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009515 -C "error"
9516
9517requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9518run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009519 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009520 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9521 0 \
9522 -c "client hello, adding use_srtp extension" \
9523 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009524 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009525 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009526 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009527 -C "error"
9528
9529requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9530run_test "DTLS-SRTP server and Client support only one matching profile. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009531 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009532 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9533 0 \
9534 -c "client hello, adding use_srtp extension" \
9535 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009536 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009537 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009538 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009539 -C "error"
9540
9541requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9542run_test "DTLS-SRTP server and Client support only one different profile. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009543 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Johan Pascal43f94902020-09-22 12:25:52 +02009544 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009545 0 \
9546 -c "client hello, adding use_srtp extension" \
9547 -C "found use_srtp extension" \
9548 -C "found srtp profile" \
9549 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009550 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009551 -C "error"
9552
9553requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9554run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl server" \
9555 "$O_SRV -dtls1" \
9556 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9557 0 \
9558 -c "client hello, adding use_srtp extension" \
9559 -C "found use_srtp extension" \
9560 -C "found srtp profile" \
9561 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009562 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009563 -C "error"
9564
9565requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9566run_test "DTLS-SRTP all profiles supported. server doesn't support mki. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009567 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009568 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9569 0 \
9570 -c "client hello, adding use_srtp extension" \
9571 -c "found use_srtp extension" \
9572 -c "found srtp profile" \
9573 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009574 -c "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01009575 -c "DTLS-SRTP no mki value negotiated"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009576 -c "dumping 'sending mki' (8 bytes)" \
9577 -C "dumping 'received mki' (8 bytes)" \
9578 -C "error"
9579
9580requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009581requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009582run_test "DTLS-SRTP all profiles supported. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009583 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9584 "$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 +03009585 0 \
9586 -s "found use_srtp extension" \
9587 -s "found srtp profile" \
9588 -s "selected srtp profile" \
9589 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009590 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009591 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_80"
9592
9593requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009594requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009595run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009596 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9597 "$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 +03009598 0 \
9599 -s "found use_srtp extension" \
9600 -s "found srtp profile" \
9601 -s "selected srtp profile" \
9602 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009603 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009604 -c "SRTP profile: SRTP_NULL_HMAC_SHA1_80"
9605
9606requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009607requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009608run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009609 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9610 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009611 0 \
9612 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009613 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
9614 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009615 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009616 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009617 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
9618
9619requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009620requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009621run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls client." \
Johan Pascal43f94902020-09-22 12:25:52 +02009622 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor5d991c92019-01-15 18:54:03 +02009623 "$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 +03009624 0 \
9625 -s "found use_srtp extension" \
9626 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009627 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009628 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009629 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009630 -c "SRTP profile: SRTP_NULL_SHA1_32"
9631
9632requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009633requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009634run_test "DTLS-SRTP server and Client support only one matching profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009635 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9636 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009637 0 \
9638 -s "found use_srtp extension" \
9639 -s "found srtp profile" \
9640 -s "selected srtp profile" \
9641 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009642 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009643 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
9644
9645requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009646requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009647run_test "DTLS-SRTP server and Client support only one different profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009648 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
9649 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009650 0 \
9651 -s "found use_srtp extension" \
9652 -s "found srtp profile" \
9653 -S "selected srtp profile" \
9654 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009655 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009656 -C "SRTP profile:"
9657
9658requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009659requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009660run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls client" \
Ron Eldor5d991c92019-01-15 18:54:03 +02009661 "$P_SRV dtls=1 debug_level=3" \
9662 "$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 +03009663 0 \
9664 -s "found use_srtp extension" \
9665 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009666 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009667 -C "SRTP profile:"
9668
9669requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009670requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009671run_test "DTLS-SRTP all profiles supported. gnutls server" \
9672 "$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" \
9673 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9674 0 \
9675 -c "client hello, adding use_srtp extension" \
9676 -c "found use_srtp extension" \
9677 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009678 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009679 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009680 -C "error"
9681
9682requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009683requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009684run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls server." \
9685 "$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" \
9686 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9687 0 \
9688 -c "client hello, adding use_srtp extension" \
9689 -c "found use_srtp extension" \
9690 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009691 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009692 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009693 -C "error"
9694
9695requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009696requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009697run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls server." \
9698 "$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" \
9699 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9700 0 \
9701 -c "client hello, adding use_srtp extension" \
9702 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009703 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009704 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009705 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009706 -C "error"
9707
9708requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009709requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009710run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls server." \
9711 "$G_SRV -u --srtp-profiles=SRTP_NULL_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009712 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009713 0 \
9714 -c "client hello, adding use_srtp extension" \
9715 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009716 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009717 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009718 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009719 -C "error"
9720
9721requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009722requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009723run_test "DTLS-SRTP server and Client support only one matching profile. gnutls server." \
9724 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
9725 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9726 0 \
9727 -c "client hello, adding use_srtp extension" \
9728 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009729 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009730 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009731 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009732 -C "error"
9733
9734requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009735requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009736run_test "DTLS-SRTP server and Client support only one different profile. gnutls server." \
9737 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
Johan Pascal43f94902020-09-22 12:25:52 +02009738 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009739 0 \
9740 -c "client hello, adding use_srtp extension" \
9741 -C "found use_srtp extension" \
9742 -C "found srtp profile" \
9743 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009744 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009745 -C "error"
9746
9747requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009748requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009749run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls server" \
9750 "$G_SRV -u" \
9751 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9752 0 \
9753 -c "client hello, adding use_srtp extension" \
9754 -C "found use_srtp extension" \
9755 -C "found srtp profile" \
9756 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009757 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009758 -C "error"
9759
9760requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009761requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009762run_test "DTLS-SRTP all profiles supported. mki used. gnutls server." \
9763 "$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" \
9764 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9765 0 \
9766 -c "client hello, adding use_srtp extension" \
9767 -c "found use_srtp extension" \
9768 -c "found srtp profile" \
9769 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009770 -c "DTLS-SRTP key material is"\
Johan Pascal20c7db32020-10-26 22:45:58 +01009771 -c "DTLS-SRTP mki value:"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009772 -c "dumping 'sending mki' (8 bytes)" \
9773 -c "dumping 'received mki' (8 bytes)" \
9774 -C "error"
9775
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02009776# Tests for specific things with "unreliable" UDP connection
9777
9778not_with_valgrind # spurious resend due to timeout
9779run_test "DTLS proxy: reference" \
9780 -p "$P_PXY" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02009781 "$P_SRV dtls=1 debug_level=2 hs_timeout=10000-20000" \
9782 "$P_CLI dtls=1 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02009783 0 \
9784 -C "replayed record" \
9785 -S "replayed record" \
Hanno Beckerb2a86c32019-07-19 15:43:09 +01009786 -C "Buffer record from epoch" \
9787 -S "Buffer record from epoch" \
9788 -C "ssl_buffer_message" \
9789 -S "ssl_buffer_message" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02009790 -C "discarding invalid record" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009791 -S "discarding invalid record" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02009792 -S "resend" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009793 -s "Extra-header:" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02009794 -c "HTTP/1.0 200 OK"
9795
9796not_with_valgrind # spurious resend due to timeout
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009797run_test "DTLS proxy: duplicate every packet" \
9798 -p "$P_PXY duplicate=1" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02009799 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
9800 "$P_CLI dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02009801 0 \
9802 -c "replayed record" \
9803 -s "replayed record" \
9804 -c "record from another epoch" \
9805 -s "record from another epoch" \
9806 -S "resend" \
9807 -s "Extra-header:" \
9808 -c "HTTP/1.0 200 OK"
9809
9810run_test "DTLS proxy: duplicate every packet, server anti-replay off" \
9811 -p "$P_PXY duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009812 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 anti_replay=0" \
9813 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02009814 0 \
9815 -c "replayed record" \
9816 -S "replayed record" \
9817 -c "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009818 -s "record from another epoch" \
9819 -c "resend" \
9820 -s "resend" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02009821 -s "Extra-header:" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009822 -c "HTTP/1.0 200 OK"
9823
9824run_test "DTLS proxy: multiple records in same datagram" \
9825 -p "$P_PXY pack=50" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009826 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
9827 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02009828 0 \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009829 -c "next record in same datagram" \
9830 -s "next record in same datagram"
9831
9832run_test "DTLS proxy: multiple records in same datagram, duplicate every packet" \
9833 -p "$P_PXY pack=50 duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009834 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
9835 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02009836 0 \
9837 -c "next record in same datagram" \
9838 -s "next record in same datagram"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009839
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02009840run_test "DTLS proxy: inject invalid AD record, default badmac_limit" \
9841 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009842 "$P_SRV dtls=1 dgram_packing=0 debug_level=1" \
9843 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02009844 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009845 -c "discarding invalid record (mac)" \
9846 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009847 -s "Extra-header:" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009848 -c "HTTP/1.0 200 OK" \
9849 -S "too many records with bad MAC" \
9850 -S "Verification of the message MAC failed"
9851
9852run_test "DTLS proxy: inject invalid AD record, badmac_limit 1" \
9853 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009854 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=1" \
9855 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009856 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009857 -C "discarding invalid record (mac)" \
9858 -S "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009859 -S "Extra-header:" \
9860 -C "HTTP/1.0 200 OK" \
9861 -s "too many records with bad MAC" \
9862 -s "Verification of the message MAC failed"
9863
9864run_test "DTLS proxy: inject invalid AD record, badmac_limit 2" \
9865 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009866 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2" \
9867 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009868 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009869 -c "discarding invalid record (mac)" \
9870 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009871 -s "Extra-header:" \
9872 -c "HTTP/1.0 200 OK" \
9873 -S "too many records with bad MAC" \
9874 -S "Verification of the message MAC failed"
9875
9876run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\
9877 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009878 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2 exchanges=2" \
9879 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100 exchanges=2" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009880 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02009881 -c "discarding invalid record (mac)" \
9882 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02009883 -s "Extra-header:" \
9884 -c "HTTP/1.0 200 OK" \
9885 -s "too many records with bad MAC" \
9886 -s "Verification of the message MAC failed"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009887
9888run_test "DTLS proxy: delay ChangeCipherSpec" \
9889 -p "$P_PXY delay_ccs=1" \
Hanno Beckerc4305232018-08-14 13:41:21 +01009890 "$P_SRV dtls=1 debug_level=1 dgram_packing=0" \
9891 "$P_CLI dtls=1 debug_level=1 dgram_packing=0" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009892 0 \
9893 -c "record from another epoch" \
9894 -s "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02009895 -s "Extra-header:" \
9896 -c "HTTP/1.0 200 OK"
9897
Hanno Beckeraa5d0c42018-08-16 13:15:19 +01009898# Tests for reordering support with DTLS
9899
Gilles Peskine22cc6492022-03-14 18:21:24 +01009900requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +01009901run_test "DTLS reordering: Buffer out-of-order handshake message on client" \
9902 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009903 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9904 hs_timeout=2500-60000" \
9905 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9906 hs_timeout=2500-60000" \
Hanno Beckere3842212018-08-16 15:28:59 +01009907 0 \
9908 -c "Buffering HS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009909 -c "Next handshake message has been buffered - load"\
9910 -S "Buffering HS message" \
9911 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009912 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009913 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009914 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009915 -S "Remember CCS message"
Hanno Beckere3842212018-08-16 15:28:59 +01009916
Gilles Peskine22cc6492022-03-14 18:21:24 +01009917requires_certificate_authentication
Hanno Beckerdc1e9502018-08-28 16:02:33 +01009918run_test "DTLS reordering: Buffer out-of-order handshake message fragment on client" \
9919 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009920 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9921 hs_timeout=2500-60000" \
9922 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9923 hs_timeout=2500-60000" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +01009924 0 \
9925 -c "Buffering HS message" \
9926 -c "found fragmented DTLS handshake message"\
9927 -c "Next handshake message 1 not or only partially bufffered" \
9928 -c "Next handshake message has been buffered - load"\
9929 -S "Buffering HS message" \
9930 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009931 -C "Injecting buffered CCS message" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +01009932 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009933 -S "Injecting buffered CCS message" \
Hanno Beckeraa5d0c42018-08-16 13:15:19 +01009934 -S "Remember CCS message"
9935
Hanno Beckera1adcca2018-08-24 14:41:07 +01009936# The client buffers the ServerKeyExchange before receiving the fragmented
9937# Certificate message; at the time of writing, together these are aroudn 1200b
9938# in size, so that the bound below ensures that the certificate can be reassembled
9939# while keeping the ServerKeyExchange.
Gilles Peskine22cc6492022-03-14 18:21:24 +01009940requires_certificate_authentication
Hanno Beckera1adcca2018-08-24 14:41:07 +01009941requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1300
9942run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next" \
Hanno Beckere3567052018-08-21 16:50:43 +01009943 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009944 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9945 hs_timeout=2500-60000" \
9946 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9947 hs_timeout=2500-60000" \
Hanno Beckere3567052018-08-21 16:50:43 +01009948 0 \
9949 -c "Buffering HS message" \
9950 -c "Next handshake message has been buffered - load"\
Hanno Beckera1adcca2018-08-24 14:41:07 +01009951 -C "attempt to make space by freeing buffered messages" \
9952 -S "Buffering HS message" \
9953 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009954 -C "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +01009955 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009956 -S "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +01009957 -S "Remember CCS message"
9958
9959# The size constraints ensure that the delayed certificate message can't
9960# be reassembled while keeping the ServerKeyExchange message, but it can
9961# when dropping it first.
Gilles Peskine22cc6492022-03-14 18:21:24 +01009962requires_certificate_authentication
Hanno Beckera1adcca2018-08-24 14:41:07 +01009963requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 900
9964requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1299
9965run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" \
9966 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009967 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
9968 hs_timeout=2500-60000" \
9969 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9970 hs_timeout=2500-60000" \
Hanno Beckera1adcca2018-08-24 14:41:07 +01009971 0 \
9972 -c "Buffering HS message" \
9973 -c "attempt to make space by freeing buffered future messages" \
9974 -c "Enough space available after freeing buffered HS messages" \
Hanno Beckere3567052018-08-21 16:50:43 +01009975 -S "Buffering HS message" \
9976 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +01009977 -C "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +01009978 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009979 -S "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +01009980 -S "Remember CCS message"
9981
Gilles Peskine22cc6492022-03-14 18:21:24 +01009982requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +01009983run_test "DTLS reordering: Buffer out-of-order handshake message on server" \
9984 -p "$P_PXY delay_cli=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -04009985 "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2 \
9986 hs_timeout=2500-60000" \
9987 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9988 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009989 0 \
9990 -C "Buffering HS message" \
9991 -C "Next handshake message has been buffered - load"\
9992 -s "Buffering HS message" \
9993 -s "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009994 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009995 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +01009996 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +01009997 -S "Remember CCS message"
9998
Gilles Peskine22cc6492022-03-14 18:21:24 +01009999requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +010010000run_test "DTLS reordering: Buffer out-of-order CCS message on client"\
10001 -p "$P_PXY delay_srv=NewSessionTicket" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010002 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10003 hs_timeout=2500-60000" \
10004 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10005 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010006 0 \
10007 -C "Buffering HS message" \
10008 -C "Next handshake message has been buffered - load"\
10009 -S "Buffering HS message" \
10010 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010011 -c "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010012 -c "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010013 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010014 -S "Remember CCS message"
10015
Gilles Peskine22cc6492022-03-14 18:21:24 +010010016requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +010010017run_test "DTLS reordering: Buffer out-of-order CCS message on server"\
10018 -p "$P_PXY delay_cli=ClientKeyExchange" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010019 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10020 hs_timeout=2500-60000" \
10021 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10022 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010023 0 \
10024 -C "Buffering HS message" \
10025 -C "Next handshake message has been buffered - load"\
10026 -S "Buffering HS message" \
10027 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010028 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010029 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010030 -s "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010031 -s "Remember CCS message"
10032
Hanno Beckera1adcca2018-08-24 14:41:07 +010010033run_test "DTLS reordering: Buffer encrypted Finished message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010034 -p "$P_PXY delay_ccs=1" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010035 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10036 hs_timeout=2500-60000" \
10037 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10038 hs_timeout=2500-60000" \
Hanno Beckerb34149c2018-08-16 15:29:06 +010010039 0 \
10040 -s "Buffer record from epoch 1" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010041 -s "Found buffered record from current epoch - load" \
10042 -c "Buffer record from epoch 1" \
10043 -c "Found buffered record from current epoch - load"
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010044
Hanno Beckera1adcca2018-08-24 14:41:07 +010010045# In this test, both the fragmented NewSessionTicket and the ChangeCipherSpec
10046# from the server are delayed, so that the encrypted Finished message
10047# is received and buffered. When the fragmented NewSessionTicket comes
10048# in afterwards, the encrypted Finished message must be freed in order
10049# to make space for the NewSessionTicket to be reassembled.
10050# This works only in very particular circumstances:
10051# - MBEDTLS_SSL_DTLS_MAX_BUFFERING must be large enough to allow buffering
10052# of the NewSessionTicket, but small enough to also allow buffering of
10053# the encrypted Finished message.
10054# - The MTU setting on the server must be so small that the NewSessionTicket
10055# needs to be fragmented.
10056# - All messages sent by the server must be small enough to be either sent
10057# without fragmentation or be reassembled within the bounds of
10058# MBEDTLS_SSL_DTLS_MAX_BUFFERING. Achieve this by testing with a PSK-based
10059# handshake, omitting CRTs.
Manuel Pégourié-Gonnardeef4c752019-05-28 10:21:30 +020010060requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 190
10061requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 230
Hanno Beckera1adcca2018-08-24 14:41:07 +010010062run_test "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket" \
10063 -p "$P_PXY delay_srv=NewSessionTicket delay_srv=NewSessionTicket delay_ccs=1" \
Manuel Pégourié-Gonnardeef4c752019-05-28 10:21:30 +020010064 "$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 +010010065 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 psk=abc123 psk_identity=foo" \
10066 0 \
10067 -s "Buffer record from epoch 1" \
10068 -s "Found buffered record from current epoch - load" \
10069 -c "Buffer record from epoch 1" \
10070 -C "Found buffered record from current epoch - load" \
10071 -c "Enough space available after freeing future epoch record"
10072
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +020010073# Tests for "randomly unreliable connection": try a variety of flows and peers
10074
10075client_needs_more_time 2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010076run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \
10077 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010078 "$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 +020010079 psk=abc123" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010080 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010081 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10082 0 \
10083 -s "Extra-header:" \
10084 -c "HTTP/1.0 200 OK"
10085
Janos Follath74537a62016-09-02 13:45:28 +010010086client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010087run_test "DTLS proxy: 3d, \"short\" RSA handshake" \
10088 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010089 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
10090 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010091 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10092 0 \
10093 -s "Extra-header:" \
10094 -c "HTTP/1.0 200 OK"
10095
Janos Follath74537a62016-09-02 13:45:28 +010010096client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010097run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \
10098 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010099 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
10100 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010101 0 \
10102 -s "Extra-header:" \
10103 -c "HTTP/1.0 200 OK"
10104
Janos Follath74537a62016-09-02 13:45:28 +010010105client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010106run_test "DTLS proxy: 3d, FS, client auth" \
10107 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010108 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=required" \
10109 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010110 0 \
10111 -s "Extra-header:" \
10112 -c "HTTP/1.0 200 OK"
10113
Janos Follath74537a62016-09-02 13:45:28 +010010114client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010115run_test "DTLS proxy: 3d, FS, ticket" \
10116 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010117 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=none" \
10118 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010119 0 \
10120 -s "Extra-header:" \
10121 -c "HTTP/1.0 200 OK"
10122
Janos Follath74537a62016-09-02 13:45:28 +010010123client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010124run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \
10125 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010126 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=required" \
10127 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010128 0 \
10129 -s "Extra-header:" \
10130 -c "HTTP/1.0 200 OK"
10131
Janos Follath74537a62016-09-02 13:45:28 +010010132client_needs_more_time 2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010133run_test "DTLS proxy: 3d, max handshake, nbio" \
10134 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010135 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020010136 auth_mode=required" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010137 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010138 0 \
10139 -s "Extra-header:" \
10140 -c "HTTP/1.0 200 OK"
10141
Janos Follath74537a62016-09-02 13:45:28 +010010142client_needs_more_time 4
Gilles Peskine111fde42022-02-25 19:51:52 +010010143requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +020010144run_test "DTLS proxy: 3d, min handshake, resumption" \
10145 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010146 "$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 +020010147 psk=abc123 debug_level=3" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010148 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +010010149 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +020010150 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10151 0 \
10152 -s "a session has been resumed" \
10153 -c "a session has been resumed" \
10154 -s "Extra-header:" \
10155 -c "HTTP/1.0 200 OK"
10156
Janos Follath74537a62016-09-02 13:45:28 +010010157client_needs_more_time 4
Gilles Peskine111fde42022-02-25 19:51:52 +010010158requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +020010159run_test "DTLS proxy: 3d, min handshake, resumption, nbio" \
10160 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010161 "$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 +020010162 psk=abc123 debug_level=3 nbio=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010163 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +010010164 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +020010165 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \
10166 0 \
10167 -s "a session has been resumed" \
10168 -c "a session has been resumed" \
10169 -s "Extra-header:" \
10170 -c "HTTP/1.0 200 OK"
10171
Janos Follath74537a62016-09-02 13:45:28 +010010172client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010173requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010174run_test "DTLS proxy: 3d, min handshake, client-initiated renego" \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +020010175 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010176 "$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 +020010177 psk=abc123 renegotiation=1 debug_level=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010178 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020010179 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +020010180 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10181 0 \
10182 -c "=> renegotiate" \
10183 -s "=> renegotiate" \
10184 -s "Extra-header:" \
10185 -c "HTTP/1.0 200 OK"
10186
Janos Follath74537a62016-09-02 13:45:28 +010010187client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010188requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010189run_test "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \
10190 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010191 "$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 +020010192 psk=abc123 renegotiation=1 debug_level=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010193 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020010194 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010195 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10196 0 \
10197 -c "=> renegotiate" \
10198 -s "=> renegotiate" \
10199 -s "Extra-header:" \
10200 -c "HTTP/1.0 200 OK"
10201
Janos Follath74537a62016-09-02 13:45:28 +010010202client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010203requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010204run_test "DTLS proxy: 3d, min handshake, server-initiated renego" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010205 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010206 "$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 +020010207 psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010208 debug_level=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010209 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010210 renegotiation=1 exchanges=4 debug_level=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010211 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10212 0 \
10213 -c "=> renegotiate" \
10214 -s "=> renegotiate" \
10215 -s "Extra-header:" \
10216 -c "HTTP/1.0 200 OK"
10217
Janos Follath74537a62016-09-02 13:45:28 +010010218client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010219requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010220run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010221 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010222 "$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 +020010223 psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010224 debug_level=2 nbio=2" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010225 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010226 renegotiation=1 exchanges=4 debug_level=2 nbio=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010227 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10228 0 \
10229 -c "=> renegotiate" \
10230 -s "=> renegotiate" \
10231 -s "Extra-header:" \
10232 -c "HTTP/1.0 200 OK"
10233
Manuel Pégourié-Gonnard82986c12018-09-03 10:50:21 +020010234## Interop tests with OpenSSL might trigger a bug in recent versions (including
10235## all versions installed on the CI machines), reported here:
10236## Bug report: https://github.com/openssl/openssl/issues/6902
10237## They should be re-enabled once a fixed version of OpenSSL is available
10238## (this should happen in some 1.1.1_ release according to the ticket).
10239skip_next_test
Janos Follath74537a62016-09-02 13:45:28 +010010240client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010241not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010242run_test "DTLS proxy: 3d, openssl server" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020010243 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
10244 "$O_SRV -dtls1 -mtu 2048" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010245 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020010246 0 \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020010247 -c "HTTP/1.0 200 OK"
10248
Manuel Pégourié-Gonnard82986c12018-09-03 10:50:21 +020010249skip_next_test # see above
Janos Follath74537a62016-09-02 13:45:28 +010010250client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010251not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010252run_test "DTLS proxy: 3d, openssl server, fragmentation" \
10253 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
10254 "$O_SRV -dtls1 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010255 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010256 0 \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010257 -c "HTTP/1.0 200 OK"
10258
Manuel Pégourié-Gonnard82986c12018-09-03 10:50:21 +020010259skip_next_test # see above
Janos Follath74537a62016-09-02 13:45:28 +010010260client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010261not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010262run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \
10263 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
10264 "$O_SRV -dtls1 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010265 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2 tickets=0" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010266 0 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010267 -c "HTTP/1.0 200 OK"
10268
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +000010269requires_gnutls
Janos Follath74537a62016-09-02 13:45:28 +010010270client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010271not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010272run_test "DTLS proxy: 3d, gnutls server" \
10273 -p "$P_PXY drop=5 delay=5 duplicate=5" \
10274 "$G_SRV -u --mtu 2048 -a" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010275 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010276 0 \
10277 -s "Extra-header:" \
10278 -c "Extra-header:"
10279
k-stachowiak17a38d32019-02-18 15:29:56 +010010280requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +010010281client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010282not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010283run_test "DTLS proxy: 3d, gnutls server, fragmentation" \
10284 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +010010285 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010286 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010287 0 \
10288 -s "Extra-header:" \
10289 -c "Extra-header:"
10290
k-stachowiak17a38d32019-02-18 15:29:56 +010010291requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +010010292client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010293not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010294run_test "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \
10295 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +010010296 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010297 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010298 0 \
10299 -s "Extra-header:" \
10300 -c "Extra-header:"
10301
Ron Eldorf75e2522019-05-14 20:38:49 +030010302requires_config_enabled MBEDTLS_SSL_EXPORT_KEYS
10303run_test "export keys functionality" \
10304 "$P_SRV eap_tls=1 debug_level=3" \
10305 "$P_CLI eap_tls=1 debug_level=3" \
10306 0 \
10307 -s "exported maclen is " \
10308 -s "exported keylen is " \
10309 -s "exported ivlen is " \
10310 -c "exported maclen is " \
10311 -c "exported keylen is " \
Ron Eldor65d8c262019-06-04 13:05:36 +030010312 -c "exported ivlen is " \
10313 -c "EAP-TLS key material is:"\
10314 -s "EAP-TLS key material is:"\
10315 -c "EAP-TLS IV is:" \
10316 -s "EAP-TLS IV is:"
Ron Eldorf75e2522019-05-14 20:38:49 +030010317
Piotr Nowicki0937ed22019-11-26 16:32:40 +010010318# Test heap memory usage after handshake
10319requires_config_enabled MBEDTLS_MEMORY_DEBUG
10320requires_config_enabled MBEDTLS_MEMORY_BUFFER_ALLOC_C
10321requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +010010322requires_max_content_len 16384
Piotr Nowicki0937ed22019-11-26 16:32:40 +010010323run_tests_memory_after_hanshake
10324
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +010010325# Final report
10326
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010327echo "------------------------------------------------------------------------"
10328
10329if [ $FAILS = 0 ]; then
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +010010330 printf "PASSED"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010331else
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +010010332 printf "FAILED"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010333fi
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +020010334PASSES=$(( $TESTS - $FAILS ))
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +020010335echo " ($PASSES / $TESTS tests ($SKIPS skipped))"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010336
10337exit $FAILS