@@ -1743,15 +1743,17 @@ static const char* bench_result_words3[][5] = {
17431743 defined(HAVE_CURVE448) || defined(HAVE_ED448) || \
17441744 defined(HAVE_ECC) || !defined(NO_DH) || \
17451745 !defined(NO_RSA) || defined(HAVE_SCRYPT) || \
1746- defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM)
1746+ defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM) || \
1747+ defined(WOLFSSL_HAVE_LMS)
17471748 #define BENCH_ASYM
17481749#endif
17491750
17501751#if defined(BENCH_ASYM)
17511752#if defined(HAVE_ECC) || !defined(NO_RSA) || !defined(NO_DH) || \
17521753 defined(HAVE_CURVE25519) || defined(HAVE_ED25519) || \
17531754 defined(HAVE_CURVE448) || defined(HAVE_ED448) || \
1754- defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM)
1755+ defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM) || \
1756+ defined(WOLFSSL_HAVE_LMS)
17551757static const char* bench_result_words2[][5] = {
17561758#ifdef BENCH_MICROSECOND
17571759 { "ops took", "μsec" , "avg" , "ops/μsec", NULL }, /* 0 English
@@ -2710,7 +2712,8 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID,
27102712#if defined(HAVE_ECC) || !defined(NO_RSA) || !defined(NO_DH) || \
27112713 defined(HAVE_CURVE25519) || defined(HAVE_ED25519) || \
27122714 defined(HAVE_CURVE448) || defined(HAVE_ED448) || \
2713- defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM)
2715+ defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM) || \
2716+ defined(WOLFSSL_HAVE_LMS)
27142717static void bench_stats_asym_finish_ex(const char* algo, int strength,
27152718 const char* desc, const char* desc_extra, int useDeviceID, int count,
27162719 double start, int ret)
@@ -9496,6 +9499,7 @@ void bench_kyber(int type)
94969499#endif
94979500
94989501#if defined(WOLFSSL_HAVE_LMS) && !defined(WOLFSSL_LMS_VERIFY_ONLY)
9502+ #ifndef WOLFSSL_NO_LMS_SHA256_256
94999503/* WC_LMS_PARM_L2_H10_W2
95009504 * signature length: 9300 */
95019505static const byte lms_priv_L2_H10_W2[64] =
@@ -9651,6 +9655,7 @@ static const byte lms_pub_L4_H5_W8[60] =
96519655 0x85,0x1A,0x7A,0xD8,0xD5,0x46,0x74,0x3B,
96529656 0x74,0x24,0x12,0xC8
96539657};
9658+ #endif
96549659
96559660static int lms_write_key_mem(const byte* priv, word32 privSz, void* context)
96569661{
@@ -9811,6 +9816,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm, byte* pub)
98119816 }
98129817
98139818 switch (parm) {
9819+ #ifndef WOLFSSL_NO_LMS_SHA256_256
98149820 case WC_LMS_PARM_L2_H10_W2:
98159821 XMEMCPY(lms_priv, lms_priv_L2_H10_W2, sizeof(lms_priv_L2_H10_W2));
98169822 XMEMCPY(key.pub, lms_pub_L2_H10_W2, HSS_MAX_PUBLIC_KEY_LEN);
@@ -9871,6 +9877,28 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm, byte* pub)
98719877 case WC_LMS_PARM_L4_H5_W4:
98729878 case WC_LMS_PARM_L4_H10_W4:
98739879 case WC_LMS_PARM_L4_H10_W8:
9880+ #endif
9881+
9882+ #ifdef WOLFSSL_LMS_SHA256_192
9883+ case WC_LMS_PARM_SHA256_192_L1_H5_W1:
9884+ case WC_LMS_PARM_SHA256_192_L1_H5_W2:
9885+ case WC_LMS_PARM_SHA256_192_L1_H5_W4:
9886+ case WC_LMS_PARM_SHA256_192_L1_H5_W8:
9887+ case WC_LMS_PARM_SHA256_192_L1_H10_W2:
9888+ case WC_LMS_PARM_SHA256_192_L1_H10_W4:
9889+ case WC_LMS_PARM_SHA256_192_L1_H10_W8:
9890+ case WC_LMS_PARM_SHA256_192_L1_H15_W2:
9891+ case WC_LMS_PARM_SHA256_192_L1_H15_W4:
9892+ case WC_LMS_PARM_SHA256_192_L2_H10_W2:
9893+ case WC_LMS_PARM_SHA256_192_L2_H10_W4:
9894+ case WC_LMS_PARM_SHA256_192_L2_H10_W8:
9895+ case WC_LMS_PARM_SHA256_192_L3_H5_W2:
9896+ case WC_LMS_PARM_SHA256_192_L3_H5_W4:
9897+ case WC_LMS_PARM_SHA256_192_L3_H5_W8:
9898+ case WC_LMS_PARM_SHA256_192_L3_H10_W4:
9899+ case WC_LMS_PARM_SHA256_192_L4_H5_W8:
9900+ #endif
9901+
98749902 default:
98759903 XMEMCPY(key.pub, pub, HSS_MAX_PUBLIC_KEY_LEN);
98769904 break;
@@ -10045,6 +10073,7 @@ void bench_lms(void)
1004510073{
1004610074 byte pub[HSS_MAX_PUBLIC_KEY_LEN];
1004710075
10076+ #ifndef WOLFSSL_NO_LMS_SHA256_256
1004810077#ifdef BENCH_LMS_SLOW_KEYGEN
1004910078#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_HEIGHT >= 15)
1005010079 bench_lms_keygen(WC_LMS_PARM_L1_H15_W2, pub);
@@ -10090,6 +10119,55 @@ void bench_lms(void)
1009010119 bench_lms_keygen(WC_LMS_PARM_L1_H5_W1, pub);
1009110120 bench_lms_sign_verify(WC_LMS_PARM_L1_H5_W1, pub);
1009210121#endif
10122+ #endif /* !WOLFSSL_NO_LMS_SHA256_256 */
10123+
10124+ #ifdef WOLFSSL_LMS_SHA256_192
10125+ #ifdef BENCH_LMS_SLOW_KEYGEN
10126+ #if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_HEIGHT >= 15)
10127+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H15_W2, pub);
10128+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H15_W2, pub);
10129+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H15_W4, pub);
10130+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H15_W4, pub);
10131+ #undef LMS_PARAMS_BENCHED
10132+ #define LMS_PARAMS_BENCHED
10133+ #endif
10134+ #endif
10135+ #if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 2) && \
10136+ (LMS_MAX_HEIGHT >= 10))
10137+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W2, pub);
10138+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W2, pub);
10139+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W4, pub);
10140+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W4, pub);
10141+ #undef LMS_PARAMS_BENCHED
10142+ #define LMS_PARAMS_BENCHED
10143+ #ifdef BENCH_LMS_SLOW_KEYGEN
10144+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W8, pub);
10145+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W8, pub);
10146+ #endif
10147+ #endif
10148+ #if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 3)
10149+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H5_W4, pub);
10150+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H5_W4, pub);
10151+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H5_W8, pub);
10152+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H5_W8, pub);
10153+ #undef LMS_PARAMS_BENCHED
10154+ #define LMS_PARAMS_BENCHED
10155+ #endif
10156+ #if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 3) && \
10157+ (LMS_MAX_HEIGHT >= 10))
10158+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H10_W4, pub);
10159+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H10_W4, pub);
10160+ #endif
10161+ #if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 4)
10162+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L4_H5_W8, pub);
10163+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L4_H5_W8, pub);
10164+ #endif
10165+
10166+ #if defined(WOLFSSL_WC_LMS) && !defined(LMS_PARAMS_BENCHED)
10167+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H5_W1, pub);
10168+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H5_W1, pub);
10169+ #endif
10170+ #endif /* WOLFSSL_LMS_SHA256_192 */
1009310171
1009410172 return;
1009510173}
0 commit comments