@@ -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
1211912127exit:
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