1 /// This file is autogenerated.  See https://github.com/ctz/tls-hacking/
2 
3 use crate::msgs::codec::{Reader, Codec};
4 
5 enum_builder! {
6     /// The `ProtocolVersion` TLS protocol enum.  Values in this enum are taken
7     /// from the various RFCs covering TLS, and are listed by IANA.
8     /// The `Unknown` item is used when processing unrecognised ordinals.
9     @U16
10     EnumName: ProtocolVersion;
11     EnumVal{
12         SSLv2 => 0x0200,
13         SSLv3 => 0x0300,
14         TLSv1_0 => 0x0301,
15         TLSv1_1 => 0x0302,
16         TLSv1_2 => 0x0303,
17         TLSv1_3 => 0x0304
18     }
19 }
20 
21 enum_builder! {
22     /// The `HashAlgorithm` TLS protocol enum.  Values in this enum are taken
23     /// from the various RFCs covering TLS, and are listed by IANA.
24     /// The `Unknown` item is used when processing unrecognised ordinals.
25     @U8
26     EnumName: HashAlgorithm;
27     EnumVal{
28         NONE => 0x00,
29         MD5 => 0x01,
30         SHA1 => 0x02,
31         SHA224 => 0x03,
32         SHA256 => 0x04,
33         SHA384 => 0x05,
34         SHA512 => 0x06
35     }
36 }
37 
38 enum_builder! {
39     /// The `SignatureAlgorithm` TLS protocol enum.  Values in this enum are taken
40     /// from the various RFCs covering TLS, and are listed by IANA.
41     /// The `Unknown` item is used when processing unrecognised ordinals.
42     @U8
43     EnumName: SignatureAlgorithm;
44     EnumVal{
45         Anonymous => 0x00,
46         RSA => 0x01,
47         DSA => 0x02,
48         ECDSA => 0x03,
49         ED25519 => 0x07,
50         ED448 => 0x08
51     }
52 }
53 
54 enum_builder! {
55     /// The `ClientCertificateType` TLS protocol enum.  Values in this enum are taken
56     /// from the various RFCs covering TLS, and are listed by IANA.
57     /// The `Unknown` item is used when processing unrecognised ordinals.
58     @U8
59     EnumName: ClientCertificateType;
60     EnumVal{
61         RSASign => 0x01,
62         DSSSign => 0x02,
63         RSAFixedDH => 0x03,
64         DSSFixedDH => 0x04,
65         RSAEphemeralDH => 0x05,
66         DSSEphemeralDH => 0x06,
67         FortezzaDMS => 0x14,
68         ECDSASign => 0x40,
69         RSAFixedECDH => 0x41,
70         ECDSAFixedECDH => 0x42
71     }
72 }
73 
74 enum_builder! {
75     /// The `Compression` TLS protocol enum.  Values in this enum are taken
76     /// from the various RFCs covering TLS, and are listed by IANA.
77     /// The `Unknown` item is used when processing unrecognised ordinals.
78     @U8
79     EnumName: Compression;
80     EnumVal{
81         Null => 0x00,
82         Deflate => 0x01,
83         LSZ => 0x40
84     }
85 }
86 
87 enum_builder! {
88     /// The `ContentType` TLS protocol enum.  Values in this enum are taken
89     /// from the various RFCs covering TLS, and are listed by IANA.
90     /// The `Unknown` item is used when processing unrecognised ordinals.
91     @U8
92     EnumName: ContentType;
93     EnumVal{
94         ChangeCipherSpec => 0x14,
95         Alert => 0x15,
96         Handshake => 0x16,
97         ApplicationData => 0x17,
98         Heartbeat => 0x18
99     }
100 }
101 
102 enum_builder! {
103     /// The `HandshakeType` TLS protocol enum.  Values in this enum are taken
104     /// from the various RFCs covering TLS, and are listed by IANA.
105     /// The `Unknown` item is used when processing unrecognised ordinals.
106     @U8
107     EnumName: HandshakeType;
108     EnumVal{
109         HelloRequest => 0x00,
110         ClientHello => 0x01,
111         ServerHello => 0x02,
112         NewSessionTicket => 0x04,
113         EndOfEarlyData => 0x05,
114         HelloRetryRequest => 0x06,
115         EncryptedExtensions => 0x08,
116         Certificate => 0x0b,
117         ServerKeyExchange => 0x0c,
118         CertificateRequest => 0x0d,
119         ServerHelloDone => 0x0e,
120         CertificateVerify => 0x0f,
121         ClientKeyExchange => 0x10,
122         Finished => 0x14,
123         CertificateURL => 0x15,
124         CertificateStatus => 0x16,
125         KeyUpdate => 0x18,
126         MessageHash => 0xfe
127     }
128 }
129 
130 enum_builder! {
131     /// The `AlertLevel` TLS protocol enum.  Values in this enum are taken
132     /// from the various RFCs covering TLS, and are listed by IANA.
133     /// The `Unknown` item is used when processing unrecognised ordinals.
134     @U8
135     EnumName: AlertLevel;
136     EnumVal{
137         Warning => 0x01,
138         Fatal => 0x02
139     }
140 }
141 
142 enum_builder! {
143     /// The `AlertDescription` TLS protocol enum.  Values in this enum are taken
144     /// from the various RFCs covering TLS, and are listed by IANA.
145     /// The `Unknown` item is used when processing unrecognised ordinals.
146     @U8
147     EnumName: AlertDescription;
148     EnumVal{
149         CloseNotify => 0x00,
150         UnexpectedMessage => 0x0a,
151         BadRecordMac => 0x14,
152         DecryptionFailed => 0x15,
153         RecordOverflow => 0x16,
154         DecompressionFailure => 0x1e,
155         HandshakeFailure => 0x28,
156         NoCertificate => 0x29,
157         BadCertificate => 0x2a,
158         UnsupportedCertificate => 0x2b,
159         CertificateRevoked => 0x2c,
160         CertificateExpired => 0x2d,
161         CertificateUnknown => 0x2e,
162         IllegalParameter => 0x2f,
163         UnknownCA => 0x30,
164         AccessDenied => 0x31,
165         DecodeError => 0x32,
166         DecryptError => 0x33,
167         ExportRestriction => 0x3c,
168         ProtocolVersion => 0x46,
169         InsufficientSecurity => 0x47,
170         InternalError => 0x50,
171         InappropriateFallback => 0x56,
172         UserCanceled => 0x5a,
173         NoRenegotiation => 0x64,
174         MissingExtension => 0x6d,
175         UnsupportedExtension => 0x6e,
176         CertificateUnobtainable => 0x6f,
177         UnrecognisedName => 0x70,
178         BadCertificateStatusResponse => 0x71,
179         BadCertificateHashValue => 0x72,
180         UnknownPSKIdentity => 0x73,
181         CertificateRequired => 0x74,
182         NoApplicationProtocol => 0x78
183     }
184 }
185 
186 enum_builder! {
187     /// The `HeartbeatMessageType` TLS protocol enum.  Values in this enum are taken
188     /// from the various RFCs covering TLS, and are listed by IANA.
189     /// The `Unknown` item is used when processing unrecognised ordinals.
190     @U8
191     EnumName: HeartbeatMessageType;
192     EnumVal{
193         Request => 0x01,
194         Response => 0x02
195     }
196 }
197 
198 enum_builder! {
199     /// The `ExtensionType` TLS protocol enum.  Values in this enum are taken
200     /// from the various RFCs covering TLS, and are listed by IANA.
201     /// The `Unknown` item is used when processing unrecognised ordinals.
202     @U16
203     EnumName: ExtensionType;
204     EnumVal{
205         ServerName => 0x0000,
206         MaxFragmentLength => 0x0001,
207         ClientCertificateUrl => 0x0002,
208         TrustedCAKeys => 0x0003,
209         TruncatedHMAC => 0x0004,
210         StatusRequest => 0x0005,
211         UserMapping => 0x0006,
212         ClientAuthz => 0x0007,
213         ServerAuthz => 0x0008,
214         CertificateType => 0x0009,
215         EllipticCurves => 0x000a,
216         ECPointFormats => 0x000b,
217         SRP => 0x000c,
218         SignatureAlgorithms => 0x000d,
219         UseSRTP => 0x000e,
220         Heartbeat => 0x000f,
221         ALProtocolNegotiation => 0x0010,
222         SCT => 0x0012,
223         Padding => 0x0015,
224         ExtendedMasterSecret => 0x0017,
225         SessionTicket => 0x0023,
226         PreSharedKey => 0x0029,
227         EarlyData => 0x002a,
228         SupportedVersions => 0x002b,
229         Cookie => 0x002c,
230         PSKKeyExchangeModes => 0x002d,
231         TicketEarlyDataInfo => 0x002e,
232         CertificateAuthorities => 0x002f,
233         OIDFilters => 0x0030,
234         PostHandshakeAuth => 0x0031,
235         SignatureAlgorithmsCert => 0x0032,
236         KeyShare => 0x0033,
237         NextProtocolNegotiation => 0x3374,
238         ChannelId => 0x754f,
239         RenegotiationInfo => 0xff01,
240         TransportParameters => 0xffa5
241     }
242 }
243 
244 enum_builder! {
245     /// The `ServerNameType` TLS protocol enum.  Values in this enum are taken
246     /// from the various RFCs covering TLS, and are listed by IANA.
247     /// The `Unknown` item is used when processing unrecognised ordinals.
248     @U8
249     EnumName: ServerNameType;
250     EnumVal{
251         HostName => 0x00
252     }
253 }
254 
255 enum_builder! {
256     /// The `NamedCurve` TLS protocol enum.  Values in this enum are taken
257     /// from the various RFCs covering TLS, and are listed by IANA.
258     /// The `Unknown` item is used when processing unrecognised ordinals.
259     @U16
260     EnumName: NamedCurve;
261     EnumVal{
262         sect163k1 => 0x0001,
263         sect163r1 => 0x0002,
264         sect163r2 => 0x0003,
265         sect193r1 => 0x0004,
266         sect193r2 => 0x0005,
267         sect233k1 => 0x0006,
268         sect233r1 => 0x0007,
269         sect239k1 => 0x0008,
270         sect283k1 => 0x0009,
271         sect283r1 => 0x000a,
272         sect409k1 => 0x000b,
273         sect409r1 => 0x000c,
274         sect571k1 => 0x000d,
275         sect571r1 => 0x000e,
276         secp160k1 => 0x000f,
277         secp160r1 => 0x0010,
278         secp160r2 => 0x0011,
279         secp192k1 => 0x0012,
280         secp192r1 => 0x0013,
281         secp224k1 => 0x0014,
282         secp224r1 => 0x0015,
283         secp256k1 => 0x0016,
284         secp256r1 => 0x0017,
285         secp384r1 => 0x0018,
286         secp521r1 => 0x0019,
287         brainpoolp256r1 => 0x001a,
288         brainpoolp384r1 => 0x001b,
289         brainpoolp512r1 => 0x001c,
290         X25519 => 0x001d,
291         X448 => 0x001e,
292         arbitrary_explicit_prime_curves => 0xff01,
293         arbitrary_explicit_char2_curves => 0xff02
294     }
295 }
296 
297 enum_builder! {
298     /// The `NamedGroup` TLS protocol enum.  Values in this enum are taken
299     /// from the various RFCs covering TLS, and are listed by IANA.
300     /// The `Unknown` item is used when processing unrecognised ordinals.
301     @U16
302     EnumName: NamedGroup;
303     EnumVal{
304         secp256r1 => 0x0017,
305         secp384r1 => 0x0018,
306         secp521r1 => 0x0019,
307         X25519 => 0x001d,
308         X448 => 0x001e,
309         FFDHE2048 => 0x0100,
310         FFDHE3072 => 0x0101,
311         FFDHE4096 => 0x0102,
312         FFDHE6144 => 0x0103,
313         FFDHE8192 => 0x0104
314     }
315 }
316 
317 enum_builder! {
318     /// The `CipherSuite` TLS protocol enum.  Values in this enum are taken
319     /// from the various RFCs covering TLS, and are listed by IANA.
320     /// The `Unknown` item is used when processing unrecognised ordinals.
321     @U16
322     EnumName: CipherSuite;
323     EnumVal{
324         TLS_NULL_WITH_NULL_NULL => 0x0000,
325         TLS_RSA_WITH_NULL_MD5 => 0x0001,
326         TLS_RSA_WITH_NULL_SHA => 0x0002,
327         TLS_RSA_EXPORT_WITH_RC4_40_MD5 => 0x0003,
328         TLS_RSA_WITH_RC4_128_MD5 => 0x0004,
329         TLS_RSA_WITH_RC4_128_SHA => 0x0005,
330         TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 => 0x0006,
331         TLS_RSA_WITH_IDEA_CBC_SHA => 0x0007,
332         TLS_RSA_EXPORT_WITH_DES40_CBC_SHA => 0x0008,
333         TLS_RSA_WITH_DES_CBC_SHA => 0x0009,
334         TLS_RSA_WITH_3DES_EDE_CBC_SHA => 0x000a,
335         TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA => 0x000b,
336         TLS_DH_DSS_WITH_DES_CBC_SHA => 0x000c,
337         TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA => 0x000d,
338         TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA => 0x000e,
339         TLS_DH_RSA_WITH_DES_CBC_SHA => 0x000f,
340         TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA => 0x0010,
341         TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA => 0x0011,
342         TLS_DHE_DSS_WITH_DES_CBC_SHA => 0x0012,
343         TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA => 0x0013,
344         TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA => 0x0014,
345         TLS_DHE_RSA_WITH_DES_CBC_SHA => 0x0015,
346         TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA => 0x0016,
347         TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 => 0x0017,
348         TLS_DH_anon_WITH_RC4_128_MD5 => 0x0018,
349         TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA => 0x0019,
350         TLS_DH_anon_WITH_DES_CBC_SHA => 0x001a,
351         TLS_DH_anon_WITH_3DES_EDE_CBC_SHA => 0x001b,
352         SSL_FORTEZZA_KEA_WITH_NULL_SHA => 0x001c,
353         SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA => 0x001d,
354         TLS_KRB5_WITH_DES_CBC_SHA_or_SSL_FORTEZZA_KEA_WITH_RC4_128_SHA => 0x001e,
355         TLS_KRB5_WITH_3DES_EDE_CBC_SHA => 0x001f,
356         TLS_KRB5_WITH_RC4_128_SHA => 0x0020,
357         TLS_KRB5_WITH_IDEA_CBC_SHA => 0x0021,
358         TLS_KRB5_WITH_DES_CBC_MD5 => 0x0022,
359         TLS_KRB5_WITH_3DES_EDE_CBC_MD5 => 0x0023,
360         TLS_KRB5_WITH_RC4_128_MD5 => 0x0024,
361         TLS_KRB5_WITH_IDEA_CBC_MD5 => 0x0025,
362         TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA => 0x0026,
363         TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA => 0x0027,
364         TLS_KRB5_EXPORT_WITH_RC4_40_SHA => 0x0028,
365         TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5 => 0x0029,
366         TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5 => 0x002a,
367         TLS_KRB5_EXPORT_WITH_RC4_40_MD5 => 0x002b,
368         TLS_PSK_WITH_NULL_SHA => 0x002c,
369         TLS_DHE_PSK_WITH_NULL_SHA => 0x002d,
370         TLS_RSA_PSK_WITH_NULL_SHA => 0x002e,
371         TLS_RSA_WITH_AES_128_CBC_SHA => 0x002f,
372         TLS_DH_DSS_WITH_AES_128_CBC_SHA => 0x0030,
373         TLS_DH_RSA_WITH_AES_128_CBC_SHA => 0x0031,
374         TLS_DHE_DSS_WITH_AES_128_CBC_SHA => 0x0032,
375         TLS_DHE_RSA_WITH_AES_128_CBC_SHA => 0x0033,
376         TLS_DH_anon_WITH_AES_128_CBC_SHA => 0x0034,
377         TLS_RSA_WITH_AES_256_CBC_SHA => 0x0035,
378         TLS_DH_DSS_WITH_AES_256_CBC_SHA => 0x0036,
379         TLS_DH_RSA_WITH_AES_256_CBC_SHA => 0x0037,
380         TLS_DHE_DSS_WITH_AES_256_CBC_SHA => 0x0038,
381         TLS_DHE_RSA_WITH_AES_256_CBC_SHA => 0x0039,
382         TLS_DH_anon_WITH_AES_256_CBC_SHA => 0x003a,
383         TLS_RSA_WITH_NULL_SHA256 => 0x003b,
384         TLS_RSA_WITH_AES_128_CBC_SHA256 => 0x003c,
385         TLS_RSA_WITH_AES_256_CBC_SHA256 => 0x003d,
386         TLS_DH_DSS_WITH_AES_128_CBC_SHA256 => 0x003e,
387         TLS_DH_RSA_WITH_AES_128_CBC_SHA256 => 0x003f,
388         TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 => 0x0040,
389         TLS_RSA_WITH_CAMELLIA_128_CBC_SHA => 0x0041,
390         TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA => 0x0042,
391         TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA => 0x0043,
392         TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA => 0x0044,
393         TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA => 0x0045,
394         TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA => 0x0046,
395         TLS_ECDH_ECDSA_WITH_NULL_SHA_draft => 0x0047,
396         TLS_ECDH_ECDSA_WITH_RC4_128_SHA_draft => 0x0048,
397         TLS_ECDH_ECDSA_WITH_DES_CBC_SHA_draft => 0x0049,
398         TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA_draft => 0x004a,
399         TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA_draft => 0x004b,
400         TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA_draft => 0x004c,
401         TLS_ECDH_ECNRA_WITH_DES_CBC_SHA_draft => 0x004d,
402         TLS_ECDH_ECNRA_WITH_3DES_EDE_CBC_SHA_draft => 0x004e,
403         TLS_ECMQV_ECDSA_NULL_SHA_draft => 0x004f,
404         TLS_ECMQV_ECDSA_WITH_RC4_128_SHA_draft => 0x0050,
405         TLS_ECMQV_ECDSA_WITH_DES_CBC_SHA_draft => 0x0051,
406         TLS_ECMQV_ECDSA_WITH_3DES_EDE_CBC_SHA_draft => 0x0052,
407         TLS_ECMQV_ECNRA_NULL_SHA_draft => 0x0053,
408         TLS_ECMQV_ECNRA_WITH_RC4_128_SHA_draft => 0x0054,
409         TLS_ECMQV_ECNRA_WITH_DES_CBC_SHA_draft => 0x0055,
410         TLS_ECMQV_ECNRA_WITH_3DES_EDE_CBC_SHA_draft => 0x0056,
411         TLS_ECDH_anon_NULL_WITH_SHA_draft => 0x0057,
412         TLS_ECDH_anon_WITH_RC4_128_SHA_draft => 0x0058,
413         TLS_ECDH_anon_WITH_DES_CBC_SHA_draft => 0x0059,
414         TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA_draft => 0x005a,
415         TLS_ECDH_anon_EXPORT_WITH_DES40_CBC_SHA_draft => 0x005b,
416         TLS_ECDH_anon_EXPORT_WITH_RC4_40_SHA_draft => 0x005c,
417         TLS_RSA_EXPORT1024_WITH_RC4_56_MD5 => 0x0060,
418         TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 => 0x0061,
419         TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA => 0x0062,
420         TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA => 0x0063,
421         TLS_RSA_EXPORT1024_WITH_RC4_56_SHA => 0x0064,
422         TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA => 0x0065,
423         TLS_DHE_DSS_WITH_RC4_128_SHA => 0x0066,
424         TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 => 0x0067,
425         TLS_DH_DSS_WITH_AES_256_CBC_SHA256 => 0x0068,
426         TLS_DH_RSA_WITH_AES_256_CBC_SHA256 => 0x0069,
427         TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 => 0x006a,
428         TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 => 0x006b,
429         TLS_DH_anon_WITH_AES_128_CBC_SHA256 => 0x006c,
430         TLS_DH_anon_WITH_AES_256_CBC_SHA256 => 0x006d,
431         TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD => 0x0072,
432         TLS_DHE_DSS_WITH_AES_128_CBC_RMD => 0x0073,
433         TLS_DHE_DSS_WITH_AES_256_CBC_RMD => 0x0074,
434         TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD => 0x0077,
435         TLS_DHE_RSA_WITH_AES_128_CBC_RMD => 0x0078,
436         TLS_DHE_RSA_WITH_AES_256_CBC_RMD => 0x0079,
437         TLS_RSA_WITH_3DES_EDE_CBC_RMD => 0x007c,
438         TLS_RSA_WITH_AES_128_CBC_RMD => 0x007d,
439         TLS_RSA_WITH_AES_256_CBC_RMD => 0x007e,
440         TLS_GOSTR341094_WITH_28147_CNT_IMIT => 0x0080,
441         TLS_GOSTR341001_WITH_28147_CNT_IMIT => 0x0081,
442         TLS_GOSTR341094_WITH_NULL_GOSTR3411 => 0x0082,
443         TLS_GOSTR341001_WITH_NULL_GOSTR3411 => 0x0083,
444         TLS_RSA_WITH_CAMELLIA_256_CBC_SHA => 0x0084,
445         TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA => 0x0085,
446         TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA => 0x0086,
447         TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA => 0x0087,
448         TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA => 0x0088,
449         TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA => 0x0089,
450         TLS_PSK_WITH_RC4_128_SHA => 0x008a,
451         TLS_PSK_WITH_3DES_EDE_CBC_SHA => 0x008b,
452         TLS_PSK_WITH_AES_128_CBC_SHA => 0x008c,
453         TLS_PSK_WITH_AES_256_CBC_SHA => 0x008d,
454         TLS_DHE_PSK_WITH_RC4_128_SHA => 0x008e,
455         TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA => 0x008f,
456         TLS_DHE_PSK_WITH_AES_128_CBC_SHA => 0x0090,
457         TLS_DHE_PSK_WITH_AES_256_CBC_SHA => 0x0091,
458         TLS_RSA_PSK_WITH_RC4_128_SHA => 0x0092,
459         TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA => 0x0093,
460         TLS_RSA_PSK_WITH_AES_128_CBC_SHA => 0x0094,
461         TLS_RSA_PSK_WITH_AES_256_CBC_SHA => 0x0095,
462         TLS_RSA_WITH_SEED_CBC_SHA => 0x0096,
463         TLS_DH_DSS_WITH_SEED_CBC_SHA => 0x0097,
464         TLS_DH_RSA_WITH_SEED_CBC_SHA => 0x0098,
465         TLS_DHE_DSS_WITH_SEED_CBC_SHA => 0x0099,
466         TLS_DHE_RSA_WITH_SEED_CBC_SHA => 0x009a,
467         TLS_DH_anon_WITH_SEED_CBC_SHA => 0x009b,
468         TLS_RSA_WITH_AES_128_GCM_SHA256 => 0x009c,
469         TLS_RSA_WITH_AES_256_GCM_SHA384 => 0x009d,
470         TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 => 0x009e,
471         TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 => 0x009f,
472         TLS_DH_RSA_WITH_AES_128_GCM_SHA256 => 0x00a0,
473         TLS_DH_RSA_WITH_AES_256_GCM_SHA384 => 0x00a1,
474         TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 => 0x00a2,
475         TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 => 0x00a3,
476         TLS_DH_DSS_WITH_AES_128_GCM_SHA256 => 0x00a4,
477         TLS_DH_DSS_WITH_AES_256_GCM_SHA384 => 0x00a5,
478         TLS_DH_anon_WITH_AES_128_GCM_SHA256 => 0x00a6,
479         TLS_DH_anon_WITH_AES_256_GCM_SHA384 => 0x00a7,
480         TLS_PSK_WITH_AES_128_GCM_SHA256 => 0x00a8,
481         TLS_PSK_WITH_AES_256_GCM_SHA384 => 0x00a9,
482         TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 => 0x00aa,
483         TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 => 0x00ab,
484         TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 => 0x00ac,
485         TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 => 0x00ad,
486         TLS_PSK_WITH_AES_128_CBC_SHA256 => 0x00ae,
487         TLS_PSK_WITH_AES_256_CBC_SHA384 => 0x00af,
488         TLS_PSK_WITH_NULL_SHA256 => 0x00b0,
489         TLS_PSK_WITH_NULL_SHA384 => 0x00b1,
490         TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 => 0x00b2,
491         TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 => 0x00b3,
492         TLS_DHE_PSK_WITH_NULL_SHA256 => 0x00b4,
493         TLS_DHE_PSK_WITH_NULL_SHA384 => 0x00b5,
494         TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 => 0x00b6,
495         TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 => 0x00b7,
496         TLS_RSA_PSK_WITH_NULL_SHA256 => 0x00b8,
497         TLS_RSA_PSK_WITH_NULL_SHA384 => 0x00b9,
498         TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0x00ba,
499         TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bb,
500         TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bc,
501         TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bd,
502         TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0x00be,
503         TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 => 0x00bf,
504         TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c0,
505         TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c1,
506         TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c2,
507         TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c3,
508         TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c4,
509         TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 => 0x00c5,
510         TLS_EMPTY_RENEGOTIATION_INFO_SCSV => 0x00ff,
511         TLS13_AES_128_GCM_SHA256 => 0x1301,
512         TLS13_AES_256_GCM_SHA384 => 0x1302,
513         TLS13_CHACHA20_POLY1305_SHA256 => 0x1303,
514         TLS13_AES_128_CCM_SHA256 => 0x1304,
515         TLS13_AES_128_CCM_8_SHA256 => 0x1305,
516         TLS_ECDH_ECDSA_WITH_NULL_SHA => 0xc001,
517         TLS_ECDH_ECDSA_WITH_RC4_128_SHA => 0xc002,
518         TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA => 0xc003,
519         TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA => 0xc004,
520         TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA => 0xc005,
521         TLS_ECDHE_ECDSA_WITH_NULL_SHA => 0xc006,
522         TLS_ECDHE_ECDSA_WITH_RC4_128_SHA => 0xc007,
523         TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA => 0xc008,
524         TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA => 0xc009,
525         TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA => 0xc00a,
526         TLS_ECDH_RSA_WITH_NULL_SHA => 0xc00b,
527         TLS_ECDH_RSA_WITH_RC4_128_SHA => 0xc00c,
528         TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA => 0xc00d,
529         TLS_ECDH_RSA_WITH_AES_128_CBC_SHA => 0xc00e,
530         TLS_ECDH_RSA_WITH_AES_256_CBC_SHA => 0xc00f,
531         TLS_ECDHE_RSA_WITH_NULL_SHA => 0xc010,
532         TLS_ECDHE_RSA_WITH_RC4_128_SHA => 0xc011,
533         TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA => 0xc012,
534         TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA => 0xc013,
535         TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA => 0xc014,
536         TLS_ECDH_anon_WITH_NULL_SHA => 0xc015,
537         TLS_ECDH_anon_WITH_RC4_128_SHA => 0xc016,
538         TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA => 0xc017,
539         TLS_ECDH_anon_WITH_AES_128_CBC_SHA => 0xc018,
540         TLS_ECDH_anon_WITH_AES_256_CBC_SHA => 0xc019,
541         TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA => 0xc01a,
542         TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA => 0xc01b,
543         TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA => 0xc01c,
544         TLS_SRP_SHA_WITH_AES_128_CBC_SHA => 0xc01d,
545         TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA => 0xc01e,
546         TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA => 0xc01f,
547         TLS_SRP_SHA_WITH_AES_256_CBC_SHA => 0xc020,
548         TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA => 0xc021,
549         TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA => 0xc022,
550         TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 => 0xc023,
551         TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 => 0xc024,
552         TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 => 0xc025,
553         TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 => 0xc026,
554         TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 => 0xc027,
555         TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 => 0xc028,
556         TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 => 0xc029,
557         TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 => 0xc02a,
558         TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 => 0xc02b,
559         TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 => 0xc02c,
560         TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 => 0xc02d,
561         TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 => 0xc02e,
562         TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 => 0xc02f,
563         TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 => 0xc030,
564         TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 => 0xc031,
565         TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 => 0xc032,
566         TLS_ECDHE_PSK_WITH_RC4_128_SHA => 0xc033,
567         TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA => 0xc034,
568         TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA => 0xc035,
569         TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA => 0xc036,
570         TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 => 0xc037,
571         TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 => 0xc038,
572         TLS_ECDHE_PSK_WITH_NULL_SHA => 0xc039,
573         TLS_ECDHE_PSK_WITH_NULL_SHA256 => 0xc03a,
574         TLS_ECDHE_PSK_WITH_NULL_SHA384 => 0xc03b,
575         TLS_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc03c,
576         TLS_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc03d,
577         TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 => 0xc03e,
578         TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 => 0xc03f,
579         TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc040,
580         TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc041,
581         TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 => 0xc042,
582         TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 => 0xc043,
583         TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc044,
584         TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc045,
585         TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 => 0xc046,
586         TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 => 0xc047,
587         TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 => 0xc048,
588         TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 => 0xc049,
589         TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 => 0xc04a,
590         TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 => 0xc04b,
591         TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc04c,
592         TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc04d,
593         TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 => 0xc04e,
594         TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 => 0xc04f,
595         TLS_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc050,
596         TLS_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc051,
597         TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc052,
598         TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc053,
599         TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc054,
600         TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc055,
601         TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 => 0xc056,
602         TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 => 0xc057,
603         TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 => 0xc058,
604         TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 => 0xc059,
605         TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 => 0xc05a,
606         TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 => 0xc05b,
607         TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 => 0xc05c,
608         TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 => 0xc05d,
609         TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 => 0xc05e,
610         TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 => 0xc05f,
611         TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc060,
612         TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc061,
613         TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 => 0xc062,
614         TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 => 0xc063,
615         TLS_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc064,
616         TLS_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc065,
617         TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc066,
618         TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc067,
619         TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc068,
620         TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc069,
621         TLS_PSK_WITH_ARIA_128_GCM_SHA256 => 0xc06a,
622         TLS_PSK_WITH_ARIA_256_GCM_SHA384 => 0xc06b,
623         TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 => 0xc06c,
624         TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 => 0xc06d,
625         TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 => 0xc06e,
626         TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 => 0xc06f,
627         TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 => 0xc070,
628         TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 => 0xc071,
629         TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc072,
630         TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc073,
631         TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc074,
632         TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc075,
633         TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc076,
634         TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc077,
635         TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 => 0xc078,
636         TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 => 0xc079,
637         TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc07a,
638         TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc07b,
639         TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc07c,
640         TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc07d,
641         TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc07e,
642         TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc07f,
643         TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 => 0xc080,
644         TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 => 0xc081,
645         TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 => 0xc082,
646         TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 => 0xc083,
647         TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256 => 0xc084,
648         TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384 => 0xc085,
649         TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc086,
650         TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc087,
651         TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc088,
652         TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc089,
653         TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc08a,
654         TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc08b,
655         TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 => 0xc08c,
656         TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 => 0xc08d,
657         TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 => 0xc08e,
658         TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 => 0xc08f,
659         TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 => 0xc090,
660         TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 => 0xc091,
661         TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 => 0xc092,
662         TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 => 0xc093,
663         TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc094,
664         TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc095,
665         TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc096,
666         TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc097,
667         TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc098,
668         TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc099,
669         TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 => 0xc09a,
670         TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 => 0xc09b,
671         TLS_RSA_WITH_AES_128_CCM => 0xc09c,
672         TLS_RSA_WITH_AES_256_CCM => 0xc09d,
673         TLS_DHE_RSA_WITH_AES_128_CCM => 0xc09e,
674         TLS_DHE_RSA_WITH_AES_256_CCM => 0xc09f,
675         TLS_RSA_WITH_AES_128_CCM_8 => 0xc0a0,
676         TLS_RSA_WITH_AES_256_CCM_8 => 0xc0a1,
677         TLS_DHE_RSA_WITH_AES_128_CCM_8 => 0xc0a2,
678         TLS_DHE_RSA_WITH_AES_256_CCM_8 => 0xc0a3,
679         TLS_PSK_WITH_AES_128_CCM => 0xc0a4,
680         TLS_PSK_WITH_AES_256_CCM => 0xc0a5,
681         TLS_DHE_PSK_WITH_AES_128_CCM => 0xc0a6,
682         TLS_DHE_PSK_WITH_AES_256_CCM => 0xc0a7,
683         TLS_PSK_WITH_AES_128_CCM_8 => 0xc0a8,
684         TLS_PSK_WITH_AES_256_CCM_8 => 0xc0a9,
685         TLS_PSK_DHE_WITH_AES_128_CCM_8 => 0xc0aa,
686         TLS_PSK_DHE_WITH_AES_256_CCM_8 => 0xc0ab,
687         TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 => 0xcca8,
688         TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 => 0xcca9,
689         TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 => 0xccaa,
690         TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccab,
691         TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccac,
692         TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccad,
693         TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 => 0xccae,
694         SSL_RSA_FIPS_WITH_DES_CBC_SHA => 0xfefe,
695         SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA => 0xfeff
696     }
697 }
698 
699 enum_builder! {
700     /// The `ECPointFormat` TLS protocol enum.  Values in this enum are taken
701     /// from the various RFCs covering TLS, and are listed by IANA.
702     /// The `Unknown` item is used when processing unrecognised ordinals.
703     @U8
704     EnumName: ECPointFormat;
705     EnumVal{
706         Uncompressed => 0x00,
707         ANSIX962CompressedPrime => 0x01,
708         ANSIX962CompressedChar2 => 0x02
709     }
710 }
711 
712 enum_builder! {
713     /// The `HeartbeatMode` TLS protocol enum.  Values in this enum are taken
714     /// from the various RFCs covering TLS, and are listed by IANA.
715     /// The `Unknown` item is used when processing unrecognised ordinals.
716     @U8
717     EnumName: HeartbeatMode;
718     EnumVal{
719         PeerAllowedToSend => 0x01,
720         PeerNotAllowedToSend => 0x02
721     }
722 }
723 
724 enum_builder! {
725     /// The `ECCurveType` TLS protocol enum.  Values in this enum are taken
726     /// from the various RFCs covering TLS, and are listed by IANA.
727     /// The `Unknown` item is used when processing unrecognised ordinals.
728     @U8
729     EnumName: ECCurveType;
730     EnumVal{
731         ExplicitPrime => 0x01,
732         ExplicitChar2 => 0x02,
733         NamedCurve => 0x03
734     }
735 }
736 
737 enum_builder! {
738     /// The `SignatureScheme` TLS protocol enum.  Values in this enum are taken
739     /// from the various RFCs covering TLS, and are listed by IANA.
740     /// The `Unknown` item is used when processing unrecognised ordinals.
741     @U16
742     EnumName: SignatureScheme;
743     EnumVal{
744         RSA_PKCS1_SHA1 => 0x0201,
745         ECDSA_SHA1_Legacy => 0x0203,
746         RSA_PKCS1_SHA256 => 0x0401,
747         ECDSA_NISTP256_SHA256 => 0x0403,
748         RSA_PKCS1_SHA384 => 0x0501,
749         ECDSA_NISTP384_SHA384 => 0x0503,
750         RSA_PKCS1_SHA512 => 0x0601,
751         ECDSA_NISTP521_SHA512 => 0x0603,
752         RSA_PSS_SHA256 => 0x0804,
753         RSA_PSS_SHA384 => 0x0805,
754         RSA_PSS_SHA512 => 0x0806,
755         ED25519 => 0x0807,
756         ED448 => 0x0808
757     }
758 }
759 
760 enum_builder! {
761     /// The `PSKKeyExchangeMode` TLS protocol enum.  Values in this enum are taken
762     /// from the various RFCs covering TLS, and are listed by IANA.
763     /// The `Unknown` item is used when processing unrecognised ordinals.
764     @U8
765     EnumName: PSKKeyExchangeMode;
766     EnumVal{
767         PSK_KE => 0x00,
768         PSK_DHE_KE => 0x01
769     }
770 }
771 
772 enum_builder! {
773     /// The `KeyUpdateRequest` TLS protocol enum.  Values in this enum are taken
774     /// from the various RFCs covering TLS, and are listed by IANA.
775     /// The `Unknown` item is used when processing unrecognised ordinals.
776     @U8
777     EnumName: KeyUpdateRequest;
778     EnumVal{
779         UpdateNotRequested => 0x00,
780         UpdateRequested => 0x01
781     }
782 }
783 
784 enum_builder! {
785     /// The `CertificateStatusType` TLS protocol enum.  Values in this enum are taken
786     /// from the various RFCs covering TLS, and are listed by IANA.
787     /// The `Unknown` item is used when processing unrecognised ordinals.
788     @U8
789     EnumName: CertificateStatusType;
790     EnumVal{
791         OCSP => 0x01
792     }
793 }
794