/src/serenity/Userland/Libraries/LibTLS/Extensions.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2020, Ali Mohammad Pur <mpfard@serenityos.org> |
3 | | * Copyright (c) 2023, stelar7 <dudedbz@gmail.com> |
4 | | * |
5 | | * SPDX-License-Identifier: BSD-2-Clause |
6 | | */ |
7 | | |
8 | | #pragma once |
9 | | |
10 | | #include <AK/Types.h> |
11 | | |
12 | | namespace TLS { |
13 | | |
14 | | #define _ENUM_KEY(name) name, |
15 | | #define _ENUM_KEY_VALUE(name, value) name = value, |
16 | | |
17 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-5 |
18 | | #define __ENUM_CONTENT_TYPES \ |
19 | | _ENUM_KEY_VALUE(CHANGE_CIPHER_SPEC, 20) \ |
20 | | _ENUM_KEY_VALUE(ALERT, 21) \ |
21 | | _ENUM_KEY_VALUE(HANDSHAKE, 22) \ |
22 | | _ENUM_KEY_VALUE(APPLICATION_DATA, 23) \ |
23 | | _ENUM_KEY_VALUE(HEARTBEAT, 24) \ |
24 | | _ENUM_KEY_VALUE(TLS12_CID, 25) \ |
25 | | _ENUM_KEY_VALUE(ACK, 26) |
26 | | |
27 | | enum class ContentType : u8 { |
28 | | __ENUM_CONTENT_TYPES |
29 | | }; |
30 | | |
31 | | #define __ENUM_PROTOCOL_VERSIONS \ |
32 | | _ENUM_KEY_VALUE(VERSION_1_3, 0x0304) \ |
33 | | _ENUM_KEY_VALUE(VERSION_1_2, 0x0303) \ |
34 | | _ENUM_KEY_VALUE(VERSION_1_1, 0x0302) \ |
35 | | _ENUM_KEY_VALUE(VERSION_1_0, 0x0301) \ |
36 | | _ENUM_KEY_VALUE(GREASE_0, 0x0A0A) \ |
37 | | _ENUM_KEY_VALUE(GREASE_1, 0x1A1A) \ |
38 | | _ENUM_KEY_VALUE(GREASE_2, 0x2A2A) \ |
39 | | _ENUM_KEY_VALUE(GREASE_3, 0x3A3A) \ |
40 | | _ENUM_KEY_VALUE(GREASE_4, 0x4A4A) \ |
41 | | _ENUM_KEY_VALUE(GREASE_5, 0x5A5A) \ |
42 | | _ENUM_KEY_VALUE(GREASE_6, 0x6A6A) \ |
43 | | _ENUM_KEY_VALUE(GREASE_7, 0x7A7A) \ |
44 | | _ENUM_KEY_VALUE(GREASE_8, 0x8A8A) \ |
45 | | _ENUM_KEY_VALUE(GREASE_9, 0x9A9A) \ |
46 | | _ENUM_KEY_VALUE(GREASE_A, 0xAAAA) \ |
47 | | _ENUM_KEY_VALUE(GREASE_B, 0xBABA) \ |
48 | | _ENUM_KEY_VALUE(GREASE_C, 0xCACA) \ |
49 | | _ENUM_KEY_VALUE(GREASE_D, 0xDADA) \ |
50 | | _ENUM_KEY_VALUE(GREASE_E, 0xEAEA) \ |
51 | | _ENUM_KEY_VALUE(GREASE_F, 0xFAFA) |
52 | | |
53 | | enum class ProtocolVersion : u16 { |
54 | | __ENUM_PROTOCOL_VERSIONS |
55 | | }; |
56 | | |
57 | | #define __ENUM_ALERT_LEVELS \ |
58 | | _ENUM_KEY_VALUE(WARNING, 1) \ |
59 | | _ENUM_KEY_VALUE(FATAL, 2) |
60 | | |
61 | | enum class AlertLevel : u8 { |
62 | | __ENUM_ALERT_LEVELS |
63 | | }; |
64 | | |
65 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-7 |
66 | | #define __ENUM_HANDSHAKE_TYPES \ |
67 | | _ENUM_KEY_VALUE(HELLO_REQUEST_RESERVED, 0) \ |
68 | | _ENUM_KEY_VALUE(CLIENT_HELLO, 1) \ |
69 | | _ENUM_KEY_VALUE(SERVER_HELLO, 2) \ |
70 | | _ENUM_KEY_VALUE(HELLO_VERIFY_REQUEST_RESERVED, 3) \ |
71 | | _ENUM_KEY_VALUE(NEW_SESSION_TICKET, 4) \ |
72 | | _ENUM_KEY_VALUE(END_OF_EARLY_DATA, 5) \ |
73 | | _ENUM_KEY_VALUE(HELLO_RETRY_REQUEST_RESERVED, 6) \ |
74 | | _ENUM_KEY_VALUE(ENCRYPTED_EXTENSIONS, 8) \ |
75 | | _ENUM_KEY_VALUE(REQUEST_CONNECTION_ID, 9) \ |
76 | | _ENUM_KEY_VALUE(NEW_CONNECTION_ID, 10) \ |
77 | | _ENUM_KEY_VALUE(CERTIFICATE, 11) \ |
78 | | _ENUM_KEY_VALUE(SERVER_KEY_EXCHANGE_RESERVED, 12) \ |
79 | | _ENUM_KEY_VALUE(CERTIFICATE_REQUEST, 13) \ |
80 | | _ENUM_KEY_VALUE(SERVER_HELLO_DONE_RESERVED, 14) \ |
81 | | _ENUM_KEY_VALUE(CERTIFICATE_VERIFY, 15) \ |
82 | | _ENUM_KEY_VALUE(CLIENT_KEY_EXCHANGE_RESERVED, 16) \ |
83 | | _ENUM_KEY_VALUE(FINISHED, 20) \ |
84 | | _ENUM_KEY_VALUE(CERTIFICATE_URL_RESERVED, 21) \ |
85 | | _ENUM_KEY_VALUE(CERTIFICATE_STATUS_RESERVED, 22) \ |
86 | | _ENUM_KEY_VALUE(SUPPLEMENTAL_DATA_RESERVED, 23) \ |
87 | | _ENUM_KEY_VALUE(KEY_UPDATE, 24) \ |
88 | | _ENUM_KEY_VALUE(COMPRESSED_CERTIFICATE, 25) \ |
89 | | _ENUM_KEY_VALUE(EKT_KEY, 26) \ |
90 | | _ENUM_KEY_VALUE(MESSAGE_HASH, 254) |
91 | | |
92 | | enum class HandshakeType : u8 { |
93 | | __ENUM_HANDSHAKE_TYPES |
94 | | }; |
95 | | |
96 | | // https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-1 |
97 | | #define __ENUM_EXTENSION_TYPES \ |
98 | | _ENUM_KEY_VALUE(SERVER_NAME, 0) \ |
99 | | _ENUM_KEY_VALUE(MAX_FRAGMENT_LENGTH, 1) \ |
100 | | _ENUM_KEY_VALUE(CLIENT_CERTIFICATE_URL, 2) \ |
101 | | _ENUM_KEY_VALUE(TRUSTED_CA_KEYS, 3) \ |
102 | | _ENUM_KEY_VALUE(TRUNCATED_HMAC, 4) \ |
103 | | _ENUM_KEY_VALUE(STATUS_REQUEST, 5) \ |
104 | | _ENUM_KEY_VALUE(USER_MAPPING, 6) \ |
105 | | _ENUM_KEY_VALUE(CLIENT_AUTHZ, 7) \ |
106 | | _ENUM_KEY_VALUE(SERVER_AUTHZ, 8) \ |
107 | | _ENUM_KEY_VALUE(CERT_TYPE, 9) \ |
108 | | _ENUM_KEY_VALUE(SUPPORTED_GROUPS, 10) \ |
109 | | _ENUM_KEY_VALUE(EC_POINT_FORMATS, 11) \ |
110 | | _ENUM_KEY_VALUE(SRP, 12) \ |
111 | | _ENUM_KEY_VALUE(SIGNATURE_ALGORITHMS, 13) \ |
112 | | _ENUM_KEY_VALUE(USE_SRTP, 14) \ |
113 | | _ENUM_KEY_VALUE(HEARTBEAT, 15) \ |
114 | | _ENUM_KEY_VALUE(APPLICATION_LAYER_PROTOCOL_NEGOTIATION, 16) \ |
115 | | _ENUM_KEY_VALUE(STATUS_REQUEST_V2, 17) \ |
116 | | _ENUM_KEY_VALUE(SIGNED_CERTIFICATE_TIMESTAMP, 18) \ |
117 | | _ENUM_KEY_VALUE(CLIENT_CERTIFICATE_TYPE, 19) \ |
118 | | _ENUM_KEY_VALUE(SERVER_CERTIFICATE_TYPE, 20) \ |
119 | | _ENUM_KEY_VALUE(PADDING, 21) \ |
120 | | _ENUM_KEY_VALUE(ENCRYPT_THEN_MAC, 22) \ |
121 | | _ENUM_KEY_VALUE(EXTENDED_MASTER_SECRET, 23) \ |
122 | | _ENUM_KEY_VALUE(TOKEN_BINDING, 24) \ |
123 | | _ENUM_KEY_VALUE(CACHED_INFO, 25) \ |
124 | | _ENUM_KEY_VALUE(TLS_LTS, 26) \ |
125 | | _ENUM_KEY_VALUE(COMPRESS_CERTIFICATE, 27) \ |
126 | | _ENUM_KEY_VALUE(RECORD_SIZE_LIMIT, 28) \ |
127 | | _ENUM_KEY_VALUE(PWD_PROTECT, 29) \ |
128 | | _ENUM_KEY_VALUE(PWD_CLEAR, 30) \ |
129 | | _ENUM_KEY_VALUE(PASSWORD_SALT, 31) \ |
130 | | _ENUM_KEY_VALUE(TICKET_PINNING, 32) \ |
131 | | _ENUM_KEY_VALUE(TLS_CERT_WITH_EXTERN_PSK, 33) \ |
132 | | _ENUM_KEY_VALUE(DELEGATED_CREDENTIALS, 34) \ |
133 | | _ENUM_KEY_VALUE(SESSION_TICKET, 35) \ |
134 | | _ENUM_KEY_VALUE(TLMSP, 36) \ |
135 | | _ENUM_KEY_VALUE(TLMSP_PROXYING, 37) \ |
136 | | _ENUM_KEY_VALUE(TLMSP_DELEGATE, 38) \ |
137 | | _ENUM_KEY_VALUE(SUPPORTED_EKT_CIPHERS, 39) \ |
138 | | _ENUM_KEY_VALUE(PRE_SHARED_KEY, 41) \ |
139 | | _ENUM_KEY_VALUE(EARLY_DATA, 42) \ |
140 | | _ENUM_KEY_VALUE(SUPPORTED_VERSIONS, 43) \ |
141 | | _ENUM_KEY_VALUE(COOKIE, 44) \ |
142 | | _ENUM_KEY_VALUE(PSK_KEY_EXCHANGE_MODES, 45) \ |
143 | | _ENUM_KEY_VALUE(CERTIFICATE_AUTHORITIES, 47) \ |
144 | | _ENUM_KEY_VALUE(OID_FILTERS, 48) \ |
145 | | _ENUM_KEY_VALUE(POST_HANDSHAKE_AUTH, 49) \ |
146 | | _ENUM_KEY_VALUE(SIGNATURE_ALGORITHMS_CERT, 50) \ |
147 | | _ENUM_KEY_VALUE(KEY_SHARE, 51) \ |
148 | | _ENUM_KEY_VALUE(TRANSPARENCY_INFO, 52) \ |
149 | | _ENUM_KEY_VALUE(CONNECTION_ID_DEPRECATED, 53) \ |
150 | | _ENUM_KEY_VALUE(CONNECTION_ID, 54) \ |
151 | | _ENUM_KEY_VALUE(EXTERNAL_ID_HASH, 55) \ |
152 | | _ENUM_KEY_VALUE(EXTERNAL_SESSION_ID, 56) \ |
153 | | _ENUM_KEY_VALUE(QUIC_TRANSPORT_PARAMETERS, 57) \ |
154 | | _ENUM_KEY_VALUE(TICKET_REQUEST, 58) \ |
155 | | _ENUM_KEY_VALUE(DNSSEC_CHAIN, 59) \ |
156 | | _ENUM_KEY_VALUE(RENEGOTIATION_INFO, 65281) |
157 | | |
158 | | enum class ExtensionType : u16 { |
159 | | __ENUM_EXTENSION_TYPES |
160 | | }; |
161 | | |
162 | | #define __ENUM_NAME_TYPES \ |
163 | | _ENUM_KEY_VALUE(HOST_NAME, 0) |
164 | | |
165 | | enum class NameType : u8 { |
166 | | __ENUM_NAME_TYPES |
167 | | }; |
168 | | |
169 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-10 |
170 | | #define __ENUM_EC_CURVE_TYPES \ |
171 | | _ENUM_KEY_VALUE(EXPLICIT_PRIME, 1) \ |
172 | | _ENUM_KEY_VALUE(EXPLICIT_CHAR2, 2) \ |
173 | | _ENUM_KEY_VALUE(NAMED_CURVE, 3) |
174 | | |
175 | | enum class ECCurveType : u8 { |
176 | | __ENUM_EC_CURVE_TYPES |
177 | | }; |
178 | | |
179 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 |
180 | | #define __ENUM_SUPPORTED_GROUPS \ |
181 | | _ENUM_KEY_VALUE(SECT163K1, 0x0001) \ |
182 | | _ENUM_KEY_VALUE(SECT163R1, 0x0002) \ |
183 | | _ENUM_KEY_VALUE(SECT163R2, 0x0003) \ |
184 | | _ENUM_KEY_VALUE(SECT193R1, 0x0004) \ |
185 | | _ENUM_KEY_VALUE(SECT193R2, 0x0005) \ |
186 | | _ENUM_KEY_VALUE(SECT233K1, 0x0006) \ |
187 | | _ENUM_KEY_VALUE(SECT233R1, 0x0007) \ |
188 | | _ENUM_KEY_VALUE(SECT239K1, 0x0008) \ |
189 | | _ENUM_KEY_VALUE(SECT283K1, 0x0009) \ |
190 | | _ENUM_KEY_VALUE(SECT283R1, 0x000a) \ |
191 | | _ENUM_KEY_VALUE(SECT409K1, 0x000b) \ |
192 | | _ENUM_KEY_VALUE(SECT409R1, 0x000c) \ |
193 | | _ENUM_KEY_VALUE(SECT571K1, 0x000d) \ |
194 | | _ENUM_KEY_VALUE(SECT571R1, 0x000e) \ |
195 | | _ENUM_KEY_VALUE(SECP160K1, 0x000f) \ |
196 | | _ENUM_KEY_VALUE(SECP160R1, 0x0010) \ |
197 | | _ENUM_KEY_VALUE(SECP160R2, 0x0011) \ |
198 | | _ENUM_KEY_VALUE(SECP192K1, 0x0012) \ |
199 | | _ENUM_KEY_VALUE(SECP192R1, 0x0013) \ |
200 | | _ENUM_KEY_VALUE(SECP224K1, 0x0014) \ |
201 | | _ENUM_KEY_VALUE(SECP224R1, 0x0015) \ |
202 | | _ENUM_KEY_VALUE(SECP256K1, 0x0016) \ |
203 | | _ENUM_KEY_VALUE(SECP256R1, 0x0017) \ |
204 | | _ENUM_KEY_VALUE(SECP384R1, 0x0018) \ |
205 | | _ENUM_KEY_VALUE(SECP521R1, 0x0019) \ |
206 | | _ENUM_KEY_VALUE(BRAINPOOLP256R1, 0x001a) \ |
207 | | _ENUM_KEY_VALUE(BRAINPOOLP384R1, 0x001b) \ |
208 | | _ENUM_KEY_VALUE(BRAINPOOLP512R1, 0x001c) \ |
209 | | _ENUM_KEY_VALUE(X25519, 0x001d) \ |
210 | | _ENUM_KEY_VALUE(X448, 0x001e) \ |
211 | | _ENUM_KEY_VALUE(BRAINPOOLP256R1TLS13, 0x001f) \ |
212 | | _ENUM_KEY_VALUE(BRAINPOOLP384R1TLS13, 0x0020) \ |
213 | | _ENUM_KEY_VALUE(BRAINPOOLP512R1TLS13, 0x0021) \ |
214 | | _ENUM_KEY_VALUE(GC256A, 0x0022) \ |
215 | | _ENUM_KEY_VALUE(GC256B, 0x0023) \ |
216 | | _ENUM_KEY_VALUE(GC256C, 0x0024) \ |
217 | | _ENUM_KEY_VALUE(GC256D, 0x0025) \ |
218 | | _ENUM_KEY_VALUE(GC512A, 0x0026) \ |
219 | | _ENUM_KEY_VALUE(GC512B, 0x0027) \ |
220 | | _ENUM_KEY_VALUE(GC512C, 0x0028) \ |
221 | | _ENUM_KEY_VALUE(CURVESM2, 0x0029) \ |
222 | | _ENUM_KEY_VALUE(FFDHE2048, 0x0100) \ |
223 | | _ENUM_KEY_VALUE(FFDHE3072, 0x0101) \ |
224 | | _ENUM_KEY_VALUE(FFDHE4096, 0x0102) \ |
225 | | _ENUM_KEY_VALUE(FFDHE6144, 0x0103) \ |
226 | | _ENUM_KEY_VALUE(FFDHE8192, 0x0104) \ |
227 | | _ENUM_KEY_VALUE(ARBITRARY_EXPLICIT_PRIME_CURVES, 0xff01) \ |
228 | | _ENUM_KEY_VALUE(ARBITRARY_EXPLICIT_CHAR2_CURVES, 0xff02) \ |
229 | | _ENUM_KEY_VALUE(GREASE_0, 0x0A0A) \ |
230 | | _ENUM_KEY_VALUE(GREASE_1, 0x1A1A) \ |
231 | | _ENUM_KEY_VALUE(GREASE_2, 0x2A2A) \ |
232 | | _ENUM_KEY_VALUE(GREASE_3, 0x3A3A) \ |
233 | | _ENUM_KEY_VALUE(GREASE_4, 0x4A4A) \ |
234 | | _ENUM_KEY_VALUE(GREASE_5, 0x5A5A) \ |
235 | | _ENUM_KEY_VALUE(GREASE_6, 0x6A6A) \ |
236 | | _ENUM_KEY_VALUE(GREASE_7, 0x7A7A) \ |
237 | | _ENUM_KEY_VALUE(GREASE_8, 0x8A8A) \ |
238 | | _ENUM_KEY_VALUE(GREASE_9, 0x9A9A) \ |
239 | | _ENUM_KEY_VALUE(GREASE_A, 0xAAAA) \ |
240 | | _ENUM_KEY_VALUE(GREASE_B, 0xBABA) \ |
241 | | _ENUM_KEY_VALUE(GREASE_C, 0xCACA) \ |
242 | | _ENUM_KEY_VALUE(GREASE_D, 0xDADA) \ |
243 | | _ENUM_KEY_VALUE(GREASE_E, 0xEAEA) \ |
244 | | _ENUM_KEY_VALUE(GREASE_F, 0xFAFA) |
245 | | |
246 | | enum class SupportedGroup : u16 { |
247 | | __ENUM_SUPPORTED_GROUPS |
248 | | }; |
249 | | |
250 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-9 |
251 | | #define __ENUM_EC_POINT_FORMATS \ |
252 | | _ENUM_KEY_VALUE(UNCOMPRESSED, 0) \ |
253 | | _ENUM_KEY_VALUE(ANSIX962_COMPRESSED_PRIME, 1) \ |
254 | | _ENUM_KEY_VALUE(ANSIX962_COMPRESSED_CHAR2, 2) |
255 | | |
256 | | enum class ECPointFormat : u8 { |
257 | | __ENUM_EC_POINT_FORMATS |
258 | | }; |
259 | | |
260 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-16 |
261 | | #define __ENUM_SIGNATURE_ALGORITHM \ |
262 | | _ENUM_KEY_VALUE(ANONYMOUS, 0) \ |
263 | | _ENUM_KEY_VALUE(RSA, 1) \ |
264 | | _ENUM_KEY_VALUE(DSA, 2) \ |
265 | | _ENUM_KEY_VALUE(ECDSA, 3) \ |
266 | | _ENUM_KEY_VALUE(ED25519, 7) \ |
267 | | _ENUM_KEY_VALUE(ED448, 8) \ |
268 | | _ENUM_KEY_VALUE(GOSTR34102012_256, 64) \ |
269 | | _ENUM_KEY_VALUE(GOSTR34102012_512, 65) |
270 | | |
271 | | enum class SignatureAlgorithm : u8 { |
272 | | __ENUM_SIGNATURE_ALGORITHM |
273 | | }; |
274 | | |
275 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-18 |
276 | | #define __ENUM_HASH_ALGORITHM \ |
277 | | _ENUM_KEY_VALUE(NONE, 0) \ |
278 | | _ENUM_KEY_VALUE(MD5, 1) \ |
279 | | _ENUM_KEY_VALUE(SHA1, 2) \ |
280 | | _ENUM_KEY_VALUE(SHA224, 3) \ |
281 | | _ENUM_KEY_VALUE(SHA256, 4) \ |
282 | | _ENUM_KEY_VALUE(SHA384, 5) \ |
283 | | _ENUM_KEY_VALUE(SHA512, 6) \ |
284 | | _ENUM_KEY_VALUE(INTRINSIC, 8) |
285 | | |
286 | | enum class HashAlgorithm : u8 { |
287 | | __ENUM_HASH_ALGORITHM |
288 | | }; |
289 | | |
290 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4 |
291 | | #define __ENUM_CIPHER_SUITES \ |
292 | | _ENUM_KEY_VALUE(TLS_NULL_WITH_NULL_NULL, 0x0000) \ |
293 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_NULL_MD5, 0x0001) \ |
294 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_NULL_SHA, 0x0002) \ |
295 | | _ENUM_KEY_VALUE(TLS_RSA_EXPORT_WITH_RC4_40_MD5, 0x0003) \ |
296 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_RC4_128_MD5, 0x0004) \ |
297 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_RC4_128_SHA, 0x0005) \ |
298 | | _ENUM_KEY_VALUE(TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5, 0x0006) \ |
299 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_IDEA_CBC_SHA, 0x0007) \ |
300 | | _ENUM_KEY_VALUE(TLS_RSA_EXPORT_WITH_DES40_CBC_SHA, 0x0008) \ |
301 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_DES_CBC_SHA, 0x0009) \ |
302 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_3DES_EDE_CBC_SHA, 0x000A) \ |
303 | | _ENUM_KEY_VALUE(TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA, 0x000B) \ |
304 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_DES_CBC_SHA, 0x000C) \ |
305 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA, 0x000D) \ |
306 | | _ENUM_KEY_VALUE(TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA, 0x000E) \ |
307 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_DES_CBC_SHA, 0x000F) \ |
308 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA, 0x0010) \ |
309 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, 0x0011) \ |
310 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_DES_CBC_SHA, 0x0012) \ |
311 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, 0x0013) \ |
312 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, 0x0014) \ |
313 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_DES_CBC_SHA, 0x0015) \ |
314 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, 0x0016) \ |
315 | | _ENUM_KEY_VALUE(TLS_DH_anon_EXPORT_WITH_RC4_40_MD5, 0x0017) \ |
316 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_RC4_128_MD5, 0x0018) \ |
317 | | _ENUM_KEY_VALUE(TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA, 0x0019) \ |
318 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_DES_CBC_SHA, 0x001A) \ |
319 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_3DES_EDE_CBC_SHA, 0x001B) \ |
320 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_DES_CBC_SHA, 0x001E) \ |
321 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_3DES_EDE_CBC_SHA, 0x001F) \ |
322 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_RC4_128_SHA, 0x0020) \ |
323 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_IDEA_CBC_SHA, 0x0021) \ |
324 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_DES_CBC_MD5, 0x0022) \ |
325 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_3DES_EDE_CBC_MD5, 0x0023) \ |
326 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_RC4_128_MD5, 0x0024) \ |
327 | | _ENUM_KEY_VALUE(TLS_KRB5_WITH_IDEA_CBC_MD5, 0x0025) \ |
328 | | _ENUM_KEY_VALUE(TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA, 0x0026) \ |
329 | | _ENUM_KEY_VALUE(TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA, 0x0027) \ |
330 | | _ENUM_KEY_VALUE(TLS_KRB5_EXPORT_WITH_RC4_40_SHA, 0x0028) \ |
331 | | _ENUM_KEY_VALUE(TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5, 0x0029) \ |
332 | | _ENUM_KEY_VALUE(TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5, 0x002A) \ |
333 | | _ENUM_KEY_VALUE(TLS_KRB5_EXPORT_WITH_RC4_40_MD5, 0x002B) \ |
334 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_NULL_SHA, 0x002C) \ |
335 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_NULL_SHA, 0x002D) \ |
336 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_NULL_SHA, 0x002E) \ |
337 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_128_CBC_SHA, 0x002F) \ |
338 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_AES_128_CBC_SHA, 0x0030) \ |
339 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_AES_128_CBC_SHA, 0x0031) \ |
340 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_AES_128_CBC_SHA, 0x0032) \ |
341 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_128_CBC_SHA, 0x0033) \ |
342 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_AES_128_CBC_SHA, 0x0034) \ |
343 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_256_CBC_SHA, 0x0035) \ |
344 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_AES_256_CBC_SHA, 0x0036) \ |
345 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_AES_256_CBC_SHA, 0x0037) \ |
346 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_AES_256_CBC_SHA, 0x0038) \ |
347 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_256_CBC_SHA, 0x0039) \ |
348 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_AES_256_CBC_SHA, 0x003A) \ |
349 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_NULL_SHA256, 0x003B) \ |
350 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_128_CBC_SHA256, 0x003C) \ |
351 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_256_CBC_SHA256, 0x003D) \ |
352 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_AES_128_CBC_SHA256, 0x003E) \ |
353 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_AES_128_CBC_SHA256, 0x003F) \ |
354 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, 0x0040) \ |
355 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, 0x0041) \ |
356 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, 0x0042) \ |
357 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, 0x0043) \ |
358 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, 0x0044) \ |
359 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, 0x0045) \ |
360 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA, 0x0046) \ |
361 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, 0x0067) \ |
362 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_AES_256_CBC_SHA256, 0x0068) \ |
363 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_AES_256_CBC_SHA256, 0x0069) \ |
364 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, 0x006A) \ |
365 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, 0x006B) \ |
366 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_AES_128_CBC_SHA256, 0x006C) \ |
367 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_AES_256_CBC_SHA256, 0x006D) \ |
368 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, 0x0084) \ |
369 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, 0x0085) \ |
370 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, 0x0086) \ |
371 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, 0x0087) \ |
372 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, 0x0088) \ |
373 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA, 0x0089) \ |
374 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_RC4_128_SHA, 0x008A) \ |
375 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_3DES_EDE_CBC_SHA, 0x008B) \ |
376 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_128_CBC_SHA, 0x008C) \ |
377 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_256_CBC_SHA, 0x008D) \ |
378 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_RC4_128_SHA, 0x008E) \ |
379 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, 0x008F) \ |
380 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_128_CBC_SHA, 0x0090) \ |
381 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_256_CBC_SHA, 0x0091) \ |
382 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_RC4_128_SHA, 0x0092) \ |
383 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, 0x0093) \ |
384 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_AES_128_CBC_SHA, 0x0094) \ |
385 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_AES_256_CBC_SHA, 0x0095) \ |
386 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_SEED_CBC_SHA, 0x0096) \ |
387 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_SEED_CBC_SHA, 0x0097) \ |
388 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_SEED_CBC_SHA, 0x0098) \ |
389 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_SEED_CBC_SHA, 0x0099) \ |
390 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_SEED_CBC_SHA, 0x009A) \ |
391 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_SEED_CBC_SHA, 0x009B) \ |
392 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_128_GCM_SHA256, 0x009C) \ |
393 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_256_GCM_SHA384, 0x009D) \ |
394 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, 0x009E) \ |
395 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, 0x009F) \ |
396 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_AES_128_GCM_SHA256, 0x00A0) \ |
397 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_AES_256_GCM_SHA384, 0x00A1) \ |
398 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, 0x00A2) \ |
399 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, 0x00A3) \ |
400 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_AES_128_GCM_SHA256, 0x00A4) \ |
401 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_AES_256_GCM_SHA384, 0x00A5) \ |
402 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_AES_128_GCM_SHA256, 0x00A6) \ |
403 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_AES_256_GCM_SHA384, 0x00A7) \ |
404 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_128_GCM_SHA256, 0x00A8) \ |
405 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_256_GCM_SHA384, 0x00A9) \ |
406 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, 0x00AA) \ |
407 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, 0x00AB) \ |
408 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, 0x00AC) \ |
409 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, 0x00AD) \ |
410 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_128_CBC_SHA256, 0x00AE) \ |
411 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_256_CBC_SHA384, 0x00AF) \ |
412 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_NULL_SHA256, 0x00B0) \ |
413 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_NULL_SHA384, 0x00B1) \ |
414 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, 0x00B2) \ |
415 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, 0x00B3) \ |
416 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_NULL_SHA256, 0x00B4) \ |
417 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_NULL_SHA384, 0x00B5) \ |
418 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, 0x00B6) \ |
419 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, 0x00B7) \ |
420 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_NULL_SHA256, 0x00B8) \ |
421 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_NULL_SHA384, 0x00B9) \ |
422 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, 0x00BA) \ |
423 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256, 0x00BB) \ |
424 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256, 0x00BC) \ |
425 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256, 0x00BD) \ |
426 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, 0x00BE) \ |
427 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256, 0x00BF) \ |
428 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, 0x00C0) \ |
429 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256, 0x00C1) \ |
430 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256, 0x00C2) \ |
431 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256, 0x00C3) \ |
432 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, 0x00C4) \ |
433 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256, 0x00C5) \ |
434 | | _ENUM_KEY_VALUE(TLS_SM4_GCM_SM3, 0x00C6) \ |
435 | | _ENUM_KEY_VALUE(TLS_SM4_CCM_SM3, 0x00C7) \ |
436 | | _ENUM_KEY_VALUE(TLS_EMPTY_RENEGOTIATION_INFO_SCSV, 0x00FF) \ |
437 | | _ENUM_KEY_VALUE(TLS_AES_128_GCM_SHA256, 0x1301) \ |
438 | | _ENUM_KEY_VALUE(TLS_AES_256_GCM_SHA384, 0x1302) \ |
439 | | _ENUM_KEY_VALUE(TLS_CHACHA20_POLY1305_SHA256, 0x1303) \ |
440 | | _ENUM_KEY_VALUE(TLS_AES_128_CCM_SHA256, 0x1304) \ |
441 | | _ENUM_KEY_VALUE(TLS_AES_128_CCM_8_SHA256, 0x1305) \ |
442 | | _ENUM_KEY_VALUE(TLS_FALLBACK_SCSV, 0x5600) \ |
443 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_NULL_SHA, 0xC001) \ |
444 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_RC4_128_SHA, 0xC002) \ |
445 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, 0xC003) \ |
446 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, 0xC004) \ |
447 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, 0xC005) \ |
448 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_NULL_SHA, 0xC006) \ |
449 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, 0xC007) \ |
450 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, 0xC008) \ |
451 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 0xC009) \ |
452 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 0xC00A) \ |
453 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_NULL_SHA, 0xC00B) \ |
454 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_RC4_128_SHA, 0xC00C) \ |
455 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, 0xC00D) \ |
456 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, 0xC00E) \ |
457 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, 0xC00F) \ |
458 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_NULL_SHA, 0xC010) \ |
459 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_RC4_128_SHA, 0xC011) \ |
460 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 0xC012) \ |
461 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 0xC013) \ |
462 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 0xC014) \ |
463 | | _ENUM_KEY_VALUE(TLS_ECDH_anon_WITH_NULL_SHA, 0xC015) \ |
464 | | _ENUM_KEY_VALUE(TLS_ECDH_anon_WITH_RC4_128_SHA, 0xC016) \ |
465 | | _ENUM_KEY_VALUE(TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, 0xC017) \ |
466 | | _ENUM_KEY_VALUE(TLS_ECDH_anon_WITH_AES_128_CBC_SHA, 0xC018) \ |
467 | | _ENUM_KEY_VALUE(TLS_ECDH_anon_WITH_AES_256_CBC_SHA, 0xC019) \ |
468 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA, 0xC01A) \ |
469 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA, 0xC01B) \ |
470 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA, 0xC01C) \ |
471 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_WITH_AES_128_CBC_SHA, 0xC01D) \ |
472 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA, 0xC01E) \ |
473 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA, 0xC01F) \ |
474 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_WITH_AES_256_CBC_SHA, 0xC020) \ |
475 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA, 0xC021) \ |
476 | | _ENUM_KEY_VALUE(TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA, 0xC022) \ |
477 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, 0xC023) \ |
478 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, 0xC024) \ |
479 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, 0xC025) \ |
480 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, 0xC026) \ |
481 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, 0xC027) \ |
482 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, 0xC028) \ |
483 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, 0xC029) \ |
484 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, 0xC02A) \ |
485 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 0xC02B) \ |
486 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, 0xC02C) \ |
487 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, 0xC02D) \ |
488 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, 0xC02E) \ |
489 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 0xC02F) \ |
490 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 0xC030) \ |
491 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, 0xC031) \ |
492 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, 0xC032) \ |
493 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_RC4_128_SHA, 0xC033) \ |
494 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, 0xC034) \ |
495 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, 0xC035) \ |
496 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, 0xC036) \ |
497 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, 0xC037) \ |
498 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, 0xC038) \ |
499 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_NULL_SHA, 0xC039) \ |
500 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_NULL_SHA256, 0xC03A) \ |
501 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_NULL_SHA384, 0xC03B) \ |
502 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_ARIA_128_CBC_SHA256, 0xC03C) \ |
503 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_ARIA_256_CBC_SHA384, 0xC03D) \ |
504 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256, 0xC03E) \ |
505 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384, 0xC03F) \ |
506 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256, 0xC040) \ |
507 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384, 0xC041) \ |
508 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256, 0xC042) \ |
509 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384, 0xC043) \ |
510 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256, 0xC044) \ |
511 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384, 0xC045) \ |
512 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_ARIA_128_CBC_SHA256, 0xC046) \ |
513 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_ARIA_256_CBC_SHA384, 0xC047) \ |
514 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256, 0xC048) \ |
515 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384, 0xC049) \ |
516 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256, 0xC04A) \ |
517 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384, 0xC04B) \ |
518 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256, 0xC04C) \ |
519 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384, 0xC04D) \ |
520 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256, 0xC04E) \ |
521 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384, 0xC04F) \ |
522 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_ARIA_128_GCM_SHA256, 0xC050) \ |
523 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_ARIA_256_GCM_SHA384, 0xC051) \ |
524 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256, 0xC052) \ |
525 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384, 0xC053) \ |
526 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256, 0xC054) \ |
527 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384, 0xC055) \ |
528 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256, 0xC056) \ |
529 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384, 0xC057) \ |
530 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256, 0xC058) \ |
531 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384, 0xC059) \ |
532 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_ARIA_128_GCM_SHA256, 0xC05A) \ |
533 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_ARIA_256_GCM_SHA384, 0xC05B) \ |
534 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256, 0xC05C) \ |
535 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384, 0xC05D) \ |
536 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256, 0xC05E) \ |
537 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384, 0xC05F) \ |
538 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256, 0xC060) \ |
539 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384, 0xC061) \ |
540 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256, 0xC062) \ |
541 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384, 0xC063) \ |
542 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_ARIA_128_CBC_SHA256, 0xC064) \ |
543 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_ARIA_256_CBC_SHA384, 0xC065) \ |
544 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256, 0xC066) \ |
545 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384, 0xC067) \ |
546 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256, 0xC068) \ |
547 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384, 0xC069) \ |
548 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_ARIA_128_GCM_SHA256, 0xC06A) \ |
549 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_ARIA_256_GCM_SHA384, 0xC06B) \ |
550 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256, 0xC06C) \ |
551 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384, 0xC06D) \ |
552 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256, 0xC06E) \ |
553 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384, 0xC06F) \ |
554 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256, 0xC070) \ |
555 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384, 0xC071) \ |
556 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, 0xC072) \ |
557 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, 0xC073) \ |
558 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, 0xC074) \ |
559 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, 0xC075) \ |
560 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, 0xC076) \ |
561 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, 0xC077) \ |
562 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, 0xC078) \ |
563 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, 0xC079) \ |
564 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, 0xC07A) \ |
565 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, 0xC07B) \ |
566 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, 0xC07C) \ |
567 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, 0xC07D) \ |
568 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256, 0xC07E) \ |
569 | | _ENUM_KEY_VALUE(TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384, 0xC07F) \ |
570 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256, 0xC080) \ |
571 | | _ENUM_KEY_VALUE(TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384, 0xC081) \ |
572 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256, 0xC082) \ |
573 | | _ENUM_KEY_VALUE(TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384, 0xC083) \ |
574 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256, 0xC084) \ |
575 | | _ENUM_KEY_VALUE(TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384, 0xC085) \ |
576 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, 0xC086) \ |
577 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, 0xC087) \ |
578 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, 0xC088) \ |
579 | | _ENUM_KEY_VALUE(TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, 0xC089) \ |
580 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, 0xC08A) \ |
581 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, 0xC08B) \ |
582 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, 0xC08C) \ |
583 | | _ENUM_KEY_VALUE(TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, 0xC08D) \ |
584 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, 0xC08E) \ |
585 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, 0xC08F) \ |
586 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, 0xC090) \ |
587 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, 0xC091) \ |
588 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, 0xC092) \ |
589 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, 0xC093) \ |
590 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, 0xC094) \ |
591 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, 0xC095) \ |
592 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, 0xC096) \ |
593 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, 0xC097) \ |
594 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, 0xC098) \ |
595 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, 0xC099) \ |
596 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, 0xC09A) \ |
597 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, 0xC09B) \ |
598 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_128_CCM, 0xC09C) \ |
599 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_256_CCM, 0xC09D) \ |
600 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_128_CCM, 0xC09E) \ |
601 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_256_CCM, 0xC09F) \ |
602 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_128_CCM_8, 0xC0A0) \ |
603 | | _ENUM_KEY_VALUE(TLS_RSA_WITH_AES_256_CCM_8, 0xC0A1) \ |
604 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_128_CCM_8, 0xC0A2) \ |
605 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_AES_256_CCM_8, 0xC0A3) \ |
606 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_128_CCM, 0xC0A4) \ |
607 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_256_CCM, 0xC0A5) \ |
608 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_128_CCM, 0xC0A6) \ |
609 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_AES_256_CCM, 0xC0A7) \ |
610 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_128_CCM_8, 0xC0A8) \ |
611 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_AES_256_CCM_8, 0xC0A9) \ |
612 | | _ENUM_KEY_VALUE(TLS_PSK_DHE_WITH_AES_128_CCM_8, 0xC0AA) \ |
613 | | _ENUM_KEY_VALUE(TLS_PSK_DHE_WITH_AES_256_CCM_8, 0xC0AB) \ |
614 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_128_CCM, 0xC0AC) \ |
615 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_256_CCM, 0xC0AD) \ |
616 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, 0xC0AE) \ |
617 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8, 0xC0AF) \ |
618 | | _ENUM_KEY_VALUE(TLS_ECCPWD_WITH_AES_128_GCM_SHA256, 0xC0B0) \ |
619 | | _ENUM_KEY_VALUE(TLS_ECCPWD_WITH_AES_256_GCM_SHA384, 0xC0B1) \ |
620 | | _ENUM_KEY_VALUE(TLS_ECCPWD_WITH_AES_128_CCM_SHA256, 0xC0B2) \ |
621 | | _ENUM_KEY_VALUE(TLS_ECCPWD_WITH_AES_256_CCM_SHA384, 0xC0B3) \ |
622 | | _ENUM_KEY_VALUE(TLS_SHA256_SHA256, 0xC0B4) \ |
623 | | _ENUM_KEY_VALUE(TLS_SHA384_SHA384, 0xC0B5) \ |
624 | | _ENUM_KEY_VALUE(TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC, 0xC100) \ |
625 | | _ENUM_KEY_VALUE(TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC, 0xC101) \ |
626 | | _ENUM_KEY_VALUE(TLS_GOSTR341112_256_WITH_28147_CNT_IMIT, 0xC102) \ |
627 | | _ENUM_KEY_VALUE(TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L, 0xC103) \ |
628 | | _ENUM_KEY_VALUE(TLS_GOSTR341112_256_WITH_MAGMA_MGM_L, 0xC104) \ |
629 | | _ENUM_KEY_VALUE(TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S, 0xC105) \ |
630 | | _ENUM_KEY_VALUE(TLS_GOSTR341112_256_WITH_MAGMA_MGM_S, 0xC106) \ |
631 | | _ENUM_KEY_VALUE(TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, 0xCCA8) \ |
632 | | _ENUM_KEY_VALUE(TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, 0xCCA9) \ |
633 | | _ENUM_KEY_VALUE(TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256, 0xCCAA) \ |
634 | | _ENUM_KEY_VALUE(TLS_PSK_WITH_CHACHA20_POLY1305_SHA256, 0xCCAB) \ |
635 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256, 0xCCAC) \ |
636 | | _ENUM_KEY_VALUE(TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256, 0xCCAD) \ |
637 | | _ENUM_KEY_VALUE(TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256, 0xCCAE) \ |
638 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256, 0xD001) \ |
639 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384, 0xD002) \ |
640 | | _ENUM_KEY_VALUE(TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256, 0xD003) \ |
641 | | _ENUM_KEY_VALUE(GREASE_0, 0x0A0A) \ |
642 | | _ENUM_KEY_VALUE(GREASE_1, 0x1A1A) \ |
643 | | _ENUM_KEY_VALUE(GREASE_2, 0x2A2A) \ |
644 | | _ENUM_KEY_VALUE(GREASE_3, 0x3A3A) \ |
645 | | _ENUM_KEY_VALUE(GREASE_4, 0x4A4A) \ |
646 | | _ENUM_KEY_VALUE(GREASE_5, 0x5A5A) \ |
647 | | _ENUM_KEY_VALUE(GREASE_6, 0x6A6A) \ |
648 | | _ENUM_KEY_VALUE(GREASE_7, 0x7A7A) \ |
649 | | _ENUM_KEY_VALUE(GREASE_8, 0x8A8A) \ |
650 | | _ENUM_KEY_VALUE(GREASE_9, 0x9A9A) \ |
651 | | _ENUM_KEY_VALUE(GREASE_A, 0xAAAA) \ |
652 | | _ENUM_KEY_VALUE(GREASE_B, 0xBABA) \ |
653 | | _ENUM_KEY_VALUE(GREASE_C, 0xCACA) \ |
654 | | _ENUM_KEY_VALUE(GREASE_D, 0XDADA) \ |
655 | | _ENUM_KEY_VALUE(GREASE_E, 0xEAEA) \ |
656 | | _ENUM_KEY_VALUE(GREASE_F, 0xFAFA) |
657 | | |
658 | | enum class CipherSuite : u16 { |
659 | | __ENUM_CIPHER_SUITES |
660 | | }; |
661 | | |
662 | | // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-6 |
663 | | #define __ENUM_ALERT_DESCRIPTIONS \ |
664 | | _ENUM_KEY_VALUE(CLOSE_NOTIFY, 0) \ |
665 | | _ENUM_KEY_VALUE(UNEXPECTED_MESSAGE, 10) \ |
666 | | _ENUM_KEY_VALUE(BAD_RECORD_MAC, 20) \ |
667 | | _ENUM_KEY_VALUE(DECRYPTION_FAILED_RESERVED, 21) \ |
668 | | _ENUM_KEY_VALUE(RECORD_OVERFLOW, 22) \ |
669 | | _ENUM_KEY_VALUE(DECOMPRESSION_FAILURE_RESERVED, 30) \ |
670 | | _ENUM_KEY_VALUE(HANDSHAKE_FAILURE, 40) \ |
671 | | _ENUM_KEY_VALUE(NO_CERTIFICATE_RESERVED, 41) \ |
672 | | _ENUM_KEY_VALUE(BAD_CERTIFICATE, 42) \ |
673 | | _ENUM_KEY_VALUE(UNSUPPORTED_CERTIFICATE, 43) \ |
674 | | _ENUM_KEY_VALUE(CERTIFICATE_REVOKED, 44) \ |
675 | | _ENUM_KEY_VALUE(CERTIFICATE_EXPIRED, 45) \ |
676 | | _ENUM_KEY_VALUE(CERTIFICATE_UNKNOWN, 46) \ |
677 | | _ENUM_KEY_VALUE(ILLEGAL_PARAMETER, 47) \ |
678 | | _ENUM_KEY_VALUE(UNKNOWN_CA, 48) \ |
679 | | _ENUM_KEY_VALUE(ACCESS_DENIED, 49) \ |
680 | | _ENUM_KEY_VALUE(DECODE_ERROR, 50) \ |
681 | | _ENUM_KEY_VALUE(DECRYPT_ERROR, 51) \ |
682 | | _ENUM_KEY_VALUE(TOO_MANY_CIDS_REQUESTED, 52) \ |
683 | | _ENUM_KEY_VALUE(EXPORT_RESTRICTION_RESERVED, 60) \ |
684 | | _ENUM_KEY_VALUE(PROTOCOL_VERSION, 70) \ |
685 | | _ENUM_KEY_VALUE(INSUFFICIENT_SECURITY, 71) \ |
686 | | _ENUM_KEY_VALUE(INTERNAL_ERROR, 80) \ |
687 | | _ENUM_KEY_VALUE(INAPPROPRIATE_FALLBACK, 86) \ |
688 | | _ENUM_KEY_VALUE(USER_CANCELED, 90) \ |
689 | | _ENUM_KEY_VALUE(NO_RENEGOTIATION_RESERVED, 100) \ |
690 | | _ENUM_KEY_VALUE(MISSING_EXTENSION, 109) \ |
691 | | _ENUM_KEY_VALUE(UNSUPPORTED_EXTENSION, 110) \ |
692 | | _ENUM_KEY_VALUE(CERTIFICATE_UNOBTAINABLE_RESERVED, 111) \ |
693 | | _ENUM_KEY_VALUE(UNRECOGNIZED_NAME, 112) \ |
694 | | _ENUM_KEY_VALUE(BAD_CERTIFICATE_STATUS_RESPONSE, 113) \ |
695 | | _ENUM_KEY_VALUE(BAD_CERTIFICATE_HASH_VALUE_RESERVED, 114) \ |
696 | | _ENUM_KEY_VALUE(UNKNOWN_PSK_IDENTITY, 115) \ |
697 | | _ENUM_KEY_VALUE(CERTIFICATE_REQUIRED, 116) \ |
698 | | _ENUM_KEY_VALUE(NO_APPLICATION_PROTOCOL, 120) |
699 | | |
700 | | enum class AlertDescription : u8 { |
701 | | __ENUM_ALERT_DESCRIPTIONS |
702 | | }; |
703 | | |
704 | | #undef _ENUM_KEY |
705 | | #undef _ENUM_KEY_VALUE |
706 | | |
707 | | constexpr static StringView enum_to_string(CipherSuite descriptor) |
708 | 0 | { |
709 | 0 | #define _ENUM_KEY_VALUE(name, value) \ |
710 | 0 | case CipherSuite::name: \ |
711 | 0 | return #name##sv; |
712 | 0 |
|
713 | 0 | switch (descriptor) { |
714 | 0 | __ENUM_CIPHER_SUITES |
715 | 0 | } |
716 | 0 |
|
717 | 0 | return "Unknown"sv; |
718 | 0 | #undef _ENUM_KEY_VALUE |
719 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_string(TLS::CipherSuite) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_string(TLS::CipherSuite) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_string(TLS::CipherSuite) |
720 | | |
721 | | constexpr static StringView enum_to_string(ExtensionType descriptor) |
722 | 0 | { |
723 | 0 | #define _ENUM_KEY_VALUE(name, value) \ |
724 | 0 | case ExtensionType::name: \ |
725 | 0 | return #name##sv; |
726 | 0 |
|
727 | 0 | switch (descriptor) { |
728 | 0 | __ENUM_EXTENSION_TYPES |
729 | 0 | } |
730 | 0 |
|
731 | 0 | return "Unknown"sv; |
732 | 0 | #undef _ENUM_KEY_VALUE |
733 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_string(TLS::ExtensionType) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_string(TLS::ExtensionType) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_string(TLS::ExtensionType) |
734 | | |
735 | | constexpr static StringView enum_to_string(ContentType descriptor) |
736 | 0 | { |
737 | 0 | #define _ENUM_KEY_VALUE(name, value) \ |
738 | 0 | case ContentType::name: \ |
739 | 0 | return #name##sv; |
740 | 0 |
|
741 | 0 | switch (descriptor) { |
742 | 0 | __ENUM_CONTENT_TYPES |
743 | 0 | } |
744 | 0 |
|
745 | 0 | return "Unknown"sv; |
746 | 0 | #undef _ENUM_KEY_VALUE |
747 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_string(TLS::ContentType) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_string(TLS::ContentType) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_string(TLS::ContentType) |
748 | | |
749 | | constexpr static StringView enum_to_string(ProtocolVersion descriptor) |
750 | 0 | { |
751 | 0 | #define _ENUM_KEY_VALUE(name, value) \ |
752 | 0 | case ProtocolVersion::name: \ |
753 | 0 | return #name##sv; |
754 | 0 |
|
755 | 0 | switch (descriptor) { |
756 | 0 | __ENUM_PROTOCOL_VERSIONS |
757 | 0 | } |
758 | 0 |
|
759 | 0 | return "Unknown"sv; |
760 | 0 | #undef _ENUM_KEY_VALUE |
761 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_string(TLS::ProtocolVersion) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_string(TLS::ProtocolVersion) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_string(TLS::ProtocolVersion) |
762 | | |
763 | | constexpr static StringView enum_to_string(HandshakeType descriptor) |
764 | 0 | { |
765 | 0 | #define _ENUM_KEY_VALUE(name, value) \ |
766 | 0 | case HandshakeType::name: \ |
767 | 0 | return #name##sv; |
768 | 0 |
|
769 | 0 | switch (descriptor) { |
770 | 0 | __ENUM_HANDSHAKE_TYPES |
771 | 0 | } |
772 | 0 |
|
773 | 0 | return "Unknown"sv; |
774 | 0 | #undef _ENUM_KEY_VALUE |
775 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_string(TLS::HandshakeType) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_string(TLS::HandshakeType) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_string(TLS::HandshakeType) |
776 | | |
777 | | constexpr static StringView enum_to_string(SignatureAlgorithm descriptor) |
778 | 0 | { |
779 | 0 | #define _ENUM_KEY_VALUE(name, value) \ |
780 | 0 | case SignatureAlgorithm::name: \ |
781 | 0 | return #name##sv; |
782 | 0 |
|
783 | 0 | switch (descriptor) { |
784 | 0 | __ENUM_SIGNATURE_ALGORITHM |
785 | 0 | } |
786 | 0 |
|
787 | 0 | return "Unknown"sv; |
788 | 0 | #undef _ENUM_KEY_VALUE |
789 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_string(TLS::SignatureAlgorithm) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_string(TLS::SignatureAlgorithm) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_string(TLS::SignatureAlgorithm) |
790 | | constexpr static StringView enum_to_string(AlertDescription descriptor) |
791 | 0 | { |
792 | 0 | #define _ENUM_KEY_VALUE(name, value) \ |
793 | 0 | case AlertDescription::name: \ |
794 | 0 | return #name##sv; |
795 | 0 |
|
796 | 0 | switch (descriptor) { |
797 | 0 | __ENUM_ALERT_DESCRIPTIONS |
798 | 0 | } |
799 | 0 |
|
800 | 0 | return "Unknown"sv; |
801 | 0 | #undef _ENUM_KEY_VALUE |
802 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_string(TLS::AlertDescription) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_string(TLS::AlertDescription) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_string(TLS::AlertDescription) |
803 | | |
804 | | constexpr static StringView const enum_to_value(AlertDescription descriptor) |
805 | 0 | { |
806 | 0 | switch (descriptor) { |
807 | 0 | case AlertDescription::UNEXPECTED_MESSAGE: |
808 | 0 | return "An inappropriate message was received. " |
809 | 0 | "This alert is always fatal and should never be observed in communication between proper implementations."sv; |
810 | 0 |
|
811 | 0 | case AlertDescription::BAD_RECORD_MAC: |
812 | 0 | return "This alert is returned if a record is received with an incorrect MAC. " |
813 | 0 | "This alert also MUST be returned if an alert is sent because a TLSCiphertext decrypted in an invalid way: " |
814 | 0 | "either it wasn't an even multiple of the block length, " |
815 | 0 | "or its padding values, when checked, weren't correct. " |
816 | 0 | "This message is always fatal."sv; |
817 | 0 |
|
818 | 0 | case AlertDescription::DECRYPTION_FAILED_RESERVED: |
819 | 0 | return "This alert MAY be returned if a TLSCiphertext decrypted in an invalid way: " |
820 | 0 | "either it wasn't an even multiple of the block length, " |
821 | 0 | "or its padding values, when checked, weren't correct. " |
822 | 0 | "This message is always fatal."sv; |
823 | 0 |
|
824 | 0 | case AlertDescription::RECORD_OVERFLOW: |
825 | 0 | return "A TLSCiphertext record was received that had a length more than 2^14 + 2048 bytes, " |
826 | 0 | "or a record decrypted to a TLSCompressed record with more than 2^14 + 1024 bytes. " |
827 | 0 | "This message is always fatal."sv; |
828 | 0 |
|
829 | 0 | case AlertDescription::DECOMPRESSION_FAILURE_RESERVED: |
830 | 0 | return "The decompression function received improper input (e.g., data that would expand to excessive length). " |
831 | 0 | "This message is always fatal."sv; |
832 | 0 |
|
833 | 0 | case AlertDescription::HANDSHAKE_FAILURE: |
834 | 0 | return "Reception of a handshake_failure alert message indicates that the sender " |
835 | 0 | "was unable to negotiate an acceptable set of security parameters given the options available. " |
836 | 0 | "This is a fatal error."sv; |
837 | 0 |
|
838 | 0 | case AlertDescription::NO_CERTIFICATE_RESERVED: |
839 | 0 | return "This alert was used in SSLv3 but not in TLS. It should not be sent by compliant implementations."sv; |
840 | 0 |
|
841 | 0 | case AlertDescription::BAD_CERTIFICATE: |
842 | 0 | return "A certificate was corrupt, contained signatures that did not verify correctly, etc."sv; |
843 | 0 |
|
844 | 0 | case AlertDescription::UNSUPPORTED_CERTIFICATE: |
845 | 0 | return "A certificate was of an unsupported type."sv; |
846 | 0 |
|
847 | 0 | case AlertDescription::CERTIFICATE_REVOKED: |
848 | 0 | return "A certificate was revoked by its signer."sv; |
849 | 0 |
|
850 | 0 | case AlertDescription::CERTIFICATE_EXPIRED: |
851 | 0 | return "A certificate has expired or is not currently valid."sv; |
852 | 0 |
|
853 | 0 | case AlertDescription::CERTIFICATE_UNKNOWN: |
854 | 0 | return "Some other (unspecified) issue arose in processing the certificate, rendering it unacceptable."sv; |
855 | 0 |
|
856 | 0 | case AlertDescription::ILLEGAL_PARAMETER: |
857 | 0 | return "A field in the handshake was out of range or inconsistent with other fields. " |
858 | 0 | "This is always fatal."sv; |
859 | 0 |
|
860 | 0 | case AlertDescription::UNKNOWN_CA: |
861 | 0 | return "A valid certificate chain or partial chain was received, but the certificate was not accepted " |
862 | 0 | "because the CA certificate could not be located " |
863 | 0 | "or couldn't be matched with a known, trusted CA. " |
864 | 0 | "This message is always fatal."sv; |
865 | 0 |
|
866 | 0 | case AlertDescription::ACCESS_DENIED: |
867 | 0 | return "A valid certificate was received, but when access control was applied, " |
868 | 0 | "the sender decided not to proceed with negotiation. " |
869 | 0 | "This message is always fatal."sv; |
870 | 0 |
|
871 | 0 | case AlertDescription::DECODE_ERROR: |
872 | 0 | return "A message could not be decoded because some field was out of the specified range " |
873 | 0 | "or the length of the message was incorrect. " |
874 | 0 | "This message is always fatal."sv; |
875 | 0 |
|
876 | 0 | case AlertDescription::DECRYPT_ERROR: |
877 | 0 | return "A handshake cryptographic operation failed, " |
878 | 0 | "including being unable to correctly verify a signature, " |
879 | 0 | "decrypt a key exchange, or validate a finished message."sv; |
880 | 0 |
|
881 | 0 | case AlertDescription::EXPORT_RESTRICTION_RESERVED: |
882 | 0 | return "This alert was used in TLS 1.0 but not TLS 1.1."sv; |
883 | 0 |
|
884 | 0 | case AlertDescription::PROTOCOL_VERSION: |
885 | 0 | return "The protocol version the client has attempted to negotiate is recognized but not supported. " |
886 | 0 | "(For example, old protocol versions might be avoided for security reasons). " |
887 | 0 | "This message is always fatal."sv; |
888 | 0 |
|
889 | 0 | case AlertDescription::INSUFFICIENT_SECURITY: |
890 | 0 | return "Returned instead of handshake_failure when a negotiation has failed" |
891 | 0 | "specifically because the server requires ciphers more secure than those supported by the client." |
892 | 0 | "This message is always fatal."sv; |
893 | 0 |
|
894 | 0 | case AlertDescription::INTERNAL_ERROR: |
895 | 0 | return "An internal error unrelated to the peer " |
896 | 0 | "or the correctness of the protocol (such as a memory allocation failure) " |
897 | 0 | "makes it impossible to continue. " |
898 | 0 | "This message is always fatal."sv; |
899 | 0 |
|
900 | 0 | case AlertDescription::USER_CANCELED: |
901 | 0 | return "This handshake is being canceled for some reason unrelated to a protocol failure. " |
902 | 0 | "If the user cancels an operation after the handshake is complete, " |
903 | 0 | "just closing the connection by sending a close_notify is more appropriate. " |
904 | 0 | "This alert should be followed by a close_notify. " |
905 | 0 | "This message is generally a warning."sv; |
906 | 0 |
|
907 | 0 | case AlertDescription::NO_RENEGOTIATION_RESERVED: |
908 | 0 | return "Sent by the client in response to a hello request " |
909 | 0 | "or by the server in response to a client hello after initial handshaking. " |
910 | 0 | "Either of these would normally lead to renegotiation; " |
911 | 0 | "when that is not appropriate, the recipient should respond with this alert. " |
912 | 0 | "At that point, the original requester can decide whether to proceed with the connection. " |
913 | 0 | "One case where this would be appropriate is where a server has spawned a process to satisfy a request; " |
914 | 0 | "the process might receive security parameters(key length, authentication, etc.) at startup " |
915 | 0 | "and it might be difficult to communicate changes to these parameters after that point. " |
916 | 0 | "This message is always a warning."sv; |
917 | 0 |
|
918 | 0 | case AlertDescription::CLOSE_NOTIFY: |
919 | 0 | return "This alert notifies the recipient that the sender will not send any more messages on this connection. " |
920 | 0 | "Any data received after a closure alert has been received MUST be ignored."sv; |
921 | 0 |
|
922 | 0 | case AlertDescription::INAPPROPRIATE_FALLBACK: |
923 | 0 | return "Sent by a server in response to an invalid connection retry attempt from a client (see [RFC7507])."sv; |
924 | 0 |
|
925 | 0 | case AlertDescription::MISSING_EXTENSION: |
926 | 0 | return "Sent by endpoints that receive a handshake message not containing an extension " |
927 | 0 | "that is mandatory to send for the offered TLS version or other negotiated parameters."sv; |
928 | 0 |
|
929 | 0 | case AlertDescription::CERTIFICATE_REQUIRED: |
930 | 0 | return "Sent by servers when a client certificate is desired but none was provided by the client."sv; |
931 | 0 |
|
932 | 0 | case AlertDescription::NO_APPLICATION_PROTOCOL: |
933 | 0 | return "Sent by servers when a client \"application_layer_protocol_negotiation\" extension " |
934 | 0 | "advertises only protocols that the server does not support (see [RFC7301])."sv; |
935 | 0 |
|
936 | 0 | case AlertDescription::UNSUPPORTED_EXTENSION: |
937 | 0 | return "Sent by endpoints receiving any handshake message containing an extension known to be prohibited " |
938 | 0 | "for inclusion in the given handshake message, " |
939 | 0 | "or including any extensions in a ServerHello " |
940 | 0 | "or Certificate not first offered in the corresponding ClientHello or CertificateRequest."sv; |
941 | 0 |
|
942 | 0 | case AlertDescription::CERTIFICATE_UNOBTAINABLE_RESERVED: |
943 | 0 | return "If a server is unable to obtain certificates in a given CertificateURL, " |
944 | 0 | "it MUST send a fatal certificate_unobtainable(111) alert " |
945 | 0 | "if it requires the certificates to complete the handshake."sv; |
946 | 0 |
|
947 | 0 | case AlertDescription::TOO_MANY_CIDS_REQUESTED: |
948 | 0 | return "Endpoints MAY handle an excessive number of RequestConnectionId messages by terminating the connection."sv; |
949 | 0 |
|
950 | 0 | case AlertDescription::UNRECOGNIZED_NAME: |
951 | 0 | return "The ServerNameList MUST NOT contain more than one name of the same name_type. " |
952 | 0 | "If the server understood the ClientHello extension but does not recognize the server name, " |
953 | 0 | "the server SHOULD take one of two actions: " |
954 | 0 | "either abort the handshake by sending a fatal-level unrecognized_name(112) alert or continue the handshake. " |
955 | 0 | "It is NOT RECOMMENDED to send a warning-level unrecognized_name(112) alert, " |
956 | 0 | "because the client's behavior in response to warning-level alerts is unpredictable."sv; |
957 | 0 |
|
958 | 0 | case AlertDescription::BAD_CERTIFICATE_STATUS_RESPONSE: |
959 | 0 | return "Clients requesting an OCSP response and receiving an OCSP response " |
960 | 0 | "in a \"CertificateStatus\" message MUST check the OCSP response " |
961 | 0 | "and abort the handshake if the response is not satisfactory. " |
962 | 0 | "This alert is always fatal."sv; |
963 | 0 |
|
964 | 0 | case AlertDescription::BAD_CERTIFICATE_HASH_VALUE_RESERVED: |
965 | 0 | return "The server MUST check that the SHA-1 hash of the contents of the object retrieved from that URL " |
966 | 0 | "(after decoding any MIME Content-Transfer-Encoding) matches the given hash. " |
967 | 0 | "If any retrieved object does not have the correct SHA-1 hash, " |
968 | 0 | "the server MUST abort the handshake. " |
969 | 0 | "This alert is always fatal."sv; |
970 | 0 |
|
971 | 0 | case AlertDescription::UNKNOWN_PSK_IDENTITY: |
972 | 0 | return "If the server does not recognize the PSK identity, it MAY respond with this message." |
973 | 0 | "Alternatively, if the server wishes to hide the fact that the PSK identity was not known, " |
974 | 0 | "it MAY continue the protocol as if the PSK identity existed but the key was incorrect: " |
975 | 0 | "that is, respond with a \"DECRYPT_ERROR\" alert."sv; |
976 | 0 | } |
977 | 0 |
|
978 | 0 | return "Unknown alert"sv; |
979 | 0 | } Unexecuted instantiation: FuzzASN1.cpp:TLS::enum_to_value(TLS::AlertDescription) Unexecuted instantiation: Certificate.cpp:TLS::enum_to_value(TLS::AlertDescription) Unexecuted instantiation: CryptoAlgorithms.cpp:TLS::enum_to_value(TLS::AlertDescription) |
980 | | |
981 | | } |