diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index bc3c0e38b4..cee2b51cc3 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -549,10 +549,10 @@ #cmakedefine OQS_ENABLE_SIG_STFL_LMS 1 -#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w1 1 -#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w2 1 -#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w4 1 -#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w1 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w2 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w4 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w8 1 #cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w1 1 #cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w2 1 #cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w4 1 @@ -560,8 +560,29 @@ #cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h15_w1 1 #cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h15_w2 1 #cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h15_w4 1 -#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w8_h5_w8 1 -#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w4_h5_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h15_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w1 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w2 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w4 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h25_w1 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h25_w2 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h25_w4 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h25_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h5_w8_h5_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w4_h5_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w8_h5_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w2_h10_w2 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w4_h10_w4 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w8_h10_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h15_w8_h5_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h15_w8_h10_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h15_w8_h15_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w8_h5_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w8_h10_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w8_h15_w8 1 +#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h20_w8_h20_w8 1 + #cmakedefine OQS_HAZARDOUS_EXPERIMENTAL_ENABLE_SIG_STFL_KEY_SIG_GEN 1 #cmakedefine OQS_ALLOW_STFL_KEY_AND_SIG_GEN 1 diff --git a/src/sig_stfl/sig_stfl.c b/src/sig_stfl/sig_stfl.c index e5774e6b8b..feeb88f7c7 100644 --- a/src/sig_stfl/sig_stfl.c +++ b/src/sig_stfl/sig_stfl.c @@ -884,13 +884,13 @@ OQS_API OQS_SIG_STFL *OQS_SIG_STFL_new(const char *method_name) { return NULL; #endif } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_h25_w1)) { -#ifdef OQS_ENABLE_SIG_STFL_lms_sha256_h28_w1 +#ifdef OQS_ENABLE_SIG_STFL_lms_sha256_h25_w1 return OQS_SIG_STFL_alg_lms_sha256_h25_w1_new(); #else return NULL; #endif } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_h25_w2)) { -#ifdef OQS_ENABLE_SIG_STFL_lms_sha256_h28_w2 +#ifdef OQS_ENABLE_SIG_STFL_lms_sha256_h25_w2 return OQS_SIG_STFL_alg_lms_sha256_h25_w2_new(); #else return NULL; diff --git a/tests/KATs/sig_stfl/kats.json b/tests/KATs/sig_stfl/kats.json index 52b80504fb..0195c3d63d 100644 --- a/tests/KATs/sig_stfl/kats.json +++ b/tests/KATs/sig_stfl/kats.json @@ -51,7 +51,7 @@ "LMS_SHA256_H20_W1": "5670ee0668ccb704e15c9f6e42f4a017f4b8cf8aa34c311ca905b1b538a2352f", "LMS_SHA256_H20_W2": "53e844066e5dda43713261704c6d07b785373dccc37293b2cbe2ba1b7b961382", "LMS_SHA256_H20_W4": "55a9c196d69acdff73b2e95f9d0bb97b9edd260bd93f53b5ce4f50c26d6575a4", - "LMS_SHA256_H20_W8": "2594c05e1ae86a029ff42a74d2b3ab4d0adf01729f4fbfe81269037ac029c184", + "LMS_SHA256_H20_W8": "2b95ce8e6c44c7ec1bc4753238047354b363d965cc4f0132ac0479586e672a3a", "LMS_SHA256_H5_W8_H5_W8": "a20ce5f27d9962865463223a138a7507f30690ec7268e802eb6ba2f04c6bd99e", "LMS_SHA256_H10_W4_H5_W8": "f51cd27e5a35f63586796a39f00d6729f5148fb6d454e61737fbdeebbde3aed8" } diff --git a/tests/KATs/sig_stfl/lms/LMS_SHA256_H20_W8.rsp b/tests/KATs/sig_stfl/lms/LMS_SHA256_H20_W8.rsp index de889b92b8..288d0f20c6 100644 --- a/tests/KATs/sig_stfl/lms/LMS_SHA256_H20_W8.rsp +++ b/tests/KATs/sig_stfl/lms/LMS_SHA256_H20_W8.rsp @@ -2,5 +2,5 @@ msg = 54686520706f77657273206e6f742064656c65676174656420746f2074686520556e697465 sm = 000000000000000000000004c77901fbdf3723a0e739e33dad60d6438b3a33adfc72c33f3e1a3e13791a362aa3a1cf96aefb864bcab9cf5714de25794d8d59428eb4585ba22ccb719b12dd7301bb456156130d9c8d34e1624025b402dca6c4d2d5462ef59c5842a9aa242c72cdf29daa26527f5f529c01af89066ed129477f2796f7a2bbf91233f4bd3a9f658e995fcf6221a40547c442f3f5dad46aecff3a4b061bd72c2bd725af87940805954d9b9cef4395fe8e914c736cff67cb8f481c5e9842ddfb95a4c7f9f1310c3bdf951acc06337ca482b677992f207e11fc3520c923d69fcf8b863bf113531e0266246adbd818300bce8ab72b081d453f109bb298e72bd499614f9e609a12bd1e7171187b65e70e9f175b7f03eec038f2faeea0a6c13058264f3b21ef4cfd27c3502eccaf94c68060a468353f1e3c111226bf3baae1af78d783c91c32a344ea5b1e3875f1571cf381e4a142f154c749a572ee587395b1bc49df8c979623dd8b4b09bf1622d7bd1846bf5f65d7be5f28f69a40eb9cb0f25cb30b1090205f85b067870d2abebc20f7bb67a35afe9eb9e1c8f9d90d32b18728b313e055c22671682ae85de2277aebfa94380bbc7ca11c090430cc519695f3af0c5667a3595bf565e7b1114e069d9343132d36adc42043cf0ff1d075f82147d4f8baa9e38e68ba8aa9170c855f3c6e3be4840dc92f65cb5f2e1e24730bbf6d4f73349c3d85e4507b8c4f39bc8b07eeee8f2fff240b07858d391a9e24d34d7f219bad1688546106ecdc177589ea3cda62c02b3c862d7ec1e995e6555beb0d2fecb6d6d86c232dc76f063fb90b1bb4f20116bafdd7436825a53fcd26d1544e71a1feeb0b154ea298948c3ba9ba0adeacdd46860c6d28da3630b36acc8913ecfbc1288417513b8988d977613b93fe7c5c883a4df6096ca35875f24b4e2f7c6c5cf715aa9428069b365e1a121323556113a0ed9a2b8c1cbb944eba56e4917ae1dd6dca34dbb4098a52651af8a8b32a0416b85a9ec8c3e305268c518f713edb977fd6b17cac7fe85d574003bc5133b590d117e5b471a0abe73f96a069b0162bafd492a01900cb3c9bf6ffa6c30f11e9d1ce0eb5385187990f54387a1f66be91b8e9cc09acc5cf0545da67470ffbe95b856f90335573b14cb487787a1440166a4b5249c8108b7d7e07f340f2a30f986cbc2b1e3055cf425dde138deb3fb12a9bb2cfae7020b2503ff50840ad2f026282bb9725e82e310cb2c32a1fc1e7291817f7539055d8b61335643d2a6754033df4326da389ed5f83a6a1c88125975548fb213a2fd7287d98e8d815f42524e10ad9117cdbf88464a8354a96e6c1127167f7cf00088440501d660e670bf98e174cbb5bef986899bd2ed23f0051d1d776e6f4eaf6a8b4c973f12fc85b218c17d346dc8e8f820f71716219165fecc90ac1101a58d0325a586e9a2fed1a2ca2a96b86c94892551712aa032e2a474315ef6e0aeabb2d92356a65e55ccdd371f79a5e6f59e902667731512f1faf7bbbc3ed307927323b1a51f52268d696be32066cdb859662fdb69f8e2a718462537a612987377552f3e34919ff9e044ebfef0f000000088688c398c528e063a27c2654d8ef6fcf86cccf6111384367569f78e0c5544ac0c32f502398b9fb43c94ce6b0c2fdff387ca058d8b3d70edf444567347c32180e5f579935bee605d8d59580c7092b374ce27758f3fabbdc1210c52e7cdea694281ba308427afff30f71588a9280f7ebc56fe9b80c84ea65867cbe443ce760d0dfa3c7889846873ca76dcf464c7ac41ce082605d115f02ac350289557bf7afa58157cbed69a0dee6991af022ce6cd54867c1a05e71949fef85c941fca240e0cb67ea053725b7fa8de0ef248b9203f3de202fad5415112aa621ffaa5504fe4d20929b4f761d9b8621a63726e079b36c2e04bff0782374e2cb103c54842768c164ee77668753efebca2f6f075f47002f7dfb3689e27f1096236cd904645108e7ee25a0f6f3a24ca2db67b53a13a5e9c39601d526b5bf1658c9e9ce2b80f0a6eda7ddeb8811c6458dcea902dad8c1e0da485459d01a9349bebc7e03c7da4366fd53ed29b30c7bb9d28d758c5574f7347cc02e1becabc07964ef20bb27950f4352c92382eba52126a33d4fbe947a1a70dcc622115e4a1e61d283cb7e21a26d43f5ef2317acba85a2aafd6fcdc6fd902bf7821de2b21f252d73efb0f632e46097ed8b9d7c859175c8b4c54d7509ed221131702fef73ca28d9f25f7e1e915be840ff3e56b8d09323f93da0a6a041b5fe66a1910707f5a06c805efe8cbbbcef36a20680cfbbc4d793bf7ba9be868e290e4fe99c1f44eff6f1444775ce1f2c2bf2479b38db8029024f7cca496cc0c1d4013f96a1791e73b72d4220d649d7333761aad155a45e23e00b83bf3c80848c4c3bef451b33102338b11e4fa27c0e63800f1fb10c72029c3034e04d606bed563c0a001f5ad8c718d4056acce6076a1a652b28699928 -pk = 0000000100000008000000042fd1d7b686c84cbe1eaaf415f6095268787d809d3b8d9cd021a0967b3972c847cfdc0935346b1ce9f3f6e21a2fcde0cd +pk = 0000000100000008000000042fd1d7b686c84cbe1eaaf415f6095268787d809d3b8d9cd021a0967b3972c847cfdc0935346b1ce9f3f6e21a2fcde0cd diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py index faf662f7d5..c537bcd76f 100644 --- a/tests/test_cmdline.py +++ b/tests/test_cmdline.py @@ -31,6 +31,19 @@ def test_sig(sig_name): @helpers.filtered_test @pytest.mark.parametrize('sig_stfl_name', helpers.available_sig_stfls_by_name()) def test_sig_stfl(sig_stfl_name): + # Define the list of LMS varients to allow + names_to_allow = ["LMS_SHA256_H5_W1", "LMS_SHA256_H5_W2", + "LMS_SHA256_H5_W4", + "LMS_SHA256_H5_W8", + "LMS_SHA256_H10_W1", + "LMS_SHA256_H10_W2", + "LMS_SHA256_H10_W4", + "LMS_SHA256_H10_W8", + "LMS_SHA256_H15_W1", + "LMS_SHA256_H15_W2", + "LMS_SHA256_H15_W4", + "LMS_SHA256_H5_W8_H5_W8", + "LMS_SHA256_H10_W4_H5_W8",] if not(helpers.is_sig_stfl_enabled_by_name(sig_stfl_name)): pytest.skip('Not enabled') # Test with KATs apply for XMSS if sig_stfl_name.startswith("XMSS"): @@ -40,9 +53,11 @@ def test_sig_stfl(sig_stfl_name): [helpers.path_to_executable('test_sig_stfl'), sig_stfl_name, katfile], ) else: + if sig_stfl_name not in names_to_allow: + pytest.skip('Skip slow stateful hash-based signature test.') helpers.run_subprocess( [helpers.path_to_executable('test_sig_stfl'), sig_stfl_name], - ) + ) if __name__ == "__main__": import sys diff --git a/tests/test_kat.py b/tests/test_kat.py index dde7b02a78..3732071bd1 100644 --- a/tests/test_kat.py +++ b/tests/test_kat.py @@ -44,6 +44,8 @@ def test_sig_stfl(sig_stfl_name): if not(helpers.is_sig_stfl_enabled_by_name(sig_stfl_name)): pytest.skip('Not enabled') katfile = helpers.get_katfile("sig_stfl", sig_stfl_name) if not katfile: pytest.skip("KATs file is missing") + if not os.path.exists(katfile): # Skip if the file does not exist + pytest.xfail(f'KAT not available: {sig_stfl_name}') output = helpers.run_subprocess( [helpers.path_to_executable('kat_sig_stfl'), sig_stfl_name, katfile], ) diff --git a/tests/test_speed.py b/tests/test_speed.py index 22be199d64..07d4fbb912 100644 --- a/tests/test_speed.py +++ b/tests/test_speed.py @@ -23,13 +23,27 @@ def test_sig(sig_name): @helpers.filtered_test @pytest.mark.parametrize('sig_stfl_name', helpers.available_sig_stfls_by_name()) def test_sig(sig_stfl_name): + # Define the list of LMS varients to allow + names_to_allow = ["LMS_SHA256_H5_W1", "LMS_SHA256_H5_W2", + "LMS_SHA256_H5_W4", + "LMS_SHA256_H5_W8", + "LMS_SHA256_H10_W1", + "LMS_SHA256_H10_W2", + "LMS_SHA256_H10_W4", + "LMS_SHA256_H10_W8", + "LMS_SHA256_H15_W1", + "LMS_SHA256_H15_W2", + "LMS_SHA256_H15_W4", + "LMS_SHA256_H5_W8_H5_W8", + "LMS_SHA256_H10_W4_H5_W8",] kats = helpers.get_kats("sig_stfl") if not(helpers.is_sig_stfl_enabled_by_name(sig_stfl_name)): pytest.skip('Not enabled') elif sig_stfl_name.find("_10")==-1 and sig_stfl_name.find("H10")==-1: pytest.skip('Test skipped') - else: - helpers.run_subprocess( [helpers.path_to_executable('speed_sig_stfl'), sig_stfl_name, "-f"]) + elif sig_stfl_name not in names_to_allow: + pytest.skip('Test skipped') + helpers.run_subprocess( [helpers.path_to_executable('speed_sig_stfl'), sig_stfl_name, "-f"]) if __name__ == "__main__": import sys