Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 1 | # (Minimal) ClientHello breakdown: |
| 2 | # 160303rlrl - record header, 2-byte record contents len |
| 3 | # 01hlhlhl - handshake header, 3-byte handshake message len |
| 4 | # 0303 - protocol version: 1.2 |
| 5 | # 0123456789abcdef (repeated, 4 times total) - 32-byte "random" |
| 6 | # 00 - session ID (empty) |
| 7 | # 0002cvcv - ciphersuite list: 2-byte len + list of 2-byte values (see below) |
| 8 | # 0100 - compression methods: 1-byte len then "null" (only legal value now) |
| 9 | # [then end, or extensions, see notes below] |
| 10 | # elel - 2-byte extensions length |
| 11 | # ... |
| 12 | # 000a - elliptic_curves aka supported_groups |
| 13 | # 0004 - extension length |
| 14 | # 0002 - length of named_curve_list / named_group_list |
| 15 | # 0017 - secp256r1 aka NIST P-256 |
| 16 | # ... |
| 17 | # 002b - supported version (for TLS 1.3) |
| 18 | # 0003 - extension length |
| 19 | # 02 - length of versions |
| 20 | # 0304 - TLS 1.3 ("SSL 3.4") |
| 21 | # ... |
| 22 | # 000d - signature algorithms |
| 23 | # 0004 - extension length |
| 24 | # 0002 - SignatureSchemeList length |
| 25 | # 0403 - ecdsa_secp256r1_sha256 |
| 26 | # ... |
| 27 | # 0033 - key share |
| 28 | # 0002 - extension length |
| 29 | # 0000 - length of client_shares (empty is valid) |
| 30 | # |
| 31 | # Note: currently our TLS "1.3 or 1.2" code requires extension length to be |
| 32 | # present even it it's 0. This is not strictly compliant but doesn't matter |
| 33 | # much in practice as these days everyone wants to use signature_algorithms |
| 34 | # (for hashes better than SHA-1), secure_renego (even if you have renego |
| 35 | # disabled), and most people want either ECC or PSK related extensions. |
| 36 | # See https://github.com/Mbed-TLS/mbedtls/issues/9963 |
| 37 | # |
| 38 | # Also, currently we won't negotiate ECC ciphersuites unless at least the |
| 39 | # supported_groups extension is present, see |
| 40 | # https://github.com/Mbed-TLS/mbedtls/issues/7458 |
| 41 | # |
| 42 | # For TLS 1.3 with ephemeral key exchange, mandatory extensions are: |
| 43 | # - supported versions (as for all of TLS 1.3) |
| 44 | # - supported groups |
| 45 | # - key share |
| 46 | # - signature algorithms |
| 47 | # (see ssl_tls13_client_hello_has_exts_for_ephemeral_key_exchange()). |
| 48 | # |
| 49 | # Note: cccc is currently not assigned, so can be used get a consistent |
| 50 | # "no matching ciphersuite" behaviour regardless of the configuration. |
| 51 | # c02b is MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (1.2) |
| 52 | # 1301 is MBEDTLS_TLS1_3_AES_128_GCM_SHA256 (1.3) |
| 53 | |
| 54 | # See "ClientHello breakdown" above |
| 55 | # MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 with secp256r1 |
| 56 | Inject ClientHello - TLS 1.2 good (for reference) |
| 57 | depends_on:MBEDTLS_SSL_PROTO_TLS1_2:MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_MD_CAN_SHA1 |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 58 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"16030300370100003303030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef000002c02b01000008000a000400020017":"<= parse client hello":0 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 59 | |
| 60 | # See "ClientHello breakdown" above |
| 61 | # Same as the above test with s/c02b/cccc/ as the ciphersuite |
| 62 | Inject ClientHello - TLS 1.2 unknown ciphersuite (for reference) |
| 63 | depends_on:MBEDTLS_SSL_PROTO_TLS1_2:MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_MD_CAN_SHA1 |
| 64 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303002f0100002b03030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef000002cccc01000000":"got no ciphersuites in common":MBEDTLS_ERR_SSL_HANDSHAKE_FAILURE |
| 65 | |
| 66 | # See "ClientHello breakdown" above |
| 67 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 68 | Inject ClientHello - TLS 1.3 good (for reference) |
| 69 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 70 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303004c0100004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"key exchange mode\: ephemeral":0 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 71 | |
| 72 | # See "ClientHello breakdown" above |
| 73 | # Same as the above test with s/1301/cccc/ as the ciphersuite |
| 74 | Inject ClientHello - TLS 1.3 unknown ciphersuite (for reference) |
| 75 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 76 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303004c0100004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef000002cccc0100001d000a000400020017002b0003020304000d000400020403003300020000":"No matched ciphersuite":MBEDTLS_ERR_SSL_HANDSHAKE_FAILURE |
| 77 | |
| 78 | # See "ClientHello breakdown" above |
| 79 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
Manuel Pégourié-Gonnard | b59caea | 2025-03-11 10:17:51 +0100 | [diff] [blame] | 80 | # The purpose of this test case is to ensure nothing bad happens when the |
| 81 | # connection is closed while we're waiting for more fragments. |
| 82 | Inject ClientHello - TLS 1.3 4 + 71 then EOF (missing 1 byte) |
| 83 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 84 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303000401000048160303004703030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d0004000204030033000200":"waiting for more handshake fragments":MBEDTLS_ERR_SSL_WANT_READ |
Manuel Pégourié-Gonnard | b59caea | 2025-03-11 10:17:51 +0100 | [diff] [blame] | 85 | |
| 86 | # See "ClientHello breakdown" above |
| 87 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 88 | # The purpose of this test case is to ensure nothing bad happens when the |
| 89 | # connection is closed while we're waiting for more fragments. |
| 90 | Inject ClientHello - TLS 1.3 4 then EOF (missing 72 bytes) |
| 91 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 92 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303000401000048":"waiting for more handshake fragments":MBEDTLS_ERR_SSL_WANT_READ |
Manuel Pégourié-Gonnard | b59caea | 2025-03-11 10:17:51 +0100 | [diff] [blame] | 93 | |
| 94 | # See "ClientHello breakdown" above |
| 95 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 96 | Inject ClientHello - TLS 1.3 fragmented 4 + 72 OK |
| 97 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 98 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303000401000048160303004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"key exchange mode\: ephemeral":0 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 99 | |
| 100 | # See "ClientHello breakdown" above |
| 101 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 102 | Inject ClientHello - TLS 1.3 fragmented 3 + 73 rejected |
| 103 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 104 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303000301000016030300494803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"handshake message too short":MBEDTLS_ERR_SSL_INVALID_RECORD |
| 105 | |
| 106 | # See "ClientHello breakdown" above |
| 107 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 108 | Inject ClientHello - TLS 1.3 fragmented 2 + 74 rejected |
| 109 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 110 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"16030300020100160303004a004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"handshake message too short":MBEDTLS_ERR_SSL_INVALID_RECORD |
| 111 | |
| 112 | # See "ClientHello breakdown" above |
| 113 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 114 | Inject ClientHello - TLS 1.3 fragmented 1 + 75 rejected |
| 115 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 116 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303000101160303004b00004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"handshake message too short":MBEDTLS_ERR_SSL_INVALID_RECORD |
| 117 | |
| 118 | # See "ClientHello breakdown" above |
| 119 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 120 | Inject ClientHello - TLS 1.3 fragmented 0 + 76 rejected |
| 121 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 122 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"1603030000160303004c0100004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"ssl_get_next_record() returned":MBEDTLS_ERR_SSL_INVALID_RECORD |
| 123 | |
| 124 | # See "ClientHello breakdown" above |
| 125 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 126 | Inject ClientHello - TLS 1.3 fragmented 72 + 4 OK |
| 127 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 128 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"16030300480100004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d0004000204030033160303000400020000":"key exchange mode\: ephemeral":0 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 129 | |
| 130 | # See "ClientHello breakdown" above |
| 131 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 132 | Inject ClientHello - TLS 1.3 fragmented 73 + 3 OK |
| 133 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 134 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"16030300490100004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d0004000204030033001603030003020000":"key exchange mode\: ephemeral":0 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 135 | |
| 136 | # See "ClientHello breakdown" above |
| 137 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 138 | Inject ClientHello - TLS 1.3 fragmented 74 + 2 OK |
| 139 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 140 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303004a0100004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d0004000204030033000216030300020000":"key exchange mode\: ephemeral":0 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 141 | |
| 142 | # See "ClientHello breakdown" above |
| 143 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 144 | Inject ClientHello - TLS 1.3 fragmented 73 + 1 OK |
| 145 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | 43a04e7 | 2025-03-11 12:12:51 +0100 | [diff] [blame] | 146 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303004b0100004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d0004000204030033000200160303000100":"key exchange mode\: ephemeral":0 |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 147 | |
| 148 | # See "ClientHello breakdown" above |
| 149 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 150 | Inject ClientHello - TLS 1.3 fragmented 4 + appdata + 72 rejected |
| 151 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | c6cf7e5 | 2025-03-05 12:52:18 +0100 | [diff] [blame] | 152 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"16030300040100004817030300020102160303004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"non-handshake message in the middle of a fragmented handshake message":MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 153 | |
| 154 | # See "ClientHello breakdown" above |
| 155 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
Manuel Pégourié-Gonnard | c6cf7e5 | 2025-03-05 12:52:18 +0100 | [diff] [blame] | 156 | Inject ClientHello - TLS 1.3 fragmented 4 + alert(warn) + 72 rejected |
| 157 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 158 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"1603030004010000481503030002015a160303004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"non-handshake message in the middle of a fragmented handshake message":MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 159 | |
| 160 | # See "ClientHello breakdown" above |
| 161 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 162 | Inject ClientHello - TLS 1.3 fragmented 4 + alert(fatal) + 72 rejected |
| 163 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
Manuel Pégourié-Gonnard | c6cf7e5 | 2025-03-05 12:52:18 +0100 | [diff] [blame] | 164 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"1603030004010000481503030002025a160303004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"non-handshake message in the middle of a fragmented handshake message":MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 165 | |
| 166 | # See "ClientHello breakdown" above |
| 167 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
Manuel Pégourié-Gonnard | c6cf7e5 | 2025-03-05 12:52:18 +0100 | [diff] [blame] | 168 | Inject ClientHello - TLS 1.3 fragmented 4 + CCS + 72 rejected |
| 169 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 170 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"160303000401000048140303000101160303004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"non-handshake message in the middle of a fragmented handshake message":MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 171 | |
| 172 | # See "ClientHello breakdown" above |
| 173 | # ephemeral with secp256r1 + MBEDTLS_TLS1_3_AES_128_GCM_SHA256 |
| 174 | Inject ClientHello - TLS 1.3 fragmented 4 + invalid type + 72 rejected |
| 175 | depends_on:MBEDTLS_SSL_PROTO_TLS1_3:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_SSL_HAVE_AES:MBEDTLS_MD_CAN_SHA256:MBEDTLS_SSL_HAVE_GCM:MBEDTLS_ECP_HAVE_SECP256R1:MBEDTLS_ECP_HAVE_SECP384R1:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_PK_CAN_ECDSA_VERIFY |
| 176 | inject_client_content_on_the_wire:MBEDTLS_PK_ECDSA:MBEDTLS_SSL_CLIENT_HELLO:"1603030004010000481003030002015a160303004803030123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000213010100001d000a000400020017002b0003020304000d000400020403003300020000":"unknown record type":MBEDTLS_ERR_SSL_INVALID_RECORD |
| 177 | |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 178 | # The buffer is actually larger than IN_CONTENT_LEN as we leave room for |
| 179 | # record protection overhead (IV, MAC/tag, padding (up to 256 bytes)), CID... |
Manuel Pégourié-Gonnard | 29073e3 | 2025-03-11 10:26:36 +0100 | [diff] [blame] | 180 | # The maximum size for an unencrypted (and without CID which is DTLS only) |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 181 | # handshake message we can hold in the buffer is |
| 182 | # MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 4 |
| 183 | # (the 4 is for the handshake header). |
| 184 | # However, due to overhead, fragmented messages need to be 5 bytes shorter in |
| 185 | # order to actually fit (leave room for an extra record header). |
| 186 | Send large fragmented ClientHello: reassembled 1 byte larger than the buffer |
| 187 | send_large_fragmented_hello:MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 3:0:"requesting more data than fits":MBEDTLS_ERR_SSL_BAD_INPUT_DATA |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 188 | |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 189 | Send large fragmented ClientHello: would just fit except for overhead |
| 190 | send_large_fragmented_hello:MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 4:0:"requesting more data than fits":MBEDTLS_ERR_SSL_BAD_INPUT_DATA |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 191 | |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 192 | Send large fragmented ClientHello: would fit except for overhead (1) |
| 193 | send_large_fragmented_hello:MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 5:0:"requesting more data than fits":MBEDTLS_ERR_SSL_BAD_INPUT_DATA |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 194 | |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 195 | Send large fragmented ClientHello: would fit except for overhead (2) |
| 196 | send_large_fragmented_hello:MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 6:0:"requesting more data than fits":MBEDTLS_ERR_SSL_BAD_INPUT_DATA |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 197 | |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 198 | Send large fragmented ClientHello: would fit except for overhead (3) |
| 199 | send_large_fragmented_hello:MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 7:0:"requesting more data than fits":MBEDTLS_ERR_SSL_BAD_INPUT_DATA |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 200 | |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 201 | Send large fragmented ClientHello: would fit except for overhead (4) |
| 202 | send_large_fragmented_hello:MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 8:0:"requesting more data than fits":MBEDTLS_ERR_SSL_BAD_INPUT_DATA |
Manuel Pégourié-Gonnard | adad476 | 2025-03-04 10:18:30 +0100 | [diff] [blame] | 203 | |
Manuel Pégourié-Gonnard | 8577510 | 2025-03-07 12:36:08 +0100 | [diff] [blame] | 204 | # Since we're sending dummy contents (all 0x2a) for the ClientHello, |
| 205 | # the first thing that's going to fail is the version check. The fact that we |
| 206 | # got around to checking it confirms reassembly completed sucessfully. |
| 207 | Send large fragmented ClientHello: just fits |
| 208 | send_large_fragmented_hello:MBEDTLS_SSL_IN_BUFFER_LEN - MBEDTLS_SSL_HEADER_LEN - 9:0:"Unsupported version of TLS":MBEDTLS_ERR_SSL_BAD_PROTOCOL_VERSION |
Manuel Pégourié-Gonnard | d2197af | 2025-03-07 12:53:43 +0100 | [diff] [blame] | 209 | |
| 210 | # We're generating a virtual record header for the reassembled HS message, |
| 211 | # which requires that the length fits in two bytes. Of course we won't get |
| 212 | # there because if the length doesn't fit in two bytes then the message won't |
| 213 | # fit in the buffer, but still add a test just in case. |
| 214 | Send large fragmented ClientHello: length doesn't fit in two bytes |
| 215 | send_large_fragmented_hello:0x10000:0:"requesting more data than fits":MBEDTLS_ERR_SSL_BAD_INPUT_DATA |