blob: b1f214731e35c199538258c3ed4cfd1adbca9198 [file] [log] [blame]
Jerry Yue5991322022-11-07 14:03:44 +08001#!/bin/sh
2
3# tls13-misc.sh
4#
5# Copyright The Mbed TLS Contributors
6# SPDX-License-Identifier: Apache-2.0
7#
8# Licensed under the Apache License, Version 2.0 (the "License"); you may
9# not use this file except in compliance with the License.
10# You may obtain a copy of the License at
11#
12# http://www.apache.org/licenses/LICENSE-2.0
13#
14# Unless required by applicable law or agreed to in writing, software
15# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17# See the License for the specific language governing permissions and
18# limitations under the License.
19#
20
21requires_gnutls_tls1_3
Jerry Yu616ba752022-11-08 21:49:47 +080022requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
23requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
24requires_config_enabled MBEDTLS_SSL_SRV_C
25requires_config_enabled MBEDTLS_DEBUG_C
26requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
27
28run_test "TLS 1.3: PSK: No valid ciphersuite. G->m" \
29 "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
30 "$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 \
31 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
32 localhost" \
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
40requires_openssl_tls1_3
41requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
42requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
43requires_config_enabled MBEDTLS_SSL_SRV_C
44requires_config_enabled MBEDTLS_DEBUG_C
45requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
46
47run_test "TLS 1.3: PSK: No valid ciphersuite. O->m" \
48 "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
49 "$O_NEXT_CLI -tls1_3 -msg -allow_no_dhe_kex -ciphersuites TLS_AES_256_GCM_SHA384\
50 -psk_identity Client_identity -psk 6162636465666768696a6b6c6d6e6f70" \
51 1 \
52 -s "found psk key exchange modes extension" \
53 -s "found pre_shared_key extension" \
54 -s "Found PSK_EPHEMERAL KEX MODE" \
55 -s "Found PSK KEX MODE" \
56 -s "No matched ciphersuite"
57
58requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +010059 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
60 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080061run_test "TLS 1.3 m->m: Multiple PSKs: valid ticket, reconnect with ticket" \
62 "$P_SRV force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8" \
63 "$P_CLI force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 reco_mode=1 reconnect=1" \
64 0 \
65 -c "Pre-configured PSK number = 2" \
66 -s "sent selected_identity: 0" \
67 -s "key exchange mode: psk_ephemeral" \
68 -S "key exchange mode: psk$" \
69 -S "key exchange mode: ephemeral$" \
70 -S "ticket is not authentic"
71
72requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +010073 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
74 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080075run_test "TLS 1.3 m->m: Multiple PSKs: invalid ticket, reconnect with PSK" \
76 "$P_SRV force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8 dummy_ticket=1" \
77 "$P_CLI force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 reco_mode=1 reconnect=1" \
78 0 \
79 -c "Pre-configured PSK number = 2" \
80 -s "sent selected_identity: 1" \
81 -s "key exchange mode: psk_ephemeral" \
82 -S "key exchange mode: psk$" \
83 -S "key exchange mode: ephemeral$" \
84 -s "ticket is not authentic"
85
86requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +010087 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
88 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
89 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +080090run_test "TLS 1.3 m->m: Session resumption failure, ticket authentication failed." \
91 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 tickets=8 dummy_ticket=1" \
92 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
93 0 \
94 -c "Pre-configured PSK number = 1" \
95 -S "sent selected_identity:" \
96 -s "key exchange mode: ephemeral" \
97 -S "key exchange mode: psk_ephemeral" \
98 -S "key exchange mode: psk$" \
99 -s "ticket is not authentic" \
100 -S "ticket is expired" \
101 -S "Invalid ticket start time" \
102 -S "Ticket age exceeds limitation" \
103 -S "Ticket age outside tolerance window"
104
105requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +0100106 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
107 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
108 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +0800109run_test "TLS 1.3 m->m: Session resumption failure, ticket expired." \
110 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 tickets=8 dummy_ticket=2" \
111 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
112 0 \
113 -c "Pre-configured PSK number = 1" \
114 -S "sent selected_identity:" \
115 -s "key exchange mode: ephemeral" \
116 -S "key exchange mode: psk_ephemeral" \
117 -S "key exchange mode: psk$" \
118 -S "ticket is not authentic" \
119 -s "ticket is expired" \
120 -S "Invalid ticket start time" \
121 -S "Ticket age exceeds limitation" \
122 -S "Ticket age outside tolerance window"
123
124requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +0100125 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
126 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
127 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +0800128run_test "TLS 1.3 m->m: Session resumption failure, invalid start time." \
129 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 tickets=8 dummy_ticket=3" \
130 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
131 0 \
132 -c "Pre-configured PSK number = 1" \
133 -S "sent selected_identity:" \
134 -s "key exchange mode: ephemeral" \
135 -S "key exchange mode: psk_ephemeral" \
136 -S "key exchange mode: psk$" \
137 -S "ticket is not authentic" \
138 -S "ticket is expired" \
139 -s "Invalid ticket start time" \
140 -S "Ticket age exceeds limitation" \
141 -S "Ticket age outside tolerance window"
142
143requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +0100144 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
145 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
146 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +0800147run_test "TLS 1.3 m->m: Session resumption failure, ticket expired. too old" \
148 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 tickets=8 dummy_ticket=4" \
149 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
150 0 \
151 -c "Pre-configured PSK number = 1" \
152 -S "sent selected_identity:" \
153 -s "key exchange mode: ephemeral" \
154 -S "key exchange mode: psk_ephemeral" \
155 -S "key exchange mode: psk$" \
156 -S "ticket is not authentic" \
157 -S "ticket is expired" \
158 -S "Invalid ticket start time" \
159 -s "Ticket age exceeds limitation" \
160 -S "Ticket age outside tolerance window"
161
162requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +0100163 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
164 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
165 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +0800166run_test "TLS 1.3 m->m: Session resumption failure, age outside tolerance window, too young." \
167 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 tickets=8 dummy_ticket=5" \
168 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
169 0 \
170 -c "Pre-configured PSK number = 1" \
171 -S "sent selected_identity:" \
172 -s "key exchange mode: ephemeral" \
173 -S "key exchange mode: psk_ephemeral" \
174 -S "key exchange mode: psk$" \
175 -S "ticket is not authentic" \
176 -S "ticket is expired" \
177 -S "Invalid ticket start time" \
178 -S "Ticket age exceeds limitation" \
179 -s "Ticket age outside tolerance window"
180
181requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
Ronald Cronf5b47062022-12-15 13:46:23 +0100182 MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
183 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
184 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Jerry Yu616ba752022-11-08 21:49:47 +0800185run_test "TLS 1.3 m->m: Session resumption failure, age outside tolerance window, too old." \
186 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 tickets=8 dummy_ticket=6" \
187 "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
188 0 \
189 -c "Pre-configured PSK number = 1" \
190 -S "sent selected_identity:" \
191 -s "key exchange mode: ephemeral" \
192 -S "key exchange mode: psk_ephemeral" \
193 -S "key exchange mode: psk$" \
194 -S "ticket is not authentic" \
195 -S "ticket is expired" \
196 -S "Invalid ticket start time" \
197 -S "Ticket age exceeds limitation" \
198 -s "Ticket age outside tolerance window"
199
200requires_gnutls_tls1_3
201requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C
202requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
203run_test "TLS 1.3: G->m: ephemeral_all/psk, fail, no common kex mode" \
204 "$P_SRV force_version=tls13 tls13_kex_modes=psk debug_level=5 $(get_srv_psk_list)" \
205 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:-PSK:+VERS-TLS1.3 \
206 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
207 localhost" \
208 1 \
209 -s "found psk key exchange modes extension" \
210 -s "found pre_shared_key extension" \
211 -s "Found PSK_EPHEMERAL KEX MODE" \
212 -S "Found PSK KEX MODE" \
213 -S "key exchange mode: psk$" \
214 -S "key exchange mode: psk_ephemeral" \
215 -S "key exchange mode: ephemeral"
216
217requires_gnutls_tls1_3
Jerry Yue5991322022-11-07 14:03:44 +0800218requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C \
219 MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
220 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
221requires_all_configs_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
222 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
223run_test "TLS 1.3: G->m: PSK: configured psk only, good." \
224 "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
225 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
226 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
227 localhost" \
228 0 \
229 -s "found psk key exchange modes extension" \
230 -s "found pre_shared_key extension" \
231 -s "Found PSK_EPHEMERAL KEX MODE" \
232 -s "Found PSK KEX MODE" \
233 -s "key exchange mode: psk$"
234
235requires_gnutls_tls1_3
236requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C \
237 MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
238 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
239requires_all_configs_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
240 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
241run_test "TLS 1.3: G->m: PSK: configured psk_ephemeral only, good." \
242 "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
243 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
244 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
245 localhost" \
246 0 \
247 -s "found psk key exchange modes extension" \
248 -s "found pre_shared_key extension" \
249 -s "Found PSK_EPHEMERAL KEX MODE" \
250 -s "Found PSK KEX MODE" \
251 -s "key exchange mode: psk_ephemeral$"
252
253requires_gnutls_tls1_3
254requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C \
255 MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
256 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
257requires_all_configs_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
258 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
259run_test "TLS 1.3: G->m: PSK: configured ephemeral only, good." \
260 "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
261 "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
262 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
263 localhost" \
264 0 \
265 -s "key exchange mode: ephemeral$"
266
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000267requires_gnutls_tls1_3
268requires_config_enabled MBEDTLS_DEBUG_C
269requires_config_enabled MBEDTLS_SSL_CLI_C
270requires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
271 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000272 MBEDTLS_SSL_EARLY_DATA
Xiaokang Qiane7bab002022-11-16 08:51:01 +0000273requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
274 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000275run_test "TLS 1.3 m->G: EarlyData: basic check, good" \
276 "$G_NEXT_SRV -d 10 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:+ECDHE-PSK:+PSK --earlydata --disable-client-cert" \
Jerry Yua15af372022-12-05 15:55:24 +0800277 "$P_CLI debug_level=4 early_data=1 reco_mode=1 reconnect=1 reco_delay=900" \
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000278 1 \
279 -c "Reconnecting with saved session" \
280 -c "NewSessionTicket: early_data(42) extension received." \
281 -c "ClientHello: early_data(42) extension exists." \
282 -c "EncryptedExtensions: early_data(42) extension received." \
Xiaokang Qian8bee8992022-10-27 10:21:05 +0000283 -c "EncryptedExtensions: early_data(42) extension exists." \
Xiaokang Qian125afcb2022-10-28 06:04:06 +0000284 -c "Client write EndOfEarlyData" \
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000285 -s "Parsing extension 'Early Data/42' (0 bytes)" \
286 -s "Sending extension Early Data/42 (0 bytes)" \
287 -s "early data accepted"
288
289requires_gnutls_tls1_3
290requires_config_enabled MBEDTLS_DEBUG_C
291requires_config_enabled MBEDTLS_SSL_CLI_C
292requires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
293 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000294 MBEDTLS_SSL_EARLY_DATA
Xiaokang Qiane7bab002022-11-16 08:51:01 +0000295requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
296 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Xiaokang Qiane9622ac2022-11-17 09:23:32 +0000297run_test "TLS 1.3 m->G: EarlyData: no early_data in NewSessionTicket, good" \
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000298 "$G_NEXT_SRV -d 10 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:+ECDHE-PSK:+PSK --disable-client-cert" \
Jerry Yua15af372022-12-05 15:55:24 +0800299 "$P_CLI debug_level=4 early_data=1 reco_mode=1 reconnect=1" \
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000300 0 \
301 -c "Reconnecting with saved session" \
302 -C "NewSessionTicket: early_data(42) extension received." \
303 -c "ClientHello: early_data(42) extension does not exist." \
304 -C "EncryptedExtensions: early_data(42) extension received." \
Xiaokang Qian8bee8992022-10-27 10:21:05 +0000305 -C "EncryptedExtensions: early_data(42) extension exists."
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000306
Xiaokang Qiane7bab002022-11-16 08:51:01 +0000307#TODO: OpenSSL tests don't work now. It might be openssl options issue, cause GnuTLS has worked.
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000308skip_next_test
Xiaokang Qiane7bab002022-11-16 08:51:01 +0000309requires_openssl_tls1_3
310requires_config_enabled MBEDTLS_DEBUG_C
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000311requires_config_enabled MBEDTLS_SSL_CLI_C
Xiaokang Qiane7bab002022-11-16 08:51:01 +0000312requires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
313 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
314 MBEDTLS_SSL_EARLY_DATA
315requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
316 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Xiaokang Qianf3cefb42022-11-16 03:23:46 +0000317run_test "TLS 1.3, ext PSK, early data" \
318 "$O_NEXT_SRV_EARLY_DATA -msg -debug -tls1_3 -psk_identity 0a0b0c -psk 010203 -allow_no_dhe_kex -nocert" \
319 "$P_CLI debug_level=5 force_version=tls13 tls13_kex_modes=psk early_data=1 psk=010203 psk_identity=0a0b0c" \
320 1 \
321 -c "Reconnecting with saved session" \
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 "EncryptedExtensions: early_data(42) extension ( ignored )."
326
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800327requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800328 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
329 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
330 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800331run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/none." \
332 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=7" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800333 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800334 0 \
335 -c "Pre-configured PSK number = 1" \
336 -S "sent selected_identity:" \
337 -s "key exchange mode: ephemeral" \
338 -S "key exchange mode: psk_ephemeral" \
339 -S "key exchange mode: psk$" \
340 -s "No suitable key exchange mode" \
341 -s "No matched PSK or ticket"
Pengyu Lv302feb32022-12-09 14:27:08 +0800342
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800343requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800344 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
345 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
346 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800347run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/psk." \
348 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=8" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800349 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800350 0 \
351 -c "Pre-configured PSK number = 1" \
352 -S "No suitable key exchange mode" \
353 -s "found matched identity"
354
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800355requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800356 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
357 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
358 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800359run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/psk_ephemeral." \
360 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=9" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800361 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800362 0 \
363 -c "Pre-configured PSK number = 1" \
364 -S "sent selected_identity:" \
365 -s "key exchange mode: ephemeral" \
366 -S "key exchange mode: psk_ephemeral" \
367 -S "key exchange mode: psk$" \
368 -s "No suitable key exchange mode" \
369 -s "No matched PSK or ticket"
370
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800371requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800372 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
373 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
374 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800375run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/psk_all." \
376 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=10" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800377 "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800378 0 \
379 -c "Pre-configured PSK number = 1" \
380 -S "No suitable key exchange mode" \
381 -s "found matched identity"
382
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800383requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800384 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
385 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
386 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800387run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/none." \
388 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=7" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800389 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800390 0 \
391 -c "Pre-configured PSK number = 1" \
392 -S "sent selected_identity:" \
393 -s "key exchange mode: ephemeral" \
394 -S "key exchange mode: psk_ephemeral" \
395 -S "key exchange mode: psk$" \
396 -s "No suitable key exchange mode" \
397 -s "No matched PSK or ticket"
398
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800399requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800400 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
401 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
402 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800403run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/psk." \
404 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=8" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800405 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800406 0 \
407 -c "Pre-configured PSK number = 1" \
408 -S "sent selected_identity:" \
409 -s "key exchange mode: ephemeral" \
410 -S "key exchange mode: psk_ephemeral" \
411 -S "key exchange mode: psk$" \
412 -s "No suitable key exchange mode" \
413 -s "No matched PSK or ticket"
414
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800415requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800416 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
417 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
418 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800419run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/psk_ephemeral." \
420 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=9" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800421 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800422 0 \
423 -c "Pre-configured PSK number = 1" \
424 -S "No suitable key exchange mode" \
425 -s "found matched identity"
426
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800427requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800428 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
429 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
430 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800431run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/psk_all." \
432 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=10" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800433 "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800434 0 \
435 -c "Pre-configured PSK number = 1" \
436 -S "No suitable key exchange mode" \
437 -s "found matched identity"
438
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800439requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800440 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
441 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
442 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
443 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800444run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/none." \
445 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=7" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800446 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800447 0 \
448 -c "Pre-configured PSK number = 1" \
449 -S "sent selected_identity:" \
450 -s "key exchange mode: ephemeral" \
451 -S "key exchange mode: psk_ephemeral" \
452 -S "key exchange mode: psk$" \
453 -s "No suitable key exchange mode" \
454 -s "No matched PSK or ticket"
455
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800456requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800457 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
458 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
459 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
460 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800461run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/psk." \
462 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=8" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800463 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800464 0 \
465 -c "Pre-configured PSK number = 1" \
466 -S "No suitable key exchange mode" \
467 -s "found matched identity"
468
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800469requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800470 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
471 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
472 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
473 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800474run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/psk_ephemeral." \
475 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=9" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800476 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800477 0 \
478 -c "Pre-configured PSK number = 1" \
479 -S "No suitable key exchange mode" \
480 -s "found matched identity"
481
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800482requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
Pengyu Lvc1334d92023-01-12 16:18:08 +0800483 MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
484 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
485 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
486 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800487run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/psk_all." \
488 "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=10" \
Pengyu Lv2bfd7162023-01-16 13:44:10 +0800489 "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
Pengyu Lv06cf66d2022-12-12 10:43:55 +0800490 0 \
491 -c "Pre-configured PSK number = 1" \
492 -S "No suitable key exchange mode" \
493 -s "found matched identity"
Pengyu Lv302feb32022-12-09 14:27:08 +0800494