32 case KyberMode::Kyber512_R3:
33 case KyberMode::Kyber512_90s:
34 case KyberMode::ML_KEM_512:
35 m_nist_strength = KyberStrength::_128;
37 m_eta1 = KyberEta::_3;
42 case KyberMode::Kyber768_R3:
43 case KyberMode::Kyber768_90s:
44 case KyberMode::ML_KEM_768:
45 m_nist_strength = KyberStrength::_192;
47 m_eta1 = KyberEta::_2;
52 case KyberMode::Kyber1024_R3:
53 case KyberMode::Kyber1024_90s:
54 case KyberMode::ML_KEM_1024:
55 m_nist_strength = KyberStrength::_256;
57 m_eta1 = KyberEta::_2;
63 BOTAN_ASSERT_UNREACHABLE();
67 if(
mode.is_kyber_round3() &&
mode.is_90s()) {
68 m_symmetric_primitives = std::make_unique<Kyber_90s_Symmetric_Primitives>();
73 if(
mode.is_kyber_round3() &&
mode.is_modern()) {
74 m_symmetric_primitives = std::make_unique<Kyber_Modern_Symmetric_Primitives>();
79 if(
mode.is_ml_kem()) {
80 m_symmetric_primitives = std::make_unique<ML_KEM_Symmetric_Primitives>();
84 static_assert(
N % 8 == 0);
85 m_polynomial_vector_bytes = (
bitlen(
Q) * (
N / 8)) *
k();
86 m_polynomial_vector_compressed_bytes =
d_u() *
k() * (
N / 8);
87 m_polynomial_compressed_bytes =
d_v() * (
N / 8);
88 m_expanded_private_key_bytes =
92 if(!m_symmetric_primitives) {
93 throw Not_Implemented(
"requested Kyber mode is not enabled in this build");