blob: 76cbeec5fa66db6974a37ba35cca03f2ed80c4c0 [file] [log] [blame]
Gilles Peskineab84fe82024-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 Peskine365296a2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +020049 "$P_CLI tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 new_session_tickets=1 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 Peskine365296a2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +020067 "$P_CLI tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 new_session_tickets=1 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 Peskine365296a2024-09-13 14:15:46 +020077requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Gilles Peskine365296a2024-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 Peskine365296a2024-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 Peskine365296a2024-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 Peskine365296a2024-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 Peskine365296a2024-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 Peskine365296a2024-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 Peskine365296a2024-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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200159 "$P_CLI new_session_tickets=1 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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,-,-,-" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200181 "$P_CLI server_name=localhost new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100182 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200202 "$P_CLI new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100203 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200224 "$P_CLI force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100225 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200247 "$P_CLI debug_level=3 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100248 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200281 "$P_CLI debug_level=3 force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100282 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200315 "$P_CLI debug_level=3 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100316 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200347 "$P_CLI debug_level=3 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100348 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200379 "$P_CLI debug_level=3 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100380 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200411 "$P_CLI debug_level=3 early_data=0 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crondd2dc152024-03-15 10:08:32 +0100412 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200442 "$P_CLI new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100443 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200463 "$P_CLI debug_level=2 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100464 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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,-,-,-" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200485 "$P_CLI debug_level=4 server_name=localhost reco_server_name=remote new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100486 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200506 "$P_CLI new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100507 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200531 "$P_CLI new_session_tickets=1 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200556 "$P_CLI debug_level=4 new_session_tickets=1 reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800557 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200581 "$P_CLI debug_level=4 new_session_tickets=1 reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800582 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200606 "$P_CLI debug_level=4 new_session_tickets=1 reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800607 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200631 "$P_CLI debug_level=4 new_session_tickets=1 reco_mode=1 reconnect=1" \
Jerry Yu616ba752022-11-08 21:49:47 +0800632 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200655 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100656 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200675 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100676 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200695 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral new_session_tickets=1 reconnect=1" \
Ronald Crone7398922024-03-10 12:11:02 +0100696 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200715 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100716 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200735 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100736 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200755 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100756 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200775 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100776 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200795 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100796 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200816 "$P_CLI debug_level=4 tls13_kex_modes=all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100817 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200837 "$P_CLI debug_level=4 tls13_kex_modes=all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100838 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200858 "$P_CLI debug_level=4 tls13_kex_modes=all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100859 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 Peskine365296a2024-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 Horstmann9c4dd4e2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200879 "$P_CLI debug_level=4 tls13_kex_modes=all new_session_tickets=1 reconnect=1" \
Ronald Cron3cf41452024-03-10 10:44:14 +0100880 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 Peskine365296a2024-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 Peskine365296a2024-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" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200898 "$P_CLI new_session_tickets=1 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 Cron54a9b112024-03-26 11:17:10 +0100905requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +0200906requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +0200907requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron54a9b112024-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" \
Ronald Cron97dc5832024-08-28 09:34:34 +0200916 -c "Ignoring NewSessionTicket, not supported."
Ronald Cron54a9b112024-03-26 11:17:10 +0100917
Ronald Cron57ad1822024-08-27 19:38:41 +0200918requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +0200919requires_config_enabled MBEDTLS_SSL_CLI_C
920requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gilles Peskine365296a2024-09-13 14:15:46 +0200921requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200922run_test "TLS 1.3 m->O: resumption fails, ticket handling disabled (explicit)" \
Ronald Cron57ad1822024-08-27 19:38:41 +0200923 "$O_NEXT_SRV -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
924 "$P_CLI debug_level=3 new_session_tickets=0 reco_mode=1 reconnect=1" \
925 1 \
926 -c "Protocol is TLSv1.3" \
927 -C "Saving session for reuse... ok" \
928 -C "Reconnecting with saved session... ok" \
Ronald Cron97dc5832024-08-28 09:34:34 +0200929 -c "Ignoring NewSessionTicket, handling disabled."
Ronald Cron57ad1822024-08-27 19:38:41 +0200930
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200931requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +0200932requires_config_enabled MBEDTLS_SSL_CLI_C
933requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gilles Peskine365296a2024-09-13 14:15:46 +0200934requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200935run_test "TLS 1.3 m->O: resumption fails, ticket handling disabled (default)" \
936 "$O_NEXT_SRV -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
937 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
938 1 \
939 -c "Protocol is TLSv1.3" \
940 -C "Saving session for reuse... ok" \
941 -C "Reconnecting with saved session... ok" \
942 -c "Ignoring NewSessionTicket, handling disabled."
943
Ronald Cron00fa13b2024-03-05 17:45:44 +0100944# No early data m->O tests for the time being. The option -early_data is needed
945# to enable early data on OpenSSL server and it is not compatible with the
946# -www option we usually use for testing with OpenSSL server (see
947# O_NEXT_SRV_EARLY_DATA definition). In this configuration when running the
948# ephemeral then ticket based scenario we use for early data testing the first
949# handshake fails. The following skipped test is here to illustrate the kind
950# of testing we would like to do.
Gilles Peskine419a5842024-09-17 18:32:05 +0200951# https://github.com/Mbed-TLS/mbedtls/issues/9582
Ronald Cron00fa13b2024-03-05 17:45:44 +0100952skip_next_test
953requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +0200954requires_config_enabled MBEDTLS_SSL_CLI_C
955requires_config_enabled MBEDTLS_DEBUG_C
956requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine365296a2024-09-13 14:15:46 +0200957requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron00fa13b2024-03-05 17:45:44 +0100958requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
959 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
960run_test "TLS 1.3 m->O: resumption with early data" \
961 "$O_NEXT_SRV_EARLY_DATA -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 1" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200962 "$P_CLI debug_level=3 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cron00fa13b2024-03-05 17:45:44 +0100963 0 \
964 -c "Protocol is TLSv1.3" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100965 -c "Saving session for reuse... ok" \
966 -c "Reconnecting with saved session" \
Ronald Cron00fa13b2024-03-05 17:45:44 +0100967 -c "HTTP/1.0 200 OK" \
968 -c "received max_early_data_size: 16384" \
969 -c "NewSessionTicket: early_data(42) extension received." \
970 -c "ClientHello: early_data(42) extension exists." \
971 -c "EncryptedExtensions: early_data(42) extension received." \
972 -c "bytes of early data written" \
973 -s "decrypted early data with length:"
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100974
975requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +0200976requires_config_enabled MBEDTLS_SSL_CLI_C
977requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
978requires_config_enabled MBEDTLS_HAVE_TIME
Gilles Peskine365296a2024-09-13 14:15:46 +0200979requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +0100980requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
981 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
982run_test "TLS 1.3 m->G: resumption" \
983 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +0200984 "$P_CLI new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +0100985 0 \
986 -c "Protocol is TLSv1.3" \
Ronald Cron05210082024-03-05 16:34:51 +0100987 -c "Saving session for reuse... ok" \
988 -c "Reconnecting with saved session... ok" \
989 -c "HTTP/1.0 200 OK"
990
991requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +0200992requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +0200993requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron54a9b112024-03-26 11:17:10 +0100994requires_config_disabled MBEDTLS_SSL_SESSION_TICKETS
995run_test "TLS 1.3 m->G: resumption fails, no ticket support" \
996 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
997 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
998 1 \
999 -c "Protocol is TLSv1.3" \
1000 -C "Saving session for reuse... ok" \
1001 -C "Reconnecting with saved session... ok" \
Ronald Cron97dc5832024-08-28 09:34:34 +02001002 -c "Ignoring NewSessionTicket, not supported."
Ronald Cron54a9b112024-03-26 11:17:10 +01001003
1004requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001005requires_config_enabled MBEDTLS_SSL_CLI_C
1006requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gilles Peskine365296a2024-09-13 14:15:46 +02001007requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001008run_test "TLS 1.3 m->G: resumption fails, ticket handling disabled (explicit)" \
Ronald Cron57ad1822024-08-27 19:38:41 +02001009 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
1010 "$P_CLI debug_level=3 new_session_tickets=0 reco_mode=1 reconnect=1" \
1011 1 \
1012 -c "Protocol is TLSv1.3" \
1013 -C "Saving session for reuse... ok" \
1014 -C "Reconnecting with saved session... ok" \
Ronald Cron97dc5832024-08-28 09:34:34 +02001015 -c "Ignoring NewSessionTicket, handling disabled."
Ronald Cron57ad1822024-08-27 19:38:41 +02001016
1017requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001018requires_config_enabled MBEDTLS_SSL_CLI_C
1019requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gilles Peskine365296a2024-09-13 14:15:46 +02001020requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001021run_test "TLS 1.3 m->G: resumption fails, ticket handling disabled (default)" \
1022 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
1023 "$P_CLI debug_level=3 reco_mode=1 reconnect=1" \
1024 1 \
1025 -c "Protocol is TLSv1.3" \
1026 -C "Saving session for reuse... ok" \
1027 -C "Reconnecting with saved session... ok" \
1028 -c "Ignoring NewSessionTicket, handling disabled."
1029
1030requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001031requires_config_enabled MBEDTLS_SSL_CLI_C
1032requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1033requires_config_enabled MBEDTLS_HAVE_TIME
Gilles Peskine365296a2024-09-13 14:15:46 +02001034requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001035requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1036 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1037requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
1038run_test "TLS 1.3 m->G: resumption with AES-256-GCM-SHA384 only" \
1039 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001040 "$P_CLI force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cron05210082024-03-05 16:34:51 +01001041 0 \
1042 -c "Protocol is TLSv1.3" \
1043 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
1044 -c "Saving session for reuse... ok" \
1045 -c "Reconnecting with saved session... ok" \
1046 -c "HTTP/1.0 200 OK"
1047
1048requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001049requires_config_enabled MBEDTLS_SSL_CLI_C
1050requires_config_enabled MBEDTLS_DEBUG_C
1051requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine365296a2024-09-13 14:15:46 +02001052requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001053requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1054 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1055run_test "TLS 1.3 m->G: resumption with early data" \
1056 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1057 --earlydata --maxearlydata 16384" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001058 "$P_CLI debug_level=3 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cron05210082024-03-05 16:34:51 +01001059 0 \
1060 -c "Protocol is TLSv1.3" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001061 -c "Saving session for reuse... ok" \
1062 -c "Reconnecting with saved session" \
1063 -c "HTTP/1.0 200 OK" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001064 -c "received max_early_data_size: 16384" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001065 -c "NewSessionTicket: early_data(42) extension received." \
1066 -c "ClientHello: early_data(42) extension exists." \
1067 -c "EncryptedExtensions: early_data(42) extension received." \
Ronald Cron05210082024-03-05 16:34:51 +01001068 -c "bytes of early data written" \
1069 -s "decrypted early data with length:"
Ronald Cronc8d604d2024-03-05 15:05:47 +01001070
1071requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001072requires_config_enabled MBEDTLS_SSL_CLI_C
1073requires_config_enabled MBEDTLS_DEBUG_C
1074requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine365296a2024-09-13 14:15:46 +02001075requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cronc8d604d2024-03-05 15:05:47 +01001076requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1077 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001078requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
1079run_test "TLS 1.3 m->G: resumption with early data, AES-256-GCM-SHA384 only" \
1080 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1081 --earlydata --maxearlydata 16384" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001082 "$P_CLI debug_level=3 force_ciphersuite=TLS1-3-AES-256-GCM-SHA384 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001083 0 \
Ronald Cron05210082024-03-05 16:34:51 +01001084 -c "Protocol is TLSv1.3" \
1085 -c "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
1086 -c "Saving session for reuse... ok" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001087 -c "Reconnecting with saved session" \
Ronald Cron05210082024-03-05 16:34:51 +01001088 -c "HTTP/1.0 200 OK" \
1089 -c "received max_early_data_size: 16384" \
1090 -c "NewSessionTicket: early_data(42) extension received." \
1091 -c "ClientHello: early_data(42) extension exists." \
1092 -c "EncryptedExtensions: early_data(42) extension received." \
1093 -c "bytes of early data written" \
1094 -s "decrypted early data with length:"
1095
1096requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001097requires_config_enabled MBEDTLS_SSL_CLI_C
1098requires_config_enabled MBEDTLS_DEBUG_C
1099requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine365296a2024-09-13 14:15:46 +02001100requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001101requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1102 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1103run_test "TLS 1.3 m->G: resumption, early data cli-enabled/srv-disabled" \
1104 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:+ECDHE-PSK:+PSK --disable-client-cert" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001105 "$P_CLI debug_level=3 early_data=1 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cron05210082024-03-05 16:34:51 +01001106 0 \
1107 -c "Protocol is TLSv1.3" \
1108 -c "Saving session for reuse... ok" \
1109 -c "Reconnecting with saved session" \
1110 -c "HTTP/1.0 200 OK" \
1111 -C "received max_early_data_size: 16384" \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001112 -C "NewSessionTicket: early_data(42) extension received." \
Ronald Cron05210082024-03-05 16:34:51 +01001113
1114requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001115requires_config_enabled MBEDTLS_SSL_CLI_C
1116requires_config_enabled MBEDTLS_DEBUG_C
1117requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine365296a2024-09-13 14:15:46 +02001118requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001119requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1120 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1121run_test "TLS 1.3 m->G: resumption, early data cli-default/srv-enabled" \
1122 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1123 --earlydata --maxearlydata 16384" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001124 "$P_CLI debug_level=3 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cron05210082024-03-05 16:34:51 +01001125 0 \
1126 -c "Protocol is TLSv1.3" \
1127 -c "Saving session for reuse... ok" \
1128 -c "Reconnecting with saved session" \
1129 -c "HTTP/1.0 200 OK" \
1130 -c "received max_early_data_size: 16384" \
1131 -c "NewSessionTicket: early_data(42) extension received." \
1132 -C "ClientHello: early_data(42) extension exists." \
1133
1134requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001135requires_config_enabled MBEDTLS_SSL_CLI_C
1136requires_config_enabled MBEDTLS_DEBUG_C
1137requires_config_enabled MBEDTLS_SSL_EARLY_DATA
Gilles Peskine365296a2024-09-13 14:15:46 +02001138requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron05210082024-03-05 16:34:51 +01001139requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
1140 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1141run_test "TLS 1.3 m->G: resumption, early data cli-disabled/srv-enabled" \
1142 "$G_NEXT_SRV -d 5 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert \
1143 --earlydata --maxearlydata 16384" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001144 "$P_CLI debug_level=3 early_data=0 new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cron05210082024-03-05 16:34:51 +01001145 0 \
1146 -c "Protocol is TLSv1.3" \
1147 -c "Saving session for reuse... ok" \
1148 -c "Reconnecting with saved session" \
1149 -c "HTTP/1.0 200 OK" \
1150 -c "received max_early_data_size: 16384" \
1151 -c "NewSessionTicket: early_data(42) extension received." \
1152 -C "ClientHello: early_data(42) extension exists." \
Ronald Cronc8d604d2024-03-05 15:05:47 +01001153
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001154requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02001155requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1156requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001157requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron820199a2024-03-10 10:39:26 +01001158requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001159 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1160# https://github.com/openssl/openssl/issues/10714
1161# Until now, OpenSSL client does not support reconnect.
1162skip_next_test
Ronald Cron820199a2024-03-10 10:39:26 +01001163run_test "TLS 1.3 O->m: resumption" \
1164 "$P_SRV debug_level=2 tickets=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001165 "$O_NEXT_CLI -msg -debug -tls1_3 -reconnect" \
1166 0 \
Ronald Cron820199a2024-03-10 10:39:26 +01001167 -s "Protocol is TLSv1.3" \
1168 -s "key exchange mode: psk" \
1169 -s "Select PSK ciphersuite"
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001170
1171requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001172requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1173requires_config_enabled MBEDTLS_HAVE_TIME
1174requires_config_enabled MBEDTLS_SSL_SRV_C
1175requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001176requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001177requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001178 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001179run_test "TLS 1.3 G->m: resumption" \
1180 "$P_SRV debug_level=2 tickets=1" \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001181 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r" \
1182 0 \
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001183 -s "Protocol is TLSv1.3" \
1184 -s "key exchange mode: psk" \
1185 -s "Select PSK ciphersuite"
1186
1187requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001188requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1189requires_config_enabled MBEDTLS_HAVE_TIME
1190requires_config_enabled MBEDTLS_SSL_SRV_C
1191requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001192requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001193requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1194 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1195requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
1196# Test the session resumption when the cipher suite for the original session is
1197# TLS1-3-AES-256-GCM-SHA384. In that case, the PSK is 384 bits long and not
1198# 256 bits long as with all the other TLS 1.3 cipher suites.
1199run_test "TLS 1.3 G->m: resumption with AES-256-GCM-SHA384 only" \
1200 "$P_SRV debug_level=2 tickets=1" \
1201 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM -V -r" \
1202 0 \
1203 -s "Protocol is TLSv1.3" \
1204 -s "key exchange mode: psk" \
1205 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384"
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001206
Ronald Cron854df132024-03-05 17:50:50 +01001207EARLY_DATA_INPUT_LEN_BLOCKS=$(( ( $( cat $EARLY_DATA_INPUT | wc -c ) + 31 ) / 32 ))
1208EARLY_DATA_INPUT_LEN=$(( $EARLY_DATA_INPUT_LEN_BLOCKS * 32 ))
1209
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001210requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001211requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1212requires_config_enabled MBEDTLS_HAVE_TIME
1213requires_config_enabled MBEDTLS_SSL_SRV_C
1214requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1215requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001216requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron854df132024-03-05 17:50:50 +01001217requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1218 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001219run_test "TLS 1.3 G->m: resumption with early data" \
1220 "$P_SRV debug_level=4 tickets=1 early_data=1 max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1221 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1222 --earlydata $EARLY_DATA_INPUT" \
Ronald Cron854df132024-03-05 17:50:50 +01001223 0 \
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001224 -s "Protocol is TLSv1.3" \
1225 -s "key exchange mode: psk" \
1226 -s "Select PSK ciphersuite" \
1227 -s "Sent max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1228 -s "NewSessionTicket: early_data(42) extension exists." \
1229 -s "ClientHello: early_data(42) extension exists." \
1230 -s "EncryptedExtensions: early_data(42) extension exists." \
1231 -s "$( head -1 $EARLY_DATA_INPUT )" \
1232 -s "$( tail -1 $EARLY_DATA_INPUT )" \
1233 -s "200 early data bytes read" \
Ronald Cron854df132024-03-05 17:50:50 +01001234 -s "106 early data bytes read"
1235
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001236requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001237requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1238requires_config_enabled MBEDTLS_HAVE_TIME
1239requires_config_enabled MBEDTLS_SSL_SRV_C
1240requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1241requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001242requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001243requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001244 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001245requires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001246run_test "TLS 1.3 G->m: resumption with early data, AES-256-GCM-SHA384 only" \
1247 "$P_SRV debug_level=4 tickets=1 early_data=1 max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1248 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM -V -r \
1249 --earlydata $EARLY_DATA_INPUT" \
1250 0 \
1251 -s "Protocol is TLSv1.3" \
1252 -s "key exchange mode: psk" \
1253 -s "Select PSK ciphersuite: 1302 - TLS1-3-AES-256-GCM-SHA384" \
1254 -s "Sent max_early_data_size=$EARLY_DATA_INPUT_LEN" \
1255 -s "NewSessionTicket: early_data(42) extension exists." \
1256 -s "ClientHello: early_data(42) extension exists." \
1257 -s "EncryptedExtensions: early_data(42) extension exists." \
1258 -s "$( head -1 $EARLY_DATA_INPUT )" \
1259 -s "$( tail -1 $EARLY_DATA_INPUT )" \
1260 -s "200 early data bytes read" \
1261 -s "106 early data bytes read"
1262
1263# The Mbed TLS server does not allow early data for the ticket it sends but
1264# the GnuTLS indicates early data anyway when resuming with the ticket and
1265# sends early data. The Mbed TLS server does not expect early data in
1266# association with the ticket thus it eventually fails the resumption
1267# handshake. The GnuTLS client behavior is not compliant here with the TLS 1.3
1268# specification and thus its behavior may change in following versions.
1269requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001270requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1271requires_config_enabled MBEDTLS_HAVE_TIME
1272requires_config_enabled MBEDTLS_SSL_SRV_C
1273requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1274requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001275requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001276requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1277 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1278run_test "TLS 1.3 G->m: resumption, early data cli-enabled/srv-default" \
1279 "$P_SRV debug_level=4 tickets=1" \
1280 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1281 --earlydata $EARLY_DATA_INPUT" \
1282 1 \
1283 -s "Protocol is TLSv1.3" \
1284 -s "key exchange mode: psk" \
1285 -s "Select PSK ciphersuite" \
1286 -S "Sent max_early_data_size" \
1287 -S "NewSessionTicket: early_data(42) extension exists." \
1288 -s "ClientHello: early_data(42) extension exists." \
1289 -s "EarlyData: rejected, feature disabled in server configuration." \
1290 -S "EncryptedExtensions: early_data(42) extension exists." \
1291 -s "EarlyData: deprotect and discard app data records" \
1292 -s "EarlyData: Too much early data received"
1293
1294# The Mbed TLS server does not allow early data for the ticket it sends but
1295# the GnuTLS indicates early data anyway when resuming with the ticket and
1296# sends early data. The Mbed TLS server does not expect early data in
1297# association with the ticket thus it eventually fails the resumption
1298# handshake. The GnuTLS client behavior is not compliant here with the TLS 1.3
1299# specification and thus its behavior may change in following versions.
1300requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001301requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1302requires_config_enabled MBEDTLS_HAVE_TIME
1303requires_config_enabled MBEDTLS_SSL_SRV_C
1304requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1305requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001306requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001307requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1308 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1309run_test "TLS 1.3 G->m: resumption, early data cli-enabled/srv-disabled" \
1310 "$P_SRV debug_level=4 tickets=1 early_data=0" \
1311 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r \
1312 --earlydata $EARLY_DATA_INPUT" \
1313 1 \
1314 -s "Protocol is TLSv1.3" \
1315 -s "key exchange mode: psk" \
1316 -s "Select PSK ciphersuite" \
1317 -S "Sent max_early_data_size" \
1318 -S "NewSessionTicket: early_data(42) extension exists." \
1319 -s "ClientHello: early_data(42) extension exists." \
1320 -s "EarlyData: rejected, feature disabled in server configuration." \
1321 -S "EncryptedExtensions: early_data(42) extension exists." \
1322 -s "EarlyData: deprotect and discard app data records" \
1323 -s "EarlyData: Too much early data received"
1324
1325requires_gnutls_tls1_3
Gilles Peskine365296a2024-09-13 14:15:46 +02001326requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1327requires_config_enabled MBEDTLS_HAVE_TIME
1328requires_config_enabled MBEDTLS_SSL_SRV_C
1329requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1330requires_config_enabled MBEDTLS_DEBUG_C
Gilles Peskine365296a2024-09-13 14:15:46 +02001331requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1ccd7a72024-03-05 23:31:07 +01001332requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
1333 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
1334run_test "TLS 1.3 G->m: resumption, early data cli-disabled/srv-enabled" \
1335 "$P_SRV debug_level=4 tickets=1 early_data=1" \
1336 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r" \
1337 0 \
1338 -s "Protocol is TLSv1.3" \
1339 -s "key exchange mode: psk" \
1340 -s "Select PSK ciphersuite" \
1341 -s "Sent max_early_data_size" \
1342 -s "NewSessionTicket: early_data(42) extension exists." \
1343 -S "ClientHello: early_data(42) extension exists." \
1344 -S "EncryptedExtensions: early_data(42) extension exists."
Ronald Cronf1ad73f2024-03-05 08:38:49 +01001345
Gilles Peskine365296a2024-09-13 14:15:46 +02001346requires_config_enabled MBEDTLS_SSL_EARLY_DATA
1347requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
1348requires_config_enabled MBEDTLS_SSL_CLI_C
1349requires_config_enabled MBEDTLS_SSL_SRV_C
1350requires_config_enabled MBEDTLS_DEBUG_C
1351requires_config_enabled MBEDTLS_HAVE_TIME
1352requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
1353requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron1f63fe42024-02-23 15:49:12 +01001354run_test "TLS 1.3 m->m: Ephemeral over PSK kex with early data enabled" \
Ronald Cron74191a52024-03-09 17:38:16 +01001355 "$P_SRV force_version=tls13 debug_level=4 early_data=1 max_early_data_size=1024" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02001356 "$P_CLI debug_level=4 early_data=1 tls13_kex_modes=psk_or_ephemeral new_session_tickets=1 reco_mode=1 reconnect=1" \
Ronald Cron1f63fe42024-02-23 15:49:12 +01001357 0 \
1358 -s "key exchange mode: ephemeral" \
1359 -S "key exchange mode: psk" \
1360 -s "found matched identity" \
1361 -s "EarlyData: rejected, not a session resumption" \
1362 -C "EncryptedExtensions: early_data(42) extension exists."