blob: cc6a31d795d2b8d93cec8a2fa1e66854de986055 [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
Jerry Yu616ba752022-11-08 21:49:47 +08009requires_config_enabled MBEDTLS_SSL_SRV_C
10requires_config_enabled MBEDTLS_DEBUG_C
11requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080012run_test "TLS 1.3: PSK: No valid ciphersuite. G->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010013 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
Jerry Yu616ba752022-11-08 21:49:47 +080014 "$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 \
15 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
16 localhost" \
17 1 \
18 -s "found psk key exchange modes extension" \
19 -s "found pre_shared_key extension" \
20 -s "Found PSK_EPHEMERAL KEX MODE" \
21 -s "Found PSK KEX MODE" \
22 -s "No matched ciphersuite"
23
24requires_openssl_tls1_3
25requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Jerry Yu616ba752022-11-08 21:49:47 +080026requires_config_enabled MBEDTLS_SSL_SRV_C
27requires_config_enabled MBEDTLS_DEBUG_C
28requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080029run_test "TLS 1.3: PSK: No valid ciphersuite. O->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010030 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
Jerry Yu616ba752022-11-08 21:49:47 +080031 "$O_NEXT_CLI -tls1_3 -msg -allow_no_dhe_kex -ciphersuites TLS_AES_256_GCM_SHA384\
32 -psk_identity Client_identity -psk 6162636465666768696a6b6c6d6e6f70" \
33 1 \
34 -s "found psk key exchange modes extension" \
35 -s "found pre_shared_key extension" \
36 -s "Found PSK_EPHEMERAL KEX MODE" \
37 -s "Found PSK KEX MODE" \
38 -s "No matched ciphersuite"
39
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020040requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
41requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
42requires_config_enabled MBEDTLS_SSL_SRV_C
43requires_config_enabled MBEDTLS_SSL_CLI_C
44requires_config_enabled MBEDTLS_DEBUG_C
45requires_config_enabled MBEDTLS_HAVE_TIME
46requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080047run_test "TLS 1.3 m->m: Multiple PSKs: valid ticket, reconnect with ticket" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010048 "$P_SRV tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8" \
49 "$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 +080050 0 \
51 -c "Pre-configured PSK number = 2" \
52 -s "sent selected_identity: 0" \
53 -s "key exchange mode: psk_ephemeral" \
54 -S "key exchange mode: psk$" \
55 -S "key exchange mode: ephemeral$" \
56 -S "ticket is not authentic"
57
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020058requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
59requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
60requires_config_enabled MBEDTLS_SSL_SRV_C
61requires_config_enabled MBEDTLS_SSL_CLI_C
62requires_config_enabled MBEDTLS_DEBUG_C
63requires_config_enabled MBEDTLS_HAVE_TIME
64requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080065run_test "TLS 1.3 m->m: Multiple PSKs: invalid ticket, reconnect with PSK" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010066 "$P_SRV tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8 dummy_ticket=1" \
67 "$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 +080068 0 \
69 -c "Pre-configured PSK number = 2" \
70 -s "sent selected_identity: 1" \
71 -s "key exchange mode: psk_ephemeral" \
72 -S "key exchange mode: psk$" \
73 -S "key exchange mode: ephemeral$" \
74 -s "ticket is not authentic"
75
Ronald Cron3cf41452024-03-10 10:44:14 +010076requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020077requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020078requires_config_enabled MBEDTLS_SSL_SRV_C
79requires_config_enabled MBEDTLS_DEBUG_C
Ronald Cron3cf41452024-03-10 10:44:14 +010080requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
81run_test "TLS 1.3: G->m: ephemeral_all/psk, fail, no common kex mode" \
82 "$P_SRV tls13_kex_modes=psk debug_level=5 $(get_srv_psk_list)" \
83 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:-PSK:+VERS-TLS1.3 \
84 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
85 localhost" \
86 1 \
87 -s "found psk key exchange modes extension" \
88 -s "found pre_shared_key extension" \
89 -s "Found PSK_EPHEMERAL KEX MODE" \
90 -S "Found PSK KEX MODE" \
91 -S "key exchange mode: psk$" \
92 -S "key exchange mode: psk_ephemeral" \
93 -S "key exchange mode: ephemeral"
94
95requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020096requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
97requires_config_enabled MBEDTLS_SSL_SRV_C
98requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +020099requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
100requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
101requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100102run_test "TLS 1.3: G->m: PSK: configured psk only, good." \
103 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
104 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
105 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
106 localhost" \
107 0 \
108 -s "found psk key exchange modes extension" \
109 -s "found pre_shared_key extension" \
110 -s "Found PSK_EPHEMERAL KEX MODE" \
111 -s "Found PSK KEX MODE" \
112 -s "key exchange mode: psk$"
113
114requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200115requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
116requires_config_enabled MBEDTLS_SSL_SRV_C
117requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200118requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
119requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
120requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100121run_test "TLS 1.3: G->m: PSK: configured psk_ephemeral only, good." \
122 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
123 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
124 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
125 localhost" \
126 0 \
127 -s "found psk key exchange modes extension" \
128 -s "found pre_shared_key extension" \
129 -s "Found PSK_EPHEMERAL KEX MODE" \
130 -s "Found PSK KEX MODE" \
131 -s "key exchange mode: psk_ephemeral$"
132
133requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200134requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
135requires_config_enabled MBEDTLS_SSL_SRV_C
136requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200137requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
138requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
139requires_config_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100140run_test "TLS 1.3: G->m: PSK: configured ephemeral only, good." \
141 "$P_SRV tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
142 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
143 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
144 localhost" \
145 0 \
146 -s "key exchange mode: ephemeral$"
147
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200148requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
149requires_config_enabled MBEDTLS_SSL_CLI_C
150requires_config_enabled MBEDTLS_SSL_SRV_C
151requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
152requires_config_enabled MBEDTLS_HAVE_TIME
153requires_config_enabled MBEDTLS_DEBUG_C
154requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron3cf41452024-03-10 10:44:14 +0100155requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
156 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100157run_test "TLS 1.3 m->m: resumption" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100158 "$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 +0100159 "$P_CLI reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800160 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100161 -c "Protocol is TLSv1.3" \
162 -c "Saving session for reuse... ok" \
163 -c "Reconnecting with saved session... ok" \
164 -c "HTTP/1.0 200 OK" \
165 -s "Protocol is TLSv1.3" \
166 -s "key exchange mode: psk" \
167 -s "Select PSK ciphersuite"
168
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200169requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
170requires_config_enabled MBEDTLS_SSL_CLI_C
171requires_config_enabled MBEDTLS_SSL_SRV_C
172requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
173requires_config_enabled MBEDTLS_HAVE_TIME
174requires_config_enabled MBEDTLS_DEBUG_C
175requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100176requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
177 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
178run_test "TLS 1.3 m->m: resumption with servername" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100179 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key \
180 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 +0100181 "$P_CLI server_name=localhost reco_mode=1 reconnect=1" \
182 0 \
183 -c "Protocol is TLSv1.3" \
184 -c "Saving session for reuse... ok" \
185 -c "Reconnecting with saved session... ok" \
186 -c "HTTP/1.0 200 OK" \
187 -s "Protocol is TLSv1.3" \
188 -s "key exchange mode: psk" \
189 -s "Select PSK ciphersuite"
190
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200191requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
192requires_config_enabled MBEDTLS_SSL_CLI_C
193requires_config_enabled MBEDTLS_SSL_SRV_C
194requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
195requires_config_enabled MBEDTLS_HAVE_TIME
196requires_config_enabled MBEDTLS_DEBUG_C
197requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100198requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
199 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
200run_test "TLS 1.3 m->m: resumption with ticket max lifetime (7d)" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100201 "$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 +0100202 "$P_CLI reco_mode=1 reconnect=1" \
203 0 \
204 -c "Protocol is TLSv1.3" \
205 -c "Saving session for reuse... ok" \
206 -c "Reconnecting with saved session... ok" \
207 -c "HTTP/1.0 200 OK" \
208 -s "Protocol is TLSv1.3" \
209 -s "key exchange mode: psk" \
210 -s "Select PSK ciphersuite"
211
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200212requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
213requires_config_enabled MBEDTLS_SSL_CLI_C
214requires_config_enabled MBEDTLS_SSL_SRV_C
215requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
216requires_config_enabled MBEDTLS_HAVE_TIME
217requires_config_enabled MBEDTLS_DEBUG_C
218requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100219requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
220 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100221requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
222run_test "TLS 1.3 m->m: resumption with AES-256-GCM-SHA384 only" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100223 "$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 +0100224 "$P_CLI force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 reco_mode=1 reconnect=1" \
225 0 \
226 -c "Protocol is TLSv1.3" \
227 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
228 -c "Saving session for reuse... ok" \
229 -c "Reconnecting with saved session... ok" \
230 -c "HTTP/1.0 200 OK" \
231 -s "Protocol is TLSv1.3" \
232 -s "key exchange mode: psk" \
233 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384"
234
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200235requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
236requires_config_enabled MBEDTLS_SSL_CLI_C
237requires_config_enabled MBEDTLS_SSL_SRV_C
238requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
239requires_config_enabled MBEDTLS_HAVE_TIME
240requires_config_enabled MBEDTLS_SSL_EARLY_DATA
241requires_config_enabled MBEDTLS_DEBUG_C
242requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100243requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
244 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
245run_test "TLS 1.3 m->m: resumption with early data" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100246 "$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 +0100247 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
248 0 \
249 -c "Protocol is TLSv1.3" \
250 -c "Saving session for reuse... ok" \
251 -c "Reconnecting with saved session" \
252 -c "HTTP/1.0 200 OK" \
253 -c "received max_early_data_size" \
254 -c "NewSessionTicket: early_data(42) extension received." \
255 -c "ClientHello: early_data(42) extension exists." \
256 -c "EncryptedExtensions: early_data(42) extension received." \
257 -c "bytes of early data written" \
258 -C "0 bytes of early data written" \
259 -s "Protocol is TLSv1.3" \
260 -s "key exchange mode: psk" \
261 -s "Select PSK ciphersuite" \
262 -s "Sent max_early_data_size" \
263 -s "NewSessionTicket: early_data(42) extension exists." \
264 -s "ClientHello: early_data(42) extension exists." \
265 -s "EncryptedExtensions: early_data(42) extension exists." \
266 -s "early data bytes read"
267
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200268requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
269requires_config_enabled MBEDTLS_SSL_CLI_C
270requires_config_enabled MBEDTLS_SSL_SRV_C
271requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
272requires_config_enabled MBEDTLS_HAVE_TIME
273requires_config_enabled MBEDTLS_SSL_EARLY_DATA
274requires_config_enabled MBEDTLS_DEBUG_C
275requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100276requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
277 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
278requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
279run_test "TLS 1.3 m->m: resumption with early data, AES-256-GCM-SHA384 only" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100280 "$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 +0100281 "$P_CLI debug_level=3 force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 early_data=1 reco_mode=1 reconnect=1" \
282 0 \
283 -c "Protocol is TLSv1.3" \
284 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
285 -c "Saving session for reuse... ok" \
286 -c "Reconnecting with saved session" \
287 -c "HTTP/1.0 200 OK" \
288 -c "received max_early_data_size" \
289 -c "NewSessionTicket: early_data(42) extension received." \
290 -c "ClientHello: early_data(42) extension exists." \
291 -c "EncryptedExtensions: early_data(42) extension received." \
292 -c "bytes of early data written" \
293 -C "0 bytes of early data written" \
294 -s "Protocol is TLSv1.3" \
295 -s "key exchange mode: psk" \
296 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384" \
297 -s "Sent max_early_data_size" \
298 -s "NewSessionTicket: early_data(42) extension exists." \
299 -s "ClientHello: early_data(42) extension exists." \
300 -s "EncryptedExtensions: early_data(42) extension exists." \
301 -s "early data bytes read"
302
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200303requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
304requires_config_enabled MBEDTLS_SSL_CLI_C
305requires_config_enabled MBEDTLS_SSL_SRV_C
306requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
307requires_config_enabled MBEDTLS_HAVE_TIME
308requires_config_enabled MBEDTLS_SSL_EARLY_DATA
309requires_config_enabled MBEDTLS_DEBUG_C
310requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100311requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
312 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
313run_test "TLS 1.3 m->m: resumption, early data cli-enabled/srv-default" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100314 "$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 +0100315 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
316 0 \
317 -c "Protocol is TLSv1.3" \
318 -c "Saving session for reuse... ok" \
319 -c "Reconnecting with saved session" \
320 -c "HTTP/1.0 200 OK" \
321 -C "received max_early_data_size" \
322 -C "NewSessionTicket: early_data(42) extension received." \
323 -C "ClientHello: early_data(42) extension exists." \
324 -C "EncryptedExtensions: early_data(42) extension received." \
325 -c "0 bytes of early data written" \
326 -s "Protocol is TLSv1.3" \
327 -s "key exchange mode: psk" \
328 -s "Select PSK ciphersuite" \
329 -S "Sent max_early_data_size" \
330 -S "NewSessionTicket: early_data(42) extension exists." \
331 -S "ClientHello: early_data(42) extension exists." \
332 -S "EncryptedExtensions: early_data(42) extension exists." \
333 -S "early data bytes read"
334
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200335requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
336requires_config_enabled MBEDTLS_SSL_CLI_C
337requires_config_enabled MBEDTLS_SSL_SRV_C
338requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
339requires_config_enabled MBEDTLS_HAVE_TIME
340requires_config_enabled MBEDTLS_SSL_EARLY_DATA
341requires_config_enabled MBEDTLS_DEBUG_C
342requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100343requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
344 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
345run_test "TLS 1.3 m->m: resumption, early data cli-enabled/srv-disabled" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100346 "$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 +0100347 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
348 0 \
349 -c "Protocol is TLSv1.3" \
350 -c "Saving session for reuse... ok" \
351 -c "Reconnecting with saved session" \
352 -c "HTTP/1.0 200 OK" \
353 -C "received max_early_data_size" \
354 -C "NewSessionTicket: early_data(42) extension received." \
355 -C "ClientHello: early_data(42) extension exists." \
356 -C "EncryptedExtensions: early_data(42) extension received." \
357 -c "0 bytes of early data written" \
358 -s "Protocol is TLSv1.3" \
359 -s "key exchange mode: psk" \
360 -s "Select PSK ciphersuite" \
361 -S "Sent max_early_data_size" \
362 -S "NewSessionTicket: early_data(42) extension exists." \
363 -S "ClientHello: early_data(42) extension exists." \
364 -S "EncryptedExtensions: early_data(42) extension exists." \
365 -S "early data bytes read"
366
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200367requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
368requires_config_enabled MBEDTLS_SSL_CLI_C
369requires_config_enabled MBEDTLS_SSL_SRV_C
370requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
371requires_config_enabled MBEDTLS_HAVE_TIME
372requires_config_enabled MBEDTLS_SSL_EARLY_DATA
373requires_config_enabled MBEDTLS_DEBUG_C
374requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100375requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
376 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
377run_test "TLS 1.3 m->m: resumption, early data cli-default/srv-enabled" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100378 "$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 +0100379 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
380 0 \
381 -c "Protocol is TLSv1.3" \
382 -c "Saving session for reuse... ok" \
383 -c "Reconnecting with saved session" \
384 -c "HTTP/1.0 200 OK" \
385 -c "received max_early_data_size" \
386 -c "NewSessionTicket: early_data(42) extension received." \
387 -C "ClientHello: early_data(42) extension exists." \
388 -C "EncryptedExtensions: early_data(42) extension received." \
389 -C "bytes of early data written" \
390 -s "Protocol is TLSv1.3" \
391 -s "key exchange mode: psk" \
392 -s "Select PSK ciphersuite" \
393 -s "Sent max_early_data_size" \
394 -s "NewSessionTicket: early_data(42) extension exists." \
395 -S "ClientHello: early_data(42) extension exists." \
396 -S "EncryptedExtensions: early_data(42) extension exists." \
397 -S "early data bytes read"
398
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200399requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
400requires_config_enabled MBEDTLS_SSL_CLI_C
401requires_config_enabled MBEDTLS_SSL_SRV_C
402requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
403requires_config_enabled MBEDTLS_HAVE_TIME
404requires_config_enabled MBEDTLS_SSL_EARLY_DATA
405requires_config_enabled MBEDTLS_DEBUG_C
406requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100407requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
408 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
409run_test "TLS 1.3 m->m: resumption, early data cli-disabled/srv-enabled" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100410 "$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 +0100411 "$P_CLI debug_level=3 early_data=0 reco_mode=1 reconnect=1" \
412 0 \
413 -c "Protocol is TLSv1.3" \
414 -c "Saving session for reuse... ok" \
415 -c "Reconnecting with saved session" \
416 -c "HTTP/1.0 200 OK" \
417 -c "received max_early_data_size" \
418 -c "NewSessionTicket: early_data(42) extension received." \
419 -C "ClientHello: early_data(42) extension exists." \
420 -C "EncryptedExtensions: early_data(42) extension received." \
421 -C "bytes of early data written" \
422 -s "Protocol is TLSv1.3" \
423 -s "key exchange mode: psk" \
424 -s "Select PSK ciphersuite" \
425 -s "Sent max_early_data_size" \
426 -s "NewSessionTicket: early_data(42) extension exists." \
427 -S "ClientHello: early_data(42) extension exists." \
428 -S "EncryptedExtensions: early_data(42) extension exists." \
429 -S "early data bytes read"
430
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200431requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
432requires_config_enabled MBEDTLS_SSL_CLI_C
433requires_config_enabled MBEDTLS_SSL_SRV_C
434requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
435requires_config_enabled MBEDTLS_HAVE_TIME
436requires_config_enabled MBEDTLS_DEBUG_C
437requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondd2dc152024-03-15 10:08:32 +0100438requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
439 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100440run_test "TLS 1.3 m->m: resumption fails, ticket lifetime too long (7d + 1s)" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100441 "$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 +0100442 "$P_CLI reco_mode=1 reconnect=1" \
443 1 \
444 -c "Protocol is TLSv1.3" \
445 -C "Saving session for reuse... ok" \
446 -c "Reconnecting with saved session... failed" \
447 -S "Protocol is TLSv1.3" \
448 -S "key exchange mode: psk" \
449 -S "Select PSK ciphersuite" \
450 -s "Ticket lifetime (604801) is greater than 7 days."
451
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200452requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
453requires_config_enabled MBEDTLS_SSL_CLI_C
454requires_config_enabled MBEDTLS_SSL_SRV_C
455requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
456requires_config_enabled MBEDTLS_HAVE_TIME
457requires_config_enabled MBEDTLS_DEBUG_C
458requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100459requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
460 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
461run_test "TLS 1.3 m->m: resumption fails, ticket lifetime=0" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100462 "$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 +0100463 "$P_CLI debug_level=2 reco_mode=1 reconnect=1" \
464 1 \
465 -c "Protocol is TLSv1.3" \
466 -C "Saving session for reuse... ok" \
467 -c "Discard new session ticket" \
468 -c "Reconnecting with saved session... failed" \
469 -s "Protocol is TLSv1.3" \
470 -S "key exchange mode: psk" \
471 -S "Select PSK ciphersuite"
472
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200473requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
474requires_config_enabled MBEDTLS_SSL_CLI_C
475requires_config_enabled MBEDTLS_SSL_SRV_C
476requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
477requires_config_enabled MBEDTLS_HAVE_TIME
478requires_config_enabled MBEDTLS_DEBUG_C
479requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100480requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
481 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
482run_test "TLS 1.3 m->m: resumption fails, servername check failed" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100483 "$P_SRV debug_level=2 crt_file=../framework/data_files/server5.crt key_file=../framework/data_files/server5.key \
484 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 +0100485 "$P_CLI debug_level=4 server_name=localhost reco_server_name=remote reco_mode=1 reconnect=1" \
486 1 \
487 -c "Protocol is TLSv1.3" \
488 -c "Saving session for reuse... ok" \
489 -c "Reconnecting with saved session" \
490 -c "Hostname mismatch the session ticket, disable session resumption." \
491 -s "Protocol is TLSv1.3" \
492 -S "key exchange mode: psk" \
493 -S "Select PSK ciphersuite"
494
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200495requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
496requires_config_enabled MBEDTLS_SSL_CLI_C
497requires_config_enabled MBEDTLS_SSL_SRV_C
498requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
499requires_config_enabled MBEDTLS_HAVE_TIME
500requires_config_enabled MBEDTLS_DEBUG_C
501requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100502requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
503 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
504run_test "TLS 1.3 m->m: resumption fails, ticket auth failed." \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100505 "$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 +0100506 "$P_CLI reco_mode=1 reconnect=1" \
507 0 \
508 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800509 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100510 -s "Protocol is TLSv1.3" \
511 -c "Saving session for reuse... ok" \
512 -c "Reconnecting with saved session" \
513 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800514 -s "ticket is not authentic" \
515 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800516 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800517 -S "Ticket age exceeds limitation" \
518 -S "Ticket age outside tolerance window"
519
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200520requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
521requires_config_enabled MBEDTLS_SSL_CLI_C
522requires_config_enabled MBEDTLS_SSL_SRV_C
523requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
524requires_config_enabled MBEDTLS_HAVE_TIME
525requires_config_enabled MBEDTLS_DEBUG_C
526requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100527requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100528 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100529run_test "TLS 1.3 m->m: resumption fails, ticket expired." \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100530 "$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 +0100531 "$P_CLI reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800532 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100533 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800534 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100535 -s "Protocol is TLSv1.3" \
536 -c "Saving session for reuse... ok" \
537 -c "Reconnecting with saved session" \
538 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800539 -S "ticket is not authentic" \
540 -s "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800541 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800542 -S "Ticket age exceeds limitation" \
543 -S "Ticket age outside tolerance window"
544
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200545requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
546requires_config_enabled MBEDTLS_SSL_CLI_C
547requires_config_enabled MBEDTLS_SSL_SRV_C
548requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
549requires_config_enabled MBEDTLS_HAVE_TIME
550requires_config_enabled MBEDTLS_DEBUG_C
551requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100552requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100553 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100554run_test "TLS 1.3 m->m: resumption fails, invalid creation time." \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100555 "$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 +0800556 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
557 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100558 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800559 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100560 -s "Protocol is TLSv1.3" \
561 -c "Saving session for reuse... ok" \
562 -c "Reconnecting with saved session" \
563 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800564 -S "ticket is not authentic" \
565 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800566 -s "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800567 -S "Ticket age exceeds limitation" \
568 -S "Ticket age outside tolerance window"
569
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200570requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
571requires_config_enabled MBEDTLS_SSL_CLI_C
572requires_config_enabled MBEDTLS_SSL_SRV_C
573requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
574requires_config_enabled MBEDTLS_HAVE_TIME
575requires_config_enabled MBEDTLS_DEBUG_C
576requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100577requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100578 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100579run_test "TLS 1.3 m->m: resumption fails, ticket expired, too old" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100580 "$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 +0800581 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
582 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100583 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800584 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100585 -s "Protocol is TLSv1.3" \
586 -c "Saving session for reuse... ok" \
587 -c "Reconnecting with saved session" \
588 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800589 -S "ticket is not authentic" \
590 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800591 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800592 -s "Ticket age exceeds limitation" \
593 -S "Ticket age outside tolerance window"
594
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200595requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
596requires_config_enabled MBEDTLS_SSL_CLI_C
597requires_config_enabled MBEDTLS_SSL_SRV_C
598requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
599requires_config_enabled MBEDTLS_HAVE_TIME
600requires_config_enabled MBEDTLS_DEBUG_C
601requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100602requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100603 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100604run_test "TLS 1.3 m->m: resumption fails, age outside tolerance window, too young" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100605 "$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 +0800606 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
607 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100608 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800609 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100610 -s "Protocol is TLSv1.3" \
611 -c "Saving session for reuse... ok" \
612 -c "Reconnecting with saved session" \
613 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800614 -S "ticket is not authentic" \
615 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800616 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800617 -S "Ticket age exceeds limitation" \
618 -s "Ticket age outside tolerance window"
619
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200620requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
621requires_config_enabled MBEDTLS_SSL_CLI_C
622requires_config_enabled MBEDTLS_SSL_SRV_C
623requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
624requires_config_enabled MBEDTLS_HAVE_TIME
625requires_config_enabled MBEDTLS_DEBUG_C
626requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100627requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf5b47062022-12-15 13:46:23 +0100628 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100629run_test "TLS 1.3 m->m: resumption fails, age outside tolerance window, too old" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100630 "$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 +0800631 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
632 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100633 -c "Protocol is TLSv1.3" \
Jerry Yu616ba752022-11-08 21:49:47 +0800634 -s "key exchange mode: ephemeral" \
Ronald Crone7398922024-03-10 12:11:02 +0100635 -s "Protocol is TLSv1.3" \
636 -c "Saving session for reuse... ok" \
637 -c "Reconnecting with saved session" \
638 -S "key exchange mode: psk" \
Jerry Yu616ba752022-11-08 21:49:47 +0800639 -S "ticket is not authentic" \
640 -S "ticket is expired" \
Jerry Yu60e99722023-11-20 09:55:24 +0800641 -S "Invalid ticket creation time" \
Jerry Yu616ba752022-11-08 21:49:47 +0800642 -S "Ticket age exceeds limitation" \
643 -s "Ticket age outside tolerance window"
644
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200645requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
646requires_config_enabled MBEDTLS_SSL_CLI_C
647requires_config_enabled MBEDTLS_SSL_SRV_C
648requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
649requires_config_enabled MBEDTLS_HAVE_TIME
650requires_config_enabled MBEDTLS_DEBUG_C
651requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
652requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100653run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk/none" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100654 "$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 +0100655 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
656 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100657 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100658 -s "key exchange mode: ephemeral" \
659 -S "key exchange mode: psk_ephemeral" \
660 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100661 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100662 -s "No suitable PSK key exchange mode" \
663 -s "No usable PSK or ticket"
Jerry Yue5991322022-11-07 14:03:44 +0800664
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200665requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
666requires_config_enabled MBEDTLS_SSL_CLI_C
667requires_config_enabled MBEDTLS_SSL_SRV_C
668requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
669requires_config_enabled MBEDTLS_HAVE_TIME
670requires_config_enabled MBEDTLS_DEBUG_C
671requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
672requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100673run_test "TLS 1.3 m->m: ephemeral over psk resumption, cli/tkt kex modes psk/psk" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100674 "$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 +0100675 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
676 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100677 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100678 -s "key exchange mode: ephemeral" \
679 -S "key exchange mode: psk_ephemeral" \
680 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100681 -s "found matched identity" \
682 -S "No suitable PSK key exchange mode" \
683 -S "No usable PSK or ticket"
684
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200685requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
686requires_config_enabled MBEDTLS_SSL_CLI_C
687requires_config_enabled MBEDTLS_SSL_SRV_C
688requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
689requires_config_enabled MBEDTLS_HAVE_TIME
690requires_config_enabled MBEDTLS_DEBUG_C
691requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
692requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100693run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk/psk_ephemeral" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100694 "$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 +0100695 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
696 0 \
697 -c "Protocol is TLSv1.3" \
698 -s "key exchange mode: ephemeral" \
699 -S "key exchange mode: psk_ephemeral" \
700 -S "key exchange mode: psk$" \
701 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100702 -s "No suitable PSK key exchange mode" \
703 -s "No usable PSK or ticket"
704
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200705requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
706requires_config_enabled MBEDTLS_SSL_CLI_C
707requires_config_enabled MBEDTLS_SSL_SRV_C
708requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
709requires_config_enabled MBEDTLS_HAVE_TIME
710requires_config_enabled MBEDTLS_DEBUG_C
711requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
712requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100713run_test "TLS 1.3 m->m: ephemeral over psk resumption, cli/tkt kex modes psk/psk_all" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100714 "$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 +0100715 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
716 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100717 -c "Protocol is TLSv1.3" \
718 -s "key exchange mode: ephemeral" \
719 -S "key exchange mode: psk_ephemeral" \
720 -S "key exchange mode: psk$" \
721 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100722 -S "No suitable PSK key exchange mode" \
Ronald Crone7398922024-03-10 12:11:02 +0100723 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100724
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200725requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
726requires_config_enabled MBEDTLS_SSL_CLI_C
727requires_config_enabled MBEDTLS_SSL_SRV_C
728requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
729requires_config_enabled MBEDTLS_HAVE_TIME
730requires_config_enabled MBEDTLS_DEBUG_C
731requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
732requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100733run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk_ephemeral/none" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100734 "$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 +0100735 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
736 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100737 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100738 -s "key exchange mode: ephemeral" \
739 -S "key exchange mode: psk_ephemeral" \
740 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100741 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100742 -s "No suitable PSK key exchange mode" \
743 -s "No usable PSK or ticket"
Jerry Yue5991322022-11-07 14:03:44 +0800744
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200745requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
746requires_config_enabled MBEDTLS_SSL_CLI_C
747requires_config_enabled MBEDTLS_SSL_SRV_C
748requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
749requires_config_enabled MBEDTLS_HAVE_TIME
750requires_config_enabled MBEDTLS_DEBUG_C
751requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
752requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100753run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk_ephemeral/psk" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100754 "$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 +0100755 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
756 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100757 -c "Protocol is TLSv1.3" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100758 -s "key exchange mode: ephemeral" \
759 -S "key exchange mode: psk_ephemeral" \
760 -S "key exchange mode: psk$" \
Ronald Crone7398922024-03-10 12:11:02 +0100761 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100762 -s "No suitable PSK key exchange mode" \
763 -s "No usable PSK or ticket"
764
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200765requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
766requires_config_enabled MBEDTLS_SSL_CLI_C
767requires_config_enabled MBEDTLS_SSL_SRV_C
768requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
769requires_config_enabled MBEDTLS_HAVE_TIME
770requires_config_enabled MBEDTLS_DEBUG_C
771requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
772requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100773run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_ephemeral/psk_ephemeral" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100774 "$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 +0100775 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
776 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100777 -c "Protocol is TLSv1.3" \
778 -s "key exchange mode: ephemeral" \
779 -s "key exchange mode: psk_ephemeral" \
780 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100781 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100782 -S "No suitable PSK key exchange mode" \
783 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100784
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200785requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
786requires_config_enabled MBEDTLS_SSL_CLI_C
787requires_config_enabled MBEDTLS_SSL_SRV_C
788requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
789requires_config_enabled MBEDTLS_HAVE_TIME
790requires_config_enabled MBEDTLS_DEBUG_C
791requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
792requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100793run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_ephemeral/psk_all" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100794 "$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 +0100795 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
796 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100797 -c "Protocol is TLSv1.3" \
798 -s "key exchange mode: ephemeral" \
799 -s "key exchange mode: psk_ephemeral" \
800 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100801 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100802 -S "No suitable PSK key exchange mode" \
803 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100804
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200805requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
806requires_config_enabled MBEDTLS_SSL_CLI_C
807requires_config_enabled MBEDTLS_SSL_SRV_C
808requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
809requires_config_enabled MBEDTLS_HAVE_TIME
810requires_config_enabled MBEDTLS_DEBUG_C
811requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
812requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
813requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100814run_test "TLS 1.3 m->m: resumption fails, cli/tkt kex modes psk_all/none" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100815 "$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 +0100816 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
817 0 \
818 -c "Pre-configured PSK number = 1" \
819 -S "sent selected_identity:" \
820 -s "key exchange mode: ephemeral" \
821 -S "key exchange mode: psk_ephemeral" \
822 -S "key exchange mode: psk$" \
823 -s "No suitable PSK key exchange mode" \
824 -s "No usable PSK or ticket"
825
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200826requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
827requires_config_enabled MBEDTLS_SSL_CLI_C
828requires_config_enabled MBEDTLS_SSL_SRV_C
829requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
830requires_config_enabled MBEDTLS_HAVE_TIME
831requires_config_enabled MBEDTLS_DEBUG_C
832requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
833requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
834requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100835run_test "TLS 1.3 m->m: ephemeral over psk resumption, cli/tkt kex modes psk_all/psk" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100836 "$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 +0100837 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
838 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100839 -c "Protocol is TLSv1.3" \
840 -s "key exchange mode: ephemeral" \
841 -S "key exchange mode: psk_ephemeral" \
842 -S "key exchange mode: psk$" \
843 -s "found matched identity" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100844 -S "No suitable PSK key exchange mode" \
Ronald Crone7398922024-03-10 12:11:02 +0100845 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100846
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200847requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
848requires_config_enabled MBEDTLS_SSL_CLI_C
849requires_config_enabled MBEDTLS_SSL_SRV_C
850requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
851requires_config_enabled MBEDTLS_HAVE_TIME
852requires_config_enabled MBEDTLS_DEBUG_C
853requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
854requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
855requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100856run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_all/psk_ephemeral" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100857 "$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 +0100858 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
859 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100860 -c "Protocol is TLSv1.3" \
861 -s "key exchange mode: ephemeral" \
862 -s "key exchange mode: psk_ephemeral" \
863 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100864 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100865 -S "No suitable PSK key exchange mode" \
866 -S "No usable PSK or ticket"
Ronald Cron3cf41452024-03-10 10:44:14 +0100867
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200868requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
869requires_config_enabled MBEDTLS_SSL_CLI_C
870requires_config_enabled MBEDTLS_SSL_SRV_C
871requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
872requires_config_enabled MBEDTLS_HAVE_TIME
873requires_config_enabled MBEDTLS_DEBUG_C
874requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
875requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
876requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Crone7398922024-03-10 12:11:02 +0100877run_test "TLS 1.3 m->m: resumption, cli/tkt kex modes psk_all/psk_all" \
David Horstmanndcf18dd2024-06-11 17:44:00 +0100878 "$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 +0100879 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
880 0 \
Ronald Crone7398922024-03-10 12:11:02 +0100881 -c "Protocol is TLSv1.3" \
882 -s "key exchange mode: ephemeral" \
883 -s "key exchange mode: psk_ephemeral" \
884 -S "key exchange mode: psk$" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100885 -s "found matched identity" \
Ronald Crone7398922024-03-10 12:11:02 +0100886 -S "No suitable PSK key exchange mode" \
887 -S "No usable PSK or ticket"
Jerry Yue5991322022-11-07 14:03:44 +0800888
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100889requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200890requires_config_enabled MBEDTLS_SSL_CLI_C
891requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
892requires_config_enabled MBEDTLS_HAVE_TIME
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200893requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron00fa13b2024-03-05 17:45:44 +0100894requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
895 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
896run_test "TLS 1.3 m->O: resumption" \
897 "$O_NEXT_SRV -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
898 "$P_CLI reco_mode=1 reconnect=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100899 0 \
900 -c "Protocol is TLSv1.3" \
Ronald Cron00fa13b2024-03-05 17:45:44 +0100901 -c "Saving session for reuse... ok" \
902 -c "Reconnecting with saved session... ok" \
903 -c "HTTP/1.0 200 ok"
904
Ronald Cronceae4f82024-03-26 11:17:10 +0100905requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200906requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200907requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cronceae4f82024-03-26 11:17:10 +0100908requires_config_disabled MBEDTLS_SSL_SESSION_TICKETS
909run_test "TLS 1.3 m->O: resumption fails, no ticket support" \
910 "$O_NEXT_SRV -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
911 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
912 1 \
913 -c "Protocol is TLSv1.3" \
914 -C "Saving session for reuse... ok" \
915 -C "Reconnecting with saved session... ok" \
916 -c "Ignore NewSessionTicket, not supported."
917
Ronald Cron00fa13b2024-03-05 17:45:44 +0100918# No early data m->O tests for the time being. The option -early_data is needed
919# to enable early data on OpenSSL server and it is not compatible with the
920# -www option we usually use for testing with OpenSSL server (see
921# O_NEXT_SRV_EARLY_DATA definition). In this configuration when running the
922# ephemeral then ticket based scenario we use for early data testing the first
923# handshake fails. The following skipped test is here to illustrate the kind
924# of testing we would like to do.
Gilles Peskinede2316b2024-09-17 18:32:05 +0200925# https://github.com/Mbed-TLS/mbedtls/issues/9582
Ronald Cron00fa13b2024-03-05 17:45:44 +0100926skip_next_test
927requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200928requires_config_enabled MBEDTLS_SSL_CLI_C
929requires_config_enabled MBEDTLS_DEBUG_C
930requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200931requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron00fa13b2024-03-05 17:45:44 +0100932requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
933 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
934run_test "TLS 1.3 m->O: resumption with early data" \
935 "$O_NEXT_SRV_EARLY_DATA -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
936 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
937 0 \
938 -c "Protocol is TLSv1.3" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100939 -c "Saving session for reuse... ok" \
940 -c "Reconnecting with saved session" \
Ronald Cron00fa13b2024-03-05 17:45:44 +0100941 -c "HTTP/1.0 200 OK" \
942 -c "received max_early_data_size: 16384" \
943 -c "NewSessionTicket: early_data(42) extension received." \
944 -c "ClientHello: early_data(42) extension exists." \
945 -c "EncryptedExtensions: early_data(42) extension received." \
946 -c "bytes of early data written" \
947 -s "decrypted early data with length:"
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100948
949requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200950requires_config_enabled MBEDTLS_SSL_CLI_C
951requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
952requires_config_enabled MBEDTLS_HAVE_TIME
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200953requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +0100954requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
955 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
956run_test "TLS 1.3 m->G: resumption" \
957 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
958 "$P_CLI reco_mode=1 reconnect=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100959 0 \
960 -c "Protocol is TLSv1.3" \
Ronald Cron05210082024-03-05 16:34:51 +0100961 -c "Saving session for reuse... ok" \
962 -c "Reconnecting with saved session... ok" \
963 -c "HTTP/1.0 200 OK"
964
965requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200966requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200967requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cronceae4f82024-03-26 11:17:10 +0100968requires_config_disabled MBEDTLS_SSL_SESSION_TICKETS
969run_test "TLS 1.3 m->G: resumption fails, no ticket support" \
970 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
971 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
972 1 \
973 -c "Protocol is TLSv1.3" \
974 -C "Saving session for reuse... ok" \
975 -C "Reconnecting with saved session... ok" \
976 -c "Ignore NewSessionTicket, not supported."
977
978requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200979requires_config_enabled MBEDTLS_SSL_CLI_C
980requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
981requires_config_enabled MBEDTLS_HAVE_TIME
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200982requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +0100983requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
984 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
985requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
986run_test "TLS 1.3 m->G: resumption with AES-256-GCM-SHA384 only" \
987 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
988 "$P_CLI force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 reco_mode=1 reconnect=1" \
989 0 \
990 -c "Protocol is TLSv1.3" \
991 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
992 -c "Saving session for reuse... ok" \
993 -c "Reconnecting with saved session... ok" \
994 -c "HTTP/1.0 200 OK"
995
996requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +0200997requires_config_enabled MBEDTLS_SSL_CLI_C
998requires_config_enabled MBEDTLS_DEBUG_C
999requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001000requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001001requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1002 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1003run_test "TLS 1.3 m->G: resumption with early data" \
1004 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1005 --earlydata --maxearlydata 16384" \
1006 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
1007 0 \
1008 -c "Protocol is TLSv1.3" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001009 -c "Saving session for reuse... ok" \
1010 -c "Reconnecting with saved session" \
1011 -c "HTTP/1.0 200 OK" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001012 -c "received max_early_data_size: 16384" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001013 -c "NewSessionTicket: early_data(42) extension received." \
1014 -c "ClientHello: early_data(42) extension exists." \
1015 -c "EncryptedExtensions: early_data(42) extension received." \
Ronald Cron05210082024-03-05 16:34:51 +01001016 -c "bytes of early data written" \
1017 -s "decrypted early data with length:"
Ronald Cronc8d604d2024-03-05 15:05:47 +01001018
1019requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001020requires_config_enabled MBEDTLS_SSL_CLI_C
1021requires_config_enabled MBEDTLS_DEBUG_C
1022requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001023requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cronc8d604d2024-03-05 15:05:47 +01001024requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1025 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001026requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
1027run_test "TLS 1.3 m->G: resumption with early data, AES-256-GCM-SHA384 only" \
1028 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1029 --earlydata --maxearlydata 16384" \
1030 "$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 +01001031 0 \
Ronald Cron05210082024-03-05 16:34:51 +01001032 -c "Protocol is TLSv1.3" \
1033 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
1034 -c "Saving session for reuse... ok" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001035 -c "Reconnecting with saved session" \
Ronald Cron05210082024-03-05 16:34:51 +01001036 -c "HTTP/1.0 200 OK" \
1037 -c "received max_early_data_size: 16384" \
1038 -c "NewSessionTicket: early_data(42) extension received." \
1039 -c "ClientHello: early_data(42) extension exists." \
1040 -c "EncryptedExtensions: early_data(42) extension received." \
1041 -c "bytes of early data written" \
1042 -s "decrypted early data with length:"
1043
1044requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001045requires_config_enabled MBEDTLS_SSL_CLI_C
1046requires_config_enabled MBEDTLS_DEBUG_C
1047requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001048requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001049requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1050 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1051run_test "TLS 1.3 m->G: resumption, early data cli-enabled/srv-disabled" \
1052 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:+ECDHE-PSK:+PSK --disable-client-cert" \
1053 "$P_CLI debug_level=3 early_data=1 reco_mode=1 reconnect=1" \
1054 0 \
1055 -c "Protocol is TLSv1.3" \
1056 -c "Saving session for reuse... ok" \
1057 -c "Reconnecting with saved session" \
1058 -c "HTTP/1.0 200 OK" \
1059 -C "received max_early_data_size: 16384" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001060 -C "NewSessionTicket: early_data(42) extension received." \
Ronald Cron05210082024-03-05 16:34:51 +01001061
1062requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001063requires_config_enabled MBEDTLS_SSL_CLI_C
1064requires_config_enabled MBEDTLS_DEBUG_C
1065requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001066requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001067requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1068 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1069run_test "TLS 1.3 m->G: resumption, early data cli-default/srv-enabled" \
1070 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1071 --earlydata --maxearlydata 16384" \
1072 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
1073 0 \
1074 -c "Protocol is TLSv1.3" \
1075 -c "Saving session for reuse... ok" \
1076 -c "Reconnecting with saved session" \
1077 -c "HTTP/1.0 200 OK" \
1078 -c "received max_early_data_size: 16384" \
1079 -c "NewSessionTicket: early_data(42) extension received." \
1080 -C "ClientHello: early_data(42) extension exists." \
1081
1082requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001083requires_config_enabled MBEDTLS_SSL_CLI_C
1084requires_config_enabled MBEDTLS_DEBUG_C
1085requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001086requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001087requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1088 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1089run_test "TLS 1.3 m->G: resumption, early data cli-disabled/srv-enabled" \
1090 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1091 --earlydata --maxearlydata 16384" \
1092 "$P_CLI debug_level=3 early_data=0 reco_mode=1 reconnect=1" \
1093 0 \
1094 -c "Protocol is TLSv1.3" \
1095 -c "Saving session for reuse... ok" \
1096 -c "Reconnecting with saved session" \
1097 -c "HTTP/1.0 200 OK" \
1098 -c "received max_early_data_size: 16384" \
1099 -c "NewSessionTicket: early_data(42) extension received." \
1100 -C "ClientHello: early_data(42) extension exists." \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001101
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001102requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001103requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1104requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001105requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron820199a2024-03-10 10:39:26 +01001106requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001107 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1108# https://github.com/openssl/openssl/issues/10714
1109# Until now, OpenSSL client does not support reconnect.
1110skip_next_test
Ronald Cron820199a2024-03-10 10:39:26 +01001111run_test "TLS 1.3 O->m: resumption" \
1112 "$P_SRV debug_level=2 tickets=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001113 "$O_NEXT_CLI -msg -debug -tls1_3 -reconnect" \
1114 0 \
Ronald Cron820199a2024-03-10 10:39:26 +01001115 -s "Protocol is TLSv1.3" \
1116 -s "key exchange mode: psk" \
1117 -s "Select PSK ciphersuite"
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001118
1119requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001120requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1121requires_config_enabled MBEDTLS_HAVE_TIME
1122requires_config_enabled MBEDTLS_SSL_SRV_C
1123requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001124requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +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
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001127run_test "TLS 1.3 G->m: resumption" \
1128 "$P_SRV debug_level=2 tickets=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001129 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r" \
1130 0 \
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001131 -s "Protocol is TLSv1.3" \
1132 -s "key exchange mode: psk" \
1133 -s "Select PSK ciphersuite"
1134
1135requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001136requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1137requires_config_enabled MBEDTLS_HAVE_TIME
1138requires_config_enabled MBEDTLS_SSL_SRV_C
1139requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001140requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001141requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1142 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1143requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
1144# Test the session resumption when the cipher suite for the original session is
1145# TLS1-3-AES-256-GCM-SHA384. In that case, the PSK is 384 bits long and not
1146# 256 bits long as with all the other TLS 1.3 cipher suites.
1147run_test "TLS 1.3 G->m: resumption with AES-256-GCM-SHA384 only" \
1148 "$P_SRV debug_level=2 tickets=1" \
1149 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM -V -r" \
1150 0 \
1151 -s "Protocol is TLSv1.3" \
1152 -s "key exchange mode: psk" \
1153 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384"
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001154
Ronald Cron854df132024-03-05 17:50:50 +01001155EARLY_DATA_INPUT_LEN_BLOCKS=$(( ( $( cat $EARLY_DATA_INPUT | wc -c ) + 31 ) / 32 ))
1156EARLY_DATA_INPUT_LEN=$(( $EARLY_DATA_INPUT_LEN_BLOCKS * 32 ))
1157
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001158requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001159requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1160requires_config_enabled MBEDTLS_HAVE_TIME
1161requires_config_enabled MBEDTLS_SSL_SRV_C
1162requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1163requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001164requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron854df132024-03-05 17:50:50 +01001165requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1166 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001167run_test "TLS 1.3 G->m: resumption with early data" \
1168 "$P_SRV debug_level=4 tickets=1 early_data=1 max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1169 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1170 --earlydata $EARLY_DATA_INPUT" \
Ronald Cron854df132024-03-05 17:50:50 +01001171 0 \
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001172 -s "Protocol is TLSv1.3" \
1173 -s "key exchange mode: psk" \
1174 -s "Select PSK ciphersuite" \
1175 -s "Sent max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1176 -s "NewSessionTicket: early_data(42) extension exists." \
1177 -s "ClientHello: early_data(42) extension exists." \
1178 -s "EncryptedExtensions: early_data(42) extension exists." \
1179 -s "$( head -1 $EARLY_DATA_INPUT )" \
1180 -s "$( tail -1 $EARLY_DATA_INPUT )" \
1181 -s "200 early data bytes read" \
Ronald Cron854df132024-03-05 17:50:50 +01001182 -s "106 early data bytes read"
1183
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001184requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001185requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1186requires_config_enabled MBEDTLS_HAVE_TIME
1187requires_config_enabled MBEDTLS_SSL_SRV_C
1188requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1189requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001190requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001191requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001192 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001193requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001194run_test "TLS 1.3 G->m: resumption with early data, AES-256-GCM-SHA384 only" \
1195 "$P_SRV debug_level=4 tickets=1 early_data=1 max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1196 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM -V -r \
1197 --earlydata $EARLY_DATA_INPUT" \
1198 0 \
1199 -s "Protocol is TLSv1.3" \
1200 -s "key exchange mode: psk" \
1201 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384" \
1202 -s "Sent max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1203 -s "NewSessionTicket: early_data(42) extension exists." \
1204 -s "ClientHello: early_data(42) extension exists." \
1205 -s "EncryptedExtensions: early_data(42) extension exists." \
1206 -s "$( head -1 $EARLY_DATA_INPUT )" \
1207 -s "$( tail -1 $EARLY_DATA_INPUT )" \
1208 -s "200 early data bytes read" \
1209 -s "106 early data bytes read"
1210
1211# The Mbed TLS server does not allow early data for the ticket it sends but
1212# the GnuTLS indicates early data anyway when resuming with the ticket and
1213# sends early data. The Mbed TLS server does not expect early data in
1214# association with the ticket thus it eventually fails the resumption
1215# handshake. The GnuTLS client behavior is not compliant here with the TLS 1.3
1216# specification and thus its behavior may change in following versions.
1217requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001218requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1219requires_config_enabled MBEDTLS_HAVE_TIME
1220requires_config_enabled MBEDTLS_SSL_SRV_C
1221requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1222requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001223requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001224requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1225 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1226run_test "TLS 1.3 G->m: resumption, early data cli-enabled/srv-default" \
1227 "$P_SRV debug_level=4 tickets=1" \
1228 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1229 --earlydata $EARLY_DATA_INPUT" \
1230 1 \
1231 -s "Protocol is TLSv1.3" \
1232 -s "key exchange mode: psk" \
1233 -s "Select PSK ciphersuite" \
1234 -S "Sent max_early_data_size" \
1235 -S "NewSessionTicket: early_data(42) extension exists." \
1236 -s "ClientHello: early_data(42) extension exists." \
1237 -s "EarlyData: rejected, feature disabled in server configuration." \
1238 -S "EncryptedExtensions: early_data(42) extension exists." \
1239 -s "EarlyData: deprotect and discard app data records" \
1240 -s "EarlyData: Too much early data received"
1241
1242# The Mbed TLS server does not allow early data for the ticket it sends but
1243# the GnuTLS indicates early data anyway when resuming with the ticket and
1244# sends early data. The Mbed TLS server does not expect early data in
1245# association with the ticket thus it eventually fails the resumption
1246# handshake. The GnuTLS client behavior is not compliant here with the TLS 1.3
1247# specification and thus its behavior may change in following versions.
1248requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001249requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1250requires_config_enabled MBEDTLS_HAVE_TIME
1251requires_config_enabled MBEDTLS_SSL_SRV_C
1252requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1253requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001254requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001255requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1256 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1257run_test "TLS 1.3 G->m: resumption, early data cli-enabled/srv-disabled" \
1258 "$P_SRV debug_level=4 tickets=1 early_data=0" \
1259 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1260 --earlydata $EARLY_DATA_INPUT" \
1261 1 \
1262 -s "Protocol is TLSv1.3" \
1263 -s "key exchange mode: psk" \
1264 -s "Select PSK ciphersuite" \
1265 -S "Sent max_early_data_size" \
1266 -S "NewSessionTicket: early_data(42) extension exists." \
1267 -s "ClientHello: early_data(42) extension exists." \
1268 -s "EarlyData: rejected, feature disabled in server configuration." \
1269 -S "EncryptedExtensions: early_data(42) extension exists." \
1270 -s "EarlyData: deprotect and discard app data records" \
1271 -s "EarlyData: Too much early data received"
1272
1273requires_gnutls_tls1_3
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001274requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1275requires_config_enabled MBEDTLS_HAVE_TIME
1276requires_config_enabled MBEDTLS_SSL_SRV_C
1277requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1278requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001279requires_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-disabled/srv-enabled" \
1283 "$P_SRV debug_level=4 tickets=1 early_data=1" \
1284 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r" \
1285 0 \
1286 -s "Protocol is TLSv1.3" \
1287 -s "key exchange mode: psk" \
1288 -s "Select PSK ciphersuite" \
1289 -s "Sent max_early_data_size" \
1290 -s "NewSessionTicket: early_data(42) extension exists." \
1291 -S "ClientHello: early_data(42) extension exists." \
1292 -S "EncryptedExtensions: early_data(42) extension exists."
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001293
Gilles Peskine7b02c1f2024-09-13 14:15:46 +02001294requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1295requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1296requires_config_enabled MBEDTLS_SSL_CLI_C
1297requires_config_enabled MBEDTLS_SSL_SRV_C
1298requires_config_enabled MBEDTLS_DEBUG_C
1299requires_config_enabled MBEDTLS_HAVE_TIME
1300requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1301requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1f63fe42024-02-23 15:49:12 +01001302run_test "TLS 1.3 m->m: Ephemeral over PSK kex with early data enabled" \
Ronald Cron74191a52024-03-09 17:38:16 +01001303 "$P_SRV force_version=tls13 debug_level=4 early_data=1 max_early_data_size=1024" \
Ronald Crone14770f2024-03-08 08:57:36 +01001304 "$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 +01001305 0 \
1306 -s "key exchange mode: ephemeral" \
1307 -S "key exchange mode: psk" \
1308 -s "found matched identity" \
1309 -s "EarlyData: rejected, not a session resumption" \
1310 -C "EncryptedExtensions: early_data(42) extension exists."