Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 27 additions & 6 deletions src/oqsconfig.h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -549,19 +549,40 @@


#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
#cmakedefine OQS_ENABLE_SIG_STFL_lms_sha256_h10_w8 1
#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
Expand Down
4 changes: 2 additions & 2 deletions src/sig_stfl/sig_stfl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion tests/KATs/sig_stfl/kats.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
2 changes: 1 addition & 1 deletion tests/KATs/sig_stfl/lms/LMS_SHA256_H20_W8.rsp
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ msg = 54686520706f77657273206e6f742064656c65676174656420746f2074686520556e697465

sm = 000000000000000000000004c77901fbdf3723a0e739e33dad60d6438b3a33adfc72c33f3e1a3e13791a362aa3a1cf96aefb864bcab9cf5714de25794d8d59428eb4585ba22ccb719b12dd7301bb456156130d9c8d34e1624025b402dca6c4d2d5462ef59c5842a9aa242c72cdf29daa26527f5f529c01af89066ed129477f2796f7a2bbf91233f4bd3a9f658e995fcf6221a40547c442f3f5dad46aecff3a4b061bd72c2bd725af87940805954d9b9cef4395fe8e914c736cff67cb8f481c5e9842ddfb95a4c7f9f1310c3bdf951acc06337ca482b677992f207e11fc3520c923d69fcf8b863bf113531e0266246adbd818300bce8ab72b081d453f109bb298e72bd499614f9e609a12bd1e7171187b65e70e9f175b7f03eec038f2faeea0a6c13058264f3b21ef4cfd27c3502eccaf94c68060a468353f1e3c111226bf3baae1af78d783c91c32a344ea5b1e3875f1571cf381e4a142f154c749a572ee587395b1bc49df8c979623dd8b4b09bf1622d7bd1846bf5f65d7be5f28f69a40eb9cb0f25cb30b1090205f85b067870d2abebc20f7bb67a35afe9eb9e1c8f9d90d32b18728b313e055c22671682ae85de2277aebfa94380bbc7ca11c090430cc519695f3af0c5667a3595bf565e7b1114e069d9343132d36adc42043cf0ff1d075f82147d4f8baa9e38e68ba8aa9170c855f3c6e3be4840dc92f65cb5f2e1e24730bbf6d4f73349c3d85e4507b8c4f39bc8b07eeee8f2fff240b07858d391a9e24d34d7f219bad1688546106ecdc177589ea3cda62c02b3c862d7ec1e995e6555beb0d2fecb6d6d86c232dc76f063fb90b1bb4f20116bafdd7436825a53fcd26d1544e71a1feeb0b154ea298948c3ba9ba0adeacdd46860c6d28da3630b36acc8913ecfbc1288417513b8988d977613b93fe7c5c883a4df6096ca35875f24b4e2f7c6c5cf715aa9428069b365e1a121323556113a0ed9a2b8c1cbb944eba56e4917ae1dd6dca34dbb4098a52651af8a8b32a0416b85a9ec8c3e305268c518f713edb977fd6b17cac7fe85d574003bc5133b590d117e5b471a0abe73f96a069b0162bafd492a01900cb3c9bf6ffa6c30f11e9d1ce0eb5385187990f54387a1f66be91b8e9cc09acc5cf0545da67470ffbe95b856f90335573b14cb487787a1440166a4b5249c8108b7d7e07f340f2a30f986cbc2b1e3055cf425dde138deb3fb12a9bb2cfae7020b2503ff50840ad2f026282bb9725e82e310cb2c32a1fc1e7291817f7539055d8b61335643d2a6754033df4326da389ed5f83a6a1c88125975548fb213a2fd7287d98e8d815f42524e10ad9117cdbf88464a8354a96e6c1127167f7cf00088440501d660e670bf98e174cbb5bef986899bd2ed23f0051d1d776e6f4eaf6a8b4c973f12fc85b218c17d346dc8e8f820f71716219165fecc90ac1101a58d0325a586e9a2fed1a2ca2a96b86c94892551712aa032e2a474315ef6e0aeabb2d92356a65e55ccdd371f79a5e6f59e902667731512f1faf7bbbc3ed307927323b1a51f52268d696be32066cdb859662fdb69f8e2a718462537a612987377552f3e34919ff9e044ebfef0f000000088688c398c528e063a27c2654d8ef6fcf86cccf6111384367569f78e0c5544ac0c32f502398b9fb43c94ce6b0c2fdff387ca058d8b3d70edf444567347c32180e5f579935bee605d8d59580c7092b374ce27758f3fabbdc1210c52e7cdea694281ba308427afff30f71588a9280f7ebc56fe9b80c84ea65867cbe443ce760d0dfa3c7889846873ca76dcf464c7ac41ce082605d115f02ac350289557bf7afa58157cbed69a0dee6991af022ce6cd54867c1a05e71949fef85c941fca240e0cb67ea053725b7fa8de0ef248b9203f3de202fad5415112aa621ffaa5504fe4d20929b4f761d9b8621a63726e079b36c2e04bff0782374e2cb103c54842768c164ee77668753efebca2f6f075f47002f7dfb3689e27f1096236cd904645108e7ee25a0f6f3a24ca2db67b53a13a5e9c39601d526b5bf1658c9e9ce2b80f0a6eda7ddeb8811c6458dcea902dad8c1e0da485459d01a9349bebc7e03c7da4366fd53ed29b30c7bb9d28d758c5574f7347cc02e1becabc07964ef20bb27950f4352c92382eba52126a33d4fbe947a1a70dcc622115e4a1e61d283cb7e21a26d43f5ef2317acba85a2aafd6fcdc6fd902bf7821de2b21f252d73efb0f632e46097ed8b9d7c859175c8b4c54d7509ed221131702fef73ca28d9f25f7e1e915be840ff3e56b8d09323f93da0a6a041b5fe66a1910707f5a06c805efe8cbbbcef36a20680cfbbc4d793bf7ba9be868e290e4fe99c1f44eff6f1444775ce1f2c2bf2479b38db8029024f7cca496cc0c1d4013f96a1791e73b72d4220d649d7333761aad155a45e23e00b83bf3c80848c4c3bef451b33102338b11e4fa27c0e63800f1fb10c72029c3034e04d606bed563c0a001f5ad8c718d4056acce6076a1a652b28699928

pk = 0000000100000008000000042fd1d7b686c84cbe1eaaf415f6095268787d809d3b8d9cd021a0967b3972c847cfdc0935346b1ce9f3f6e21a2fcde0cd
pk = 0000000100000008000000042fd1d7b686c84cbe1eaaf415f6095268787d809d3b8d9cd021a0967b3972c847cfdc0935346b1ce9f3f6e21a2fcde0cd

17 changes: 16 additions & 1 deletion tests/test_cmdline.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"):
Expand All @@ -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
Expand Down
2 changes: 2 additions & 0 deletions tests/test_kat.py
Original file line number Diff line number Diff line change
Expand Up @@ -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],
)
Expand Down
18 changes: 16 additions & 2 deletions tests/test_speed.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading