blob: 97cd188e653b4659b0a6a4762d469bd459b7772c [file] [log] [blame]
Gilles Peskine1d6a9502024-09-13 13:53:50 +02001# Miscellaneous tests of TLS 1.3 features.
Jerry Yue5991322022-11-07 14:03:44 +08002
Jerry Yue5991322022-11-07 14:03:44 +08003# Copyright The Mbed TLS Contributors
Dave Rodgman16799db2023-11-02 19:47:20 +00004# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Jerry Yue5991322022-11-07 14:03:44 +08005#
6
7requires_gnutls_tls1_3
Jerry Yu616ba752022-11-08 21:49:47 +08008requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
9requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
10requires_config_enabled MBEDTLS_SSL_SRV_C
11requires_config_enabled MBEDTLS_DEBUG_C
12requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
13
14run_test "TLS 1.3: PSK: No valid ciphersuite. G->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010015 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
Jerry Yu616ba752022-11-08 21:49:47 +080016 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-CIPHER-ALL:+AES-256-GCM:+AEAD:+SHA384:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3 \
17 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
18 localhost" \
19 1 \
20 -s "found psk key exchange modes extension" \
21 -s "found pre_shared_key extension" \
22 -s "Found PSK_EPHEMERAL KEX MODE" \
23 -s "Found PSK KEX MODE" \
24 -s "No matched ciphersuite"
25
26requires_openssl_tls1_3
27requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
28requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
29requires_config_enabled MBEDTLS_SSL_SRV_C
30requires_config_enabled MBEDTLS_DEBUG_C
31requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
32
33run_test "TLS 1.3: PSK: No valid ciphersuite. O->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010034 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
Jerry Yu616ba752022-11-08 21:49:47 +080035 "$O_NEXT_CLI -tls1_3 -msg -allow_no_dhe_kex -ciphersuites TLS_AES_256_GCM_SHA384\
36 -psk_identity Client_identity -psk 6162636465666768696a6b6c6d6e6f70" \
37 1 \
38 -s "found psk key exchange modes extension" \
39 -s "found pre_shared_key extension" \
40 -s "Found PSK_EPHEMERAL KEX MODE" \
41 -s "Found PSK KEX MODE" \
42 -s "No matched ciphersuite"
43
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020044requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
45requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
46requires_config_enabled MBEDTLS_SSL_SRV_C
47requires_config_enabled MBEDTLS_SSL_CLI_C
48requires_config_enabled MBEDTLS_DEBUG_C
49requires_config_enabled MBEDTLS_HAVE_TIME
50requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080051run_test "TLS 1.3 m->m: Multiple PSKs: valid ticket, reconnect with ticket" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010052 "$P_SRV tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8" \
53 "$P_CLI tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +080054 0 \
55 -c "Pre-configured PSK number = 2" \
56 -s "sent selected_identity: 0" \
57 -s "key exchange mode: psk_ephemeral" \
58 -S "key exchange mode: psk$" \
59 -S "key exchange mode: ephemeral$" \
60 -S "ticket is not authentic"
61
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020062requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
63requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
64requires_config_enabled MBEDTLS_SSL_SRV_C
65requires_config_enabled MBEDTLS_SSL_CLI_C
66requires_config_enabled MBEDTLS_DEBUG_C
67requires_config_enabled MBEDTLS_HAVE_TIME
68requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080069run_test "TLS 1.3 m->m: Multiple PSKs: invalid ticket, reconnect with PSK" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010070 "$P_SRV tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8 dummy_ticket=1" \
71 "$P_CLI tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +080072 0 \
73 -c "Pre-configured PSK number = 2" \
74 -s "sent selected_identity: 1" \
75 -s "key exchange mode: psk_ephemeral" \
76 -S "key exchange mode: psk$" \
77 -S "key exchange mode: ephemeral$" \
78 -s "ticket is not authentic"
79
Ronald Cron3cf41452024-03-10 10:44:14 +010080requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020081requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
82requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
83requires_config_enabled MBEDTLS_SSL_SRV_C
84requires_config_enabled MBEDTLS_DEBUG_C
Ronald Cron3cf41452024-03-10 10:44:14 +010085requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
86run_test "TLS 1.3: G->m: ephemeral_all/psk, fail, no common kex mode" \
87 "$P_SRV tls13_kex_modes=psk debug_level=5 $(get_srv_psk_list)" \
88 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:-PSK:+VERS-TLS1.3 \
89 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
90 localhost" \
91 1 \
92 -s "found psk key exchange modes extension" \
93 -s "found pre_shared_key extension" \
94 -s "Found PSK_EPHEMERAL KEX MODE" \
95 -S "Found PSK KEX MODE" \
96 -S "key exchange mode: psk$" \
97 -S "key exchange mode: psk_ephemeral" \
98 -S "key exchange mode: ephemeral"
99
100requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200101requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
102requires_config_enabled MBEDTLS_SSL_SRV_C
103requires_config_enabled MBEDTLS_DEBUG_C
104requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
105requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
106requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
107requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100108run_test "TLS 1.3: G->m: PSK: configured psk only, good." \
109 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
110 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
111 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
112 localhost" \
113 0 \
114 -s "found psk key exchange modes extension" \
115 -s "found pre_shared_key extension" \
116 -s "Found PSK_EPHEMERAL KEX MODE" \
117 -s "Found PSK KEX MODE" \
118 -s "key exchange mode: psk$"
119
120requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200121requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
122requires_config_enabled MBEDTLS_SSL_SRV_C
123requires_config_enabled MBEDTLS_DEBUG_C
124requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
125requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
126requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
127requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100128run_test "TLS 1.3: G->m: PSK: configured psk_ephemeral only, good." \
129 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
130 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
131 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
132 localhost" \
133 0 \
134 -s "found psk key exchange modes extension" \
135 -s "found pre_shared_key extension" \
136 -s "Found PSK_EPHEMERAL KEX MODE" \
137 -s "Found PSK KEX MODE" \
138 -s "key exchange mode: psk_ephemeral$"
139
140requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200141requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
142requires_config_enabled MBEDTLS_SSL_SRV_C
143requires_config_enabled MBEDTLS_DEBUG_C
144requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
145requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
146requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
147requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100148run_test "TLS 1.3: G->m: PSK: configured ephemeral only, good." \
149 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
150 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
151 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
152 localhost" \
153 0 \
154 -s "key exchange mode: ephemeral$"
155
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200156requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
157requires_config_enabled MBEDTLS_SSL_CLI_C
158requires_config_enabled MBEDTLS_SSL_SRV_C
159requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
160requires_config_enabled MBEDTLS_HAVE_TIME
161requires_config_enabled MBEDTLS_DEBUG_C
162requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100163requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
164 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100165run_test "TLS 1.3 m->m: resumption" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100166 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crone7398922024-03-10 12:11:02 +0100167 "$P_CLI reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800168 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100169 -c "Protocol is TLSv1.3" \
170 -c "Saving session for reuse... ok" \
171 -c "Reconnecting with saved session... ok" \
172 -c "HTTP/1.0 200 OK" \
173 -s "Protocol is TLSv1.3" \
174 -s "key exchange mode: psk" \
175 -s "Select PSK ciphersuite"
176
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200177requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
178requires_config_enabled MBEDTLS_SSL_CLI_C
179requires_config_enabled MBEDTLS_SSL_SRV_C
180requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
181requires_config_enabled MBEDTLS_HAVE_TIME
182requires_config_enabled MBEDTLS_DEBUG_C
183requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100184requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
185 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
186run_test "TLS 1.3 m->m: resumption with servername" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100187 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key \
188 sni=localhost,../framework/data_files/server2.crt,../framework/data_files/server2.key,-,-,-,polarssl.example,../framework/data_files/server1-nospace.crt,../framework/data_files/server1.key,-,-,-" \
Ronald Crone7398922024-03-10 12:11:02 +0100189 "$P_CLI server_name=localhost reco_mode=1 reconnect=1" \
190 0 \
191 -c "Protocol is TLSv1.3" \
192 -c "Saving session for reuse... ok" \
193 -c "Reconnecting with saved session... ok" \
194 -c "HTTP/1.0 200 OK" \
195 -s "Protocol is TLSv1.3" \
196 -s "key exchange mode: psk" \
197 -s "Select PSK ciphersuite"
198
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200199requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
200requires_config_enabled MBEDTLS_SSL_CLI_C
201requires_config_enabled MBEDTLS_SSL_SRV_C
202requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
203requires_config_enabled MBEDTLS_HAVE_TIME
204requires_config_enabled MBEDTLS_DEBUG_C
205requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100206requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
207 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
208run_test "TLS 1.3 m->m: resumption with ticket max lifetime (7d)" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100209 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key ticket_timeout=604800 tickets=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100210 "$P_CLI reco_mode=1 reconnect=1" \
211 0 \
212 -c "Protocol is TLSv1.3" \
213 -c "Saving session for reuse... ok" \
214 -c "Reconnecting with saved session... ok" \
215 -c "HTTP/1.0 200 OK" \
216 -s "Protocol is TLSv1.3" \
217 -s "key exchange mode: psk" \
218 -s "Select PSK ciphersuite"
219
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200220requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
221requires_config_enabled MBEDTLS_SSL_CLI_C
222requires_config_enabled MBEDTLS_SSL_SRV_C
223requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
224requires_config_enabled MBEDTLS_HAVE_TIME
225requires_config_enabled MBEDTLS_DEBUG_C
226requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100227requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
228 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100229requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
230run_test "TLS 1.3 m->m: resumption with AES-256-GCM-SHA384 only" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100231 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100232 "$P_CLI force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 reco_mode=1 reconnect=1" \
233 0 \
234 -c "Protocol is TLSv1.3" \
235 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
236 -c "Saving session for reuse... ok" \
237 -c "Reconnecting with saved session... ok" \
238 -c "HTTP/1.0 200 OK" \
239 -s "Protocol is TLSv1.3" \
240 -s "key exchange mode: psk" \
241 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384"
242
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200243requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
244requires_config_enabled MBEDTLS_SSL_CLI_C
245requires_config_enabled MBEDTLS_SSL_SRV_C
246requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
247requires_config_enabled MBEDTLS_HAVE_TIME
248requires_config_enabled MBEDTLS_SSL_EARLY_DATA
249requires_config_enabled MBEDTLS_DEBUG_C
250requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100251requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
252 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
253run_test "TLS 1.3 m->m: resumption with early data" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100254 "$P_SRV debug_level=4 early_data=1 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100255 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
256 0 \
257 -c "Protocol is TLSv1.3" \
258 -c "Saving session for reuse... ok" \
259 -c "Reconnecting with saved session" \
260 -c "HTTP/1.0 200 OK" \
261 -c "received max_early_data_size" \
262 -c "NewSessionTicket: early_data(42) extension received." \
263 -c "ClientHello: early_data(42) extension exists." \
264 -c "EncryptedExtensions: early_data(42) extension received." \
265 -c "bytes of early data written" \
266 -C "0 bytes of early data written" \
267 -s "Protocol is TLSv1.3" \
268 -s "key exchange mode: psk" \
269 -s "Select PSK ciphersuite" \
270 -s "Sent max_early_data_size" \
271 -s "NewSessionTicket: early_data(42) extension exists." \
272 -s "ClientHello: early_data(42) extension exists." \
273 -s "EncryptedExtensions: early_data(42) extension exists." \
274 -s "early data bytes read"
275
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200276requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
277requires_config_enabled MBEDTLS_SSL_CLI_C
278requires_config_enabled MBEDTLS_SSL_SRV_C
279requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
280requires_config_enabled MBEDTLS_HAVE_TIME
281requires_config_enabled MBEDTLS_SSL_EARLY_DATA
282requires_config_enabled MBEDTLS_DEBUG_C
283requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100284requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
285 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
286requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
287run_test "TLS 1.3 m->m: resumption with early data, AES-256-GCM-SHA384 only" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100288 "$P_SRV debug_level=4 early_data=1 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100289 "$P_CLI debug_level=3 force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 early_data=1 reco_mode=1 reconnect=1" \
290 0 \
291 -c "Protocol is TLSv1.3" \
292 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
293 -c "Saving session for reuse... ok" \
294 -c "Reconnecting with saved session" \
295 -c "HTTP/1.0 200 OK" \
296 -c "received max_early_data_size" \
297 -c "NewSessionTicket: early_data(42) extension received." \
298 -c "ClientHello: early_data(42) extension exists." \
299 -c "EncryptedExtensions: early_data(42) extension received." \
300 -c "bytes of early data written" \
301 -C "0 bytes of early data written" \
302 -s "Protocol is TLSv1.3" \
303 -s "key exchange mode: psk" \
304 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384" \
305 -s "Sent max_early_data_size" \
306 -s "NewSessionTicket: early_data(42) extension exists." \
307 -s "ClientHello: early_data(42) extension exists." \
308 -s "EncryptedExtensions: early_data(42) extension exists." \
309 -s "early data bytes read"
310
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200311requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
312requires_config_enabled MBEDTLS_SSL_CLI_C
313requires_config_enabled MBEDTLS_SSL_SRV_C
314requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
315requires_config_enabled MBEDTLS_HAVE_TIME
316requires_config_enabled MBEDTLS_SSL_EARLY_DATA
317requires_config_enabled MBEDTLS_DEBUG_C
318requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100319requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
320 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
321run_test "TLS 1.3 m->m: resumption, early data cli-enabled/srv-default" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100322 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100323 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
324 0 \
325 -c "Protocol is TLSv1.3" \
326 -c "Saving session for reuse... ok" \
327 -c "Reconnecting with saved session" \
328 -c "HTTP/1.0 200 OK" \
329 -C "received max_early_data_size" \
330 -C "NewSessionTicket: early_data(42) extension received." \
331 -C "ClientHello: early_data(42) extension exists." \
332 -C "EncryptedExtensions: early_data(42) extension received." \
333 -c "0 bytes of early data written" \
334 -s "Protocol is TLSv1.3" \
335 -s "key exchange mode: psk" \
336 -s "Select PSK ciphersuite" \
337 -S "Sent max_early_data_size" \
338 -S "NewSessionTicket: early_data(42) extension exists." \
339 -S "ClientHello: early_data(42) extension exists." \
340 -S "EncryptedExtensions: early_data(42) extension exists." \
341 -S "early data bytes read"
342
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200343requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
344requires_config_enabled MBEDTLS_SSL_CLI_C
345requires_config_enabled MBEDTLS_SSL_SRV_C
346requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
347requires_config_enabled MBEDTLS_HAVE_TIME
348requires_config_enabled MBEDTLS_SSL_EARLY_DATA
349requires_config_enabled MBEDTLS_DEBUG_C
350requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100351requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
352 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
353run_test "TLS 1.3 m->m: resumption, early data cli-enabled/srv-disabled" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100354 "$P_SRV debug_level=4 early_data=0 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100355 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
356 0 \
357 -c "Protocol is TLSv1.3" \
358 -c "Saving session for reuse... ok" \
359 -c "Reconnecting with saved session" \
360 -c "HTTP/1.0 200 OK" \
361 -C "received max_early_data_size" \
362 -C "NewSessionTicket: early_data(42) extension received." \
363 -C "ClientHello: early_data(42) extension exists." \
364 -C "EncryptedExtensions: early_data(42) extension received." \
365 -c "0 bytes of early data written" \
366 -s "Protocol is TLSv1.3" \
367 -s "key exchange mode: psk" \
368 -s "Select PSK ciphersuite" \
369 -S "Sent max_early_data_size" \
370 -S "NewSessionTicket: early_data(42) extension exists." \
371 -S "ClientHello: early_data(42) extension exists." \
372 -S "EncryptedExtensions: early_data(42) extension exists." \
373 -S "early data bytes read"
374
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200375requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
376requires_config_enabled MBEDTLS_SSL_CLI_C
377requires_config_enabled MBEDTLS_SSL_SRV_C
378requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
379requires_config_enabled MBEDTLS_HAVE_TIME
380requires_config_enabled MBEDTLS_SSL_EARLY_DATA
381requires_config_enabled MBEDTLS_DEBUG_C
382requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100383requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
384 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
385run_test "TLS 1.3 m->m: resumption, early data cli-default/srv-enabled" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100386 "$P_SRV debug_level=4 early_data=1 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100387 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
388 0 \
389 -c "Protocol is TLSv1.3" \
390 -c "Saving session for reuse... ok" \
391 -c "Reconnecting with saved session" \
392 -c "HTTP/1.0 200 OK" \
393 -c "received max_early_data_size" \
394 -c "NewSessionTicket: early_data(42) extension received." \
395 -C "ClientHello: early_data(42) extension exists." \
396 -C "EncryptedExtensions: early_data(42) extension received." \
397 -C "bytes of early data written" \
398 -s "Protocol is TLSv1.3" \
399 -s "key exchange mode: psk" \
400 -s "Select PSK ciphersuite" \
401 -s "Sent max_early_data_size" \
402 -s "NewSessionTicket: early_data(42) extension exists." \
403 -S "ClientHello: early_data(42) extension exists." \
404 -S "EncryptedExtensions: early_data(42) extension exists." \
405 -S "early data bytes read"
406
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200407requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
408requires_config_enabled MBEDTLS_SSL_CLI_C
409requires_config_enabled MBEDTLS_SSL_SRV_C
410requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
411requires_config_enabled MBEDTLS_HAVE_TIME
412requires_config_enabled MBEDTLS_SSL_EARLY_DATA
413requires_config_enabled MBEDTLS_DEBUG_C
414requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100415requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
416 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
417run_test "TLS 1.3 m->m: resumption, early data cli-disabled/srv-enabled" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100418 "$P_SRV debug_level=4 early_data=1 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100419 "$P_CLI debug_level=3 early_data=0 reco_mode=1 reconnect=1" \
420 0 \
421 -c "Protocol is TLSv1.3" \
422 -c "Saving session for reuse... ok" \
423 -c "Reconnecting with saved session" \
424 -c "HTTP/1.0 200 OK" \
425 -c "received max_early_data_size" \
426 -c "NewSessionTicket: early_data(42) extension received." \
427 -C "ClientHello: early_data(42) extension exists." \
428 -C "EncryptedExtensions: early_data(42) extension received." \
429 -C "bytes of early data written" \
430 -s "Protocol is TLSv1.3" \
431 -s "key exchange mode: psk" \
432 -s "Select PSK ciphersuite" \
433 -s "Sent max_early_data_size" \
434 -s "NewSessionTicket: early_data(42) extension exists." \
435 -S "ClientHello: early_data(42) extension exists." \
436 -S "EncryptedExtensions: early_data(42) extension exists." \
437 -S "early data bytes read"
438
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200439requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
440requires_config_enabled MBEDTLS_SSL_CLI_C
441requires_config_enabled MBEDTLS_SSL_SRV_C
442requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
443requires_config_enabled MBEDTLS_HAVE_TIME
444requires_config_enabled MBEDTLS_DEBUG_C
445requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100446requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
447 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100448run_test "TLS 1.3 m->m: resumption fails, ticket lifetime too long (7d + 1s)" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100449 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key ticket_timeout=604801 tickets=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100450 "$P_CLI reco_mode=1 reconnect=1" \
451 1 \
452 -c "Protocol is TLSv1.3" \
453 -C "Saving session for reuse... ok" \
454 -c "Reconnecting with saved session... failed" \
455 -S "Protocol is TLSv1.3" \
456 -S "key exchange mode: psk" \
457 -S "Select PSK ciphersuite" \
458 -s "Ticket lifetime (604801) is greater than 7 days."
459
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200460requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
461requires_config_enabled MBEDTLS_SSL_CLI_C
462requires_config_enabled MBEDTLS_SSL_SRV_C
463requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
464requires_config_enabled MBEDTLS_HAVE_TIME
465requires_config_enabled MBEDTLS_DEBUG_C
466requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100467requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
468 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
469run_test "TLS 1.3 m->m: resumption fails, ticket lifetime=0" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100470 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key ticket_timeout=0 tickets=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100471 "$P_CLI debug_level=2 reco_mode=1 reconnect=1" \
472 1 \
473 -c "Protocol is TLSv1.3" \
474 -C "Saving session for reuse... ok" \
475 -c "Discard new session ticket" \
476 -c "Reconnecting with saved session... failed" \
477 -s "Protocol is TLSv1.3" \
478 -S "key exchange mode: psk" \
479 -S "Select PSK ciphersuite"
480
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200481requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
482requires_config_enabled MBEDTLS_SSL_CLI_C
483requires_config_enabled MBEDTLS_SSL_SRV_C
484requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
485requires_config_enabled MBEDTLS_HAVE_TIME
486requires_config_enabled MBEDTLS_DEBUG_C
487requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100488requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
489 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
490run_test "TLS 1.3 m->m: resumption fails, servername check failed" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100491 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key \
492 sni=localhost,../framework/data_files/server2.crt,../framework/data_files/server2.key,-,-,-,polarssl.example,../framework/data_files/server1-nospace.crt,../framework/data_files/server1.key,-,-,-" \
Ronald Crone7398922024-03-10 12:11:02 +0100493 "$P_CLI debug_level=4 server_name=localhost reco_server_name=remote reco_mode=1 reconnect=1" \
494 1 \
495 -c "Protocol is TLSv1.3" \
496 -c "Saving session for reuse... ok" \
497 -c "Reconnecting with saved session" \
498 -c "Hostname mismatch the session ticket, disable session resumption." \
499 -s "Protocol is TLSv1.3" \
500 -S "key exchange mode: psk" \
501 -S "Select PSK ciphersuite"
502
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200503requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
504requires_config_enabled MBEDTLS_SSL_CLI_C
505requires_config_enabled MBEDTLS_SSL_SRV_C
506requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
507requires_config_enabled MBEDTLS_HAVE_TIME
508requires_config_enabled MBEDTLS_DEBUG_C
509requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100510requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
511 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
512run_test "TLS 1.3 m->m: resumption fails, ticket auth failed." \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100513 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key tickets=8 dummy_ticket=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100514 "$P_CLI reco_mode=1 reconnect=1" \
515 0 \
516 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800517 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100518 -s "Protocol is TLSv1.3" \
519 -c "Saving session for reuse... ok" \
520 -c "Reconnecting with saved session" \
521 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800522 -s "ticket is not authentic" \
523 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800524 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800525 -S "Ticket age exceeds limitation" \
526 -S "Ticket age outside tolerance window"
527
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200528requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
529requires_config_enabled MBEDTLS_SSL_CLI_C
530requires_config_enabled MBEDTLS_SSL_SRV_C
531requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
532requires_config_enabled MBEDTLS_HAVE_TIME
533requires_config_enabled MBEDTLS_DEBUG_C
534requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100535requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100536 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100537run_test "TLS 1.3 m->m: resumption fails, ticket expired." \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100538 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key tickets=8 dummy_ticket=2" \
Ronald Crone7398922024-03-10 12:11:02 +0100539 "$P_CLI reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800540 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100541 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800542 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100543 -s "Protocol is TLSv1.3" \
544 -c "Saving session for reuse... ok" \
545 -c "Reconnecting with saved session" \
546 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800547 -S "ticket is not authentic" \
548 -s "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800549 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800550 -S "Ticket age exceeds limitation" \
551 -S "Ticket age outside tolerance window"
552
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200553requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
554requires_config_enabled MBEDTLS_SSL_CLI_C
555requires_config_enabled MBEDTLS_SSL_SRV_C
556requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
557requires_config_enabled MBEDTLS_HAVE_TIME
558requires_config_enabled MBEDTLS_DEBUG_C
559requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100560requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100561 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100562run_test "TLS 1.3 m->m: resumption fails, invalid creation time." \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100563 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key tickets=8 dummy_ticket=3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800564 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
565 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100566 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800567 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100568 -s "Protocol is TLSv1.3" \
569 -c "Saving session for reuse... ok" \
570 -c "Reconnecting with saved session" \
571 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800572 -S "ticket is not authentic" \
573 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800574 -s "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800575 -S "Ticket age exceeds limitation" \
576 -S "Ticket age outside tolerance window"
577
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200578requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
579requires_config_enabled MBEDTLS_SSL_CLI_C
580requires_config_enabled MBEDTLS_SSL_SRV_C
581requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
582requires_config_enabled MBEDTLS_HAVE_TIME
583requires_config_enabled MBEDTLS_DEBUG_C
584requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100585requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100586 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100587run_test "TLS 1.3 m->m: resumption fails, ticket expired, too old" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100588 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key tickets=8 dummy_ticket=4" \
Jerry Yu616ba752022-11-08 21:49:47 +0800589 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
590 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100591 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800592 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100593 -s "Protocol is TLSv1.3" \
594 -c "Saving session for reuse... ok" \
595 -c "Reconnecting with saved session" \
596 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800597 -S "ticket is not authentic" \
598 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800599 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800600 -s "Ticket age exceeds limitation" \
601 -S "Ticket age outside tolerance window"
602
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200603requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
604requires_config_enabled MBEDTLS_SSL_CLI_C
605requires_config_enabled MBEDTLS_SSL_SRV_C
606requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
607requires_config_enabled MBEDTLS_HAVE_TIME
608requires_config_enabled MBEDTLS_DEBUG_C
609requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100610requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100611 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100612run_test "TLS 1.3 m->m: resumption fails, age outside tolerance window, too young" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100613 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key tickets=8 dummy_ticket=5" \
Jerry Yu616ba752022-11-08 21:49:47 +0800614 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
615 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100616 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800617 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100618 -s "Protocol is TLSv1.3" \
619 -c "Saving session for reuse... ok" \
620 -c "Reconnecting with saved session" \
621 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800622 -S "ticket is not authentic" \
623 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800624 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800625 -S "Ticket age exceeds limitation" \
626 -s "Ticket age outside tolerance window"
627
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200628requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
629requires_config_enabled MBEDTLS_SSL_CLI_C
630requires_config_enabled MBEDTLS_SSL_SRV_C
631requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
632requires_config_enabled MBEDTLS_HAVE_TIME
633requires_config_enabled MBEDTLS_DEBUG_C
634requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100635requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100636 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100637run_test "TLS 1.3 m->m: resumption fails, age outside tolerance window, too old" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100638 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key tickets=8 dummy_ticket=6" \
Jerry Yu616ba752022-11-08 21:49:47 +0800639 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
640 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100641 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800642 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100643 -s "Protocol is TLSv1.3" \
644 -c "Saving session for reuse... ok" \
645 -c "Reconnecting with saved session" \
646 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800647 -S "ticket is not authentic" \
648 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800649 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800650 -S "Ticket age exceeds limitation" \
651 -s "Ticket age outside tolerance window"
652
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200653requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
654requires_config_enabled MBEDTLS_SSL_CLI_C
655requires_config_enabled MBEDTLS_SSL_SRV_C
656requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
657requires_config_enabled MBEDTLS_HAVE_TIME
658requires_config_enabled MBEDTLS_DEBUG_C
659requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
660requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100661run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk/none" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100662 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=7" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100663 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
664 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100665 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100666 -s "key exchange mode: ephemeral" \
667 -S "key exchange mode: psk_ephemeral" \
668 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100669 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100670 -s "No suitable PSK key exchange mode" \
671 -s "No usable PSK or ticket"
Jerry Yue5991322022-11-07 14:03:44 +0800672
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200673requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
674requires_config_enabled MBEDTLS_SSL_CLI_C
675requires_config_enabled MBEDTLS_SSL_SRV_C
676requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
677requires_config_enabled MBEDTLS_HAVE_TIME
678requires_config_enabled MBEDTLS_DEBUG_C
679requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
680requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100681run_test "TLS 1.3 m->m: ephemeral over psk resumption, cli/tkt kex modes psk/psk" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100682 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=8" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100683 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
684 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100685 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100686 -s "key exchange mode: ephemeral" \
687 -S "key exchange mode: psk_ephemeral" \
688 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100689 -s "found matched identity" \
690 -S "No suitable PSK key exchange mode" \
691 -S "No usable PSK or ticket"
692
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200693requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
694requires_config_enabled MBEDTLS_SSL_CLI_C
695requires_config_enabled MBEDTLS_SSL_SRV_C
696requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
697requires_config_enabled MBEDTLS_HAVE_TIME
698requires_config_enabled MBEDTLS_DEBUG_C
699requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
700requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100701run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk/psk_ephemeral" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100702 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=9" \
Ronald Crone7398922024-03-10 12:11:02 +0100703 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
704 0 \
705 -c "Protocol is TLSv1.3" \
706 -s "key exchange mode: ephemeral" \
707 -S "key exchange mode: psk_ephemeral" \
708 -S "key exchange mode: psk$" \
709 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100710 -s "No suitable PSK key exchange mode" \
711 -s "No usable PSK or ticket"
712
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200713requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
714requires_config_enabled MBEDTLS_SSL_CLI_C
715requires_config_enabled MBEDTLS_SSL_SRV_C
716requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
717requires_config_enabled MBEDTLS_HAVE_TIME
718requires_config_enabled MBEDTLS_DEBUG_C
719requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
720requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100721run_test "TLS 1.3 m->m: ephemeral over psk resumption, cli/tkt kex modes psk/psk_all" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100722 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=10" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100723 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
724 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100725 -c "Protocol is TLSv1.3" \
726 -s "key exchange mode: ephemeral" \
727 -S "key exchange mode: psk_ephemeral" \
728 -S "key exchange mode: psk$" \
729 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100730 -S "No suitable PSK key exchange mode" \
Ronald Crone7398922024-03-10 12:11:02 +0100731 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100732
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200733requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
734requires_config_enabled MBEDTLS_SSL_CLI_C
735requires_config_enabled MBEDTLS_SSL_SRV_C
736requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
737requires_config_enabled MBEDTLS_HAVE_TIME
738requires_config_enabled MBEDTLS_DEBUG_C
739requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
740requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100741run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk_ephemeral/none" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100742 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=7" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100743 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
744 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100745 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100746 -s "key exchange mode: ephemeral" \
747 -S "key exchange mode: psk_ephemeral" \
748 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100749 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100750 -s "No suitable PSK key exchange mode" \
751 -s "No usable PSK or ticket"
Jerry Yue5991322022-11-07 14:03:44 +0800752
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200753requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
754requires_config_enabled MBEDTLS_SSL_CLI_C
755requires_config_enabled MBEDTLS_SSL_SRV_C
756requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
757requires_config_enabled MBEDTLS_HAVE_TIME
758requires_config_enabled MBEDTLS_DEBUG_C
759requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
760requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100761run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk_ephemeral/psk" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100762 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=8" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100763 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
764 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100765 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100766 -s "key exchange mode: ephemeral" \
767 -S "key exchange mode: psk_ephemeral" \
768 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100769 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100770 -s "No suitable PSK key exchange mode" \
771 -s "No usable PSK or ticket"
772
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200773requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
774requires_config_enabled MBEDTLS_SSL_CLI_C
775requires_config_enabled MBEDTLS_SSL_SRV_C
776requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
777requires_config_enabled MBEDTLS_HAVE_TIME
778requires_config_enabled MBEDTLS_DEBUG_C
779requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
780requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100781run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_ephemeral/psk_ephemeral" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100782 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=9" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100783 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
784 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100785 -c "Protocol is TLSv1.3" \
786 -s "key exchange mode: ephemeral" \
787 -s "key exchange mode: psk_ephemeral" \
788 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100789 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100790 -S "No suitable PSK key exchange mode" \
791 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100792
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200793requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
794requires_config_enabled MBEDTLS_SSL_CLI_C
795requires_config_enabled MBEDTLS_SSL_SRV_C
796requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
797requires_config_enabled MBEDTLS_HAVE_TIME
798requires_config_enabled MBEDTLS_DEBUG_C
799requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
800requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100801run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_ephemeral/psk_all" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100802 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=10" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100803 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
804 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100805 -c "Protocol is TLSv1.3" \
806 -s "key exchange mode: ephemeral" \
807 -s "key exchange mode: psk_ephemeral" \
808 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100809 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100810 -S "No suitable PSK key exchange mode" \
811 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100812
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200813requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
814requires_config_enabled MBEDTLS_SSL_CLI_C
815requires_config_enabled MBEDTLS_SSL_SRV_C
816requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
817requires_config_enabled MBEDTLS_HAVE_TIME
818requires_config_enabled MBEDTLS_DEBUG_C
819requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
820requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
821requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100822run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk_all/none" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100823 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=7" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100824 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
825 0 \
826 -c "Pre-configured PSK number = 1" \
827 -S "sent selected_identity:" \
828 -s "key exchange mode: ephemeral" \
829 -S "key exchange mode: psk_ephemeral" \
830 -S "key exchange mode: psk$" \
831 -s "No suitable PSK key exchange mode" \
832 -s "No usable PSK or ticket"
833
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200834requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
835requires_config_enabled MBEDTLS_SSL_CLI_C
836requires_config_enabled MBEDTLS_SSL_SRV_C
837requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
838requires_config_enabled MBEDTLS_HAVE_TIME
839requires_config_enabled MBEDTLS_DEBUG_C
840requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
841requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
842requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100843run_test "TLS 1.3 m->m: ephemeral over psk resumption, cli/tkt kex modes psk_all/psk" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100844 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=8" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100845 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
846 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100847 -c "Protocol is TLSv1.3" \
848 -s "key exchange mode: ephemeral" \
849 -S "key exchange mode: psk_ephemeral" \
850 -S "key exchange mode: psk$" \
851 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100852 -S "No suitable PSK key exchange mode" \
Ronald Crone7398922024-03-10 12:11:02 +0100853 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100854
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200855requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
856requires_config_enabled MBEDTLS_SSL_CLI_C
857requires_config_enabled MBEDTLS_SSL_SRV_C
858requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
859requires_config_enabled MBEDTLS_HAVE_TIME
860requires_config_enabled MBEDTLS_DEBUG_C
861requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
862requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
863requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100864run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_all/psk_ephemeral" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100865 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=9" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100866 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
867 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100868 -c "Protocol is TLSv1.3" \
869 -s "key exchange mode: ephemeral" \
870 -s "key exchange mode: psk_ephemeral" \
871 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100872 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100873 -S "No suitable PSK key exchange mode" \
874 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100875
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200876requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
877requires_config_enabled MBEDTLS_SSL_CLI_C
878requires_config_enabled MBEDTLS_SSL_SRV_C
879requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
880requires_config_enabled MBEDTLS_HAVE_TIME
881requires_config_enabled MBEDTLS_DEBUG_C
882requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
883requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
884requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100885run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_all/psk_all" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100886 "$P_SRV debug_level=4 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key dummy_ticket=10" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100887 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
888 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100889 -c "Protocol is TLSv1.3" \
890 -s "key exchange mode: ephemeral" \
891 -s "key exchange mode: psk_ephemeral" \
892 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100893 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100894 -S "No suitable PSK key exchange mode" \
895 -S "No usable PSK or ticket"
Jerry Yue5991322022-11-07 14:03:44 +0800896
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100897requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200898requires_config_enabled MBEDTLS_SSL_CLI_C
899requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
900requires_config_enabled MBEDTLS_HAVE_TIME
901requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
902requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron00fa13b2024-03-05 17:45:44 +0100903requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
904 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
905run_test "TLS 1.3 m->O: resumption" \
906 "$O_NEXT_SRV -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
907 "$P_CLI reco_mode=1 reconnect=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100908 0 \
909 -c "Protocol is TLSv1.3" \
Ronald Cron00fa13b2024-03-05 17:45:44 +0100910 -c "Saving session for reuse... ok" \
911 -c "Reconnecting with saved session... ok" \
912 -c "HTTP/1.0 200 ok"
913
Ronald Cronceae4f82024-03-26 11:17:10 +0100914requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200915requires_config_enabled MBEDTLS_SSL_CLI_C
916requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
917requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cronceae4f82024-03-26 11:17:10 +0100918requires_config_disabled MBEDTLS_SSL_SESSION_TICKETS
919run_test "TLS 1.3 m->O: resumption fails, no ticket support" \
920 "$O_NEXT_SRV -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
921 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
922 1 \
923 -c "Protocol is TLSv1.3" \
924 -C "Saving session for reuse... ok" \
925 -C "Reconnecting with saved session... ok" \
926 -c "Ignore NewSessionTicket, not supported."
927
Ronald Cron00fa13b2024-03-05 17:45:44 +0100928# No early data m->O tests for the time being. The option -early_data is needed
929# to enable early data on OpenSSL server and it is not compatible with the
930# -www option we usually use for testing with OpenSSL server (see
931# O_NEXT_SRV_EARLY_DATA definition). In this configuration when running the
932# ephemeral then ticket based scenario we use for early data testing the first
933# handshake fails. The following skipped test is here to illustrate the kind
934# of testing we would like to do.
935skip_next_test
936requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200937requires_config_enabled MBEDTLS_SSL_CLI_C
938requires_config_enabled MBEDTLS_DEBUG_C
939requires_config_enabled MBEDTLS_SSL_EARLY_DATA
940requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
941requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron00fa13b2024-03-05 17:45:44 +0100942requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
943 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
944run_test "TLS 1.3 m->O: resumption with early data" \
945 "$O_NEXT_SRV_EARLY_DATA -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
946 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
947 0 \
948 -c "Protocol is TLSv1.3" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100949 -c "Saving session for reuse... ok" \
950 -c "Reconnecting with saved session" \
Ronald Cron00fa13b2024-03-05 17:45:44 +0100951 -c "HTTP/1.0 200 OK" \
952 -c "received max_early_data_size: 16384" \
953 -c "NewSessionTicket: early_data(42) extension received." \
954 -c "ClientHello: early_data(42) extension exists." \
955 -c "EncryptedExtensions: early_data(42) extension received." \
956 -c "bytes of early data written" \
957 -s "decrypted early data with length:"
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100958
959requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200960requires_config_enabled MBEDTLS_SSL_CLI_C
961requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
962requires_config_enabled MBEDTLS_HAVE_TIME
963requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
964requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +0100965requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
966 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
967run_test "TLS 1.3 m->G: resumption" \
968 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
969 "$P_CLI reco_mode=1 reconnect=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100970 0 \
971 -c "Protocol is TLSv1.3" \
Ronald Cron05210082024-03-05 16:34:51 +0100972 -c "Saving session for reuse... ok" \
973 -c "Reconnecting with saved session... ok" \
974 -c "HTTP/1.0 200 OK"
975
976requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200977requires_config_enabled MBEDTLS_SSL_CLI_C
978requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
979requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cronceae4f82024-03-26 11:17:10 +0100980requires_config_disabled MBEDTLS_SSL_SESSION_TICKETS
981run_test "TLS 1.3 m->G: resumption fails, no ticket support" \
982 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
983 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
984 1 \
985 -c "Protocol is TLSv1.3" \
986 -C "Saving session for reuse... ok" \
987 -C "Reconnecting with saved session... ok" \
988 -c "Ignore NewSessionTicket, not supported."
989
990requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200991requires_config_enabled MBEDTLS_SSL_CLI_C
992requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
993requires_config_enabled MBEDTLS_HAVE_TIME
994requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
995requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +0100996requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
997 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
998requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
999run_test "TLS 1.3 m->G: resumption with AES-256-GCM-SHA384 only" \
1000 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
1001 "$P_CLI force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 reco_mode=1 reconnect=1" \
1002 0 \
1003 -c "Protocol is TLSv1.3" \
1004 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
1005 -c "Saving session for reuse... ok" \
1006 -c "Reconnecting with saved session... ok" \
1007 -c "HTTP/1.0 200 OK"
1008
1009requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001010requires_config_enabled MBEDTLS_SSL_CLI_C
1011requires_config_enabled MBEDTLS_DEBUG_C
1012requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1013requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1014requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001015requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1016 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1017run_test "TLS 1.3 m->G: resumption with early data" \
1018 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1019 --earlydata --maxearlydata 16384" \
1020 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
1021 0 \
1022 -c "Protocol is TLSv1.3" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001023 -c "Saving session for reuse... ok" \
1024 -c "Reconnecting with saved session" \
1025 -c "HTTP/1.0 200 OK" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001026 -c "received max_early_data_size: 16384" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001027 -c "NewSessionTicket: early_data(42) extension received." \
1028 -c "ClientHello: early_data(42) extension exists." \
1029 -c "EncryptedExtensions: early_data(42) extension received." \
Ronald Cron05210082024-03-05 16:34:51 +01001030 -c "bytes of early data written" \
1031 -s "decrypted early data with length:"
Ronald Cronc8d604d2024-03-05 15:05:47 +01001032
1033requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001034requires_config_enabled MBEDTLS_SSL_CLI_C
1035requires_config_enabled MBEDTLS_DEBUG_C
1036requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1037requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1038requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cronc8d604d2024-03-05 15:05:47 +01001039requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1040 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001041requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
1042run_test "TLS 1.3 m->G: resumption with early data, AES-256-GCM-SHA384 only" \
1043 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1044 --earlydata --maxearlydata 16384" \
1045 "$P_CLI debug_level=3 force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 early_data=1 reco_mode=1 reconnect=1" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001046 0 \
Ronald Cron05210082024-03-05 16:34:51 +01001047 -c "Protocol is TLSv1.3" \
1048 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
1049 -c "Saving session for reuse... ok" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001050 -c "Reconnecting with saved session" \
Ronald Cron05210082024-03-05 16:34:51 +01001051 -c "HTTP/1.0 200 OK" \
1052 -c "received max_early_data_size: 16384" \
1053 -c "NewSessionTicket: early_data(42) extension received." \
1054 -c "ClientHello: early_data(42) extension exists." \
1055 -c "EncryptedExtensions: early_data(42) extension received." \
1056 -c "bytes of early data written" \
1057 -s "decrypted early data with length:"
1058
1059requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001060requires_config_enabled MBEDTLS_SSL_CLI_C
1061requires_config_enabled MBEDTLS_DEBUG_C
1062requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1063requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1064requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001065requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1066 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1067run_test "TLS 1.3 m->G: resumption, early data cli-enabled/srv-disabled" \
1068 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:+ECDHE-PSK:+PSK --disable-client-cert" \
1069 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
1070 0 \
1071 -c "Protocol is TLSv1.3" \
1072 -c "Saving session for reuse... ok" \
1073 -c "Reconnecting with saved session" \
1074 -c "HTTP/1.0 200 OK" \
1075 -C "received max_early_data_size: 16384" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001076 -C "NewSessionTicket: early_data(42) extension received." \
Ronald Cron05210082024-03-05 16:34:51 +01001077
1078requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001079requires_config_enabled MBEDTLS_SSL_CLI_C
1080requires_config_enabled MBEDTLS_DEBUG_C
1081requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1082requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1083requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001084requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1085 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1086run_test "TLS 1.3 m->G: resumption, early data cli-default/srv-enabled" \
1087 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1088 --earlydata --maxearlydata 16384" \
1089 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
1090 0 \
1091 -c "Protocol is TLSv1.3" \
1092 -c "Saving session for reuse... ok" \
1093 -c "Reconnecting with saved session" \
1094 -c "HTTP/1.0 200 OK" \
1095 -c "received max_early_data_size: 16384" \
1096 -c "NewSessionTicket: early_data(42) extension received." \
1097 -C "ClientHello: early_data(42) extension exists." \
1098
1099requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001100requires_config_enabled MBEDTLS_SSL_CLI_C
1101requires_config_enabled MBEDTLS_DEBUG_C
1102requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1103requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1104requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001105requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1106 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1107run_test "TLS 1.3 m->G: resumption, early data cli-disabled/srv-enabled" \
1108 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1109 --earlydata --maxearlydata 16384" \
1110 "$P_CLI debug_level=3 early_data=0 reco_mode=1 reconnect=1" \
1111 0 \
1112 -c "Protocol is TLSv1.3" \
1113 -c "Saving session for reuse... ok" \
1114 -c "Reconnecting with saved session" \
1115 -c "HTTP/1.0 200 OK" \
1116 -c "received max_early_data_size: 16384" \
1117 -c "NewSessionTicket: early_data(42) extension received." \
1118 -C "ClientHello: early_data(42) extension exists." \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001119
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001120requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001121requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1122requires_config_enabled MBEDTLS_SSL_SRV_C
1123requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1124requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron820199a2024-03-10 10:39:26 +01001125requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001126 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1127# https://github.com/openssl/openssl/issues/10714
1128# Until now, OpenSSL client does not support reconnect.
1129skip_next_test
Ronald Cron820199a2024-03-10 10:39:26 +01001130run_test "TLS 1.3 O->m: resumption" \
1131 "$P_SRV debug_level=2 tickets=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001132 "$O_NEXT_CLI -msg -debug -tls1_3 -reconnect" \
1133 0 \
Ronald Cron820199a2024-03-10 10:39:26 +01001134 -s "Protocol is TLSv1.3" \
1135 -s "key exchange mode: psk" \
1136 -s "Select PSK ciphersuite"
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001137
1138requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001139requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1140requires_config_enabled MBEDTLS_HAVE_TIME
1141requires_config_enabled MBEDTLS_SSL_SRV_C
1142requires_config_enabled MBEDTLS_DEBUG_C
1143requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1144requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001145requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001146 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001147run_test "TLS 1.3 G->m: resumption" \
1148 "$P_SRV debug_level=2 tickets=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001149 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r" \
1150 0 \
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001151 -s "Protocol is TLSv1.3" \
1152 -s "key exchange mode: psk" \
1153 -s "Select PSK ciphersuite"
1154
1155requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001156requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1157requires_config_enabled MBEDTLS_HAVE_TIME
1158requires_config_enabled MBEDTLS_SSL_SRV_C
1159requires_config_enabled MBEDTLS_DEBUG_C
1160requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1161requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001162requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1163 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1164requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
1165# Test the session resumption when the cipher suite for the original session is
1166# TLS1-3-AES-256-GCM-SHA384. In that case, the PSK is 384 bits long and not
1167# 256 bits long as with all the other TLS 1.3 cipher suites.
1168run_test "TLS 1.3 G->m: resumption with AES-256-GCM-SHA384 only" \
1169 "$P_SRV debug_level=2 tickets=1" \
1170 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM -V -r" \
1171 0 \
1172 -s "Protocol is TLSv1.3" \
1173 -s "key exchange mode: psk" \
1174 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384"
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001175
Ronald Cron854df132024-03-05 17:50:50 +01001176EARLY_DATA_INPUT_LEN_BLOCKS=$(( ( $( cat $EARLY_DATA_INPUT | wc -c ) + 31 ) / 32 ))
1177EARLY_DATA_INPUT_LEN=$(( $EARLY_DATA_INPUT_LEN_BLOCKS * 32 ))
1178
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001179requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001180requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1181requires_config_enabled MBEDTLS_HAVE_TIME
1182requires_config_enabled MBEDTLS_SSL_SRV_C
1183requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1184requires_config_enabled MBEDTLS_DEBUG_C
1185requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1186requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron854df132024-03-05 17:50:50 +01001187requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1188 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001189run_test "TLS 1.3 G->m: resumption with early data" \
1190 "$P_SRV debug_level=4 tickets=1 early_data=1 max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1191 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1192 --earlydata $EARLY_DATA_INPUT" \
Ronald Cron854df132024-03-05 17:50:50 +01001193 0 \
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001194 -s "Protocol is TLSv1.3" \
1195 -s "key exchange mode: psk" \
1196 -s "Select PSK ciphersuite" \
1197 -s "Sent max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1198 -s "NewSessionTicket: early_data(42) extension exists." \
1199 -s "ClientHello: early_data(42) extension exists." \
1200 -s "EncryptedExtensions: early_data(42) extension exists." \
1201 -s "$( head -1 $EARLY_DATA_INPUT )" \
1202 -s "$( tail -1 $EARLY_DATA_INPUT )" \
1203 -s "200 early data bytes read" \
Ronald Cron854df132024-03-05 17:50:50 +01001204 -s "106 early data bytes read"
1205
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001206requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001207requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1208requires_config_enabled MBEDTLS_HAVE_TIME
1209requires_config_enabled MBEDTLS_SSL_SRV_C
1210requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1211requires_config_enabled MBEDTLS_DEBUG_C
1212requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1213requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001214requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001215 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001216requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001217run_test "TLS 1.3 G->m: resumption with early data, AES-256-GCM-SHA384 only" \
1218 "$P_SRV debug_level=4 tickets=1 early_data=1 max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1219 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM -V -r \
1220 --earlydata $EARLY_DATA_INPUT" \
1221 0 \
1222 -s "Protocol is TLSv1.3" \
1223 -s "key exchange mode: psk" \
1224 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384" \
1225 -s "Sent max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1226 -s "NewSessionTicket: early_data(42) extension exists." \
1227 -s "ClientHello: early_data(42) extension exists." \
1228 -s "EncryptedExtensions: early_data(42) extension exists." \
1229 -s "$( head -1 $EARLY_DATA_INPUT )" \
1230 -s "$( tail -1 $EARLY_DATA_INPUT )" \
1231 -s "200 early data bytes read" \
1232 -s "106 early data bytes read"
1233
1234# The Mbed TLS server does not allow early data for the ticket it sends but
1235# the GnuTLS indicates early data anyway when resuming with the ticket and
1236# sends early data. The Mbed TLS server does not expect early data in
1237# association with the ticket thus it eventually fails the resumption
1238# handshake. The GnuTLS client behavior is not compliant here with the TLS 1.3
1239# specification and thus its behavior may change in following versions.
1240requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001241requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1242requires_config_enabled MBEDTLS_HAVE_TIME
1243requires_config_enabled MBEDTLS_SSL_SRV_C
1244requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1245requires_config_enabled MBEDTLS_DEBUG_C
1246requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1247requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001248requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1249 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1250run_test "TLS 1.3 G->m: resumption, early data cli-enabled/srv-default" \
1251 "$P_SRV debug_level=4 tickets=1" \
1252 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1253 --earlydata $EARLY_DATA_INPUT" \
1254 1 \
1255 -s "Protocol is TLSv1.3" \
1256 -s "key exchange mode: psk" \
1257 -s "Select PSK ciphersuite" \
1258 -S "Sent max_early_data_size" \
1259 -S "NewSessionTicket: early_data(42) extension exists." \
1260 -s "ClientHello: early_data(42) extension exists." \
1261 -s "EarlyData: rejected, feature disabled in server configuration." \
1262 -S "EncryptedExtensions: early_data(42) extension exists." \
1263 -s "EarlyData: deprotect and discard app data records" \
1264 -s "EarlyData: Too much early data received"
1265
1266# The Mbed TLS server does not allow early data for the ticket it sends but
1267# the GnuTLS indicates early data anyway when resuming with the ticket and
1268# sends early data. The Mbed TLS server does not expect early data in
1269# association with the ticket thus it eventually fails the resumption
1270# handshake. The GnuTLS client behavior is not compliant here with the TLS 1.3
1271# specification and thus its behavior may change in following versions.
1272requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001273requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1274requires_config_enabled MBEDTLS_HAVE_TIME
1275requires_config_enabled MBEDTLS_SSL_SRV_C
1276requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1277requires_config_enabled MBEDTLS_DEBUG_C
1278requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1279requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001280requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1281 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1282run_test "TLS 1.3 G->m: resumption, early data cli-enabled/srv-disabled" \
1283 "$P_SRV debug_level=4 tickets=1 early_data=0" \
1284 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1285 --earlydata $EARLY_DATA_INPUT" \
1286 1 \
1287 -s "Protocol is TLSv1.3" \
1288 -s "key exchange mode: psk" \
1289 -s "Select PSK ciphersuite" \
1290 -S "Sent max_early_data_size" \
1291 -S "NewSessionTicket: early_data(42) extension exists." \
1292 -s "ClientHello: early_data(42) extension exists." \
1293 -s "EarlyData: rejected, feature disabled in server configuration." \
1294 -S "EncryptedExtensions: early_data(42) extension exists." \
1295 -s "EarlyData: deprotect and discard app data records" \
1296 -s "EarlyData: Too much early data received"
1297
1298requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001299requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1300requires_config_enabled MBEDTLS_HAVE_TIME
1301requires_config_enabled MBEDTLS_SSL_SRV_C
1302requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1303requires_config_enabled MBEDTLS_DEBUG_C
1304requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
1305requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001306requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1307 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1308run_test "TLS 1.3 G->m: resumption, early data cli-disabled/srv-enabled" \
1309 "$P_SRV debug_level=4 tickets=1 early_data=1" \
1310 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r" \
1311 0 \
1312 -s "Protocol is TLSv1.3" \
1313 -s "key exchange mode: psk" \
1314 -s "Select PSK ciphersuite" \
1315 -s "Sent max_early_data_size" \
1316 -s "NewSessionTicket: early_data(42) extension exists." \
1317 -S "ClientHello: early_data(42) extension exists." \
1318 -S "EncryptedExtensions: early_data(42) extension exists."
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001319
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001320requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1321requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1322requires_config_enabled MBEDTLS_SSL_CLI_C
1323requires_config_enabled MBEDTLS_SSL_SRV_C
1324requires_config_enabled MBEDTLS_DEBUG_C
1325requires_config_enabled MBEDTLS_HAVE_TIME
1326requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1327requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1f63fe42024-02-23 15:49:12 +01001328run_test "TLS 1.3 m->m: Ephemeral over PSK kex with early data enabled" \
Ronald Cron74191a52024-03-09 17:38:16 +01001329 "$P_SRV force_version=tls13 debug_level=4 early_data=1 max_early_data_size=1024" \
Ronald Crone14770f2024-03-08 08:57:36 +01001330 "$P_CLI debug_level=4 early_data=1 tls13_kex_modes=psk_or_ephemeral reco_mode=1 reconnect=1" \
Ronald Cron1f63fe42024-02-23 15:49:12 +01001331 0 \
1332 -s "key exchange mode: ephemeral" \
1333 -S "key exchange mode: psk" \
1334 -s "found matched identity" \
1335 -s "EarlyData: rejected, not a session resumption" \
1336 -C "EncryptedExtensions: early_data(42) extension exists."