case ML_KEM_1024:
kem_alg = OQS_KEM_alg_ml_kem_1024;
break;
+ case KE_FRODO_AES_L1:
+ kem_alg = OQS_KEM_alg_frodokem_640_aes;
+ break;
+ case KE_FRODO_AES_L3:
+ kem_alg = OQS_KEM_alg_frodokem_976_aes;
+ break;
+ case KE_FRODO_AES_L5:
+ kem_alg = OQS_KEM_alg_frodokem_1344_aes;
+ break;
+ case KE_FRODO_SHAKE_L1:
+ kem_alg = OQS_KEM_alg_frodokem_640_shake;
+ break;
+ case KE_FRODO_SHAKE_L3:
+ kem_alg = OQS_KEM_alg_frodokem_976_shake;
+ break;
+ case KE_FRODO_SHAKE_L5:
+ kem_alg = OQS_KEM_alg_frodokem_1344_shake;
+ break;
default:
return NULL;
}
PLUGIN_PROVIDE(KE, ML_KEM_512),
PLUGIN_PROVIDE(KE, ML_KEM_768),
PLUGIN_PROVIDE(KE, ML_KEM_1024),
+ PLUGIN_PROVIDE(KE, KE_FRODO_AES_L1),
+ PLUGIN_PROVIDE(KE, KE_FRODO_AES_L3),
+ PLUGIN_PROVIDE(KE, KE_FRODO_AES_L5),
+ PLUGIN_PROVIDE(KE, KE_FRODO_SHAKE_L1),
+ PLUGIN_PROVIDE(KE, KE_FRODO_SHAKE_L3),
+ PLUGIN_PROVIDE(KE, KE_FRODO_SHAKE_L5),
};
*features = f;
return countof(f);
tc = tcase_create("good");
test_case_set_timeout(tc, 30);
tcase_add_loop_test(tc, test_oqs_good, ML_KEM_512, ML_KEM_1024 + 1);
+ tcase_add_loop_test(tc, test_oqs_good, KE_FRODO_AES_L1, KE_FRODO_SHAKE_L5 + 1);
suite_add_tcase(s, tc);
tc = tcase_create("wrong");
tcase_add_loop_test(tc, test_oqs_wrong, ML_KEM_512, ML_KEM_1024 + 1);
+ tcase_add_loop_test(tc, test_oqs_wrong, KE_FRODO_AES_L1, KE_FRODO_SHAKE_L5 + 1);
suite_add_tcase(s, tc);
tc = tcase_create("fail_i");
tcase_add_loop_test(tc, test_oqs_fail_i, ML_KEM_512, ML_KEM_1024 + 1);
+ tcase_add_loop_test(tc, test_oqs_fail_i, KE_FRODO_AES_L1, KE_FRODO_SHAKE_L5 + 1);
suite_add_tcase(s, tc);
tc = tcase_create("fail_r");
tcase_add_loop_test(tc, test_oqs_fail_r, ML_KEM_512, ML_KEM_1024 + 1);
+ tcase_add_loop_test(tc, test_oqs_fail_r, KE_FRODO_AES_L1, KE_FRODO_SHAKE_L5 + 1);
suite_add_tcase(s, tc);
return s;