ytls_typed/
typed_groups.rs

1//! Typed (EC) Groups
2
3#[derive(Debug, PartialEq)]
4pub enum Group {
5    /// RFC 8422 s. 5.11.
6    Secp256r1,
7    /// RFC 8422 s. 5.11.
8    Secp384r1,
9    /// RFC 8422 s. 5.11.    
10    Secp521r1,
11    /// RFC 8422 s. 5.11.
12    X25519,
13    /// RFC 8422 s. 5.11.
14    X448,
15    /// RFC 8422 s. 5.11.
16    Ffdhe2048,
17    /// RFC 7919 s. 8.3    
18    Ffdhe3072,
19    /// RFC 7919 s. 8.3    
20    Ffdhe4096,
21    /// RFC 7919 s. 8.3    
22    Ffdhe6144,
23    /// RFC 7919 s. 8.3
24    Ffdhe8192,
25    /// draft-kwiatkowski-tls-ecdhe-mlkem-03 s. 5
26    SecP256r1Mlkem768,
27    /// draft-kwiatkowski-tls-ecdhe-mlkem-03 s. 5
28    X25519Mlkem768,
29    /// draft-kwiatkowski-tls-ecdhe-mlkem-03 s. 5
30    SecP384r1Mlkem1024,
31    /// Unknown Group (may be in future RFC / drafts)
32    Unknown(u16),
33}
34
35impl From<u16> for Group {
36    #[inline]
37    fn from(d: u16) -> Self {
38        match d {
39            // RFC 8422 s. 5.11.
40            23 => Self::Secp256r1,
41            // RFC 8422 s. 5.11.
42            24 => Self::Secp384r1,
43            // RFC 8422 s. 5.11.
44            25 => Self::Secp521r1,
45            // RFC 8422 s. 5.11.
46            29 => Self::X25519,
47            // RFC 8422 s. 5.11.
48            30 => Self::X448,
49            // RFC 7919 s. 8.3
50            256 => Self::Ffdhe2048,
51            // RFC 7919 s. 8.3
52            257 => Self::Ffdhe3072,
53            // RFC 7919 s. 8.3
54            258 => Self::Ffdhe4096,
55            // RFC 7919 s. 8.3
56            259 => Self::Ffdhe6144,
57            // RFC 7919 s. 8.3
58            260 => Self::Ffdhe8192,
59            // draft-ietf-tls-hybrid-design-16 & draft-kwiatkowski-tls-ecdhe-mlkem-03
60            4587 => Self::SecP256r1Mlkem768,
61            // draft-kwiatkowski-tls-ecdhe-mlkem-03 s. 5.2
62            4588 => Self::X25519Mlkem768,
63            // draft-kwiatkowski-tls-ecdhe-mlkem-03 s. 5.3
64            4589 => Self::SecP384r1Mlkem1024,
65            // draft-kwiatkowski-tls-ecdhe-mlkem-03 Obsoletes 25497 and 25498
66            _ => Self::Unknown(d),
67        }
68    }
69}