]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
oqs: Add support for FrodoKEM
authorTobias Brunner <tobias@strongswan.org>
Thu, 10 Oct 2024 11:57:36 +0000 (13:57 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 23 May 2025 09:42:39 +0000 (11:42 +0200)
src/libstrongswan/plugins/oqs/oqs_kem.c
src/libstrongswan/plugins/oqs/oqs_plugin.c
src/libstrongswan/plugins/oqs/tests/suites/test_oqs.c

index e3db45fdde257cdce78c9dc85ac46222cfb967db..364d4ab13ed3c53d430048e5754fdaed92d5ccc2 100644 (file)
@@ -241,6 +241,24 @@ oqs_kem_t *oqs_kem_create(key_exchange_method_t method)
                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;
        }
index 4475ebe90585b530f60cb20883db017ba747b0c6..769a163a6334ab02fc5810b121c512e39cd4317d 100644 (file)
@@ -49,6 +49,12 @@ METHOD(plugin_t, get_features, int,
                        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);
index 2b1c828502fd0ca021ae352eb49048c8d9dfb6fe..20655d2dc3596588f800a25999139fac768b4e92 100644 (file)
@@ -223,18 +223,22 @@ Suite *oqs_suite_create()
        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;