"ML_KEM_1024");
ENUM_NEXT(key_exchange_method_names, MODP_NULL, MODP_NULL, ML_KEM_1024,
"MODP_NULL");
-ENUM_NEXT(key_exchange_method_names, MODP_CUSTOM, MODP_CUSTOM, MODP_NULL,
+ENUM_NEXT(key_exchange_method_names, KE_FRODO_AES_L1, KE_FRODO_SHAKE_L5, MODP_NULL,
+ "FRODO_AES_L1",
+ "FRODO_AES_L3",
+ "FRODO_AES_L5",
+ "FRODO_SHAKE_L1",
+ "FRODO_SHAKE_L3",
+ "FRODO_SHAKE_L5");
+ENUM_NEXT(key_exchange_method_names, MODP_CUSTOM, MODP_CUSTOM, KE_FRODO_SHAKE_L5,
"MODP_CUSTOM");
ENUM_END(key_exchange_method_names, MODP_CUSTOM);
"mlkem1024");
ENUM_NEXT(key_exchange_method_names_short, MODP_NULL, MODP_NULL, ML_KEM_1024,
"modpnull");
-ENUM_NEXT(key_exchange_method_names_short, MODP_CUSTOM, MODP_CUSTOM, MODP_NULL,
+ENUM_NEXT(key_exchange_method_names_short, KE_FRODO_AES_L1, KE_FRODO_SHAKE_L5, MODP_NULL,
+ "frodoa1",
+ "frodoa3",
+ "frodoa5",
+ "frodos1",
+ "frodos3",
+ "frodos5");
+ENUM_NEXT(key_exchange_method_names_short, MODP_CUSTOM, MODP_CUSTOM, KE_FRODO_SHAKE_L5,
"modpcustom");
ENUM_END(key_exchange_method_names_short, MODP_CUSTOM);
case ML_KEM_512:
case ML_KEM_768:
case ML_KEM_1024:
+ case KE_FRODO_AES_L1:
+ case KE_FRODO_AES_L3:
+ case KE_FRODO_AES_L5:
+ case KE_FRODO_SHAKE_L1:
+ case KE_FRODO_SHAKE_L3:
+ case KE_FRODO_SHAKE_L5:
return TRUE;
default:
return FALSE;
case ML_KEM_512:
case ML_KEM_768:
case ML_KEM_1024:
+ case KE_FRODO_AES_L1:
+ case KE_FRODO_AES_L3:
+ case KE_FRODO_AES_L5:
+ case KE_FRODO_SHAKE_L1:
+ case KE_FRODO_SHAKE_L3:
+ case KE_FRODO_SHAKE_L5:
/* verification currently not supported, do in plugin */
valid = FALSE;
break;
ML_KEM_768 = 36,
ML_KEM_1024 = 37,
/** insecure NULL diffie hellman group for testing, in PRIVATE USE */
- MODP_NULL = 1024,
+ MODP_NULL = 1024,
+ /** KEM algorithms recommended by BSI, in PRIVATE USE */
+ KE_FRODO_AES_L1 = 1083,
+ KE_FRODO_AES_L3 = 1084,
+ KE_FRODO_AES_L5 = 1085,
+ KE_FRODO_SHAKE_L1 = 1086,
+ KE_FRODO_SHAKE_L3 = 1087,
+ KE_FRODO_SHAKE_L5 = 1088,
/** MODP group with custom generator/prime */
/** internally used DH group with additional parameters g and p, outside
* of PRIVATE USE (i.e. IKEv2 DH group range) so it can't be negotiated */
- MODP_CUSTOM = 65536,
+ MODP_CUSTOM = 65536,
};
/**
mlkem512, KEY_EXCHANGE_METHOD, ML_KEM_512, 0
mlkem768, KEY_EXCHANGE_METHOD, ML_KEM_768, 0
mlkem1024, KEY_EXCHANGE_METHOD, ML_KEM_1024, 0
+frodoa1, KEY_EXCHANGE_METHOD, KE_FRODO_AES_L1, 0
+frodoa3, KEY_EXCHANGE_METHOD, KE_FRODO_AES_L3, 0
+frodoa5, KEY_EXCHANGE_METHOD, KE_FRODO_AES_L5, 0
+frodos1, KEY_EXCHANGE_METHOD, KE_FRODO_SHAKE_L1, 0
+frodos3, KEY_EXCHANGE_METHOD, KE_FRODO_SHAKE_L3, 0
+frodos5, KEY_EXCHANGE_METHOD, KE_FRODO_SHAKE_L5, 0
noesn, EXTENDED_SEQUENCE_NUMBERS, NO_EXT_SEQ_NUMBERS, 0
esn, EXTENDED_SEQUENCE_NUMBERS, EXT_SEQ_NUMBERS, 0