tls13-misc.sh 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. #!/bin/sh
  2. # tls13-misc.sh
  3. #
  4. # Copyright The Mbed TLS Contributors
  5. # SPDX-License-Identifier: Apache-2.0
  6. #
  7. # Licensed under the Apache License, Version 2.0 (the "License"); you may
  8. # not use this file except in compliance with the License.
  9. # You may obtain a copy of the License at
  10. #
  11. # http://www.apache.org/licenses/LICENSE-2.0
  12. #
  13. # Unless required by applicable law or agreed to in writing, software
  14. # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  15. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. # See the License for the specific language governing permissions and
  17. # limitations under the License.
  18. #
  19. requires_gnutls_tls1_3
  20. requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
  21. requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
  22. requires_config_enabled MBEDTLS_SSL_SRV_C
  23. requires_config_enabled MBEDTLS_DEBUG_C
  24. requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  25. run_test "TLS 1.3: PSK: No valid ciphersuite. G->m" \
  26. "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
  27. "$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 \
  28. --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
  29. localhost" \
  30. 1 \
  31. -s "found psk key exchange modes extension" \
  32. -s "found pre_shared_key extension" \
  33. -s "Found PSK_EPHEMERAL KEX MODE" \
  34. -s "Found PSK KEX MODE" \
  35. -s "No matched ciphersuite"
  36. requires_openssl_tls1_3
  37. requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
  38. requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
  39. requires_config_enabled MBEDTLS_SSL_SRV_C
  40. requires_config_enabled MBEDTLS_DEBUG_C
  41. requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  42. run_test "TLS 1.3: PSK: No valid ciphersuite. O->m" \
  43. "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
  44. "$O_NEXT_CLI -tls1_3 -msg -allow_no_dhe_kex -ciphersuites TLS_AES_256_GCM_SHA384\
  45. -psk_identity Client_identity -psk 6162636465666768696a6b6c6d6e6f70" \
  46. 1 \
  47. -s "found psk key exchange modes extension" \
  48. -s "found pre_shared_key extension" \
  49. -s "Found PSK_EPHEMERAL KEX MODE" \
  50. -s "Found PSK KEX MODE" \
  51. -s "No matched ciphersuite"
  52. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  53. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  54. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  55. run_test "TLS 1.3 m->m: Multiple PSKs: valid ticket, reconnect with ticket" \
  56. "$P_SRV force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8" \
  57. "$P_CLI force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 reco_mode=1 reconnect=1" \
  58. 0 \
  59. -c "Pre-configured PSK number = 2" \
  60. -s "sent selected_identity: 0" \
  61. -s "key exchange mode: psk_ephemeral" \
  62. -S "key exchange mode: psk$" \
  63. -S "key exchange mode: ephemeral$" \
  64. -S "ticket is not authentic"
  65. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  66. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  67. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  68. run_test "TLS 1.3 m->m: Multiple PSKs: invalid ticket, reconnect with PSK" \
  69. "$P_SRV force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 tickets=8 dummy_ticket=1" \
  70. "$P_CLI force_version=tls13 tls13_kex_modes=psk_ephemeral debug_level=5 psk_identity=Client_identity psk=6162636465666768696a6b6c6d6e6f70 reco_mode=1 reconnect=1" \
  71. 0 \
  72. -c "Pre-configured PSK number = 2" \
  73. -s "sent selected_identity: 1" \
  74. -s "key exchange mode: psk_ephemeral" \
  75. -S "key exchange mode: psk$" \
  76. -S "key exchange mode: ephemeral$" \
  77. -s "ticket is not authentic"
  78. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  79. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  80. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  81. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  82. run_test "TLS 1.3 m->m: Session resumption failure, ticket authentication failed." \
  83. "$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" \
  84. "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
  85. 0 \
  86. -c "Pre-configured PSK number = 1" \
  87. -S "sent selected_identity:" \
  88. -s "key exchange mode: ephemeral" \
  89. -S "key exchange mode: psk_ephemeral" \
  90. -S "key exchange mode: psk$" \
  91. -s "ticket is not authentic" \
  92. -S "ticket is expired" \
  93. -S "Invalid ticket start time" \
  94. -S "Ticket age exceeds limitation" \
  95. -S "Ticket age outside tolerance window"
  96. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  97. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  98. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  99. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  100. run_test "TLS 1.3 m->m: Session resumption failure, ticket expired." \
  101. "$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" \
  102. "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
  103. 0 \
  104. -c "Pre-configured PSK number = 1" \
  105. -S "sent selected_identity:" \
  106. -s "key exchange mode: ephemeral" \
  107. -S "key exchange mode: psk_ephemeral" \
  108. -S "key exchange mode: psk$" \
  109. -S "ticket is not authentic" \
  110. -s "ticket is expired" \
  111. -S "Invalid ticket start time" \
  112. -S "Ticket age exceeds limitation" \
  113. -S "Ticket age outside tolerance window"
  114. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  115. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  116. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  117. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  118. run_test "TLS 1.3 m->m: Session resumption failure, invalid start time." \
  119. "$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" \
  120. "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
  121. 0 \
  122. -c "Pre-configured PSK number = 1" \
  123. -S "sent selected_identity:" \
  124. -s "key exchange mode: ephemeral" \
  125. -S "key exchange mode: psk_ephemeral" \
  126. -S "key exchange mode: psk$" \
  127. -S "ticket is not authentic" \
  128. -S "ticket is expired" \
  129. -s "Invalid ticket start time" \
  130. -S "Ticket age exceeds limitation" \
  131. -S "Ticket age outside tolerance window"
  132. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  133. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  134. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  135. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  136. run_test "TLS 1.3 m->m: Session resumption failure, ticket expired. too old" \
  137. "$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" \
  138. "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
  139. 0 \
  140. -c "Pre-configured PSK number = 1" \
  141. -S "sent selected_identity:" \
  142. -s "key exchange mode: ephemeral" \
  143. -S "key exchange mode: psk_ephemeral" \
  144. -S "key exchange mode: psk$" \
  145. -S "ticket is not authentic" \
  146. -S "ticket is expired" \
  147. -S "Invalid ticket start time" \
  148. -s "Ticket age exceeds limitation" \
  149. -S "Ticket age outside tolerance window"
  150. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  151. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  152. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  153. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  154. run_test "TLS 1.3 m->m: Session resumption failure, age outside tolerance window, too young." \
  155. "$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" \
  156. "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
  157. 0 \
  158. -c "Pre-configured PSK number = 1" \
  159. -S "sent selected_identity:" \
  160. -s "key exchange mode: ephemeral" \
  161. -S "key exchange mode: psk_ephemeral" \
  162. -S "key exchange mode: psk$" \
  163. -S "ticket is not authentic" \
  164. -S "ticket is expired" \
  165. -S "Invalid ticket start time" \
  166. -S "Ticket age exceeds limitation" \
  167. -s "Ticket age outside tolerance window"
  168. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SESSION_TICKETS MBEDTLS_SSL_SRV_C \
  169. MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C MBEDTLS_HAVE_TIME \
  170. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  171. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  172. run_test "TLS 1.3 m->m: Session resumption failure, age outside tolerance window, too old." \
  173. "$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" \
  174. "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
  175. 0 \
  176. -c "Pre-configured PSK number = 1" \
  177. -S "sent selected_identity:" \
  178. -s "key exchange mode: ephemeral" \
  179. -S "key exchange mode: psk_ephemeral" \
  180. -S "key exchange mode: psk$" \
  181. -S "ticket is not authentic" \
  182. -S "ticket is expired" \
  183. -S "Invalid ticket start time" \
  184. -S "Ticket age exceeds limitation" \
  185. -s "Ticket age outside tolerance window"
  186. requires_gnutls_tls1_3
  187. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C
  188. requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  189. run_test "TLS 1.3: G->m: ephemeral_all/psk, fail, no common kex mode" \
  190. "$P_SRV force_version=tls13 tls13_kex_modes=psk debug_level=5 $(get_srv_psk_list)" \
  191. "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:-PSK:+VERS-TLS1.3 \
  192. --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
  193. localhost" \
  194. 1 \
  195. -s "found psk key exchange modes extension" \
  196. -s "found pre_shared_key extension" \
  197. -s "Found PSK_EPHEMERAL KEX MODE" \
  198. -S "Found PSK KEX MODE" \
  199. -S "key exchange mode: psk$" \
  200. -S "key exchange mode: psk_ephemeral" \
  201. -S "key exchange mode: ephemeral"
  202. requires_gnutls_tls1_3
  203. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C \
  204. MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
  205. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  206. requires_all_configs_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
  207. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
  208. run_test "TLS 1.3: G->m: PSK: configured psk only, good." \
  209. "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
  210. "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
  211. --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
  212. localhost" \
  213. 0 \
  214. -s "found psk key exchange modes extension" \
  215. -s "found pre_shared_key extension" \
  216. -s "Found PSK_EPHEMERAL KEX MODE" \
  217. -s "Found PSK KEX MODE" \
  218. -s "key exchange mode: psk$"
  219. requires_gnutls_tls1_3
  220. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C \
  221. MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
  222. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  223. requires_all_configs_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
  224. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
  225. run_test "TLS 1.3: G->m: PSK: configured psk_ephemeral only, good." \
  226. "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
  227. "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
  228. --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
  229. localhost" \
  230. 0 \
  231. -s "found psk key exchange modes extension" \
  232. -s "found pre_shared_key extension" \
  233. -s "Found PSK_EPHEMERAL KEX MODE" \
  234. -s "Found PSK KEX MODE" \
  235. -s "key exchange mode: psk_ephemeral$"
  236. requires_gnutls_tls1_3
  237. requires_all_configs_enabled MBEDTLS_SSL_PROTO_TLS1_3 MBEDTLS_SSL_SRV_C MBEDTLS_DEBUG_C \
  238. MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
  239. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
  240. requires_all_configs_disabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
  241. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  242. run_test "TLS 1.3: G->m: PSK: configured ephemeral only, good." \
  243. "$P_SRV force_version=tls13 tls13_kex_modes=all debug_level=5 $(get_srv_psk_list)" \
  244. "$G_NEXT_CLI -d 10 --priority NORMAL:-VERS-ALL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+VERS-TLS1.3:+GROUP-ALL \
  245. --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70 \
  246. localhost" \
  247. 0 \
  248. -s "key exchange mode: ephemeral$"
  249. requires_gnutls_tls1_3
  250. requires_config_enabled MBEDTLS_DEBUG_C
  251. requires_config_enabled MBEDTLS_SSL_CLI_C
  252. requires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
  253. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  254. MBEDTLS_SSL_EARLY_DATA
  255. requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
  256. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  257. run_test "TLS 1.3 m->G: EarlyData: basic check, good" \
  258. "$G_NEXT_SRV -d 10 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:+ECDHE-PSK:+PSK --earlydata --disable-client-cert" \
  259. "$P_CLI debug_level=4 early_data=1 reco_mode=1 reconnect=1 reco_delay=900" \
  260. 0 \
  261. -c "Reconnecting with saved session" \
  262. -c "NewSessionTicket: early_data(42) extension received." \
  263. -c "ClientHello: early_data(42) extension exists." \
  264. -c "EncryptedExtensions: early_data(42) extension received." \
  265. -c "EncryptedExtensions: early_data(42) extension exists." \
  266. -c "<= write EndOfEarlyData" \
  267. -s "Parsing extension 'Early Data/42' (0 bytes)" \
  268. -s "Sending extension Early Data/42 (0 bytes)" \
  269. -s "END OF EARLY DATA (5) was received." \
  270. -s "early data accepted"
  271. requires_gnutls_tls1_3
  272. requires_config_enabled MBEDTLS_DEBUG_C
  273. requires_config_enabled MBEDTLS_SSL_CLI_C
  274. requires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
  275. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  276. MBEDTLS_SSL_EARLY_DATA
  277. requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
  278. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  279. run_test "TLS 1.3 m->G: EarlyData: no early_data in NewSessionTicket, good" \
  280. "$G_NEXT_SRV -d 10 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:+ECDHE-PSK:+PSK --disable-client-cert" \
  281. "$P_CLI debug_level=4 early_data=1 reco_mode=1 reconnect=1" \
  282. 0 \
  283. -c "Reconnecting with saved session" \
  284. -C "NewSessionTicket: early_data(42) extension received." \
  285. -c "ClientHello: early_data(42) extension does not exist." \
  286. -C "EncryptedExtensions: early_data(42) extension received." \
  287. -C "EncryptedExtensions: early_data(42) extension exists."
  288. #TODO: OpenSSL tests don't work now. It might be openssl options issue, cause GnuTLS has worked.
  289. skip_next_test
  290. requires_openssl_tls1_3
  291. requires_config_enabled MBEDTLS_DEBUG_C
  292. requires_config_enabled MBEDTLS_SSL_CLI_C
  293. requires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
  294. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  295. MBEDTLS_SSL_EARLY_DATA
  296. requires_any_configs_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED \
  297. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  298. run_test "TLS 1.3, ext PSK, early data" \
  299. "$O_NEXT_SRV_EARLY_DATA -msg -debug -tls1_3 -psk_identity 0a0b0c -psk 010203 -allow_no_dhe_kex -nocert" \
  300. "$P_CLI debug_level=5 force_version=tls13 tls13_kex_modes=psk early_data=1 psk=010203 psk_identity=0a0b0c" \
  301. 1 \
  302. -c "Reconnecting with saved session" \
  303. -c "NewSessionTicket: early_data(42) extension received." \
  304. -c "ClientHello: early_data(42) extension exists." \
  305. -c "EncryptedExtensions: early_data(42) extension received." \
  306. -c "EncryptedExtensions: early_data(42) extension ( ignored )."
  307. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  308. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  309. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  310. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  311. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/none." \
  312. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=7" \
  313. "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
  314. 0 \
  315. -c "Pre-configured PSK number = 1" \
  316. -S "sent selected_identity:" \
  317. -s "key exchange mode: ephemeral" \
  318. -S "key exchange mode: psk_ephemeral" \
  319. -S "key exchange mode: psk$" \
  320. -s "No suitable key exchange mode" \
  321. -s "No matched PSK or ticket"
  322. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  323. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  324. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  325. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  326. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/psk." \
  327. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=8" \
  328. "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
  329. 0 \
  330. -c "Pre-configured PSK number = 1" \
  331. -S "No suitable key exchange mode" \
  332. -s "found matched identity"
  333. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  334. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  335. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  336. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  337. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/psk_ephemeral." \
  338. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=9" \
  339. "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
  340. 0 \
  341. -c "Pre-configured PSK number = 1" \
  342. -S "sent selected_identity:" \
  343. -s "key exchange mode: ephemeral" \
  344. -S "key exchange mode: psk_ephemeral" \
  345. -S "key exchange mode: psk$" \
  346. -s "No suitable key exchange mode" \
  347. -s "No matched PSK or ticket"
  348. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  349. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  350. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  351. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
  352. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk/psk_all." \
  353. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=10" \
  354. "$P_CLI debug_level=4 tls13_kex_modes=psk_or_ephemeral reconnect=1" \
  355. 0 \
  356. -c "Pre-configured PSK number = 1" \
  357. -S "No suitable key exchange mode" \
  358. -s "found matched identity"
  359. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  360. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  361. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  362. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  363. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/none." \
  364. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=7" \
  365. "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
  366. 0 \
  367. -c "Pre-configured PSK number = 1" \
  368. -S "sent selected_identity:" \
  369. -s "key exchange mode: ephemeral" \
  370. -S "key exchange mode: psk_ephemeral" \
  371. -S "key exchange mode: psk$" \
  372. -s "No suitable key exchange mode" \
  373. -s "No matched PSK or ticket"
  374. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  375. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  376. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  377. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  378. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/psk." \
  379. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=8" \
  380. "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
  381. 0 \
  382. -c "Pre-configured PSK number = 1" \
  383. -S "sent selected_identity:" \
  384. -s "key exchange mode: ephemeral" \
  385. -S "key exchange mode: psk_ephemeral" \
  386. -S "key exchange mode: psk$" \
  387. -s "No suitable key exchange mode" \
  388. -s "No matched PSK or ticket"
  389. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  390. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  391. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  392. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  393. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/psk_ephemeral." \
  394. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=9" \
  395. "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
  396. 0 \
  397. -c "Pre-configured PSK number = 1" \
  398. -S "No suitable key exchange mode" \
  399. -s "found matched identity"
  400. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  401. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  402. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  403. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  404. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_ephemeral/psk_all." \
  405. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=10" \
  406. "$P_CLI debug_level=4 tls13_kex_modes=ephemeral_all reconnect=1" \
  407. 0 \
  408. -c "Pre-configured PSK number = 1" \
  409. -S "No suitable key exchange mode" \
  410. -s "found matched identity"
  411. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  412. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  413. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  414. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
  415. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  416. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/none." \
  417. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=7" \
  418. "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
  419. 0 \
  420. -c "Pre-configured PSK number = 1" \
  421. -S "sent selected_identity:" \
  422. -s "key exchange mode: ephemeral" \
  423. -S "key exchange mode: psk_ephemeral" \
  424. -S "key exchange mode: psk$" \
  425. -s "No suitable key exchange mode" \
  426. -s "No matched PSK or ticket"
  427. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  428. 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_ENABLED \
  431. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  432. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/psk." \
  433. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=8" \
  434. "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
  435. 0 \
  436. -c "Pre-configured PSK number = 1" \
  437. -S "No suitable key exchange mode" \
  438. -s "found matched identity"
  439. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  440. 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
  444. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/psk_ephemeral." \
  445. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=9" \
  446. "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
  447. 0 \
  448. -c "Pre-configured PSK number = 1" \
  449. -S "No suitable key exchange mode" \
  450. -s "found matched identity"
  451. requires_all_configs_enabled MBEDTLS_SSL_SESSION_TICKETS \
  452. MBEDTLS_SSL_SRV_C MBEDTLS_SSL_CLI_C MBEDTLS_DEBUG_C \
  453. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
  454. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED \
  455. MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
  456. run_test "TLS 1.3 m->m: Resumption with ticket flags, psk_all/psk_all." \
  457. "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 dummy_ticket=10" \
  458. "$P_CLI debug_level=4 tls13_kex_modes=all reconnect=1" \
  459. 0 \
  460. -c "Pre-configured PSK number = 1" \
  461. -S "No suitable key exchange mode" \
  462. -s "found matched identity"