From d3ecc3e8f529ffd0da8ab2b88ad4c27698baab43 Mon Sep 17 00:00:00 2001 From: Duc Tri Nguyen Date: Sat, 8 Jun 2024 16:16:31 -0400 Subject: [PATCH 1/4] add XMSS-SHA2_*_192 parameters Signed-off-by: Duc Tri Nguyen make astyle happy Signed-off-by: Duc Tri Nguyen update xmss.md Signed-off-by: Duc Tri Nguyen update algorithm list Signed-off-by: Duc Tri Nguyen --- .CMake/alg_support.cmake | 3 + README.md | 2 +- docs/algorithms/sig_stfl/xmss.md | 64 ++++---- docs/algorithms/sig_stfl/xmss.yml | 154 ++++++++++-------- src/oqsconfig.h.cmake | 4 + src/sig_stfl/sig_stfl.c | 57 +++++++ src/sig_stfl/sig_stfl.h | 6 +- src/sig_stfl/xmss/CMakeLists.txt | 18 ++ src/sig_stfl/xmss/sig_stfl_xmss.h | 115 +++++++++---- .../xmss/sig_stfl_xmss_sha256_h10_192.c | 7 + .../xmss/sig_stfl_xmss_sha256_h16_192.c | 7 + .../xmss/sig_stfl_xmss_sha256_h20_192.c | 7 + tests/KATs/sig_stfl/kats.json | 3 + tests/KATs/sig_stfl/xmss/XMSS-SHA2_10_192.rsp | 12 ++ tests/KATs/sig_stfl/xmss/XMSS-SHA2_16_192.rsp | 12 ++ tests/KATs/sig_stfl/xmss/XMSS-SHA2_20_192.rsp | 12 ++ tests/test_sig_stfl.c | 9 + 17 files changed, 361 insertions(+), 131 deletions(-) create mode 100644 src/sig_stfl/xmss/sig_stfl_xmss_sha256_h10_192.c create mode 100644 src/sig_stfl/xmss/sig_stfl_xmss_sha256_h16_192.c create mode 100644 src/sig_stfl/xmss/sig_stfl_xmss_sha256_h20_192.c create mode 100644 tests/KATs/sig_stfl/xmss/XMSS-SHA2_10_192.rsp create mode 100644 tests/KATs/sig_stfl/xmss/XMSS-SHA2_16_192.rsp create mode 100644 tests/KATs/sig_stfl/xmss/XMSS-SHA2_20_192.rsp diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index 2b0eec0c18..73fd85928f 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -510,6 +510,9 @@ cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_sha512_h20 "" ON "OQS_ENABLE_SIG cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_shake256_h10 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_shake256_h16 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) cmake_dependent_option(OQS_ENABLE_SIG_STFL_xmss_shake256_h20 "" ON "OQS_ENABLE_SIG_STFL_XMSS" OFF) +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_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 b47b82d660..2301d756a0 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, 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, 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 446adcd8e1..8926ab212e 100644 --- a/docs/algorithms/sig_stfl/xmss.md +++ b/docs/algorithms/sig_stfl/xmss.md @@ -9,36 +9,38 @@ - **Source**: https://github.com/XMSS/xmss-reference - **Implementation license (SPDX-Identifier)**: (Apache-2.0 OR MIT) AND CC0-1.0 - ## Parameter set summary -| Parameter set | Security model | Claimed NIST Level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) | -|:----------------------:|:-----------------|:---------------------|--------------------------:|--------------------------:|-------------------------:| -| XMSS-SHA2_10_256 | | | 64 | 1373 | 2500 | -| XMSS-SHA2_16_256 | | | 64 | 2093 | 2692 | -| XMSS-SHA2_20_256 | | | 64 | 2573 | 2820 | -| XMSS-SHAKE_10_256 | | | 64 | 1373 | 2500 | -| XMSS-SHAKE_16_256 | | | 64 | 2093 | 2692 | -| XMSS-SHAKE_20_256 | | | 64 | 2573 | 2820 | -| XMSS-SHA2_10_512 | | | 128 | 2653 | 9092 | -| XMSS-SHA2_16_512 | | | 128 | 4045 | 9476 | -| XMSS-SHA2_20_512 | | | 128 | 2653 | 9732 | -| XMSS-SHAKE_10_512 | | | 128 | 2653 | 9092 | -| XMSS-SHAKE_16_512 | | | 128 | 4045 | 9476 | -| XMSS-SHAKE_20_512 | | | 128 | 4973 | 9732 | -| XMSSMT-SHA2_20/2_256 | | | 64 | 5998 | 4963 | -| XMSSMT-SHA2_20/4_256 | | | 64 | 10938 | 9251 | -| XMSSMT-SHA2_40/2_256 | | | 64 | 9600 | 5605 | -| XMSSMT-SHA2_40/4_256 | | | 64 | 15252 | 9893 | -| XMSSMT-SHA2_40/8_256 | | | 64 | 24516 | 18469 | -| XMSSMT-SHA2_60/3_256 | | | 64 | 16629 | 8392 | -| XMSSMT-SHA2_60/6_256 | | | 64 | 24507 | 14824 | -| XMSSMT-SHA2_60/12_256 | | | 64 | 38095 | 27688 | -| XMSSMT-SHAKE_20/2_256 | | | 64 | 5998 | 4963 | -| XMSSMT-SHAKE_20/4_256 | | | 64 | 10938 | 9251 | -| XMSSMT-SHAKE_40/2_256 | | | 64 | 9600 | 5605 | -| XMSSMT-SHAKE_40/4_256 | | | 64 | 15252 | 9893 | -| XMSSMT-SHAKE_40/8_256 | | | 64 | 24516 | 18469 | -| XMSSMT-SHAKE_60/3_256 | | | 64 | 24516 | 8392 | -| XMSSMT-SHAKE_60/6_256 | | | 64 | 24507 | 14824 | -| XMSSMT-SHAKE_60/12_256 | | | 64 | 38095 | 27688 | +| Parameter set | Security model | Claimed NIST Level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) | RFC8391 | NIST SP 800-208 | CNSA 2.0 | +| :--------------------: | :------------- | :----------------- | ----------------------: | ----------------------: | ---------------------: | ------- | --------------- | -------- | +| XMSS-SHA2_10_256 | | | 64 | 1373 | 2500 | ✅ | ✅ | ✅ | +| XMSS-SHA2_16_256 | | | 64 | 2093 | 2692 | ✅ | ✅ | ✅ | +| XMSS-SHA2_20_256 | | | 64 | 2573 | 2820 | ✅ | ✅ | ✅ | +| XMSS-SHAKE_10_256 | | | 64 | 1373 | 2500 | ✅ | ❌ | ❌ | +| XMSS-SHAKE_16_256 | | | 64 | 2093 | 2692 | ✅ | ❌ | ❌ | +| XMSS-SHAKE_20_256 | | | 64 | 2573 | 2820 | ✅ | ❌ | ❌ | +| XMSS-SHA2_10_512 | | | 128 | 2653 | 9092 | ✅ | ❌ | ❌ | +| XMSS-SHA2_16_512 | | | 128 | 4045 | 9476 | ✅ | ❌ | ❌ | +| XMSS-SHA2_20_512 | | | 128 | 2653 | 9732 | ✅ | ❌ | ❌ | +| XMSS-SHAKE_10_512 | | | 128 | 2653 | 9092 | ✅ | ❌ | ❌ | +| XMSS-SHAKE_16_512 | | | 128 | 4045 | 9476 | ✅ | ❌ | ❌ | +| XMSS-SHAKE_20_512 | | | 128 | 4973 | 9732 | ✅ | ❌ | ❌ | +| XMSS-SHA2_10_192 | | | 48 | 1053 | 1492 | ❌ | ✅ | ✅ | +| XMSS-SHA2_16_192 | | | 48 | 1605 | 1636 | ❌ | ✅ | ✅ | +| XMSS-SHA2_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 | ✅ | ✅ | ❌ | +| XMSSMT-SHA2_40/4_256 | | | 64 | 15252 | 9893 | ✅ | ✅ | ❌ | +| XMSSMT-SHA2_40/8_256 | | | 64 | 24516 | 18469 | ✅ | ✅ | ❌ | +| XMSSMT-SHA2_60/3_256 | | | 64 | 16629 | 8392 | ✅ | ✅ | ❌ | +| XMSSMT-SHA2_60/6_256 | | | 64 | 24507 | 14824 | ✅ | ✅ | ❌ | +| XMSSMT-SHA2_60/12_256 | | | 64 | 38095 | 27688 | ✅ | ✅ | ❌ | +| XMSSMT-SHAKE_20/2_256 | | | 64 | 5998 | 4963 | ✅ | ❌ | ❌ | +| XMSSMT-SHAKE_20/4_256 | | | 64 | 10938 | 9251 | ✅ | ❌ | ❌ | +| XMSSMT-SHAKE_40/2_256 | | | 64 | 9600 | 5605 | ✅ | ❌ | ❌ | +| XMSSMT-SHAKE_40/4_256 | | | 64 | 15252 | 9893 | ✅ | ❌ | ❌ | +| XMSSMT-SHAKE_40/8_256 | | | 64 | 24516 | 18469 | ✅ | ❌ | ❌ | +| XMSSMT-SHAKE_60/3_256 | | | 64 | 24516 | 8392 | ✅ | ❌ | ❌ | +| XMSSMT-SHAKE_60/6_256 | | | 64 | 24507 | 14824 | ✅ | ❌ | ❌ | +| XMSSMT-SHAKE_60/12_256 | | | 64 | 38095 | 27688 | ✅ | ❌ | ❌ | diff --git a/docs/algorithms/sig_stfl/xmss.yml b/docs/algorithms/sig_stfl/xmss.yml index dccefa12f9..e367af8754 100644 --- a/docs/algorithms/sig_stfl/xmss.yml +++ b/docs/algorithms/sig_stfl/xmss.yml @@ -9,179 +9,197 @@ auxiliary-submitters: crypto-assumption: hash-based signatures website: https://www.rfc-editor.org/info/rfc8391 -nist-round: -spec-version: +nist-round: +spec-version: spdx-license-identifier: (Apache-2.0 OR MIT) AND CC0-1.0 primary-upstream: source: https://github.com/XMSS/xmss-reference spdx-license-identifier: (Apache-2.0 OR MIT) AND CC0-1.0 upstream-ancestors: parameter-sets: -- name: XMSS-SHA2_10_256 - claimed-nist-level: - claimed-security: +- name: XMSS-SHA2_10_256 + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 1373 length-signature: 2500 -- name: XMSS-SHA2_16_256 - claimed-nist-level: - claimed-security: +- name: XMSS-SHA2_16_256 + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 2093 length-signature: 2692 -- name: XMSS-SHA2_20_256 - claimed-nist-level: - claimed-security: +- name: XMSS-SHA2_20_256 + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 2573 length-signature: 2820 - name: XMSS-SHAKE_10_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 1373 length-signature: 2500 -- name: XMSS-SHAKE_16_256 - claimed-nist-level: - claimed-security: +- name: XMSS-SHAKE_16_256 + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 2093 length-signature: 2692 - name: XMSS-SHAKE_20_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 2573 length-signature: 2820 - name: XMSS-SHA2_10_512 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 128 length-secret-key: 2653 length-signature: 9092 - name: XMSS-SHA2_16_512 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 128 length-secret-key: 4045 length-signature: 9476 - name: XMSS-SHA2_20_512 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 128 length-secret-key: 2653 length-signature: 9732 -- name: XMSS-SHAKE_10_512 - claimed-nist-level: - claimed-security: +- name: XMSS-SHAKE_10_512 + claimed-nist-level: + claimed-security: length-public-key: 128 length-secret-key: 2653 length-signature: 9092 -- name: XMSS-SHAKE_16_512 - claimed-nist-level: - claimed-security: +- name: XMSS-SHAKE_16_512 + claimed-nist-level: + claimed-security: length-public-key: 128 length-secret-key: 4045 length-signature: 9476 - name: XMSS-SHAKE_20_512 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 128 length-secret-key: 4973 length-signature: 9732 +- name: XMSS-SHA2_10_192 + claimed-nist-level: + claimed-security: + length-public-key: 48 + length-secret-key: 1053 + length-signature: 1492 +- name: XMSS-SHA2_16_192 + claimed-nist-level: + claimed-security: + length-public-key: 48 + length-secret-key: 1605 + length-signature: 1636 +- name: XMSS-SHA2_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: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 5998 length-signature: 4963 - name: XMSSMT-SHA2_20/4_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 10938 length-signature: 9251 - name: XMSSMT-SHA2_40/2_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 9600 length-signature: 5605 - name: XMSSMT-SHA2_40/4_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 15252 length-signature: 9893 - name: XMSSMT-SHA2_40/8_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 24516 length-signature: 18469 - name: XMSSMT-SHA2_60/3_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 16629 length-signature: 8392 - name: XMSSMT-SHA2_60/6_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 24507 length-signature: 14824 - name: XMSSMT-SHA2_60/12_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 38095 length-signature: 27688 - name: XMSSMT-SHAKE_20/2_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 5998 length-signature: 4963 - name: XMSSMT-SHAKE_20/4_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 10938 length-signature: 9251 - name: XMSSMT-SHAKE_40/2_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 9600 length-signature: 5605 -- name: XMSSMT-SHAKE_40/4_256 - claimed-nist-level: - claimed-security: +- name: XMSSMT-SHAKE_40/4_256 + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 15252 length-signature: 9893 - name: XMSSMT-SHAKE_40/8_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 24516 - length-signature: 18469 + length-signature: 18469 - name: XMSSMT-SHAKE_60/3_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 24516 - length-signature: 8392 + length-signature: 8392 - name: XMSSMT-SHAKE_60/6_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 24507 length-signature: 14824 - name: XMSSMT-SHAKE_60/12_256 - claimed-nist-level: - claimed-security: + claimed-nist-level: + claimed-security: length-public-key: 64 length-secret-key: 38095 - length-signature: 27688 + length-signature: 27688 diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index 0617d30661..2341d494ea 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -204,6 +204,10 @@ #cmakedefine OQS_ENABLE_SIG_STFL_xmss_shake256_h10 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmss_shake256_h16 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmss_shake256_h20 1 +#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_xmssmt_sha256_h20_2 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmssmt_sha256_h20_4 1 #cmakedefine OQS_ENABLE_SIG_STFL_xmssmt_sha256_h40_2 1 diff --git a/src/sig_stfl/sig_stfl.c b/src/sig_stfl/sig_stfl.c index 51d7865373..044434982b 100644 --- a/src/sig_stfl/sig_stfl.c +++ b/src/sig_stfl/sig_stfl.c @@ -35,6 +35,9 @@ OQS_API const char *OQS_SIG_STFL_alg_identifier(size_t i) { OQS_SIG_STFL_alg_xmss_shake256_h10, OQS_SIG_STFL_alg_xmss_shake256_h16, OQS_SIG_STFL_alg_xmss_shake256_h20, + 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_xmssmt_sha256_h20_2, OQS_SIG_STFL_alg_xmssmt_sha256_h20_4, OQS_SIG_STFL_alg_xmssmt_sha256_h40_2, @@ -183,6 +186,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_sha256_h10_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h10_192 + return 1; +#else + return 0; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h16_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h16_192 + return 1; +#else + return 0; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h20_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_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 @@ -571,6 +592,24 @@ OQS_API OQS_SIG_STFL *OQS_SIG_STFL_new(const char *method_name) { return OQS_SIG_STFL_alg_xmss_shake256_h20_new(); #else return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h10_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h10_192 + return OQS_SIG_STFL_alg_xmss_sha256_h10_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h16_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h16_192 + return OQS_SIG_STFL_alg_xmss_sha256_h16_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h20_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192 + return OQS_SIG_STFL_alg_xmss_sha256_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 @@ -1032,6 +1071,24 @@ OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SIG_STFL_SECRET_KEY_new(const char *method_ return OQS_SECRET_KEY_XMSS_SHAKE256_H20_new(); #else return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h10_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h10_192 + return OQS_SECRET_KEY_XMSS_SHA256_H10_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h16_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h16_192 + return OQS_SECRET_KEY_XMSS_SHA256_H16_192_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_xmss_sha256_h20_192)) { +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192 + return OQS_SECRET_KEY_XMSS_SHA256_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 0f31e83da2..64dec07911 100644 --- a/src/sig_stfl/sig_stfl.h +++ b/src/sig_stfl/sig_stfl.h @@ -56,6 +56,10 @@ extern "C" #define OQS_SIG_STFL_alg_xmss_shake256_h10 "XMSS-SHAKE_10_512" #define OQS_SIG_STFL_alg_xmss_shake256_h16 "XMSS-SHAKE_16_512" #define OQS_SIG_STFL_alg_xmss_shake256_h20 "XMSS-SHAKE_20_512" +#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_xmssmt_sha256_h20_2 "XMSSMT-SHA2_20/2_256" #define OQS_SIG_STFL_alg_xmssmt_sha256_h20_4 "XMSSMT-SHA2_20/4_256" #define OQS_SIG_STFL_alg_xmssmt_sha256_h40_2 "XMSSMT-SHA2_40/2_256" @@ -122,7 +126,7 @@ extern "C" /* * Total number of stateful variants defined above, used to create the tracking array */ -#define OQS_SIG_STFL_algs_length 61 +#define OQS_SIG_STFL_algs_length 64 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 f9fc4fc08d..2bdd098741 100644 --- a/src/sig_stfl/xmss/CMakeLists.txt +++ b/src/sig_stfl/xmss/CMakeLists.txt @@ -88,6 +88,24 @@ if (OQS_ENABLE_SIG_STFL_xmss_shake256_h20) set(_XMSS_OBJS ${_XMSS_OBJS} $) endif() +if (OQS_ENABLE_SIG_STFL_xmss_sha256_h10_192) + add_library(xmss_sha256_h10_192 OBJECT sig_stfl_xmss_sha256_h10_192.c sig_stfl_xmss_functions.c ${SRCS}) + target_compile_options(xmss_sha256_h10_192 PRIVATE -DXMSS_PARAMS_NAMESPACE=xmss_sha256_h10_192 -DHASH=1) + set(_XMSS_OBJS ${_XMSS_OBJS} $) +endif() + +if (OQS_ENABLE_SIG_STFL_xmss_sha256_h16_192) + add_library(xmss_sha256_h16_192 OBJECT sig_stfl_xmss_sha256_h16_192.c sig_stfl_xmss_functions.c ${SRCS}) + target_compile_options(xmss_sha256_h16_192 PRIVATE -DXMSS_PARAMS_NAMESPACE=xmss_sha256_h16_192 -DHASH=1) + set(_XMSS_OBJS ${_XMSS_OBJS} $) +endif() + +if (OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192) + add_library(xmss_sha256_h20_192 OBJECT sig_stfl_xmss_sha256_h20_192.c sig_stfl_xmss_functions.c ${SRCS}) + target_compile_options(xmss_sha256_h20_192 PRIVATE -DXMSS_PARAMS_NAMESPACE=xmss_sha256_h20_192 -DHASH=1) + 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 a6d0aad55b..ff7919fa50 100644 --- a/src/sig_stfl/xmss/sig_stfl_xmss.h +++ b/src/sig_stfl/xmss/sig_stfl_xmss.h @@ -13,41 +13,45 @@ #define XMSS_OID_LEN 4 /* - * | Algorithms | oid | sk (b) | pk (b) | sig (b) | n | - * |-------------------------------|------|--------|--------|---------|----| - * | XMSS-SHA2_10_256 | 0x01 | 1373 | 64 | 2500 | 32 | - * | XMSS-SHA2_16_256 | 0x02 | 2093 | 64 | 2692 | 32 | - * | XMSS-SHA2_20_256 | 0x03 | 2573 | 64 | 2820 | 32 | + * | Algorithms | oid | sk (b) | pk (b) | sig (b) | n | RFC8391 | NIST SP 800-208 | CNSA 2.0 | + * |-------------------------------|------|--------|--------|---------|----| ------- | --------------- | -------- | + * | XMSS-SHA2_10_256 | 0x01 | 1373 | 64 | 2500 | 32 | ✅ | ✅ | ✅ | + * | XMSS-SHA2_16_256 | 0x02 | 2093 | 64 | 2692 | 32 | ✅ | ✅ | ✅ | + * | XMSS-SHA2_20_256 | 0x03 | 2573 | 64 | 2820 | 32 | ✅ | ✅ | ✅ | * - * | XMSS-SHAKE_10_256 | 0x07 | 1373 | 64 | 2500 | 32 | - * | XMSS-SHAKE_16_256 | 0x08 | 2093 | 64 | 2692 | 32 | - * | XMSS-SHAKE_20_256 | 0x09 | 2573 | 64 | 2820 | 32 | + * | XMSS-SHAKE_10_256 | 0x07 | 1373 | 64 | 2500 | 32 | ✅ | ❌ | ❌ | + * | XMSS-SHAKE_16_256 | 0x08 | 2093 | 64 | 2692 | 32 | ✅ | ❌ | ❌ | + * | XMSS-SHAKE_20_256 | 0x09 | 2573 | 64 | 2820 | 32 | ✅ | ❌ | ❌ | * - * | XMSS-SHA2_10_512 | 0x04 | 2653 | 128 | 9092 | 64 | - * | XMSS-SHA2_16_512 | 0x05 | 4045 | 128 | 9476 | 64 | - * | XMSS-SHA2_20_512 | 0x06 | 4973 | 128 | 9732 | 64 | + * | XMSS-SHA2_10_512 | 0x04 | 2653 | 128 | 9092 | 64 | ✅ | ❌ | ❌ | + * | XMSS-SHA2_16_512 | 0x05 | 4045 | 128 | 9476 | 64 | ✅ | ❌ | ❌ | + * | XMSS-SHA2_20_512 | 0x06 | 4973 | 128 | 9732 | 64 | ✅ | ❌ | ❌ | * - * | XMSS-SHAKE_10_512 | 0x0a | 2653 | 128 | 9092 | 64 | - * | XMSS-SHAKE_16_512 | 0x0b | 4045 | 128 | 9476 | 64 | - * | XMSS-SHAKE_20_512 | 0x0c | 4973 | 128 | 9732 | 64 | + * | XMSS-SHAKE_10_512 | 0x0a | 2653 | 128 | 9092 | 64 | ✅ | ❌ | ❌ | + * | XMSS-SHAKE_16_512 | 0x0b | 4045 | 128 | 9476 | 64 | ✅ | ❌ | ❌ | + * | XMSS-SHAKE_20_512 | 0x0c | 4973 | 128 | 9732 | 64 | ✅ | ❌ | ❌ | * - * | 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 | - * | XMSSMT-SHA2_40/4_256 | 0x04 | 15252 | 64 | 9893 | 32 | - * | XMSSMT-SHA2_40/8_256 | 0x05 | 24516 | 64 | 18469 | 32 | - * | XMSSMT-SHA2_60/3_256 | 0x06 | 16629 | 64 | 8392 | 32 | - * | XMSSMT-SHA2_60/6_256 | 0x07 | 24507 | 64 | 14824 | 32 | - * | XMSSMT-SHA2_60/12_256 | 0x08 | 38095 | 64 | 27688 | 32 | + * | XMSS-SHA2_10_192 | 0x0d | 1053 | 48 | 1492 | 24 | ❌ | ✅ | ✅ | + * | XMSS-SHA2_16_192 | 0x0e | 1605 | 48 | 1636 | 24 | ❌ | ✅ | ✅ | + * | XMSS-SHA2_20_192 | 0x0f | 1973 | 48 | 1732 | 24 | ❌ | ✅ | ✅ | * - * | XMSSMT-SHAKE_20/2_256 | 0x11 | 5998 | 64 | 4963 | 32 | - * | XMSSMT-SHAKE_20/4_256 | 0x12 | 10938 | 64 | 9251 | 32 | - * | XMSSMT-SHAKE_40/2_256 | 0x13 | 9600 | 64 | 5605 | 32 | - * | XMSSMT-SHAKE_40/4_256 | 0x14 | 15252 | 64 | 9893 | 32 | - * | XMSSMT-SHAKE_40/8_256 | 0x15 | 24516 | 64 | 18469 | 32 | - * | XMSSMT-SHAKE_60/3_256 | 0x16 | 16629 | 64 | 8392 | 32 | - * | XMSSMT-SHAKE_60/6_256 | 0x17 | 24507 | 64 | 14824 | 32 | - * | XMSSMT-SHAKE_60/12_256 | 0x18 | 38095 | 64 | 27688 | 32 | + * | 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 | ✅ | ✅ | ❌ | + * | XMSSMT-SHA2_40/4_256 | 0x04 | 15252 | 64 | 9893 | 32 | ✅ | ✅ | ❌ | + * | XMSSMT-SHA2_40/8_256 | 0x05 | 24516 | 64 | 18469 | 32 | ✅ | ✅ | ❌ | + * | XMSSMT-SHA2_60/3_256 | 0x06 | 16629 | 64 | 8392 | 32 | ✅ | ✅ | ❌ | + * | XMSSMT-SHA2_60/6_256 | 0x07 | 24507 | 64 | 14824 | 32 | ✅ | ✅ | ❌ | + * | XMSSMT-SHA2_60/12_256 | 0x08 | 38095 | 64 | 27688 | 32 | ✅ | ✅ | ❌ | + * + * | XMSSMT-SHAKE_20/2_256 | 0x11 | 5998 | 64 | 4963 | 32 | ✅ | ❌ | ❌ | + * | XMSSMT-SHAKE_20/4_256 | 0x12 | 10938 | 64 | 9251 | 32 | ✅ | ❌ | ❌ | + * | XMSSMT-SHAKE_40/2_256 | 0x13 | 9600 | 64 | 5605 | 32 | ✅ | ❌ | ❌ | + * | XMSSMT-SHAKE_40/4_256 | 0x14 | 15252 | 64 | 9893 | 32 | ✅ | ❌ | ❌ | + * | XMSSMT-SHAKE_40/8_256 | 0x15 | 24516 | 64 | 18469 | 32 | ✅ | ❌ | ❌ | + * | XMSSMT-SHAKE_60/3_256 | 0x16 | 16629 | 64 | 8392 | 32 | ✅ | ❌ | ❌ | + * | XMSSMT-SHAKE_60/6_256 | 0x17 | 24507 | 64 | 14824 | 32 | ✅ | ❌ | ❌ | + * | XMSSMT-SHAKE_60/12_256 | 0x18 | 38095 | 64 | 27688 | 32 | ✅ | ❌ | ❌ | */ #ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h10 @@ -254,6 +258,57 @@ OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_shake256_h20_sigs_total(unsigned long l #endif +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h10_192 + +#define OQS_SIG_STFL_alg_xmss_sha256_h10_192_oid 0x0d +#define OQS_SIG_STFL_alg_xmss_sha256_h10_192_length_sk (1053 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_sha256_h10_192_length_pk (48 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_sha256_h10_192_length_signature 1492 + +OQS_API OQS_SIG_STFL *OQS_SIG_STFL_alg_xmss_sha256_h10_192_new(void); +OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_XMSS_SHA256_H10_192_new(void); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_sha256_h10_192_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_sha256_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_sha256_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_sha256_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_sha256_h10_192_sigs_total(unsigned long long *total, const OQS_SIG_STFL_SECRET_KEY *secret_key); + +#endif + +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h16_192 + +#define OQS_SIG_STFL_alg_xmss_sha256_h16_192_oid 0x0e +#define OQS_SIG_STFL_alg_xmss_sha256_h16_192_length_sk (1605 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_sha256_h16_192_length_pk (48 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_sha256_h16_192_length_signature 1636 + +OQS_API OQS_SIG_STFL *OQS_SIG_STFL_alg_xmss_sha256_h16_192_new(void); +OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_XMSS_SHA256_H16_192_new(void); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_sha256_h16_192_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_sha256_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_sha256_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_sha256_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_sha256_h16_192_sigs_total(unsigned long long *total, const OQS_SIG_STFL_SECRET_KEY *secret_key); + +#endif + +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192 + +#define OQS_SIG_STFL_alg_xmss_sha256_h20_192_oid 0x0f +#define OQS_SIG_STFL_alg_xmss_sha256_h20_192_length_sk (1973 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_sha256_h20_192_length_pk (48 + XMSS_OID_LEN) +#define OQS_SIG_STFL_alg_xmss_sha256_h20_192_length_signature 1732 + +OQS_API OQS_SIG_STFL *OQS_SIG_STFL_alg_xmss_sha256_h20_192_new(void); +OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_XMSS_SHA256_H20_192_new(void); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_sha256_h20_192_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key); +OQS_API OQS_STATUS OQS_SIG_STFL_alg_xmss_sha256_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_sha256_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_sha256_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_sha256_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_sha256_h10_192.c b/src/sig_stfl/xmss/sig_stfl_xmss_sha256_h10_192.c new file mode 100644 index 0000000000..b241c7e3d0 --- /dev/null +++ b/src/sig_stfl/xmss/sig_stfl_xmss_sha256_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-SHA2_10_192 ======================== // + +XMSS_ALG(, _sha256_h10_192, _SHA256_H10_192) diff --git a/src/sig_stfl/xmss/sig_stfl_xmss_sha256_h16_192.c b/src/sig_stfl/xmss/sig_stfl_xmss_sha256_h16_192.c new file mode 100644 index 0000000000..24416f2732 --- /dev/null +++ b/src/sig_stfl/xmss/sig_stfl_xmss_sha256_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-SHA2_16_192 ======================== // + +XMSS_ALG(, _sha256_h16_192, _SHA256_H16_192) diff --git a/src/sig_stfl/xmss/sig_stfl_xmss_sha256_h20_192.c b/src/sig_stfl/xmss/sig_stfl_xmss_sha256_h20_192.c new file mode 100644 index 0000000000..4a7c359f01 --- /dev/null +++ b/src/sig_stfl/xmss/sig_stfl_xmss_sha256_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-SHA2_20_192 ======================== // + +XMSS_ALG(, _sha256_h20_192, _SHA256_H20_192) diff --git a/tests/KATs/sig_stfl/kats.json b/tests/KATs/sig_stfl/kats.json index 21d0c11252..1e87db99b4 100644 --- a/tests/KATs/sig_stfl/kats.json +++ b/tests/KATs/sig_stfl/kats.json @@ -11,6 +11,9 @@ "XMSS-SHAKE_10_512": "8142c58d407dab3f39f1142e253fff535c572d5adcb4fd21b51a62eef33453d8", "XMSS-SHAKE_16_512": "29150754aad6d8150e86f58224f72521d76d5bfba43d5f54791c1d5def27a205", "XMSS-SHAKE_20_512": "fbe74ab00eb150f63b9da9ddd325b667e55a65bb994434ccf2c7b670e7e22406", + "XMSS-SHA2_10_192": "6efee401869dafee754165a22a6f2f3b467fbaaa4f054bad5b70c7f4c5857133", + "XMSS-SHA2_16_192": "33225885b04da07a95ea63f993d05ee50223d3484f537f324b290d8a317d7bd7", + "XMSS-SHA2_20_192": "cf30df53ca187aabe92d5915e4fd26a118cca1f20af1002f96b63614d04e973b", "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-SHA2_10_192.rsp b/tests/KATs/sig_stfl/xmss/XMSS-SHA2_10_192.rsp new file mode 100644 index 0000000000..872adcddc9 --- /dev/null +++ b/tests/KATs/sig_stfl/xmss/XMSS-SHA2_10_192.rsp @@ -0,0 +1,12 @@ +pk = 0000000DDFEE7003383A9856B5A927AD8894838E63DF18211E6B116DFF80651B655440C29C4F8C44CFF827186201048A795C23A7 +sk = 0000000D000000002DD531A0D3679AB6ECE314A0C19ED7B6EF6502C0A19AE893126C416A7B2D87C8214B021884395E88D8B11CC1319DB32BDFEE7003383A9856B5A927AD8894838E63DF18211E6B116DFF80651B655440C29C4F8C44CFF827186201048A795C23A7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D37D333D7D5226EBE3C2C662F1DEBC10C3E3A1E3757DC500612EDB257FCD3B880F8D819A815CC288F5B7B09ACBB658A489F767C79BEABBA8B5291C3134928D5F27C4645FAFACF77C16DC7C70DA356B9C24272A346AECDFAED955512133E303A7327C6F3CCF37CD6E2BE5A858CDB88EE802152092DBDFE0CB8350D2B0CBEC212549E24FB82C3A98CE1032C09344867163AD35DC45612C1F91A86C29AABA053BC329530415AAF376E55223AFF201BB179895AD9CBE08C56F15FA72B9B49F16981E519A61FB2EF2EED066B67D5386C2D41B76BBA61CB85E4CB4DAB96203FF5A9EDF880DDEFE7B3FC94E7344F3C04454CD07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016450728D942E0D2B5CF7484B7CA59A70244F903D66197AA901000000000001E20B4DED6DB3F3D860D1A3D2AD3D07101D63EC332481EDE00200000000000151BF20DEAE16508CC99F6FFE71108B9106353C4C9211441D0300000000000162050F72F2CB4E319031687DA04A155AA3D9AEF32890CA09040000000000012B63E3031638ADA3FE32395E284A15A6D8127FD23A4973D1050000000000013CDD1971BD589FD3A54ED1BFF1F8CF962B467F2FCC7A895F060000000000013BE17FD8F05CE164BD32DFB9B14A60A8C4A2C15B5C668A5D070000000000018AA58BEF4238C5DDAC68690D11E6B67F0B009941D40ADEC70800000000000148A519D39EB3586C66EA92DD6559EB3C6A1C3B268B500EB30900000000000100000000000000000000000000000000000000000000000000000000 + + +count = 0 +seed = 1840C60AD9F35C900372EF38D08671A74353C965C3C5DE0668C9C3E5CF3926304322530FD9681CF3A9C71FD633D60C66 +mlen = 33 +msg = B338DD755D5618C464AB331F14DE3DD4A358BBA00D28FB35236741E902F7B248CE +smlen = 1492 +sm = 00000000D4682686E4BC708328567694BBC69086BD1AA7ABDB02B96EC681E846A4D195F39A1778DBC444C0EFC1913D7F18C11574A52F398EA01422342540B8DD40EF5A7F95B462F457BB8C1B9AF469FA550580C6A8DEA3B364DBEC7C11DFCF71DFAE8E413C1A1589B8EC1E840EBB2F37F24B3E9331C5C13F8B3B73C0766930D1703645214A8A9B28E580B1BD0A6C051D809018B239D5EAA5DD1DDE5060B662DC5997AE84B78290F8B13E6B4AB470321DBC8E30F62BBEB7A3FE083BE727014E1F13AC06B85920818DA1120929BA8EE3336BF89B45C57DB634B524FE15ED395F6919EF0FC1FE5BCB12C478CDC8AA262DC4AAD9B45FA6F1ADE212A6E7A78988B7A5372E8E00EC3FBDAFE00D7B60064B132D4A6526539A24C5CA5659D610851FB5FDAF08F1E65720745019C6505AC7DED6387ADF498C25AA330837505D86566A3D01617067B9AC895D9F88B5CCA99F2C28763AF20770EE0C27D89B5EBFA1AAFEC65C6D64211D7CCDE4958DB702389D32F0A7BC08A141FD0989AF84C20FAF47000AA3FA596A1728DCC2E6E59336658AC65601A635CB5BE10C2E6E46C0B128DC3D5F999751DB25679736B0793E1CFBBF7CF8224D9E6A48C173352F8E0B8C4B94A42251ED4C07595D790076831AA749C476E13D7D2E7ED3CE2A872EB73E0739D20D3DA934EF8DE1B7C3B0A8B3EEDA0112DC0A14B59EDF322DE876897E4B2B3AF7967E80EB0F52C235BCF802E53BA73A738B277FC5029E1B7859D19EF39AC7BA4D14983684BDB1D3AD01AD74CE10739BE6DB38720D9C72D516855A5E75293E250EDFEF37239780CEE7A812C9E2DC8B7A8630707248D518137873B08728E85ED8B420B9C40614D204B073E52BE35CDC8A54C0D5D94413A9890E068BE915EDA550FB654AE658DBAA9300244659FFD68B53F6A3E987EDE8E93FEDC2A188B41364F1AC068CA3B2761882755AD185E9CF286EEC8FCC0F2C6144E464A73065C376BF868D423753BCDC24476B6B347C0D4706EBACCD8624ED05A8A6CD292DBF02293F7B8E87520153A4D484E10DAE81505AFBF1AD60FCBA896BE5DDA4C3335ADD505B6956DAD9D7BE9FBEA8D067D9C5E1102041576C1584F3A067839368E5EC784998FB60A6D029E333B8EFE4A9CFE607873FAB91FC070C5EB6A013939D832C0EFA885139A6312BF2A415B0B85F3573C6A2CC8FC4270DAA29909D70A8A3A4807E2A22B5985837B183D907FC21C02E84E0BAEFB464B8DEAB1195A92FF583C08C20037F2D3410C637DB3CB034C689B5FB46C3DB55CD48F30298FA6FB74755DFD200C7DFA6BFBC98B5864491066CA36EA5A928189768E0D253131C38012C4C1A2AB6B34728DFE8FE586CBD4CC4782233F2E56C81FA452A8DC37152928A30261F4FACC057BCC9108326366C4F5B4773E589CCF574FDE739078F83277EF0AA60DE831F156AF362F69B60D8E6585AF4AAEA2AC7E7541691B63D15C727B66B87AC24E5352FAF2E2F4F71639AB264AB3436D3A1D9ABFADF758906FD82E4BB2E602EB8819558430426CD14E5F3555A5379041AEC1E0A46F068E9E827564B25FD13E0825C341E639320C9C07CA6502BCF857659E39F54DDCBDF12CC440AAC2E404465656FBBA6B44D457C259265008E1BA24F671A738575BF9E99DC75EBFCD61947C96912F1CC003EF7D6960B461A8D35687E198702ADAE606AB11DC89B437BDD61DDA603C89E0DAB6355C5B05B98546626B8981A8C6F852B10A31C0B4369CB7F3526A60D5A694C810350BC11669FAC54D37D333D7D5226EBE3C2C662F1DEBC10C3E3A1E3757DC500612EDB257FCD3B880F8D819A815CC288F5B7B09ACBB658A489F767C79BEABBA8B5291C3134928D5F27C4645FAFACF77C16DC7C70DA356B9C24272A346AECDFAED955512133E303A7327C6F3CCF37CD6E2BE5A858CDB88EE802152092DBDFE0CB8350D2B0CBEC212549E24FB82C3A98CE1032C09344867163AD35DC45612C1F91A86C29AABA053BC329530415AAF376E55223AFF201BB179895AD9CBE08C56F15FA72B9B49F16981E519A61FB2EF2EED066B67D5386C2D41B76BBA61CB85E4CB4DAB96203FF5A9EDF880DDEFE7B3FC94E7344F3C04454CD07 +remain = 1022 +max = 1023 diff --git a/tests/KATs/sig_stfl/xmss/XMSS-SHA2_16_192.rsp b/tests/KATs/sig_stfl/xmss/XMSS-SHA2_16_192.rsp new file mode 100644 index 0000000000..d723ae5180 --- /dev/null +++ b/tests/KATs/sig_stfl/xmss/XMSS-SHA2_16_192.rsp @@ -0,0 +1,12 @@ +pk = 0000000E3EF8735010E6F187927ABF6A1918FC2B5199D8157FAF1DC852FE55561A254EE19B2A7C6EF8CD2E6DDC4E7C449F8C05FD +sk = 0000000E00000000CB6619E7C82F245005568195F654EE945D75DBE6810581477D7683F5B53276C1695DFF5B6F5C689371D3EEC56DDAF16D3EF8735010E6F187927ABF6A1918FC2B5199D8157FAF1DC852FE55561A254EE19B2A7C6EF8CD2E6DDC4E7C449F8C05FD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3F49F7ACF67D26B7E7B9B6EEDBA6E263A1DBE9831FC33D80A9A66FBFDBFB2305AF8FC08A2523A041EEBF8A47E49C97AC0A0AFB7BB5841C414F46A1D348E615902E573283A39B72E6E83C89C94C972E0C962181A7E24ECB34BEDB4908E64170D74686C6CF73FD29C45819592CA5139526E072415DCCA0F02717C40A1E683D776A7135BB358080E6AAB044B0B864FC7D8297B04C52F6DF09224CF1630E31EE6E00771450EB5B0E4DAF5AB591C8A31E3C4B7C878F626B7444E258A16D77A31ADE76DC31665872D485C47A6A4801F9EE7F5A56496930CB962912D3AE9560713B375282CB5B1F7012F89EFAEA62348099D32A36DCA9C8A6650A24DE7F4BCCE11D577243E74196532624793523262E0359C7A16A757A52875D21B0F0FD07B5B5D4EBFEB0BE84685F5F9481299AF5852964E19A61784654125CD6323F168982D3AE0B8F786A3EF5C7893FB6CFC028812CE4E117D696B7D94CB458AFD3A3A1D8D78BB6D800CCC024BA2EC2CD8A91F3283A1CECE78131FA6E08BE3894D66707F949DA87100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001636E42D8252CE59DB06F7841F27DE81DD153FCC2E874E9FE0100000000000117EB98EBA908C12C6E1C4EFD240EC5C3A58B6C3F740BBE49020000000000013913BC6306E7C3B74D80F227B23A86ECFF230388D34A0D7103000000000001D6CBB0358C968E65D0AD5F008315A1FCA2F2E7177D2061A304000000000001FD28099AEA482A796F03CBC114876EB60A9FED8B0EEAD6AE050000000000017FAB03D6C9C44F3B0BDC4256CF5CFCCC8D12986D669C7B9706000000000001EDF1CAA77ACDBD4F96E1F263D428082687ECD25C916C9D0907000000000001CA37E478CF1BC03B9AD9093A599B9420D0D6C5954679FFCB080000000000012E220E1137B8643ADDCBF1BACAEDC11EEAE9D6CC9EBC0D3A0900000000000194C6EC596D63D36A9DF09CC51AB8A276C4C4CDA569B8B5860A0000000000012B2166DD73B8599486BEAD664C738ECB8AC3A6FB5003C7F50B000000000001E07394ABB5A9C85279F19BBB1B059C95B041622938ABEA260C0000000000019165FF5649A215C98FE72AA8F472F6FB139EF1F14E40D0FA0D00000000000162A4FB3B9F6CFD5DCEFED1B5D163EE48D0235C93547878AC0E000000000001F23AAB7FAE1F99856464B72A074C8BA6464F796190DED7B80F00000000000100000000000000000000000000000000000000000000000000000000 + + +count = 0 +seed = 1840C60AD9F35C900372EF38D08671A74353C965C3C5DE0668C9C3E5CF3926304322530FD9681CF3A9C71FD633D60C66 +mlen = 33 +msg = B338DD755D5618C464AB331F14DE3DD4A358BBA00D28FB35236741E902F7B248CE +smlen = 1636 +sm = 0000000058BA285919FEB35D326539E8888FBEE3579073B96610C6E727F80EA56ECF177DBDB5E468D3AFC600EAFC4D443009BA033834DD0EA2F3A4C9142E6EC18A02941EF7AA1870263AAF8BD0C16D9F9F8A357832BADF1CBB95376BB70E9C2F3688B6F5BA122F4D83BD44617FC3B1659A3FD63A0D8E9A929C6558DB8BB74BA935442D8BA7FA87DA4CA57670B19A5E544996EFC65C390A07A5ED46C41A495FABD0583EA97BDAD553A795EDABAEF671FBF1C7E1B09B11EEA0563A1712ECB71170F5B97D7524EEB1709326BDDC0F7690F730CC6BD51DD12C113EE2BB28DB3A857FC3690E766333540C0DDBA7B974D7245E0B599562D0F1AF39EF6C9ED1B779AD6AFF6842CEAC2C2330096BFF29E5D7FDFF54A8137B6F67F6A803F77E8F5B37CC9ADEE762174B75853F49FF0F0C8F66D7908ED1A324D964070918AAE2CA703FE57940CF0350EDE81514724A87978CFB28C1F83DB7DF8A6CF377EBEB091A2DFCBEF179B22C3B079120B65F263AE32B0607C71D82AF455FF6B4E1F650D6B39DC6663F4E53C88C60F342ED94608789CC70D92CE53A29718FACF84691AF706D11FA80FE45AA88BFCC2260BE468357956AC30189FB2999C13DA6E5C14C342A90695AE6EF47894E81F72D5743FE315C1595EF3C9C5FD7B0A4BFAFA786574518AEFD00BF83F57B7A2DE0FAC89504ACB5E5F5D2F0C346E6F9D2B9E21138F40393202AD298BF75BB57E878CA53D8F7035FCFA14A5B5C5C20E3308C3817C36C656F1AF8053CD3370D2B7D873E2E6074E26650090A6C86AED53C9A4A6D2E450C90C77D40AB8E5AB6791D109F1E7A37A8449616794D52642A128F5A83D857CB5342153D07AAE55DCC9F70FB03C09750A98C511B3605BD4618E8376720FDCA2B3EDB2EE9485D419BC14601F56874513B616EB3BD2A7182A6283DC061DADC19AE1F5178181CFE377C814004DF70C22826BC97218C524D92245B0A0B66813D828D984222FEC23C8F661B48A1230BAB23FEC5EFFE6BFC622406D231FF753D0B345F8F1716A333FFD79C59DAB1DD3C67BAD9A9FBF73E78403BBEC907B713DE2967AC59E84B81E09F7F06D47ECE04E5E4AEE38D52B1361FC1A56E3F7F61E1962852C01A5C6E7BF3FBFC0BB122F51E65D8A812FC162EC8F3D3162DEC355556B3CDA0350DD6BE029E6A508E247A70B3D4B4C6C33E653B078A6DD38A2CE59D1504D8DD81694D3E0128DEAC31540C2F5A1B414E2822FB98DBF71C6D6877B00813CA1FF146082E77E1DCB6A1DB161E71F7ADF44A5689559438E4CC4AF4038AC9E201D7DA1ED24E54A29F4E60A97DF5F9E6C1DE59D5D3ECD9A2F942942E564AFFB9711C831A8B95CFD6A867B02E70B920A91453074C04CA08048FB12A30AC56526C5CEDAA1291FB87073C7EDB8BE9D7BFC5C8AC9F289EDB248A02D1B806FB823647C8E98A4D337A7992E1BFD3804A31B22FE992C0C04F7C233E805D80C2CAC0F48E12CF66E2AF91D08F4CD14BC04BCFD6360C5C872BC8E7C6D8A5DD72D23873C4F9A661852A7E3A92B36F753DC75BB7F60C242C31ED9E6FF708A968937309831109542E59613A30F9035E757FE516207FD5ED5C50C63AFE74F3D37E779557AC80051B6DB7CB81EF40598249B226BE4D54F5567CC1BECF65474A05C54AE06B75CA9C94C0B92589920635B9E576F10BB758C255CF4501F5710BBDC58E3F75CEFC0BA7957A66008DA7A65683393D034640F1708E4737F30991E25FAFEE3B23477A63F4CAD1B53E10D2C6D4CC124C9CAAB0B930B3F49F7ACF67D26B7E7B9B6EEDBA6E263A1DBE9831FC33D80A9A66FBFDBFB2305AF8FC08A2523A041EEBF8A47E49C97AC0A0AFB7BB5841C414F46A1D348E615902E573283A39B72E6E83C89C94C972E0C962181A7E24ECB34BEDB4908E64170D74686C6CF73FD29C45819592CA5139526E072415DCCA0F02717C40A1E683D776A7135BB358080E6AAB044B0B864FC7D8297B04C52F6DF09224CF1630E31EE6E00771450EB5B0E4DAF5AB591C8A31E3C4B7C878F626B7444E258A16D77A31ADE76DC31665872D485C47A6A4801F9EE7F5A56496930CB962912D3AE9560713B375282CB5B1F7012F89EFAEA62348099D32A36DCA9C8A6650A24DE7F4BCCE11D577243E74196532624793523262E0359C7A16A757A52875D21B0F0FD07B5B5D4EBFEB0BE84685F5F9481299AF5852964E19A61784654125CD6323F168982D3AE0B8F786A3EF5C7893FB6CFC028812CE4E117D696B7D94CB458AFD3A3A1D8D78BB6D800CCC024BA2EC2CD8A91F3283A1CECE78131FA6E08BE3894D66707F949DA871 +remain = 65534 +max = 65535 diff --git a/tests/KATs/sig_stfl/xmss/XMSS-SHA2_20_192.rsp b/tests/KATs/sig_stfl/xmss/XMSS-SHA2_20_192.rsp new file mode 100644 index 0000000000..ff500efcd8 --- /dev/null +++ b/tests/KATs/sig_stfl/xmss/XMSS-SHA2_20_192.rsp @@ -0,0 +1,12 @@ +pk = 0000000FDD40F4468888E0587EC974060F3701C29C85D2F731528945B00DD9CA6B1BDD7954DE9D6A6C2550F81785E0A7322801F9 +sk = 0000000F0000000011BE409D83C891FE47F4A5570B0735B46023634D8EE962B8912780F9D4020B4B5793E3AD4BD4004F318EC8FF8FD455CEDD40F4468888E0587EC974060F3701C29C85D2F731528945B00DD9CA6B1BDD7954DE9D6A6C2550F81785E0A7322801F900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC2F2858D71876E4DC314F4E0F6D7BFB6590863108297AAFC9D956AD8B12A0606ED07C8F1709BEFEE6C069CFE0134CA0D0507D37173014FC3D7F6A6C9A8BBAD58C542421172D2A213400B5C31F035600999DA8ACFDFC4B5D178D8358A08602C2856A7EB6D9A09A31BABD14A5D1CC1755FEC069D44207616243524232E767C1675EB03B5587557F44EC5C5CC030AC51D7259B88845E588221260822E9A47EFD7F7E2D6511F82470F062B2127F4977CD34B25DCE18F254176491DE3BF75108ECBF7D81B1FE5051368555C7FC1693229892DB74BD1DF2C76BD313AB68D3CEE3C0FF0E7F4BAF8D01CE6BED89649E8DB576C964B88FF444A8DB03CDA5E27AA17CA472E17DCBC478AE97934D530EBB9B6F9EE049F73C4F95239000192AD2AC95A95FC7A39EC55C55751160A56A73BB25641BC9EA64C0E01D0D5C93D4BA2A6C24924259146021F6F8333C511C611450C637FBFAFEF3E35B02CBD1CD041E992886FF619FA4A95E93C8922528662A2E165B844192206C74A1E135BDCA2B3DF53F224A2F6B79C3B60D31E80FCC1D87D3246DF8A8A291B59D922E4A240605B089FCF56B1FE467C2D023181C2D4530E68521FCFBFD56A517AF81DC05CBB95BFFBA9DE311675B63F870BA8137AC9BD1364F98DE7D68E1EF1E3BCFE7FC15F712B2B86B60B92BD9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014297C60CF4273E3E4AEAEB1737F0EF29CCC90DC49D0838C801000000000001325761A7D671A9466106536840F35203439A9B17D31A12AD020000000000014845AE06D19A0C94A6E51F5802D93DE0394C84EC9AC4F396030000000000017BEC4F5EED10EFF7F741030416C88D37CE51B258742A97EA04000000000001400147D7ED4AB81D47C57AB93724D5ABC7FD7A36F2DA6663050000000000019FA7C56615027F0C189F130EF1688B5E798720D70EC7B064060000000000011281BB24F65DD0E59CD12B72A961877B2A4F7267A7BA548E070000000000014096A30FB3C4787A7C8063612AA463DDF8503F4C1CE735F208000000000001D6DA4DF8FEF78A81BB9269905CD2CAFF4FA03D39C8341E7C09000000000001E5BB49F918B8453274E162B80BE2CBC2878F57DD0FB6615D0A000000000001E1214B0E363D4A19BE69C3DF27AC4B4376FF1E7C4B442EA00B000000000001EE66AAC652CDD97AD1BE1CA46495E0468CA2E704B563B32C0C0000000000011BAFB2C141238D08FF19D9B13B15B8ED058B417F703D84480D0000000000014A748FF9277C14566D2B0264E7F84F8ACAA2F59B50291E990E00000000000106F5CAD53B5C3791096DF68EBDB1CC939095EA3CD46033B80F000000000001DEB635F432C8EBED5EF2C212642CBB32A30BB894F444629610000000000001566BC42A252D2CBCCCDF5ED1E21BBC9CAD418962E413F8DF11000000000001882362F868C4373BC0CC8C5045A37D7D0DD723A0DA6E270D120000000000015383B05BC0D4E076DB6D69F0F9D28D60639F02DCC5D6DE001300000000000100000000000000000000000000000000000000000000000000000000 + + +count = 0 +seed = 1840C60AD9F35C900372EF38D08671A74353C965C3C5DE0668C9C3E5CF3926304322530FD9681CF3A9C71FD633D60C66 +mlen = 33 +msg = B338DD755D5618C464AB331F14DE3DD4A358BBA00D28FB35236741E902F7B248CE +smlen = 1732 +sm = 000000006E27A9DEE5C52264535E12DB4E313EF54ECFD4B4A72CE8C314EDC2FB08A14206F20628FAACC7A0CB687CE3D1A6E0CBF1B9AD99C310C97A23C7E85806542A35A63CE36BDD6DCDFF4880A18B9E48335FAA06792F000F2E5CE07C4769CE4249917A64DC284E525A6585B2F85FDF8A8DD949F0268F9B8646326D024E6C27658B5351BF89E0971DD31B0F118ABEE9AC0C6668B51DEBCDA406B58A554CB8F07EE0437CC4B3F34ADB19C11412E38A1885C6152A16C7AA4E0E78F7E105C73EFE8302AB3CBA5C6AA60B377C72F006FB2B4AF1D646EE521904B5EAC7E54770A4674DDDAD8FBACBBF293C8B57B33A6980AF1E14F3D3A8BBF058638495A195527249E3F664E3FF2288809D8E6D0F398A7F866E9203937C4695CB8B776509CD9A9DE11FE07CD78654DDAA8CC3E9433379ED5051C75012BC1178D6805F0C583CFC2F584E2CD453E2CDE664C48EB7D8300C9FFAA417534CBE5EC5E458BEE588DBE80A4F81A9453587D8A9A873E4B4E449B3592A9B8F40FA3473E2E97934A26C46ECB488E334A554AE32D2A529ACD4CA76FC9BCFA1901DA550F42D21DB3B9768FFF12EEA736084A01C4F1169F7458B076A2F70C771FDC41BFF52509C64803D5445B0D658D53D48EC2EA36CFA50802956629566BFD661BF6A28BC175EAA00BC38088409025E2032D07325713C1BFF5CE85B1AB47FB652C05576ED0F583BE552029A435EE4246A672D41D7D07BFC3410BAE6777C55E9D2149B00CF26F2CB1F14A22AA9E1E1CAC168B785DE73FCB8F8AA999078B6D9B5F38D10E9138632591A779143F16EAC23E7F48A041675EBCCAA147F5086090752D60A468FD835D0AB6641CBD7F1FC236333B0A0DD7648C33AA22AA60A4D41F23DF1E62D583FA1D460BD7478365340D0E88CDEE70A20863C0879C746E52B43938EB6F6A45D99851BA24C745A3B401418C8578C9679CBF7A9A572E777D707F673A4C55D3F38990152D7D515300F9338C081ABE2A2DEC97786B415857F0B6945A1F16784A17639FE317D116EEF67D3EB95394B94468CCF31A0C6BD20E11D66359620685AF4D2DB7CF1355F9EABEA4B11C1F5B615A63E65BD2B9874D9CF5F0028F9AED7FAB40B7E3617BEFB159A5661332626AC06DA17D67D5EE22C1F4762E6722C980E72F8140257ABF5426C2281FE0003760EE21477667858BB2A2F2D5F51ED8A5688DA32160A8B706DC5641A5486891BC3F476F40BD58BCCBD16E14C0D68C33A0EADE1A2AAF7174A92F30B2DC1168F3C8B2121AB00ABC64CC4AFEDE3A6B573741B9F5626184E86BC141D48C212163A83436758F8B22219711F393B65E63533A0B116F24873D76B33EA6F51B65ECEFDB8CB071860BEC72B0EB01CC6F72746094A3D48AA947919745879E092B8F5E1FFC548AA806474D73A68469FF864D68DE572088009097E7DA7E3263C140351369CD58841098D3F414C37EF946568BF40422278B16E61085B749C6DF82281527AC29D9E3C08DFC9A3445B8E8C06364D2AACEA99FBD578F584A8834DC5731932F5DF268FB0D28182FAD4D40549A8948511B8E530477A1097A1A5C429A7D51806AB133C00D286C0C28E898F82274B3F7A23F49A4A1C110FA52E7FD94519E197298183FF663F8998DDD6B724D2E9BC732C31EA96DAE37FC4D0F73E67BC13C96974860F1D3C79B36479238BC38300256A9BE6C807B1B18928E6CB57203C1FD2A051B1868773D6E1B81690B1A0CEFC9A53AACC885BFF22184F56A94D8E47351B5ABBA97FBC8FC63846FC2F2858D71876E4DC314F4E0F6D7BFB6590863108297AAFC9D956AD8B12A0606ED07C8F1709BEFEE6C069CFE0134CA0D0507D37173014FC3D7F6A6C9A8BBAD58C542421172D2A213400B5C31F035600999DA8ACFDFC4B5D178D8358A08602C2856A7EB6D9A09A31BABD14A5D1CC1755FEC069D44207616243524232E767C1675EB03B5587557F44EC5C5CC030AC51D7259B88845E588221260822E9A47EFD7F7E2D6511F82470F062B2127F4977CD34B25DCE18F254176491DE3BF75108ECBF7D81B1FE5051368555C7FC1693229892DB74BD1DF2C76BD313AB68D3CEE3C0FF0E7F4BAF8D01CE6BED89649E8DB576C964B88FF444A8DB03CDA5E27AA17CA472E17DCBC478AE97934D530EBB9B6F9EE049F73C4F95239000192AD2AC95A95FC7A39EC55C55751160A56A73BB25641BC9EA64C0E01D0D5C93D4BA2A6C24924259146021F6F8333C511C611450C637FBFAFEF3E35B02CBD1CD041E992886FF619FA4A95E93C8922528662A2E165B844192206C74A1E135BDCA2B3DF53F224A2F6B79C3B60D31E80FCC1D87D3246DF8A8A291B59D922E4A240605B089FCF56B1FE467C2D023181C2D4530E68521FCFBFD56A517AF81DC05CBB95BFFBA9DE311675B63F870BA8137AC9BD1364F98DE7D68E1EF1E3BCFE7FC15F712B2B86B60B92BD9 +remain = 1048574 +max = 1048575 diff --git a/tests/test_sig_stfl.c b/tests/test_sig_stfl.c index a21119138a..4a3ddc4d99 100644 --- a/tests/test_sig_stfl.c +++ b/tests/test_sig_stfl.c @@ -301,6 +301,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_sha256_h16_192 + } else if (0 == strcasecmp(sig->method_name, OQS_SIG_STFL_alg_xmss_sha256_h16_192)) { + goto from_kats; +#endif +#ifdef OQS_ENABLE_SIG_STFL_xmss_sha256_h20_192 + } else if (0 == strcasecmp(sig->method_name, OQS_SIG_STFL_alg_xmss_sha256_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; From 9ff5efb93fbd9552dd2b3afd95bce35b9d2ccab9 Mon Sep 17 00:00:00 2001 From: Duc Tri Nguyen Date: Thu, 13 Jun 2024 17:21:14 -0400 Subject: [PATCH 2/4] [trigger downstream] Signed-off-by: Duc Tri Nguyen From 865916634e8f251184178392305f0fada11ece36 Mon Sep 17 00:00:00 2001 From: Duc Tri Nguyen Date: Mon, 17 Jun 2024 14:39:16 -0400 Subject: [PATCH 3/4] format xmss.md Signed-off-by: Duc Tri Nguyen --- docs/algorithms/sig_stfl/xmss.md | 67 ++++++++++++++++---------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/docs/algorithms/sig_stfl/xmss.md b/docs/algorithms/sig_stfl/xmss.md index 8926ab212e..d3ec016ddd 100644 --- a/docs/algorithms/sig_stfl/xmss.md +++ b/docs/algorithms/sig_stfl/xmss.md @@ -9,38 +9,39 @@ - **Source**: https://github.com/XMSS/xmss-reference - **Implementation license (SPDX-Identifier)**: (Apache-2.0 OR MIT) AND CC0-1.0 + ## Parameter set summary -| Parameter set | Security model | Claimed NIST Level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) | RFC8391 | NIST SP 800-208 | CNSA 2.0 | -| :--------------------: | :------------- | :----------------- | ----------------------: | ----------------------: | ---------------------: | ------- | --------------- | -------- | -| XMSS-SHA2_10_256 | | | 64 | 1373 | 2500 | ✅ | ✅ | ✅ | -| XMSS-SHA2_16_256 | | | 64 | 2093 | 2692 | ✅ | ✅ | ✅ | -| XMSS-SHA2_20_256 | | | 64 | 2573 | 2820 | ✅ | ✅ | ✅ | -| XMSS-SHAKE_10_256 | | | 64 | 1373 | 2500 | ✅ | ❌ | ❌ | -| XMSS-SHAKE_16_256 | | | 64 | 2093 | 2692 | ✅ | ❌ | ❌ | -| XMSS-SHAKE_20_256 | | | 64 | 2573 | 2820 | ✅ | ❌ | ❌ | -| XMSS-SHA2_10_512 | | | 128 | 2653 | 9092 | ✅ | ❌ | ❌ | -| XMSS-SHA2_16_512 | | | 128 | 4045 | 9476 | ✅ | ❌ | ❌ | -| XMSS-SHA2_20_512 | | | 128 | 2653 | 9732 | ✅ | ❌ | ❌ | -| XMSS-SHAKE_10_512 | | | 128 | 2653 | 9092 | ✅ | ❌ | ❌ | -| XMSS-SHAKE_16_512 | | | 128 | 4045 | 9476 | ✅ | ❌ | ❌ | -| XMSS-SHAKE_20_512 | | | 128 | 4973 | 9732 | ✅ | ❌ | ❌ | -| XMSS-SHA2_10_192 | | | 48 | 1053 | 1492 | ❌ | ✅ | ✅ | -| XMSS-SHA2_16_192 | | | 48 | 1605 | 1636 | ❌ | ✅ | ✅ | -| XMSS-SHA2_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 | ✅ | ✅ | ❌ | -| XMSSMT-SHA2_40/4_256 | | | 64 | 15252 | 9893 | ✅ | ✅ | ❌ | -| XMSSMT-SHA2_40/8_256 | | | 64 | 24516 | 18469 | ✅ | ✅ | ❌ | -| XMSSMT-SHA2_60/3_256 | | | 64 | 16629 | 8392 | ✅ | ✅ | ❌ | -| XMSSMT-SHA2_60/6_256 | | | 64 | 24507 | 14824 | ✅ | ✅ | ❌ | -| XMSSMT-SHA2_60/12_256 | | | 64 | 38095 | 27688 | ✅ | ✅ | ❌ | -| XMSSMT-SHAKE_20/2_256 | | | 64 | 5998 | 4963 | ✅ | ❌ | ❌ | -| XMSSMT-SHAKE_20/4_256 | | | 64 | 10938 | 9251 | ✅ | ❌ | ❌ | -| XMSSMT-SHAKE_40/2_256 | | | 64 | 9600 | 5605 | ✅ | ❌ | ❌ | -| XMSSMT-SHAKE_40/4_256 | | | 64 | 15252 | 9893 | ✅ | ❌ | ❌ | -| XMSSMT-SHAKE_40/8_256 | | | 64 | 24516 | 18469 | ✅ | ❌ | ❌ | -| XMSSMT-SHAKE_60/3_256 | | | 64 | 24516 | 8392 | ✅ | ❌ | ❌ | -| XMSSMT-SHAKE_60/6_256 | | | 64 | 24507 | 14824 | ✅ | ❌ | ❌ | -| XMSSMT-SHAKE_60/12_256 | | | 64 | 38095 | 27688 | ✅ | ❌ | ❌ | +| Parameter set | Security model | Claimed NIST Level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) | +|:----------------------:|:-----------------|:---------------------|--------------------------:|--------------------------:|-------------------------:| +| XMSS-SHA2_10_256 | | | 64 | 1373 | 2500 | +| XMSS-SHA2_16_256 | | | 64 | 2093 | 2692 | +| XMSS-SHA2_20_256 | | | 64 | 2573 | 2820 | +| XMSS-SHAKE_10_256 | | | 64 | 1373 | 2500 | +| XMSS-SHAKE_16_256 | | | 64 | 2093 | 2692 | +| XMSS-SHAKE_20_256 | | | 64 | 2573 | 2820 | +| XMSS-SHA2_10_512 | | | 128 | 2653 | 9092 | +| XMSS-SHA2_16_512 | | | 128 | 4045 | 9476 | +| XMSS-SHA2_20_512 | | | 128 | 2653 | 9732 | +| XMSS-SHAKE_10_512 | | | 128 | 2653 | 9092 | +| XMSS-SHAKE_16_512 | | | 128 | 4045 | 9476 | +| XMSS-SHAKE_20_512 | | | 128 | 4973 | 9732 | +| XMSS-SHA2_10_192 | | | 48 | 1053 | 1492 | +| XMSS-SHA2_16_192 | | | 48 | 1605 | 1636 | +| XMSS-SHA2_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 | +| XMSSMT-SHA2_40/4_256 | | | 64 | 15252 | 9893 | +| XMSSMT-SHA2_40/8_256 | | | 64 | 24516 | 18469 | +| XMSSMT-SHA2_60/3_256 | | | 64 | 16629 | 8392 | +| XMSSMT-SHA2_60/6_256 | | | 64 | 24507 | 14824 | +| XMSSMT-SHA2_60/12_256 | | | 64 | 38095 | 27688 | +| XMSSMT-SHAKE_20/2_256 | | | 64 | 5998 | 4963 | +| XMSSMT-SHAKE_20/4_256 | | | 64 | 10938 | 9251 | +| XMSSMT-SHAKE_40/2_256 | | | 64 | 9600 | 5605 | +| XMSSMT-SHAKE_40/4_256 | | | 64 | 15252 | 9893 | +| XMSSMT-SHAKE_40/8_256 | | | 64 | 24516 | 18469 | +| XMSSMT-SHAKE_60/3_256 | | | 64 | 24516 | 8392 | +| XMSSMT-SHAKE_60/6_256 | | | 64 | 24507 | 14824 | +| XMSSMT-SHAKE_60/12_256 | | | 64 | 38095 | 27688 | From ae975e5fe5cfa310a4334c8ee58754f527b0fa81 Mon Sep 17 00:00:00 2001 From: Duc Tri Nguyen Date: Mon, 17 Jun 2024 14:45:35 -0400 Subject: [PATCH 4/4] [trigger downstream] Signed-off-by: Duc Tri Nguyen