Skip to content

Commit 0de6e8f

Browse files
Merge pull request #9950 from douzzer/20260311-bench_slhdsa-smallstack
20260311-bench_slhdsa-smallstack
2 parents a8dfa59 + ecf71e7 commit 0de6e8f

2 files changed

Lines changed: 39 additions & 18 deletions

File tree

.wolfssl_known_macro_extras

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,6 @@ WOLFSSL_NO_WORD64_OPS
847847
WOLFSSL_NO_XOR_OPS
848848
WOLFSSL_NRF51_AES
849849
WOLFSSL_OLDTLS_AEAD_CIPHERSUITES
850-
WOLFSSL_OLDTLS_SHA2_CIPHERSUITES
851850
WOLFSSL_OLD_SET_CURVES_LIST
852851
WOLFSSL_OLD_TIMINGPADVERIFY
853852
WOLFSSL_OLD_UNSUPPORTED_EXTENSION
@@ -882,7 +881,6 @@ WOLFSSL_RSA_DECRYPT_TO_0_LEN
882881
WOLFSSL_RW_THREADED
883882
WOLFSSL_SAKKE_SMALL
884883
WOLFSSL_SAKKE_SMALL_MODEXP
885-
WOLFSSL_SLHDSA_FULL_HASH
886884
WOLFSSL_SE050_AUTO_ERASE
887885
WOLFSSL_SE050_CRYPT
888886
WOLFSSL_SE050_HASH
@@ -897,6 +895,7 @@ WOLFSSL_SHA256_ALT_CH_MAJ
897895
WOLFSSL_SHA512_HASHTYPE
898896
WOLFSSL_SHUTDOWNONCE
899897
WOLFSSL_SILABS_TRNG
898+
WOLFSSL_SLHDSA_FULL_HASH
900899
WOLFSSL_SM4_EBC
901900
WOLFSSL_SNIFFER_NO_RECOVERY
902901
WOLFSSL_SP_ARM32_UDIV

