mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-04 21:24:43 +02:00
wolfcrypt/benchmark/benchmark.c: smallstack refactors for bench_mlkem() and bench_dilithiumKeySign(), and globally replace stray uses of fprintf(stderr, ...) with printf(...) for portability.
This commit is contained in:
@@ -9830,8 +9830,13 @@ exit_decap:
|
|||||||
|
|
||||||
void bench_mlkem(int type)
|
void bench_mlkem(int type)
|
||||||
{
|
{
|
||||||
KyberKey key1;
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
KyberKey key2;
|
KyberKey *key1 = NULL;
|
||||||
|
KyberKey *key2 = NULL;
|
||||||
|
#else
|
||||||
|
KyberKey key1[1];
|
||||||
|
KyberKey key2[1];
|
||||||
|
#endif
|
||||||
const char* name = NULL;
|
const char* name = NULL;
|
||||||
int keySize = 0;
|
int keySize = 0;
|
||||||
|
|
||||||
@@ -9880,14 +9885,30 @@ void bench_mlkem(int type)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bench_mlkem_keygen(type, name, keySize, &key1);
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
#if !defined(WOLFSSL_MLKEM_NO_ENCAPSULATE) || \
|
key1 = (KyberKey *)XMALLOC(sizeof(*key1), HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
!defined(WOLFSSL_MLKEM_NO_DECAPSULATE)
|
if (key1 == NULL)
|
||||||
bench_mlkem_encap(type, name, keySize, &key1, &key2);
|
return;
|
||||||
|
key2 = (KyberKey *)XMALLOC(sizeof(*key2), HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
if (key2 == NULL) {
|
||||||
|
XFREE(key1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
return;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wc_KyberKey_Free(&key2);
|
bench_mlkem_keygen(type, name, keySize, key1);
|
||||||
wc_KyberKey_Free(&key1);
|
#if !defined(WOLFSSL_MLKEM_NO_ENCAPSULATE) || \
|
||||||
|
!defined(WOLFSSL_MLKEM_NO_DECAPSULATE)
|
||||||
|
bench_mlkem_encap(type, name, keySize, key1, key2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wc_KyberKey_Free(key2);
|
||||||
|
wc_KyberKey_Free(key1);
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
XFREE(key1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
XFREE(key2, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -10095,7 +10116,7 @@ static void bench_lms_keygen(enum wc_LmsParm parm, byte* pub)
|
|||||||
ret = wc_InitRng(&rng);
|
ret = wc_InitRng(&rng);
|
||||||
#endif
|
#endif
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "error: wc_InitRng failed: %d\n", ret);
|
printf("error: wc_InitRng failed: %d\n", ret);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10129,27 +10150,27 @@ static void bench_lms_keygen(enum wc_LmsParm parm, byte* pub)
|
|||||||
|
|
||||||
ret = wc_LmsKey_GetParameters(&key, &levels, &height, &winternitz);
|
ret = wc_LmsKey_GetParameters(&key, &levels, &height, &winternitz);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_GetParameters failed: %d\n",
|
printf("error: wc_LmsKey_GetParameters failed: %d\n",
|
||||||
ret);
|
ret);
|
||||||
goto exit_lms_keygen;
|
goto exit_lms_keygen;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_LmsKey_SetWriteCb(&key, lms_write_key_mem);
|
ret = wc_LmsKey_SetWriteCb(&key, lms_write_key_mem);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_SetWriteCb failed: %d\n",
|
printf("error: wc_LmsKey_SetWriteCb failed: %d\n",
|
||||||
ret);
|
ret);
|
||||||
goto exit_lms_keygen;
|
goto exit_lms_keygen;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_LmsKey_SetReadCb(&key, lms_read_key_mem);
|
ret = wc_LmsKey_SetReadCb(&key, lms_read_key_mem);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_SetReadCb failed: %d\n", ret);
|
printf("error: wc_LmsKey_SetReadCb failed: %d\n", ret);
|
||||||
goto exit_lms_keygen;
|
goto exit_lms_keygen;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_LmsKey_SetContext(&key, (void*)lms_priv);
|
ret = wc_LmsKey_SetContext(&key, (void*)lms_priv);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_SetContext failed: %d\n",
|
printf("error: wc_LmsKey_SetContext failed: %d\n",
|
||||||
ret);
|
ret);
|
||||||
goto exit_lms_keygen;
|
goto exit_lms_keygen;
|
||||||
}
|
}
|
||||||
@@ -10178,7 +10199,7 @@ static void bench_lms_keygen(enum wc_LmsParm parm, byte* pub)
|
|||||||
|
|
||||||
ret = wc_LmsKey_ExportPubRaw(&key, pub, &pubLen);
|
ret = wc_LmsKey_ExportPubRaw(&key, pub, &pubLen);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_ExportPubRaw failed: %d\n", ret);
|
printf("error: wc_LmsKey_ExportPubRaw failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
exit_lms_keygen:
|
exit_lms_keygen:
|
||||||
@@ -10312,19 +10333,19 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm, byte* pub)
|
|||||||
|
|
||||||
ret = wc_LmsKey_SetWriteCb(&key, lms_write_key_mem);
|
ret = wc_LmsKey_SetWriteCb(&key, lms_write_key_mem);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_SetWriteCb failed: %d\n", ret);
|
printf("error: wc_LmsKey_SetWriteCb failed: %d\n", ret);
|
||||||
goto exit_lms_sign_verify;
|
goto exit_lms_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_LmsKey_SetReadCb(&key, lms_read_key_mem);
|
ret = wc_LmsKey_SetReadCb(&key, lms_read_key_mem);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_SetReadCb failed: %d\n", ret);
|
printf("error: wc_LmsKey_SetReadCb failed: %d\n", ret);
|
||||||
goto exit_lms_sign_verify;
|
goto exit_lms_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_LmsKey_SetContext(&key, (void*)lms_priv);
|
ret = wc_LmsKey_SetContext(&key, (void*)lms_priv);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "error: wc_LmsKey_SetContext failed: %d\n", ret);
|
printf("error: wc_LmsKey_SetContext failed: %d\n", ret);
|
||||||
goto exit_lms_sign_verify;
|
goto exit_lms_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10625,7 +10646,7 @@ static void bench_xmss_sign_verify(const char * params)
|
|||||||
ret = wc_InitRng(&rng);
|
ret = wc_InitRng(&rng);
|
||||||
#endif
|
#endif
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "error: wc_InitRng failed: %d\n", ret);
|
printf("error: wc_InitRng failed: %d\n", ret);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10633,24 +10654,24 @@ static void bench_xmss_sign_verify(const char * params)
|
|||||||
|
|
||||||
ret = wc_XmssKey_Init(&key, NULL, INVALID_DEVID);
|
ret = wc_XmssKey_Init(&key, NULL, INVALID_DEVID);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "wc_XmssKey_Init failed: %d\n", ret);
|
printf("wc_XmssKey_Init failed: %d\n", ret);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_XmssKey_SetParamStr(&key, params);
|
ret = wc_XmssKey_SetParamStr(&key, params);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "wc_XmssKey_SetParamStr failed: %d\n", ret);
|
printf("wc_XmssKey_SetParamStr failed: %d\n", ret);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_XmssKey_GetPubLen(&key, &pkSz);
|
ret = wc_XmssKey_GetPubLen(&key, &pkSz);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "wc_XmssKey_GetPubLen failed: %d\n", ret);
|
printf("wc_XmssKey_GetPubLen failed: %d\n", ret);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
#ifndef WOLFSSL_WC_XMSS
|
#ifndef WOLFSSL_WC_XMSS
|
||||||
if (pkSz != XMSS_SHA256_PUBLEN) {
|
if (pkSz != XMSS_SHA256_PUBLEN) {
|
||||||
fprintf(stderr, "error: xmss pub len: got %u, expected %d\n", pkSz,
|
printf("error: xmss pub len: got %u, expected %d\n", pkSz,
|
||||||
XMSS_SHA256_PUBLEN);
|
XMSS_SHA256_PUBLEN);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
@@ -10658,53 +10679,53 @@ static void bench_xmss_sign_verify(const char * params)
|
|||||||
|
|
||||||
ret = wc_XmssKey_GetPrivLen(&key, &skSz);
|
ret = wc_XmssKey_GetPrivLen(&key, &skSz);
|
||||||
if (ret != 0 || skSz <= 0) {
|
if (ret != 0 || skSz <= 0) {
|
||||||
fprintf(stderr, "error: wc_XmssKey_GetPrivLen failed\n");
|
printf("error: wc_XmssKey_GetPrivLen failed\n");
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_XmssKey_GetSigLen(&key, &sigSz);
|
ret = wc_XmssKey_GetSigLen(&key, &sigSz);
|
||||||
if (ret != 0 || sigSz <= 0) {
|
if (ret != 0 || sigSz <= 0) {
|
||||||
fprintf(stderr, "error: wc_XmssKey_GetSigLen failed\n");
|
printf("error: wc_XmssKey_GetSigLen failed\n");
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate secret keys.*/
|
/* Allocate secret keys.*/
|
||||||
sk = (unsigned char *)XMALLOC(skSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
sk = (unsigned char *)XMALLOC(skSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (sk == NULL) {
|
if (sk == NULL) {
|
||||||
fprintf(stderr, "error: allocate xmss sk failed\n");
|
printf("error: allocate xmss sk failed\n");
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate signature array. */
|
/* Allocate signature array. */
|
||||||
sig = (byte *)XMALLOC(sigSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
sig = (byte *)XMALLOC(sigSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (sig == NULL) {
|
if (sig == NULL) {
|
||||||
fprintf(stderr, "error: allocate xmss sig failed\n");
|
printf("error: allocate xmss sig failed\n");
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_XmssKey_SetWriteCb(&key, xmss_write_key_mem);
|
ret = wc_XmssKey_SetWriteCb(&key, xmss_write_key_mem);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "error: wc_XmssKey_SetWriteCb failed: %d\n", ret);
|
printf("error: wc_XmssKey_SetWriteCb failed: %d\n", ret);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_XmssKey_SetReadCb(&key, xmss_read_key_mem);
|
ret = wc_XmssKey_SetReadCb(&key, xmss_read_key_mem);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "error: wc_XmssKey_SetReadCb failed: %d\n", ret);
|
printf("error: wc_XmssKey_SetReadCb failed: %d\n", ret);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_XmssKey_SetContext(&key, (void *)sk);
|
ret = wc_XmssKey_SetContext(&key, (void *)sk);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "error: wc_XmssKey_SetContext failed: %d\n", ret);
|
printf("error: wc_XmssKey_SetContext failed: %d\n", ret);
|
||||||
goto exit_xmss_sign_verify;
|
goto exit_xmss_sign_verify;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DEBUG_WOLFSSL) || defined(WOLFSSL_DEBUG_NONBLOCK)
|
#if defined(DEBUG_WOLFSSL) || defined(WOLFSSL_DEBUG_NONBLOCK)
|
||||||
fprintf(stderr, "params: %s\n", params);
|
printf("params: %s\n", params);
|
||||||
fprintf(stderr, "pkSz: %d\n", pkSz);
|
printf("pkSz: %d\n", pkSz);
|
||||||
fprintf(stderr, "skSz: %d\n", skSz);
|
printf("skSz: %d\n", skSz);
|
||||||
fprintf(stderr, "sigSz: %d\n", sigSz);
|
printf("sigSz: %d\n", sigSz);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Making the private key is the bottleneck for larger heights. */
|
/* Making the private key is the bottleneck for larger heights. */
|
||||||
@@ -14248,18 +14269,45 @@ static const int sizeof_bench_dilithium_level5_sig =
|
|||||||
void bench_dilithiumKeySign(byte level)
|
void bench_dilithiumKeySign(byte level)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
dilithium_key key;
|
|
||||||
double start;
|
double start;
|
||||||
int i, count;
|
int i, count;
|
||||||
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
||||||
byte sig[DILITHIUM_MAX_SIG_SIZE];
|
|
||||||
byte msg[512];
|
|
||||||
word32 x = 0;
|
word32 x = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define DILITHIUM_BENCH_MSG_SIZE 512
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
dilithium_key *key = NULL;
|
||||||
|
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
||||||
|
byte *sig = NULL;
|
||||||
|
byte *msg = NULL;
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
dilithium_key key[1];
|
||||||
|
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
||||||
|
byte sig[DILITHIUM_MAX_SIG_SIZE];
|
||||||
|
byte msg[DILITHIUM_BENCH_MSG_SIZE];
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
const char**desc = bench_desc_words[lng_index];
|
const char**desc = bench_desc_words[lng_index];
|
||||||
DECLARE_MULTI_VALUE_STATS_VARS()
|
DECLARE_MULTI_VALUE_STATS_VARS()
|
||||||
byte params = 0;
|
byte params = 0;
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
key = (dilithium_key *)XMALLOC(sizeof(*key), HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
||||||
|
sig = (byte *)XMALLOC(DILITHIUM_MAX_SIG_SIZE, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
msg = (byte *)XMALLOC(DILITHIUM_BENCH_MSG_SIZE, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ((key == NULL) || (sig == NULL) || (msg == NULL)) {
|
||||||
|
XFREE(key, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
key = NULL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
#endif /* WOLFSSL_SMALL_STACK */
|
||||||
|
|
||||||
if (level == 2) {
|
if (level == 2) {
|
||||||
params = 44;
|
params = 44;
|
||||||
}
|
}
|
||||||
@@ -14272,18 +14320,18 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
|
|
||||||
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
||||||
/* make dummy msg */
|
/* make dummy msg */
|
||||||
for (i = 0; i < (int)sizeof(msg); i++) {
|
for (i = 0; i < DILITHIUM_BENCH_MSG_SIZE; i++) {
|
||||||
msg[i] = (byte)i;
|
msg[i] = (byte)i;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = wc_dilithium_init(&key);
|
ret = wc_dilithium_init(key);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printf("wc_dilithium_init failed %d\n", ret);
|
printf("wc_dilithium_init failed %d\n", ret);
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = wc_dilithium_set_level(&key, level);
|
ret = wc_dilithium_set_level(key, level);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printf("wc_dilithium_set_level() failed %d\n", ret);
|
printf("wc_dilithium_set_level() failed %d\n", ret);
|
||||||
}
|
}
|
||||||
@@ -14292,10 +14340,10 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
bench_stats_start(&count, &start);
|
bench_stats_start(&count, &start);
|
||||||
do {
|
do {
|
||||||
for (i = 0; i < agreeTimes; i++) {
|
for (i = 0; i < agreeTimes; i++) {
|
||||||
ret = wc_dilithium_make_key(&key, GLOBAL_RNG);
|
ret = wc_dilithium_make_key(key, GLOBAL_RNG);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printf("wc_dilithium_import_private_key failed %d\n", ret);
|
printf("wc_dilithium_import_private_key failed %d\n", ret);
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
count += i;
|
count += i;
|
||||||
@@ -14318,24 +14366,24 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
#ifndef WOLFSSL_NO_ML_DSA_44
|
#ifndef WOLFSSL_NO_ML_DSA_44
|
||||||
if (level == 2) {
|
if (level == 2) {
|
||||||
ret = wc_dilithium_import_private(bench_dilithium_level2_key,
|
ret = wc_dilithium_import_private(bench_dilithium_level2_key,
|
||||||
sizeof_bench_dilithium_level2_key, &key);
|
sizeof_bench_dilithium_level2_key, key);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef WOLFSSL_NO_ML_DSA_65
|
#ifndef WOLFSSL_NO_ML_DSA_65
|
||||||
if (level == 3) {
|
if (level == 3) {
|
||||||
ret = wc_dilithium_import_private(bench_dilithium_level3_key,
|
ret = wc_dilithium_import_private(bench_dilithium_level3_key,
|
||||||
sizeof_bench_dilithium_level3_key, &key);
|
sizeof_bench_dilithium_level3_key, key);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef WOLFSSL_NO_ML_DSA_87
|
#ifndef WOLFSSL_NO_ML_DSA_87
|
||||||
if (level == 5) {
|
if (level == 5) {
|
||||||
ret = wc_dilithium_import_private(bench_dilithium_level5_key,
|
ret = wc_dilithium_import_private(bench_dilithium_level5_key,
|
||||||
sizeof_bench_dilithium_level5_key, &key);
|
sizeof_bench_dilithium_level5_key, key);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printf("Failed to load private key\n");
|
printf("Failed to load private key\n");
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -14357,7 +14405,7 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
do {
|
do {
|
||||||
for (i = 0; i < agreeTimes; i++) {
|
for (i = 0; i < agreeTimes; i++) {
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ret = wc_dilithium_sign_msg(msg, sizeof(msg), sig, &x, &key,
|
ret = wc_dilithium_sign_msg(msg, DILITHIUM_BENCH_MSG_SIZE, sig, &x, key,
|
||||||
GLOBAL_RNG);
|
GLOBAL_RNG);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printf("wc_dilithium_sign_msg failed\n");
|
printf("wc_dilithium_sign_msg failed\n");
|
||||||
@@ -14393,7 +14441,7 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
XMEMCPY(sig, bench_dilithium_level2_sig, x);
|
XMEMCPY(sig, bench_dilithium_level2_sig, x);
|
||||||
#endif
|
#endif
|
||||||
ret = wc_dilithium_import_public(bench_dilithium_level2_pubkey,
|
ret = wc_dilithium_import_public(bench_dilithium_level2_pubkey,
|
||||||
sizeof_bench_dilithium_level2_pubkey, &key);
|
sizeof_bench_dilithium_level2_pubkey, key);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef WOLFSSL_NO_ML_DSA_65
|
#ifndef WOLFSSL_NO_ML_DSA_65
|
||||||
@@ -14403,7 +14451,7 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
XMEMCPY(sig, bench_dilithium_level3_sig, x);
|
XMEMCPY(sig, bench_dilithium_level3_sig, x);
|
||||||
#endif
|
#endif
|
||||||
ret = wc_dilithium_import_public(bench_dilithium_level3_pubkey,
|
ret = wc_dilithium_import_public(bench_dilithium_level3_pubkey,
|
||||||
sizeof_bench_dilithium_level3_pubkey, &key);
|
sizeof_bench_dilithium_level3_pubkey, key);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef WOLFSSL_NO_ML_DSA_87
|
#ifndef WOLFSSL_NO_ML_DSA_87
|
||||||
@@ -14413,12 +14461,12 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
XMEMCPY(sig, bench_dilithium_level5_sig, x);
|
XMEMCPY(sig, bench_dilithium_level5_sig, x);
|
||||||
#endif
|
#endif
|
||||||
ret = wc_dilithium_import_public(bench_dilithium_level5_pubkey,
|
ret = wc_dilithium_import_public(bench_dilithium_level5_pubkey,
|
||||||
sizeof_bench_dilithium_level5_pubkey, &key);
|
sizeof_bench_dilithium_level5_pubkey, key);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printf("Failed to load public key\n");
|
printf("Failed to load public key\n");
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -14431,8 +14479,8 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
for (i = 0; i < agreeTimes; i++) {
|
for (i = 0; i < agreeTimes; i++) {
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
int verify = 0;
|
int verify = 0;
|
||||||
ret = wc_dilithium_verify_msg(sig, x, msg, sizeof(msg),
|
ret = wc_dilithium_verify_msg(sig, x, msg, DILITHIUM_BENCH_MSG_SIZE,
|
||||||
&verify, &key);
|
&verify, key);
|
||||||
|
|
||||||
if (ret != 0 || verify != 1) {
|
if (ret != 0 || verify != 1) {
|
||||||
printf("wc_dilithium_verify_msg failed %d, verify %d\n",
|
printf("wc_dilithium_verify_msg failed %d, verify %d\n",
|
||||||
@@ -14458,7 +14506,22 @@ void bench_dilithiumKeySign(byte level)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wc_dilithium_free(&key);
|
out:
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
if (key)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
wc_dilithium_free(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
XFREE(key, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
#if !defined(WOLFSSL_DILITHIUM_NO_SIGN) || !defined(WOLFSSL_DILITHIUM_NO_VERIFY)
|
||||||
|
XFREE(sig, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
XFREE(msg, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif /* HAVE_DILITHIUM */
|
#endif /* HAVE_DILITHIUM */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user