19 if(!
mode.is_available()) {
20 throw Not_Implemented(
"FrodoKEM mode " + mode.to_string() +
" is not available");
23 if(
mode.is_ephemeral()) {
28 case FrodoKEMMode::FrodoKEM640_SHAKE:
29 case FrodoKEMMode::FrodoKEM640_AES:
30 case FrodoKEMMode::eFrodoKEM640_SHAKE:
31 case FrodoKEMMode::eFrodoKEM640_AES:
32 m_nist_strength = 128;
36 if(mode.is_static()) {
39 }
else if(
mode.is_ephemeral()) {
42 BOTAN_ASSERT_UNREACHABLE();
45 m_cdf_table = {4643, 13363, 20579, 25843, 29227, 31145, 32103, 32525, 32689, 32745, 32762, 32766, 32767};
47 m_shake =
"SHAKE-128";
54 m_nist_strength = 192;
58 if(
mode.is_static()) {
61 }
else if(
mode.is_ephemeral()) {
64 BOTAN_ASSERT_UNREACHABLE();
67 m_cdf_table = {5638, 15915, 23689, 28571, 31116, 32217, 32613, 32731, 32760, 32766, 32767};
69 m_shake =
"SHAKE-256";
76 m_nist_strength = 256;
80 if(
mode.is_static()) {
83 }
else if(
mode.is_ephemeral()) {
86 BOTAN_ASSERT_UNREACHABLE();
89 m_cdf_table = {9142, 23462, 30338, 32361, 32725, 32765, 32767};
91 m_shake =
"SHAKE-256";