rustls/crypto/aws_lc_rs/pq/
mod.rs1use crate::NamedGroup;
2use crate::crypto::SupportedKxGroup;
3use crate::crypto::aws_lc_rs::kx_group;
4use crate::error::{Error, PeerMisbehaved};
5
6mod hybrid;
7mod mlkem;
8
9pub static X25519MLKEM768: &dyn SupportedKxGroup = &hybrid::Hybrid {
13 classical: kx_group::X25519,
14 post_quantum: MLKEM768,
15 name: NamedGroup::X25519MLKEM768,
16 layout: hybrid::Layout {
17 classical_share_len: X25519_LEN,
18 post_quantum_client_share_len: MLKEM768_ENCAP_LEN,
19 post_quantum_server_share_len: MLKEM768_CIPHERTEXT_LEN,
20 post_quantum_first: true,
21 },
22};
23
24pub static SECP256R1MLKEM768: &dyn SupportedKxGroup = &hybrid::Hybrid {
28 classical: kx_group::SECP256R1,
29 post_quantum: MLKEM768,
30 name: NamedGroup::secp256r1MLKEM768,
31 layout: hybrid::Layout {
32 classical_share_len: SECP256R1_LEN,
33 post_quantum_client_share_len: MLKEM768_ENCAP_LEN,
34 post_quantum_server_share_len: MLKEM768_CIPHERTEXT_LEN,
35 post_quantum_first: false,
36 },
37};
38
39pub static MLKEM768: &dyn SupportedKxGroup = &mlkem::MlKem768;
43
44const INVALID_KEY_SHARE: Error = Error::PeerMisbehaved(PeerMisbehaved::InvalidKeyShare);
45
46const X25519_LEN: usize = 32;
47const SECP256R1_LEN: usize = 65;
48const MLKEM768_CIPHERTEXT_LEN: usize = 1088;
49const MLKEM768_ENCAP_LEN: usize = 1184;