From 64fc2cd2d304e738a0c1551493e6fe948c41238a Mon Sep 17 00:00:00 2001 From: Duc Tri Nguyen Date: Sat, 8 Jun 2024 17:19:08 -0400 Subject: [PATCH] add XMSS-SHAKE256_*_192 parameters Signed-off-by: Duc Tri Nguyen make server astyle happy update xmss.yml update algorithm list and README Signed-off-by: Duc Tri Nguyen clean up Signed-off-by: Duc Tri Nguyen [trigger downstream] Signed-off-by: Duc Tri Nguyen --- .CMake/alg_support.cmake | 4 ++ README.md | 2 +- docs/algorithms/sig_stfl/xmss.md | 3 + docs/algorithms/sig_stfl/xmss.yml | 18 ++++++ src/oqsconfig.h.cmake | 3 + src/sig_stfl/sig_stfl.c | 57 +++++++++++++++++++ src/sig_stfl/sig_stfl.h | 5 +- src/sig_stfl/xmss/CMakeLists.txt | 18 ++++++ src/sig_stfl/xmss/sig_stfl_xmss.h | 55 ++++++++++++++++++ .../xmss/sig_stfl_xmss_shake256_h10_192.c | 7 +++ .../xmss/sig_stfl_xmss_shake256_h16_192.c | 7 +++ .../xmss/sig_stfl_xmss_shake256_h20_192.c | 7 +++ tests/KATs/sig_stfl/kats.json | 3 + .../sig_stfl/xmss/XMSS-SHAKE256_10_192.rsp | 12 ++++ .../sig_stfl/xmss/XMSS-SHAKE256_16_192.rsp | 12 ++++ .../sig_stfl/xmss/XMSS-SHAKE256_20_192.rsp | 12 ++++ tests/test_sig_stfl.c | 9 +++ 17 files changed, 232 insertions(+), 2 deletions(-) create mode 100644 src/sig_stfl/xmss/sig_stfl_xmss_shake256_h10_192.c create mode 100644 src/sig_stfl/xmss/sig_stfl_xmss_shake256_h16_192.c create mode 100644 src/sig_stfl/xmss/sig_stfl_xmss_shake256_h20_192.c create mode 100644 tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_10_192.rsp create mode 100644 tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_16_192.rsp create mode 100644 tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_20_192.rsp diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index 73fd85928..54a14b006 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -513,6 +513,10 @@ cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_shake256_h20 "" ON "OQS_ENABLE_S cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_sha256_h10_192 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_sha256_h16_192 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) +cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_shake256_h10_192 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) +cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) +cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) + cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_2 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_4 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmssmt_sha256_h40_2 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) diff --git a/README.md b/README.md index 2301d756a..dd7234cba 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ All names other than `ML-KEM` and `ML-DSA` are subject to change. `liboqs` makes - **SPHINCS+-SHA2**: SPHINCS+-SHA2-128f-simple, SPHINCS+-SHA2-128s-simple, SPHINCS+-SHA2-192f-simple, SPHINCS+-SHA2-192s-simple, SPHINCS+-SHA2-256f-simple, SPHINCS+-SHA2-256s-simple - **SPHINCS+-SHAKE**: SPHINCS+-SHAKE-128f-simple, SPHINCS+-SHAKE-128s-simple, SPHINCS+-SHAKE-192f-simple, SPHINCS+-SHAKE-192s-simple, SPHINCS+-SHAKE-256f-simple, SPHINCS+-SHAKE-256s-simple -- **XMSS**: XMSS-SHA2_10_256, XMSS-SHA2_16_256, XMSS-SHA2_20_256, XMSS-SHAKE_10_256, XMSS-SHAKE_16_256, XMSS-SHAKE_20_256, XMSS-SHA2_10_512, XMSS-SHA2_16_512, XMSS-SHA2_20_512, XMSS-SHAKE_10_512, XMSS-SHAKE_16_512, XMSS-SHAKE_20_512, XMSS-SHA2_10_192, XMSS-SHA2_16_192, XMSS-SHA2_20_192, XMSSMT-SHA2_20/2_256, XMSSMT-SHA2_20/4_256, XMSSMT-SHA2_40/2_256, XMSSMT-SHA2_40/4_256, XMSSMT-SHA2_40/8_256, XMSSMT-SHA2_60/3_256, XMSSMT-SHA2_60/6_256, XMSSMT-SHA2_60/12_256, XMSSMT-SHAKE_20/2_256, XMSSMT-SHAKE_20/4_256, XMSSMT-SHAKE_40/2_256, XMSSMT-SHAKE_40/4_256, XMSSMT-SHAKE_40/8_256, XMSSMT-SHAKE_60/3_256, XMSSMT-SHAKE_60/6_256, XMSSMT-SHAKE_60/12_256 +- **XMSS**: XMSS-SHA2_10_256, XMSS-SHA2_16_256, XMSS-SHA2_20_256, XMSS-SHAKE_10_256, XMSS-SHAKE_16_256, XMSS-SHAKE_20_256, XMSS-SHA2_10_512, XMSS-SHA2_16_512, XMSS-SHA2_20_512, XMSS-SHAKE_10_512, XMSS-SHAKE_16_512, XMSS-SHAKE_20_512, XMSS-SHA2_10_192, XMSS-SHA2_16_192, XMSS-SHA2_20_192, XMSS-SHAKE256_10_192, XMSS-SHAKE256_16_192, XMSS-SHAKE256_20_192, XMSSMT-SHA2_20/2_256, XMSSMT-SHA2_20/4_256, XMSSMT-SHA2_40/2_256, XMSSMT-SHA2_40/4_256, XMSSMT-SHA2_40/8_256, XMSSMT-SHA2_60/3_256, XMSSMT-SHA2_60/6_256, XMSSMT-SHA2_60/12_256, XMSSMT-SHAKE_20/2_256, XMSSMT-SHAKE_20/4_256, XMSSMT-SHAKE_40/2_256, XMSSMT-SHAKE_40/4_256, XMSSMT-SHAKE_40/8_256, XMSSMT-SHAKE_60/3_256, XMSSMT-SHAKE_60/6_256, XMSSMT-SHAKE_60/12_256 - **LMS**: 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_H15_W8, LMS_SHA256_H20_W1, LMS_SHA256_H20_W2, LMS_SHA256_H20_W4, LMS_SHA256_H20_W8, LMS_SHA256_H25_W1, LMS_SHA256_H25_W2, LMS_SHA256_H25_W4, LMS_SHA256_H25_W8, LMS_SHA256_H5_W8_H5_W8, LMS_SHA256_H10_W4_H5_W8, LMS_SHA256_H10_W8_H5_W8, LMS_SHA256_H10_W2_H10_W2, LMS_SHA256_H10_W4_H10_W4, LMS_SHA256_H10_W8_H10_W8, LMS_SHA256_H15_W8_H5_W8, LMS_SHA256_H15_W8_H10_W8, LMS_SHA256_H15_W8_H15_W8, LMS_SHA256_H20_W8_H5_W8, LMS_SHA256_H20_W8_H10_W8, LMS_SHA256_H20_W8_H15_W8, LMS_SHA256_H20_W8_H20_W8 Note that for algorithms marked with a dagger (†), liboqs contains at least one implementation that uses a large amount of stack space; this may cause failures when run in threads or in constrained environments. For more information, consult the algorithm information sheets in the [docs/algorithms](https://github.com/open-quantum-safe/liboqs/tree/main/docs/algorithms) folder. diff --git a/docs/algorithms/sig_stfl/xmss.md b/docs/algorithms/sig_stfl/xmss.md index d3ec016dd..32fe8cba3 100644 --- a/docs/algorithms/sig_stfl/xmss.md +++ b/docs/algorithms/sig_stfl/xmss.md @@ -29,6 +29,9 @@ | XMSS-SHA2_10_192 | | | 48 | 1053 | 1492 | | XMSS-SHA2_16_192 | | | 48 | 1605 | 1636 | | XMSS-SHA2_20_192 | | | 48 | 1973 | 1732 | +| XMSS-SHAKE256_10_192 | | | 48 | 1053 | 1492 | +| XMSS-SHAKE256_16_192 | | | 48 | 1605 | 1636 | +| XMSS-SHAKE256_20_192 | | | 48 | 1973 | 1732 | | XMSSMT-SHA2_20/2_256 | | | 64 | 5998 | 4963 | | XMSSMT-SHA2_20/4_256 | | | 64 | 10938 | 9251 | | XMSSMT-SHA2_40/2_256 | | | 64 | 9600 | 5605 | diff --git a/docs/algorithms/sig_stfl/xmss.yml b/docs/algorithms/sig_stfl/xmss.yml index e367af875..456f861b5 100644 --- a/docs/algorithms/sig_stfl/xmss.yml +++ b/docs/algorithms/sig_stfl/xmss.yml @@ -107,6 +107,24 @@ parameter-sets: length-public-key: 48 length-secret-key: 1973 length-signature: 1732 +- name: XMSS-SHAKE256_10_192 + claimed-nist-level: + claimed-security: + length-public-key: 48 + length-secret-key: 1053 + length-signature: 1492 +- name: XMSS-SHAKE256_16_192 + claimed-nist-level: + claimed-security: + length-public-key: 48 + length-secret-key: 1605 + length-signature: 1636 +- name: XMSS-SHAKE256_20_192 + claimed-nist-level: + claimed-security: + length-public-key: 48 + length-secret-key: 1973 + length-signature: 1732 - name: XMSSMT-SHA2_20/2_256 claimed-nist-level: claimed-security: diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index 2341d494e..556c7532e 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -207,6 +207,9 @@ #cmakedefine OQS_ENABLE_SIG_STFL_xmss_sha256_h10_192 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmss_sha256_h16_192 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192 1 +#cmakedefine OQS_ENABLE_SIG_STFL_xmss_shake256_h10_192 1 +#cmakedefine OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192 1 +#cmakedefine OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_2 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_4 1 diff --git a/src/sig_stfl/sig_stfl.c b/src/sig_stfl/sig_stfl.c index 044434982..fc6bae0be 100644 --- a/src/sig_stfl/sig_stfl.c +++ b/src/sig_stfl/sig_stfl.c @@ -38,6 +38,9 @@ OQS_API const char *OQS_SIG_STFL_alg_identifier(size_t i) { OQS_SIG_STFL_alg_xmss_sha256_h10_192, OQS_SIG_STFL_alg_xmss_sha256_h16_192, OQS_SIG_STFL_alg_xmss_sha256_h20_192, + OQS_SIG_STFL_alg_xmss_shake256_h10_192, + OQS_SIG_STFL_alg_xmss_shake256_h16_192, + OQS_SIG_STFL_alg_xmss_shake256_h20_192, OQS_SIG_STFL_alg_xmssmt_sha256_h20_2, OQS_SIG_STFL_alg_xmssmt_sha256_h20_4, OQS_SIG_STFL_alg_xmssmt_sha256_h40_2, @@ -204,6 +207,24 @@ OQS_API int OQS_SIG_STFL_alg_is_enabled(const char *method_name) { return 1; #else return 0; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h10_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h10_192 + return 1; +#else + return 0; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h16_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192 + return 1; +#else + return 0; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h20_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192 + return 1; +#else + return 0; #endif } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmssmt_sha256_h20_2)) { #ifdef OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_2 @@ -610,6 +631,24 @@ OQS_API OQS_SIG_STFL *OQS_SIG_STFL_new(const char *method_name) { return OQS_SIG_STFL_alg_xmss_sha256_h20_192_new(); #else return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h10_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h10_192 + return OQS_SIG_STFL_alg_xmss_shake256_h10_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h16_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192 + return OQS_SIG_STFL_alg_xmss_shake256_h16_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h20_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192 + return OQS_SIG_STFL_alg_xmss_shake256_h20_192_new(); +#else + return NULL; #endif } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmssmt_sha256_h20_2)) { #ifdef OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_2 @@ -1089,6 +1128,24 @@ OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SIG_STFL_SECRET_KEY_new(const char *method_ return OQS_SECRET_KEY_XMSS_SHA256_H20_192_new(); #else return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h10_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h10_192 + return OQS_SECRET_KEY_XMSS_SHAKE256_H10_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h16_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192 + return OQS_SECRET_KEY_XMSS_SHAKE256_H16_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_shake256_h20_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192 + return OQS_SECRET_KEY_XMSS_SHAKE256_H20_192_new(); +#else + return NULL; #endif } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmssmt_sha256_h20_2)) { #ifdef OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_2 diff --git a/src/sig_stfl/sig_stfl.h b/src/sig_stfl/sig_stfl.h index 64dec0791..6006cdc95 100644 --- a/src/sig_stfl/sig_stfl.h +++ b/src/sig_stfl/sig_stfl.h @@ -59,6 +59,9 @@ extern "C" #define OQS_SIG_STFL_alg_xmss_sha256_h10_192 "XMSS-SHA2_10_192" #define OQS_SIG_STFL_alg_xmss_sha256_h16_192 "XMSS-SHA2_16_192" #define OQS_SIG_STFL_alg_xmss_sha256_h20_192 "XMSS-SHA2_20_192" +#define OQS_SIG_STFL_alg_xmss_shake256_h10_192 "XMSS-SHAKE256_10_192" +#define OQS_SIG_STFL_alg_xmss_shake256_h16_192 "XMSS-SHAKE256_16_192" +#define OQS_SIG_STFL_alg_xmss_shake256_h20_192 "XMSS-SHAKE256_20_192" #define OQS_SIG_STFL_alg_xmssmt_sha256_h20_2 "XMSSMT-SHA2_20/2_256" #define OQS_SIG_STFL_alg_xmssmt_sha256_h20_4 "XMSSMT-SHA2_20/4_256" @@ -126,7 +129,7 @@ extern "C" /* * Total number of stateful variants defined above, used to create the tracking array */ -#define OQS_SIG_STFL_algs_length 64 +#define OQS_SIG_STFL_algs_length 67 typedef struct OQS_SIG_STFL_SECRET_KEY OQS_SIG_STFL_SECRET_KEY; diff --git a/src/sig_stfl/xmss/CMakeLists.txt b/src/sig_stfl/xmss/CMakeLists.txt index 2bdd09874..9eb82a97e 100644 --- a/src/sig_stfl/xmss/CMakeLists.txt +++ b/src/sig_stfl/xmss/CMakeLists.txt @@ -106,6 +106,24 @@ if (OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192) set(_XMSS_OBJS ${_XMSS_OBJS} $) endif() +if (OQS_ENABLE_SIG_STFL_xmss_shake256_h10_192) + add_library(xmss_shake256_h10_192 OBJECT sig_stfl_xmss_shake256_h10_192.c sig_stfl_xmss_functions.c ${SRCS}) + target_compile_options(xmss_shake256_h10_192 PRIVATE -DXMSS_PARAMS_NAMESPACE=xmss_shake256_h10_192 -DHASH=2) + set(_XMSS_OBJS ${_XMSS_OBJS} $) +endif() + +if (OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192) + add_library(xmss_shake256_h16_192 OBJECT sig_stfl_xmss_shake256_h16_192.c sig_stfl_xmss_functions.c ${SRCS}) + target_compile_options(xmss_shake256_h16_192 PRIVATE -DXMSS_PARAMS_NAMESPACE=xmss_shake256_h16_192 -DHASH=2) + set(_XMSS_OBJS ${_XMSS_OBJS} $) +endif() + +if (OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192) + add_library(xmss_shake256_h20_192 OBJECT sig_stfl_xmss_shake256_h20_192.c sig_stfl_xmss_functions.c ${SRCS}) + target_compile_options(xmss_shake256_h20_192 PRIVATE -DXMSS_PARAMS_NAMESPACE=xmss_shake256_h20_192 -DHASH=2) + set(_XMSS_OBJS ${_XMSS_OBJS} $) +endif() + if (OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_2) add_library(xmssmt_sha256_h20_2 OBJECT sig_stfl_xmssmt_sha256_h20_2.c sig_stfl_xmssmt_functions.c ${SRCS}) target_compile_options(xmssmt_sha256_h20_2 PRIVATE -DXMSS_PARAMS_NAMESPACE=xmssmt_sha256_h20_2 -DHASH=3) diff --git a/src/sig_stfl/xmss/sig_stfl_xmss.h b/src/sig_stfl/xmss/sig_stfl_xmss.h index ff7919fa5..5064546c6 100644 --- a/src/sig_stfl/xmss/sig_stfl_xmss.h +++ b/src/sig_stfl/xmss/sig_stfl_xmss.h @@ -35,6 +35,10 @@ * | XMSS-SHA2_16_192 | 0x0e | 1605 | 48 | 1636 | 24 | ❌ | ✅ | ✅ | * | XMSS-SHA2_20_192 | 0x0f | 1973 | 48 | 1732 | 24 | ❌ | ✅ | ✅ | * + * | XMSS-SHAKE256_10_192 | 0x13 | 1053 | 48 | 1492 | 24 | ❌ | ✅ | ✅ | + * | XMSS-SHAKE256_16_192 | 0x14 | 1605 | 48 | 1636 | 24 | ❌ | ✅ | ✅ | + * | XMSS-SHAKE256_20_192 | 0x15 | 1973 | 48 | 1732 | 24 | ❌ | ✅ | ✅ | + * * | XMSSMT-SHA2_20/2_256 | 0x01 | 5998 | 64 | 4963 | 32 | ✅ | ✅ | ❌ | * | XMSSMT-SHA2_20/4_256 | 0x02 | 10938 | 64 | 9251 | 32 | ✅ | ✅ | ❌ | * | XMSSMT-SHA2_40/2_256 | 0x03 | 9600 | 64 | 5605 | 32 | ✅ | ✅ | ❌ | @@ -309,6 +313,57 @@ OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_sha256_h20_192_sigs_total(unsigned long #endif +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h10_192 + +#define OQS_SIG_STFL_alg_xmss_shake256_h10_192_oid 0x13 +#define OQS_SIG_STFL_alg_xmss_shake256_h10_192_length_sk (1053 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_shake256_h10_192_length_pk (48 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_shake256_h10_192_length_signature 1492 + +OQS_API OQS_SIG_STFL *OQS_SIG_STFL_alg_xmss_shake256_h10_192_new(void); +OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_XMSS_SHAKE256_H10_192_new(void); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h10_192_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h10_192_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h10_192_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h10_192_sigs_remaining(unsigned long long *remain, const OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h10_192_sigs_total(unsigned long long *total, const OQS_SIG_STFL_SECRET_KEY *secret_key); + +#endif + +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192 + +#define OQS_SIG_STFL_alg_xmss_shake256_h16_192_oid 0x14 +#define OQS_SIG_STFL_alg_xmss_shake256_h16_192_length_sk (1605 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_shake256_h16_192_length_pk (48 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_shake256_h16_192_length_signature 1636 + +OQS_API OQS_SIG_STFL *OQS_SIG_STFL_alg_xmss_shake256_h16_192_new(void); +OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_XMSS_SHAKE256_H16_192_new(void); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h16_192_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h16_192_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h16_192_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h16_192_sigs_remaining(unsigned long long *remain, const OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h16_192_sigs_total(unsigned long long *total, const OQS_SIG_STFL_SECRET_KEY *secret_key); + +#endif + +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192 + +#define OQS_SIG_STFL_alg_xmss_shake256_h20_192_oid 0x15 +#define OQS_SIG_STFL_alg_xmss_shake256_h20_192_length_sk (1973 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_shake256_h20_192_length_pk (48 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_shake256_h20_192_length_signature 1732 + +OQS_API OQS_SIG_STFL *OQS_SIG_STFL_alg_xmss_shake256_h20_192_new(void); +OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_XMSS_SHAKE256_H20_192_new(void); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h20_192_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h20_192_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h20_192_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h20_192_sigs_remaining(unsigned long long *remain, const OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h20_192_sigs_total(unsigned long long *total, const OQS_SIG_STFL_SECRET_KEY *secret_key); + +#endif + #ifdef OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_2 #define OQS_SIG_STFL_alg_xmssmt_sha256_h20_2_oid 0x01 diff --git a/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h10_192.c b/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h10_192.c new file mode 100644 index 000000000..e6e510f55 --- /dev/null +++ b/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h10_192.c @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: (Apache-2.0 OR MIT) AND CC0-1.0 + +#include "sig_stfl_xmss_xmssmt.c" + +// ======================== XMSS-SHAKE256_10_192 ======================== // + +XMSS_ALG(, _shake256_h10_192, _SHAKE256_H10_192) diff --git a/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h16_192.c b/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h16_192.c new file mode 100644 index 000000000..33115dff5 --- /dev/null +++ b/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h16_192.c @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: (Apache-2.0 OR MIT) AND CC0-1.0 + +#include "sig_stfl_xmss_xmssmt.c" + +// ======================== XMSS-SHAKE256_16_192 ======================== // + +XMSS_ALG(, _shake256_h16_192, _SHAKE256_H16_192) diff --git a/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h20_192.c b/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h20_192.c new file mode 100644 index 000000000..035f95b01 --- /dev/null +++ b/src/sig_stfl/xmss/sig_stfl_xmss_shake256_h20_192.c @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: (Apache-2.0 OR MIT) AND CC0-1.0 + +#include "sig_stfl_xmss_xmssmt.c" + +// ======================== XMSS-SHAKE256_20_192 ======================== // + +XMSS_ALG(, _shake256_h20_192, _SHAKE256_H20_192) diff --git a/tests/KATs/sig_stfl/kats.json b/tests/KATs/sig_stfl/kats.json index 1e87db99b..7e5174a9f 100644 --- a/tests/KATs/sig_stfl/kats.json +++ b/tests/KATs/sig_stfl/kats.json @@ -14,6 +14,9 @@ "XMSS-SHA2_10_192": "6efee401869dafee754165a22a6f2f3b467fbaaa4f054bad5b70c7f4c5857133", "XMSS-SHA2_16_192": "33225885b04da07a95ea63f993d05ee50223d3484f537f324b290d8a317d7bd7", "XMSS-SHA2_20_192": "cf30df53ca187aabe92d5915e4fd26a118cca1f20af1002f96b63614d04e973b", + "XMSS-SHAKE256_10_192": "b62a1dbc2f8920df2f5a164ed175829ed95d5b3301269b0ab2452cd46b4261d6", + "XMSS-SHAKE256_16_192": "935570c4bc7c61e4cdc0517182766dcee53ceec71f91b8dd969568a7f8b76db1", + "XMSS-SHAKE256_20_192": "18067167a1eeee294bf1f0e3087e468b512f7c0c4cfad9c449dc425aab45336b", "XMSSMT-SHA2_20/2_256": "9f117294999c886ac6b69d6f32c3fc152599343add210f4464aee5d1ca0ec34d", "XMSSMT-SHA2_20/4_256": "0c990e8ff8189140e8539b11ae3f85040544fc7d549f8db17d83392569647de9", "XMSSMT-SHA2_40/2_256": "91605c4b67afb4e17d57ed076e10d3c4287264deea4a46092e374199c041d489", diff --git a/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_10_192.rsp b/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_10_192.rsp new file mode 100644 index 000000000..ecdaaac44 --- /dev/null +++ b/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_10_192.rsp @@ -0,0 +1,12 @@ +pk = 00000013169573BFA70085B1FCB20C54B1A7E1854125FF73E7E3906DDAF99FC489A89297F443AB348784B6E568B83CDA69E5039E +sk = 000000130000000090D31CA2483030376A8EAFB11754F7F8E6C065DF2E9DEECD4255CEB90C8729910FB0E3CA8630BC2EE5C02979CAB59C5A169573BFA70085B1FCB20C54B1A7E1854125FF73E7E3906DDAF99FC489A89297F443AB348784B6E568B83CDA69E5039E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022C6D157560B27358D178F04A1375A750453A62EC564C784AD8076451B0C1795A8ED33ED5E9CF6B1CDEC434290109CEA337A5B00FC4FCD573FCC4308B898F7932AAD9819F6A49BC0DE7C797D9D5996C44434724660560CB4696C83D5F2FAEA74617DDD9EF334C9C0D5375F47DBA7EC26808DB817331A6C9218BDC4965B18088E055BB176C6387A9DCDE935FF52465AA501DF704BD6A9560D7E9F8EAAA43035708D8BBF813970CD37076FCAE8BCD3517F9B4B15CFF732ACC7A565D3E68A62EEE0802016CF8D3F383206DBDF7EA482A3DBBAEE7AE0E7C323F9DC2A518B941B2F90BAA5B531349E9B54314EED182A900ABB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A6D5F2E8CF15D43EFE6D06327B707905D717138870BE459601000000000001FBB1B3C8186F2FD4BDFC262C790DDBE59D4C39FDB457B8B2020000000000013DD2ACD3469828C67774A8C07F22136657DEA9D335BE21030300000000000159AC3727A07BADA9EEBF077D1EE30C9416D8699BE3907E3B04000000000001136E27F71CD21D359B5C69754FFFB360C274FD6F24BA4C5905000000000001A4465D0EE7AD6C39B9DA1FAFFCCA606D70A620F9916EC7A0060000000000019DDFEC841E66833951D92267FD656228A18CF4346538B55207000000000001D6DBFBB2C3167604630B5E48A26ACCBD99E36BA1C558995708000000000001B53527E19E857CF9DEAFD43EB740BFDAF4E7790BCA568E460900000000000100000000000000000000000000000000000000000000000000000000 + + +count = 0 +seed = 1840C60AD9F35C900372EF38D08671A74353C965C3C5DE0668C9C3E5CF3926304322530FD9681CF3A9C71FD633D60C66 +mlen = 33 +msg = B338DD755D5618C464AB331F14DE3DD4A358BBA00D28FB35236741E902F7B248CE +smlen = 1492 +sm = 00000000AB78C376B92DBA4CDEB56ADEC9E559D3300A3A4303654D96AC79259D9E0889681DE0A14F6D7B4D4377A548CEDE7E204938A0B383F54D42F1EC6C722DF31DFC861881DBACF33E2F6CA641A7592A2C93457B2714CDFC2A4BD483AB85F50E2BA9A4C852145312960DCD6B5515318D8C8DA2EA4465D4AEAF37E6BACACE7FD577DD9010EC0FB7770C3B65C97E89535A7707EE294C1A1B11584405F563C79BA331DF838E8517743052011D261AE87009B97D3F62C78CB40862F611A5B87651E551F10E5DE23EA1684782A66A587C8B0DE8B2C68783BF71F86411406EFAFB851DA5987955F16D46F3C550A8A794E0B571E996053649373C69FA4FDDEC16A6F789EAABD499828B0C302DDE570101BA82100E47C60C60F799C367B0EB6E24F659CA07BB38D328DBBFB661DAB4BDF389D7FABC78F69ECA685E1079DA6C958AA4288570D29A95F1FD4F05CA308B8F5B165CF69DE6C9F7C0C7B6F5C9AC9339AD75383C232DEE13EBF76BCEE260FB80D2AEFD018510B75D13B9FFF54EC6C5A5DEC0F72C8E315D68464174572A7D65CE06251CFECE255DE8438AF73982D08057049067A491EDD8BB9798A9C3230A0C1EEBD72A5BBB0533DB68817C84077B5473F36997F26BF6843A187C7038A256146F74C0AB07999A69B8D842A1455659F228A139A08692A8A4906FC55ED49E8193209F34129A21ECA72EB0DDAB4E6E77F240DBF23BDB187A623CFDA18E89FF18C7CF1A75DF6E8E00265C9BEAE6825ED1FCD283C9F9544B583E5E9BA7F54269D1A0235BDB8C19F26FB25062053545CD5439A7EBC42337F2AE6D54E0BB96AB0FF8A893315844B52EEE85C7408E0E7C5750768A205DCE54AA7F444F92DE9A9DD61E0E34381E7C235A6B279B477A0FF880D13EFD96277E8A4F794C2D8E455528D33A6FABF0AD513D4116F715362CE85169E24BF8033C9A5E499F1DAF50E3AD12132A89BF720B8F62D981216393C23F975B388B474C97050E94E40A1A2374C404EA0049158C1C7DAC83CEC3C0D6211495E0AAB82E834377A7E1E78789A7378E5CA0C8B76C2E7D5C0F0C82E7A8000F0191E660A436BA4B34CA27FDF1381B94330FA1E005DD1AF3EC042F388335BDC52FA48A17D6D593E8843EA6F24228259988B4A094B8D45537130FC52D6ACEE13319782A7E1E7A7422124FA3603C96AD29D7117CC38C4BB18D2978281B3FB87B634F561AAEA47DFE9219AC9829A85A642B2287373B35550EB3D7E4E1226C3FB944AE8612CCA14C7D438F3069E23BB44B108201552EB002B0A004C9195C2571971DFCCD6DF08C92F136F0834076ED52809BD8E56B33A2402C1F0309640928313E24944ACB6C47760CD01B4956236E8524429A95D5AA5FF0F70ED62D5871F64568ED9E8AAF1DD50012CF0BA9D31AE7B8EED6FFCF9D23C9C660CBABA284A88595EF8D275C6E023E3DBE318DEA096F910CB9BF1C80777DA4A436B12A2EABC12429989FB2FE7D432A717D7F1B3EAD0067B9C8315E4CDBDE2992A579E5CAB2FF056227E546D004DC6438FC7D62B4BB09CD64DE415C58DCA0C3AC075CD8D428856748CBEF91057D5C8C50EF4783DFA2A33C445A0AA4621604BF72262904A2096C90553D6987A7C51D807D92AD78B87969C92E3506B69C4CBD2A738DB178079F3A47F06A8FA5876D1DAB516992DCABE1D14CE7E3EBD62A008A33C29273B1E0AAC76E167CDF9AD08724FCFCF9ECAA06FD8AD132F4F7E8A81CF1ED956D4B66E24C9061622AAF54DB02F74C5B88EC91E478987722C6D157560B27358D178F04A1375A750453A62EC564C784AD8076451B0C1795A8ED33ED5E9CF6B1CDEC434290109CEA337A5B00FC4FCD573FCC4308B898F7932AAD9819F6A49BC0DE7C797D9D5996C44434724660560CB4696C83D5F2FAEA74617DDD9EF334C9C0D5375F47DBA7EC26808DB817331A6C9218BDC4965B18088E055BB176C6387A9DCDE935FF52465AA501DF704BD6A9560D7E9F8EAAA43035708D8BBF813970CD37076FCAE8BCD3517F9B4B15CFF732ACC7A565D3E68A62EEE0802016CF8D3F383206DBDF7EA482A3DBBAEE7AE0E7C323F9DC2A518B941B2F90BAA5B531349E9B54314EED182A900ABB +remain = 1022 +max = 1023 diff --git a/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_16_192.rsp b/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_16_192.rsp new file mode 100644 index 000000000..5e44313c1 --- /dev/null +++ b/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_16_192.rsp @@ -0,0 +1,12 @@ +pk = 00000014EF99BCA3BC427D43D23B78D439EEC8FF0D1306FADD92DA755C995A78B150D62FF94D74903FB6048EAB08C575FFC88A2F +sk = 000000140000000008079D569D0529AD0C912A3E7D5D10E647C6BB2DF43E9CEDBA05141C05D40D2C2AA5C54F75F41490388A2D00E78FEBF2EF99BCA3BC427D43D23B78D439EEC8FF0D1306FADD92DA755C995A78B150D62FF94D74903FB6048EAB08C575FFC88A2F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3F90514044F2EB129A903B9268B2B801DB042705F08973758951F85E8B01BB6DCCFD54A5B3BBD10C470D7C4E4CD24FDD4E8186F9A6D14627444731483A5BCE332AD2C28E24B5A5497477D9491D8091A20265869D86A6798261D8F93F38FA88EEC0F4666D87609921166A9BA9B52541A575A638BF2BCD434DAA709C77E13C99B6329B6215E9BEC09E32436C439836E19D982F0B42094B4DFBB7A38FB64E01F744A47DE4FB69C19011554D11014011BC1A737DD7495E00AF02C6BFD79899670152D8F0D62CAFA2F061CA40BFC263FDA0700E8164FF99B37A3ABDCA889321B79DADF3E1CC42175DEBCF266F6DC463744448CF8AEB9DD528E36C9A5AAF33107B78F8FB63220BBAAB660F505CEAE8CD01459B913441BA90C6525C44FCF48CCAD0D3735D168FD667FE504859D8EF671E33C60F344AD15681CC8F2C6E600C1C9C1C6EE3F877DE4D6BC400503229DA0974669492CF32F2994ED49C14E5FBB72722CB5377BE9B55506F08A29D3BFAFBD33CF5C6ADED2D80DD0C9D5500F9B4365AD7C590C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F38375B1747A68C801BB43F746EBA3F7457D34F3F48EAC3A01000000000001221618FE93A8CD311BCF220224F233500E2F10A5E6D9F8F002000000000001CB337F66D00303A9E8A9316D0C74C81F68B0248A046EA69803000000000001C205592FFAAC07421218068173B75AA3FEB6D241D4719170040000000000011749B4C827E79FD75DE055A8C0B2B38826F2A71CD6B9030D0500000000000120BDB9A271BEDF434932232600F0790F452990CABAFFC7F906000000000001E8E3221FF3845FB5E93DF619359A71EAAF958F5D4CA9FAA9070000000000019FA7D515C7391AB6BC2C14DFD6C4167DA7FCC0843F58C3F80800000000000135E43409A2EBDC39971E57AFE0624243AD19509A895BF0F909000000000001DE765BE341301A4739579AD1D6D9B5DE90131642DB1BD12E0A0000000000016C12325F76D5CF7107D91757B0872B541574B0E14DDBD4050B0000000000011841530BC946769EED4935BCC11A1ADA4952C8EFB41FE38F0C000000000001559D9E589220C9E24021CB9820D10F251EC969E251C760AD0D00000000000123EAEB4EBF34643992CBE434F7AE56216528363AB793E8470E0000000000013D54C3E197D27740343CD7919FDB9A4912C68F5D93E8F0560F00000000000100000000000000000000000000000000000000000000000000000000 + + +count = 0 +seed = 1840C60AD9F35C900372EF38D08671A74353C965C3C5DE0668C9C3E5CF3926304322530FD9681CF3A9C71FD633D60C66 +mlen = 33 +msg = B338DD755D5618C464AB331F14DE3DD4A358BBA00D28FB35236741E902F7B248CE +smlen = 1636 +sm = 0000000043DF12F88D5F674DFDB5AAAF1B2F5CDD73EB3C143F51600FAB8DF5B5655596AFBC6843EAC087F086EDC881D4E115F1487479B9D404190EB102AD04529E7BDAD00235F3AB155488A71885A2E42D21A26982526A4BB4F48091B4879CA35233E62F4B4021B466356ABF543192F3A4779CB17497A69F4582022A4D22461223B2113C8609111AEFF345D03567978AF6DD3068E69FA95B870CCB76DBD8D777BC347E2F624B92EB85F0BFD526816A7F4A6A8963AD4815DEA6E2D4228B70F37CEAC9CEC967E7168B2E4E48C5C605B14375AF0E7C32BF70AF8D0F895BA74E1321C81079648A0390FD866A2E62C8E780B4849C7095CE43B3014BCA95DE02F3AF75014E84A107F7876C99DF63595E451D5FB9B8C69EEB764979A591799C33D0BA44CAF15C0B566A26590299E78D5F6CE0362EFAD2622E6063B605235FC25888A66518CB20411B8493D55BE12010D32E8E16801817881090C55006D8F482F2E7FC9A3B94AC5369C4C9A32AD9791B6561A6EC76ADD0CEA44861F24BCA8163E62E819C25C722DDDC480AE795361B205AD21DE4A31DC0E054212444D9395044A3AEA05B8606AD26182BBEAEB827F79585F294AE0EC9AA47F2EDD474305C5F56A0875647B1C8E929DB9551B2D6EA865AAA9DF31B240B53E6FDEA1A30675145FA358A2EBE8B7D50112B293316258B450C46C113DB5BBBA5BB8395871F945A3A6C1AC710DC2ED845154B483A3CC4CCA702879324BF04ACF5F4097551F5C51DC77713B27CC9131D06AD3CB4F316CA1633AE561ED479B30F63313E069D7FA4C47FC6C757C0921EB3013B5080C0B7B09A764EBB2522D45FBE1AEF9929BEAFC3B37B0D42D0F9F8642352CB7F3CD6987497BD0B41CFD17FD8867ADF8390C1F22B92D52A33380C308AEE75DB8BC825DAF5F357DAE0C50D80E4913133F352B2AD8865780B635D0D706E54FBC7E23625DB83A5956511BF21969B33C4AE8D948563BC2BCFE7626CB561DBF8DA320DB2C037B12F9268ED72C49A36AE795F32BB0BCB6FA26E5DDC4EFBF290D7049F43B39C6AB5CF650FF812B959C4EAF8A18714AF89F076DC5ED35F9ABF65C926010109489CCA4DB5B62A15F2F22CE536E1A96878B4E9058198DA95E319FD2E37E77F8CAE7C1C49F4567CAF86F038EDA01F6AF0CB6AA45CEB6EBBE5BBA4E09731F3D20E94B3A01E938FAB1C6CC82AF1A73827D66201E2614A5A23F69B8A950BD850557F105C5C45464F5BDF446C8816B79CABB3AC9A67047B2468B04507AF228D5A8E76F8BE862C821DA681D4EA83627E1DB9E146A814D96E641BD42B551121E8292698CDBB0F587E1235E03F52827CB3ED6C9602F05E952237DD3366116D81DFA1929ACACCF6E1C3FF369FC982CF2F64AC41470D34BD11019772F380801991F291F66EA11013A8E772A4E6822F7E54879699B39560D5DBE5D1FCBF50729EAC619324500012C317A80673CECBBA0CF919F02987447DB4B9A64668A51905A968A56B13CDA0139EC09E5C99B8ECA2FCA6A3D85AFF473928CA555E62B65AA2D81D3792ED4F50EB7D3EA23DCD1ADAAEB1745CD95B1583826B85F160D87CC4B0204883FF08B46E52BF72F44643ECCB4E5814DE832EAB4C7659C19E36455EC76926C5341DEB2103CED5A280C74F172BCE3AEE491CC7687830B524EBFDC14927B50477050BF3AAF219378F1D8DB3302D67A2DED617708F67EBA48BD70BFC158DAC44ABAE8487D7FD2B6FD630FD2DD2696F3EE2815C47219F19FBEDAE3B693BF51E8A17C8BDB3F90514044F2EB129A903B9268B2B801DB042705F08973758951F85E8B01BB6DCCFD54A5B3BBD10C470D7C4E4CD24FDD4E8186F9A6D14627444731483A5BCE332AD2C28E24B5A5497477D9491D8091A20265869D86A6798261D8F93F38FA88EEC0F4666D87609921166A9BA9B52541A575A638BF2BCD434DAA709C77E13C99B6329B6215E9BEC09E32436C439836E19D982F0B42094B4DFBB7A38FB64E01F744A47DE4FB69C19011554D11014011BC1A737DD7495E00AF02C6BFD79899670152D8F0D62CAFA2F061CA40BFC263FDA0700E8164FF99B37A3ABDCA889321B79DADF3E1CC42175DEBCF266F6DC463744448CF8AEB9DD528E36C9A5AAF33107B78F8FB63220BBAAB660F505CEAE8CD01459B913441BA90C6525C44FCF48CCAD0D3735D168FD667FE504859D8EF671E33C60F344AD15681CC8F2C6E600C1C9C1C6EE3F877DE4D6BC400503229DA0974669492CF32F2994ED49C14E5FBB72722CB5377BE9B55506F08A29D3BFAFBD33CF5C6ADED2D80DD0C9D5500F9B4365AD7C590C +remain = 65534 +max = 65535 diff --git a/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_20_192.rsp b/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_20_192.rsp new file mode 100644 index 000000000..bfb6f2d49 --- /dev/null +++ b/tests/KATs/sig_stfl/xmss/XMSS-SHAKE256_20_192.rsp @@ -0,0 +1,12 @@ +pk = 00000015877E42B0F7C6BF1BCF8F36715EE69F8BF5839BACB76F0A54D51584D95DCA9D8C26A3A3F2962803D9AB6B3D2F91359AF6 +sk = 0000001500000000F6433DB3007DC760A5F208C03572C8F4270D4BBB126EC74404B0CEF0C8D2ABB5F7DC90F9B7F1FDB7EADE9C3495029EB6877E42B0F7C6BF1BCF8F36715EE69F8BF5839BACB76F0A54D51584D95DCA9D8C26A3A3F2962803D9AB6B3D2F91359AF600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A382847238524CC6B2BBBE1CED1814C833AB313C038EA312146814B498DB08BB8418178D01ED70A701645632E3D31C6E0ED03E399259CD2E6619E212FB32B550F6EAC7D85AD23D59C95DA361ABF23C8CF1F8E1543AFB3F9175508AC72E03C62BFE3F5C8CBACAB18C1AA5E403D4511CFD7538D9F98F55038BBDBA75F567E9CF2C7DC9FFA39A2050BC8B041BA67611521ABE935ECCB4E9BDFEF043CA42D9F9C2A1C8F97A19418F01618D6E5AE93FE68C01BCE78CC9F74339DBDF48112B03D936EFB69F8A2278F03F5D47BECE3024CD7F6A84F8560504878A9C42CFD99676D841362FE65C9C09A5C6809310740D52D8A7FDE5DAB500BCDAF954CBEC55316BE0A53BF7E6DA31803D0BE1BC9A71ABE91EE71783049D3CF625F835BD2633ACBB6DD64B4DBBBD03684C9AC09E691A2B61CF49A580309C48A6116BCCF62C92811DF5AB6ADAFB6BD5FE287E3EE7392091D13E8054FD6A3E1E087E37C817804767B1FD6749BAD56C43AA977C321EB7E6675E7CE72D999A7F66AAFD2F57B48C43740EBAA857F2A2AE1B6CC742C31EDD005CEC5457ADB9A0AE80A91CAFC79AF5FF54749608396685DD8AB35738DC2BF030B068AF28147BF4686B925840371A4603FE3C4342F029B8147A56B8BA55D3A5ECEC0CF0A9777D4C351F86B6CE56F0E275CADB32433B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010987DCDACD1C3716DF0D93E4879B7F74DB4F1C013E36C614010000000000011DFAC5CBF2CC607867872A1890BCA9A22C0287B070448B960200000000000127A5E18B518ACFB270416E623DFC82053A6664106DF6ACFE03000000000001D4E74DA4FC817E157BAC78D0C87A0AEBEC2EF1F6E359FF8F040000000000019458A48C2F5FD591CD65577C8C27EE27A8C452CC9C74C54B0500000000000136D7DC91465F8C7BB0DB8F21B7C7DA256D939258D2CD517A060000000000010130F67F1BE3AFD66ABA6E9B84CE727907505C6026FC6F9C0700000000000186C93C533693F00E085557F66C5D0BEDE241BFA0F012AB7408000000000001E8AFED8C40F679869F8566C03BCB5B346BDFCAD3ECB0400E09000000000001565BC2999D0C665D3367544BC838439E4DAF5CA45144EF720A000000000001692815E8FE4C92D9088FCEF6D36022746A4EF1ADA331A0740B000000000001C86A37D4B6D711DDC6857A58DA9BBB80A859CE29C05280520C000000000001BB3461ABAD27D2BCC723B28361C0A4480925054599AED68A0D000000000001183D690E07AF64BE0E2C9BD77236F013A6CFCCDFFE399A6E0E000000000001A355F90BAD48E2FD4FD387B2FCD213784B7C58D979B95E160F000000000001F1B15D3D2F4C3080D31947B299DCC3F49AC5FC855453DD131000000000000157EC7A74292DB114C8783401E8BE3BE03CA79D48B411C9B01100000000000152EE84AB6F211980A6FA5847E1B7C38F2D4C56BA4E1C31F9120000000000011545526AB47B1F8D22ECA3FEB2E21BF3D2AB8F3C0C4E88341300000000000100000000000000000000000000000000000000000000000000000000 + + +count = 0 +seed = 1840C60AD9F35C900372EF38D08671A74353C965C3C5DE0668C9C3E5CF3926304322530FD9681CF3A9C71FD633D60C66 +mlen = 33 +msg = B338DD755D5618C464AB331F14DE3DD4A358BBA00D28FB35236741E902F7B248CE +smlen = 1732 +sm = 00000000170F112CFAB449E4522A1A400841E02B18D3B2A7A1D5B0DC367C5C6887ECC1D9F52896EDEEFBA7A57CFF9A6B2C4188D62D2304268496322ED6C73EC6BB9F5B0EBA78A1727DBC1F246331124AD124B971311C409BCC30E22BF76E319C7DAD78FAC9F245B0424408D82622E32C3C21FF83307BE552F370B226323FA08AD8CC36671A85D401C652956E1EB518ADA9620506DCF52AB164325B8DD50C1464CD7AF925278CA2CE8649F6ECD37BCEE2F558CCF18074B9B58236883CE235B8CE7F52C41995932EB8F4B399880F3B581386CA922131B7E48B8FAF16B962C5F7F61DA8F165DC60E89DD59D8204415E749E61B924F837C1FB6B73441491C06DB139D2930A9AA045164A8036868976AE7B4D431C7A95E2C3947595D818D7B81D00CBFCB074EA4F09FD5221C6F4642BA36D212890A0B2E08EA59BBF66F2B47AE0744AE6697589109DCD6ADA365A9A1BFD489BFE5D5D9F8E205C8710FAEB5E280204BFBB3876DAD3ED04A38594549A11A8131D88A2128A55569B90A6BC7AC45D7954FE71E5F550AEA5318F5723815C48719ED62FCC386F12440F20513975ACCB4A2F4EC0BDE9D19DDDD88A1A3C75DC25EC9799BD1699F852BC12FCA84FCF40DA033551F5BDD0057E852F7C15393A8CD4DB7B9AC51988EA7AF167195718C64EBABF881854E8226D73190D469533C848FDE47C419AE4B4FDF0717141C03E6C6447C096AA1D5BE40ECB7BDF61765FCA2FCFC0F8DD160AC0CB42F1F32BC341874287D3364522FD344DD1071A9521604AB236ABE4D6E9814412923CC735189DD0B953895365A07079B657CFC5018AF2B9BB9C6E5940AC3A28A31EAA45273516C57EC94628AD00AFD6250AAE8AAF79536077331B059BD58755E940C304E370F1E6C699CAA69A93F02FA7E7D734F1346E56A5E0914EC83D8BE0CDF0C0CD2C89A806F451B414B594E903A6628D4237C60032CA5A971481A1E373DE37B8493DCED1DF11EB9E79529CADC1FEEADC1E5179FBCD2EDFFFC84DCB9F457AA21E7D397550900346E71AAB388ECCED08E34732502FCB67BE67ACDBAB05CCB77C970F177298261E8D37DA80D39B19DBD50AAA567845FD67C27161A1446074A49E97C9D10BBAAD40343734E78D99592972B514D62B0A43BA6B134ED0AC78936F9DD56A47F64E40479711D1BF659D9937EC5D62A26752FA6DA09315470028952C989184C70CCBE47C61ECAC11B2364242A72B9A5A20369B076E9BC948F74FB58012A38326FCAABAFD615C29CE2B759A3A40D0A4C6D6CA24653DA461E7206C0AB15BB296135D2E2636C80481A082BBA82C44FAB33345C21EBB7429410EF0CD38EB0184DD92C77EA75807A5787DFFF783DDFC670541CD024A8E2DC6E816D44C36687E0EADA6C0BB507FB3D63679DDDF60973601C9AD3720EA547FDCF9FF4DD2DCB80E2299FD4D11D1EF9BEC16D0D69F640F45D733FDDFDD55AF78BB08B0322B961EA86EC01646E0F085C61297461A0633646376E16373A62F7EF5A43DD1CA155CA7278179BB3CD060427FA140A5FC54F2A85F91805AC0D0ADDF3D3DB30ED5FBD009EFA85E87103BA2B8EE6BEFE788E8F75E2F263081D1FC4C5D6D131B756E39219CD2870DBCB701E04F83297DB005F133DAD689A2BFA58CFBE8B2C84BE760637EACBF1A2DC92C8664AFC81F6973AF335AD5E1BFFEDD478FFE50A25F12F4705B89F03F7EE7D090015B004BAF862B29BB68B19EC35EF5AF30C13E0F4F5A7D85315D69E3BBD05D7A16ED517FFA4EC1E698FBACA382847238524CC6B2BBBE1CED1814C833AB313C038EA312146814B498DB08BB8418178D01ED70A701645632E3D31C6E0ED03E399259CD2E6619E212FB32B550F6EAC7D85AD23D59C95DA361ABF23C8CF1F8E1543AFB3F9175508AC72E03C62BFE3F5C8CBACAB18C1AA5E403D4511CFD7538D9F98F55038BBDBA75F567E9CF2C7DC9FFA39A2050BC8B041BA67611521ABE935ECCB4E9BDFEF043CA42D9F9C2A1C8F97A19418F01618D6E5AE93FE68C01BCE78CC9F74339DBDF48112B03D936EFB69F8A2278F03F5D47BECE3024CD7F6A84F8560504878A9C42CFD99676D841362FE65C9C09A5C6809310740D52D8A7FDE5DAB500BCDAF954CBEC55316BE0A53BF7E6DA31803D0BE1BC9A71ABE91EE71783049D3CF625F835BD2633ACBB6DD64B4DBBBD03684C9AC09E691A2B61CF49A580309C48A6116BCCF62C92811DF5AB6ADAFB6BD5FE287E3EE7392091D13E8054FD6A3E1E087E37C817804767B1FD6749BAD56C43AA977C321EB7E6675E7CE72D999A7F66AAFD2F57B48C43740EBAA857F2A2AE1B6CC742C31EDD005CEC5457ADB9A0AE80A91CAFC79AF5FF54749608396685DD8AB35738DC2BF030B068AF28147BF4686B925840371A4603FE3C4342F029B8147A56B8BA55D3A5ECEC0CF0A9777D4C351F86B6CE56F0E275CADB32433B +remain = 1048574 +max = 1048575 diff --git a/tests/test_sig_stfl.c b/tests/test_sig_stfl.c index 4a3ddc4d9..db3b150b4 100644 --- a/tests/test_sig_stfl.c +++ b/tests/test_sig_stfl.c @@ -310,6 +310,15 @@ OQS_STATUS sig_stfl_KATs_keygen(OQS_SIG_STFL *sig, uint8_t *public_key, OQS_SIG_ goto from_kats; #endif +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h16_192 + } else if (0 == strcasecmp(sig->method_name, OQS_SIG_STFL_alg_xmss_shake256_h16_192)) { + goto from_kats; +#endif +#ifdef OQS_ENABLE_SIG_STFL_xmss_shake256_h20_192 + } else if (0 == strcasecmp(sig->method_name, OQS_SIG_STFL_alg_xmss_shake256_h20_192)) { + goto from_kats; +#endif + #ifdef OQS_ENABLE_SIG_STFL_xmssmt_sha256_h40_2 } else if (0 == strcasecmp(sig->method_name, OQS_SIG_STFL_alg_xmssmt_sha256_h40_2)) { goto from_kats;