From 08a46f543166eca1568f10fbaef3a624d50a318b Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Wed, 29 Jan 2025 08:50:43 +1000 Subject: [PATCH] LMS: Fix SHA-256-192 level 1, height 20 Fix parameters for SHA-256-192, Level 1, Height 20, Winternitz: 2, 4, 8 --- wolfcrypt/benchmark/benchmark.c | 3 +++ wolfcrypt/src/wc_lms.c | 16 +++++++--------- wolfssl/wolfcrypt/lms.h | 3 +++ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index c730ac867..88fc06c53 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -10007,6 +10007,9 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm, byte* pub) case WC_LMS_PARM_SHA256_192_L1_H10_W8: case WC_LMS_PARM_SHA256_192_L1_H15_W2: case WC_LMS_PARM_SHA256_192_L1_H15_W4: + case WC_LMS_PARM_SHA256_192_L1_H20_W2: + case WC_LMS_PARM_SHA256_192_L1_H20_W4: + case WC_LMS_PARM_SHA256_192_L1_H20_W8: case WC_LMS_PARM_SHA256_192_L2_H10_W2: case WC_LMS_PARM_SHA256_192_L2_H10_W4: case WC_LMS_PARM_SHA256_192_L2_H10_W8: diff --git a/wolfcrypt/src/wc_lms.c b/wolfcrypt/src/wc_lms.c index a6c065115..0b50a1ce1 100644 --- a/wolfcrypt/src/wc_lms.c +++ b/wolfcrypt/src/wc_lms.c @@ -351,20 +351,18 @@ static const wc_LmsParamsMap wc_lms_map[] = { LMS_PARAMS(1, 10, 8, 3, LMS_SHA256_M24_H10, LMOTS_SHA256_N24_W8, WC_SHA256_192_DIGEST_SIZE) }, #endif -#endif /* WOLFSSL_LMS_SHA256_192 */ #if LMS_MAX_HEIGHT >= 20 -#ifndef WOLFSSL_NO_LMS_SHA256_256 - { WC_LMS_PARM_L1_H20_W2 , "LMS/HSS_SHA256/192_L1_H20_W2", - LMS_PARAMS(1, 20, 2, 1, LMS_SHA256_M32_H20, LMOTS_SHA256_N32_W2, + { WC_LMS_PARM_SHA256_192_L1_H20_W2 , "LMS/HSS_SHA256/192_L1_H20_W2", + LMS_PARAMS(1, 20, 2, 1, LMS_SHA256_M24_H20, LMOTS_SHA256_N24_W2, WC_SHA256_192_DIGEST_SIZE) }, - { WC_LMS_PARM_L1_H20_W4 , "LMS/HSS_SHA256/192_L1_H20_W4", - LMS_PARAMS(1, 20, 4, 2, LMS_SHA256_M32_H20, LMOTS_SHA256_N32_W4, + { WC_LMS_PARM_SHA256_192_L1_H20_W4 , "LMS/HSS_SHA256/192_L1_H20_W4", + LMS_PARAMS(1, 20, 4, 2, LMS_SHA256_M24_H20, LMOTS_SHA256_N24_W4, WC_SHA256_192_DIGEST_SIZE) }, - { WC_LMS_PARM_L1_H20_W8 , "LMS/HSS_SHA256/192_L1_H20_W8", - LMS_PARAMS(1, 20, 8, 3, LMS_SHA256_M32_H20, LMOTS_SHA256_N32_W8, + { WC_LMS_PARM_SHA256_192_L1_H20_W8 , "LMS/HSS_SHA256/192_L1_H20_W8", + LMS_PARAMS(1, 20, 8, 3, LMS_SHA256_M24_H20, LMOTS_SHA256_N24_W8, WC_SHA256_192_DIGEST_SIZE) }, #endif -#endif +#endif /* WOLFSSL_LMS_SHA256_192 */ }; /* Number of parameter sets supported. */ #define WC_LMS_MAP_LEN ((int)(sizeof(wc_lms_map) / sizeof(*wc_lms_map))) diff --git a/wolfssl/wolfcrypt/lms.h b/wolfssl/wolfcrypt/lms.h index a9e3662ae..754c49c08 100644 --- a/wolfssl/wolfcrypt/lms.h +++ b/wolfssl/wolfcrypt/lms.h @@ -127,6 +127,9 @@ enum wc_LmsParm { WC_LMS_PARM_SHA256_192_L1_H10_W8 = 42, WC_LMS_PARM_SHA256_192_L1_H15_W2 = 43, WC_LMS_PARM_SHA256_192_L1_H15_W4 = 44, + WC_LMS_PARM_SHA256_192_L1_H20_W2 = 53, + WC_LMS_PARM_SHA256_192_L1_H20_W4 = 54, + WC_LMS_PARM_SHA256_192_L1_H20_W8 = 55, WC_LMS_PARM_SHA256_192_L2_H10_W2 = 45, WC_LMS_PARM_SHA256_192_L2_H10_W4 = 46, WC_LMS_PARM_SHA256_192_L2_H10_W8 = 47,