@@ -1692,15 +1692,17 @@ static const char* bench_result_words3[][5] = {
16921692 defined(HAVE_CURVE448) || defined(HAVE_ED448) || \
16931693 defined(HAVE_ECC) || !defined(NO_DH) || \
16941694 !defined(NO_RSA) || defined(HAVE_SCRYPT) || \
1695- defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM)
1695+ defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM) || \
1696+ defined(WOLFSSL_HAVE_LMS)
16961697 #define BENCH_ASYM
16971698#endif
16981699
16991700#if defined(BENCH_ASYM)
17001701#if defined(HAVE_ECC) || !defined(NO_RSA) || !defined(NO_DH) || \
17011702 defined(HAVE_CURVE25519) || defined(HAVE_ED25519) || \
17021703 defined(HAVE_CURVE448) || defined(HAVE_ED448) || \
1703- defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM)
1704+ defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM) || \
1705+ defined(WOLFSSL_HAVE_LMS)
17041706static const char* bench_result_words2[][5] = {
17051707#ifdef BENCH_MICROSECOND
17061708 { "ops took", "μsec" , "avg" , "ops/μsec", NULL }, /* 0 English
@@ -2656,7 +2658,8 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID,
26562658#if defined(HAVE_ECC) || !defined(NO_RSA) || !defined(NO_DH) || \
26572659 defined(HAVE_CURVE25519) || defined(HAVE_ED25519) || \
26582660 defined(HAVE_CURVE448) || defined(HAVE_ED448) || \
2659- defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM)
2661+ defined(WOLFSSL_HAVE_KYBER) || defined(HAVE_DILITHIUM) || \
2662+ defined(WOLFSSL_HAVE_LMS)
26602663static void bench_stats_asym_finish_ex(const char* algo, int strength,
26612664 const char* desc, const char* desc_extra, int useDeviceID, int count,
26622665 double start, int ret)
@@ -9442,6 +9445,7 @@ void bench_kyber(int type)
94429445#endif
94439446
94449447#if defined(WOLFSSL_HAVE_LMS) && !defined(WOLFSSL_LMS_VERIFY_ONLY)
9448+ #ifndef WOLFSSL_NO_LMS_SHA256_256
94459449/* WC_LMS_PARM_L2_H10_W2
94469450 * signature length: 9300 */
94479451static const byte lms_priv_L2_H10_W2[64] =
@@ -9597,6 +9601,7 @@ static const byte lms_pub_L4_H5_W8[60] =
95979601 0x85,0x1A,0x7A,0xD8,0xD5,0x46,0x74,0x3B,
95989602 0x74,0x24,0x12,0xC8
95999603};
9604+ #endif
96009605
96019606static int lms_write_key_mem(const byte* priv, word32 privSz, void* context)
96029607{
@@ -9757,6 +9762,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm, byte* pub)
97579762 }
97589763
97599764 switch (parm) {
9765+ #ifndef WOLFSSL_NO_LMS_SHA256_256
97609766 case WC_LMS_PARM_L2_H10_W2:
97619767 XMEMCPY(lms_priv, lms_priv_L2_H10_W2, sizeof(lms_priv_L2_H10_W2));
97629768 XMEMCPY(key.pub, lms_pub_L2_H10_W2, HSS_MAX_PUBLIC_KEY_LEN);
@@ -9817,6 +9823,28 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm, byte* pub)
98179823 case WC_LMS_PARM_L4_H5_W4:
98189824 case WC_LMS_PARM_L4_H10_W4:
98199825 case WC_LMS_PARM_L4_H10_W8:
9826+ #endif
9827+
9828+ #ifdef WOLFSSL_LMS_SHA256_192
9829+ case WC_LMS_PARM_SHA256_192_L1_H5_W1:
9830+ case WC_LMS_PARM_SHA256_192_L1_H5_W2:
9831+ case WC_LMS_PARM_SHA256_192_L1_H5_W4:
9832+ case WC_LMS_PARM_SHA256_192_L1_H5_W8:
9833+ case WC_LMS_PARM_SHA256_192_L1_H10_W2:
9834+ case WC_LMS_PARM_SHA256_192_L1_H10_W4:
9835+ case WC_LMS_PARM_SHA256_192_L1_H10_W8:
9836+ case WC_LMS_PARM_SHA256_192_L1_H15_W2:
9837+ case WC_LMS_PARM_SHA256_192_L1_H15_W4:
9838+ case WC_LMS_PARM_SHA256_192_L2_H10_W2:
9839+ case WC_LMS_PARM_SHA256_192_L2_H10_W4:
9840+ case WC_LMS_PARM_SHA256_192_L2_H10_W8:
9841+ case WC_LMS_PARM_SHA256_192_L3_H5_W2:
9842+ case WC_LMS_PARM_SHA256_192_L3_H5_W4:
9843+ case WC_LMS_PARM_SHA256_192_L3_H5_W8:
9844+ case WC_LMS_PARM_SHA256_192_L3_H10_W4:
9845+ case WC_LMS_PARM_SHA256_192_L4_H5_W8:
9846+ #endif
9847+
98209848 default:
98219849 XMEMCPY(key.pub, pub, HSS_MAX_PUBLIC_KEY_LEN);
98229850 break;
@@ -9991,6 +10019,7 @@ void bench_lms(void)
999110019{
999210020 byte pub[HSS_MAX_PUBLIC_KEY_LEN];
999310021
10022+ #ifndef WOLFSSL_NO_LMS_SHA256_256
999410023#ifdef BENCH_LMS_SLOW_KEYGEN
999510024#if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_HEIGHT >= 15)
999610025 bench_lms_keygen(WC_LMS_PARM_L1_H15_W2, pub);
@@ -10036,6 +10065,55 @@ void bench_lms(void)
1003610065 bench_lms_keygen(WC_LMS_PARM_L1_H5_W1, pub);
1003710066 bench_lms_sign_verify(WC_LMS_PARM_L1_H5_W1, pub);
1003810067#endif
10068+ #endif /* !WOLFSSL_NO_LMS_SHA256_256 */
10069+
10070+ #ifdef WOLFSSL_LMS_SHA256_192
10071+ #ifdef BENCH_LMS_SLOW_KEYGEN
10072+ #if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_HEIGHT >= 15)
10073+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H15_W2, pub);
10074+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H15_W2, pub);
10075+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H15_W4, pub);
10076+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H15_W4, pub);
10077+ #undef LMS_PARAMS_BENCHED
10078+ #define LMS_PARAMS_BENCHED
10079+ #endif
10080+ #endif
10081+ #if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 2) && \
10082+ (LMS_MAX_HEIGHT >= 10))
10083+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W2, pub);
10084+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W2, pub);
10085+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W4, pub);
10086+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W4, pub);
10087+ #undef LMS_PARAMS_BENCHED
10088+ #define LMS_PARAMS_BENCHED
10089+ #ifdef BENCH_LMS_SLOW_KEYGEN
10090+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L2_H10_W8, pub);
10091+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L2_H10_W8, pub);
10092+ #endif
10093+ #endif
10094+ #if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 3)
10095+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H5_W4, pub);
10096+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H5_W4, pub);
10097+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H5_W8, pub);
10098+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H5_W8, pub);
10099+ #undef LMS_PARAMS_BENCHED
10100+ #define LMS_PARAMS_BENCHED
10101+ #endif
10102+ #if !defined(WOLFSSL_WC_LMS) || ((LMS_MAX_LEVELS >= 3) && \
10103+ (LMS_MAX_HEIGHT >= 10))
10104+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L3_H10_W4, pub);
10105+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L3_H10_W4, pub);
10106+ #endif
10107+ #if !defined(WOLFSSL_WC_LMS) || (LMS_MAX_LEVELS >= 4)
10108+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L4_H5_W8, pub);
10109+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L4_H5_W8, pub);
10110+ #endif
10111+
10112+ #if defined(WOLFSSL_WC_LMS) && !defined(LMS_PARAMS_BENCHED)
10113+ bench_lms_keygen(WC_LMS_PARM_SHA256_192_L1_H5_W1, pub);
10114+ bench_lms_sign_verify(WC_LMS_PARM_SHA256_192_L1_H5_W1, pub);
10115+ #endif
10116+ #endif /* WOLFSSL_LMS_SHA256_192 */
1003910117
1004010118 return;
1004110119}
0 commit comments