wolfcrypt/benchmark/benchmark.c

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12026,9 +12026,9 @@ void bench_slhdsa(enum SlhDsaParam param)
1202612026
{
1202712027
int ret = 0, count = 0;
1202812028
double start = 0;
12029-
SlhDsaKey key;
12030-
SlhDsaKey key_vfy;
12031-
byte sig[WC_SLHDSA_MAX_SIG_LEN];
12029+
WC_DECLARE_VAR(key, SlhDsaKey, 1, HEAP_HINT);
12030+
WC_DECLARE_VAR(key_vfy, SlhDsaKey, 1, HEAP_HINT);
12031+
WC_DECLARE_VAR(sig, byte, WC_SLHDSA_MAX_SIG_LEN, HEAP_HINT);
1203212032
word32 sigLen;
1203312033
byte pk[2 * 32];
1203412034
word32 outLen;
@@ -12040,23 +12040,31 @@ void bench_slhdsa(enum SlhDsaParam param)
1204012040
char name[30];
1204112041
int len;
1204212042

12043-
XMEMSET(&key, 0, sizeof(key));
12044-
XMEMSET(&key_vfy, 0, sizeof(key_vfy));
12043+
WC_ALLOC_VAR_EX(key_vfy, SlhDsaKey, 1, HEAP_HINT,
12044+
DYNAMIC_TYPE_TMP_BUFFER, goto exit);
12045+
XMEMSET(key_vfy, 0, sizeof(*key_vfy));
1204512046

12046-
ret = wc_SlhDsaKey_Init(&key, param, NULL, INVALID_DEVID);
12047+
WC_ALLOC_VAR_EX(key, SlhDsaKey, 1, HEAP_HINT,
12048+
DYNAMIC_TYPE_TMP_BUFFER, goto exit);
12049+
XMEMSET(key, 0, sizeof(*key));
12050+
12051+
WC_ALLOC_VAR_EX(sig, byte, WC_SLHDSA_MAX_SIG_LEN, HEAP_HINT,
12052+
DYNAMIC_TYPE_TMP_BUFFER, goto exit);
12053+
12054+
ret = wc_SlhDsaKey_Init(key, param, NULL, INVALID_DEVID);
1204712055
if (ret != 0) {
1204812056
goto exit;
1204912057
}
1205012058

12051-
len = wc_SlhDsaKey_PublicSize(&key) / 2 * 8;
12059+
len = wc_SlhDsaKey_PublicSize(key) / 2 * 8;
1205212060
XMEMCPY(name, "SLH-DSA-S", 10);
1205312061
if ((param & 1) == 1) {
1205412062
name[8] = 'F';
1205512063
}
1205612064

1205712065
bench_stats_start(&count, &start);
1205812066
do {
12059-
ret = wc_SlhDsaKey_MakeKey(&key, &gRng);
12067+
ret = wc_SlhDsaKey_MakeKey(key, &gRng);
1206012068
if (ret != 0) {
1206112069
goto exit;
1206212070
}
@@ -12071,8 +12079,8 @@ void bench_slhdsa(enum SlhDsaParam param)
1207112079

1207212080
bench_stats_start(&count, &start);
1207312081
do {
12074-
sigLen = (word32)sizeof(sig);
12075-
ret = wc_SlhDsaKey_Sign(&key, ctx, 0, msg, (word32)sizeof(msg),
12082+
sigLen = WC_SLHDSA_MAX_SIG_LEN;
12083+
ret = wc_SlhDsaKey_Sign(key, ctx, 0, msg, (word32)sizeof(msg),
1207612084
sig, &sigLen, &gRng);
1207712085
if (ret != 0) {
1207812086
goto exit;
@@ -12087,22 +12095,22 @@ void bench_slhdsa(enum SlhDsaParam param)
1208712095
bench_stats_asym_finish(name, len, "sign", 0, count, start, ret);
1208812096

1208912097
outLen = (word32)sizeof(pk);
12090-
ret = wc_SlhDsaKey_ExportPublic(&key, pk, &outLen);
12098+
ret = wc_SlhDsaKey_ExportPublic(key, pk, &outLen);
1209112099
if (ret != 0) {
1209212100
goto exit;
1209312101
}
1209412102

12095-
ret = wc_SlhDsaKey_Init(&key_vfy, param, NULL, INVALID_DEVID);
12103+
ret = wc_SlhDsaKey_Init(key_vfy, param, NULL, INVALID_DEVID);
1209612104
if (ret != 0) {
1209712105
goto exit;
1209812106
}
12099-
ret = wc_SlhDsaKey_ImportPublic(&key_vfy, pk, outLen);
12107+
ret = wc_SlhDsaKey_ImportPublic(key_vfy, pk, outLen);
1210012108
if (ret != 0) {
1210112109
goto exit;
1210212110
}
1210312111
bench_stats_start(&count, &start);
1210412112
do {
12105-
ret = wc_SlhDsaKey_Verify(&key_vfy, ctx, 0, msg, (word32)sizeof(msg),
12113+
ret = wc_SlhDsaKey_Verify(key_vfy, ctx, 0, msg, (word32)sizeof(msg),
1210612114
sig, sigLen);
1210712115
if (ret != 0) {
1210812116
goto exit;
@@ -12117,8 +12125,22 @@ void bench_slhdsa(enum SlhDsaParam param)
1211712125
bench_stats_asym_finish(name, len, "verify", 0, count, start, ret);
1211812126

1211912127
exit:
12120-
wc_SlhDsaKey_Free(&key_vfy);
12121-
wc_SlhDsaKey_Free(&key);
12128+
#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC
12129+
if (key_vfy)
12130+
#endif
12131+
{
12132+
wc_SlhDsaKey_Free(key_vfy);
12133+
}
12134+
#ifdef WC_DECLARE_VAR_IS_HEAP_ALLOC
12135+
if (key)
12136+
#endif
12137+
{
12138+
wc_SlhDsaKey_Free(key);
12139+
}
12140+
12141+
WC_FREE_VAR_EX(key_vfy, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
12142+
WC_FREE_VAR_EX(key, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
12143+
WC_FREE_VAR_EX(sig, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
1212212144
}
1212312145
#endif
1212412146

0 commit comments

Comments
 (0)