Skip to content

Commit f587872

Browse files
authored
Merge pull request wolfSSL#9674 from douzzer/20260115-PQC-WOLFSSL_NO_MALLOC
20260115-PQC-WOLFSSL_NO_MALLOC
2 parents 9427f9f + eb65361 commit f587872

File tree

2 files changed

+41
-9
lines changed

2 files changed

+41
-9
lines changed

wolfcrypt/test/test.c

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49411,41 +49411,41 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t dilithium_test(void)
4941149411
#ifndef WOLFSSL_DILITHIUM_NO_VERIFY
4941249412
ret = dilithium_param_44_vfy_test();
4941349413
if (ret != 0)
49414-
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
49414+
ERROR_OUT(ret, out);
4941549415
#endif
4941649416
#endif
4941749417
#ifndef WOLFSSL_DILITHIUM_NO_MAKE_KEY
4941849418
ret = dilithium_param_test(WC_ML_DSA_44, &rng);
4941949419
if (ret != 0)
49420-
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
49420+
ERROR_OUT(ret, out);
4942149421
#endif
4942249422
#endif
4942349423
#ifndef WOLFSSL_NO_ML_DSA_65
4942449424
#ifdef WOLFSSL_WC_DILITHIUM
4942549425
#ifndef WOLFSSL_DILITHIUM_NO_VERIFY
4942649426
ret = dilithium_param_65_vfy_test();
4942749427
if (ret != 0)
49428-
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
49428+
ERROR_OUT(ret, out);
4942949429
#endif
4943049430
#endif
4943149431
#ifndef WOLFSSL_DILITHIUM_NO_MAKE_KEY
4943249432
ret = dilithium_param_test(WC_ML_DSA_65, &rng);
4943349433
if (ret != 0)
49434-
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
49434+
ERROR_OUT(ret, out);
4943549435
#endif
4943649436
#endif
4943749437
#ifndef WOLFSSL_NO_ML_DSA_87
4943849438
#ifdef WOLFSSL_WC_DILITHIUM
4943949439
#ifndef WOLFSSL_DILITHIUM_NO_VERIFY
4944049440
ret = dilithium_param_87_vfy_test();
4944149441
if (ret != 0)
49442-
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
49442+
ERROR_OUT(ret, out);
4944349443
#endif
4944449444
#endif
4944549445
#ifndef WOLFSSL_DILITHIUM_NO_MAKE_KEY
4944649446
ret = dilithium_param_test(WC_ML_DSA_87, &rng);
4944749447
if (ret != 0)
49448-
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
49448+
ERROR_OUT(ret, out);
4944949449
#endif
4945049450
#endif
4945149451

@@ -49455,7 +49455,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t dilithium_test(void)
4945549455
!defined(WOLFSSL_DILITHIUM_NO_VERIFY))
4945649456
ret = dilithium_decode_test();
4945749457
if (ret != 0) {
49458-
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
49458+
ERROR_OUT(ret, out);
4945949459
}
4946049460
#endif /* (WOLFSSL_DILITHIUM_PUBLIC_KEY && !WOLFSSL_DILITHIUM_NO_VERIFY) ||
4946149461
* (WOLFSSL_DILITHIUM_PRIVATE_KEY && !WOLFSSL_DILITHIUM_NO_SIGN) */
@@ -49502,8 +49502,13 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t xmss_test(void)
4950249502
word32 skSz = 0;
4950349503
word32 sigSz = 0;
4950449504
word32 bufSz = 0;
49505-
unsigned char * sk = NULL;
49506-
unsigned char * old_sk = NULL;
49505+
#ifdef WOLFSSL_NO_MALLOC
49506+
static byte sk[2048];
49507+
static byte old_sk[2048];
49508+
#else
49509+
byte * sk = NULL;
49510+
byte * old_sk = NULL;
49511+
#endif
4950749512
const char * msg = "XMSS post quantum signature test";
4950849513
word32 msgSz = (word32) XSTRLEN(msg);
4950949514
#if WOLFSSL_XMSS_MIN_HEIGHT <= 10
@@ -49515,7 +49520,11 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t xmss_test(void)
4951549520
#else
4951649521
const char * param = "XMSSMT-SHA2_60/12_256";
4951749522
#endif
49523+
#ifdef WOLFSSL_NO_MALLOC
49524+
static byte sig[4096];
49525+
#else
4951849526
byte * sig = NULL;
49527+
#endif
4951949528
int ret2 = -1;
4952049529
int ret = WC_TEST_RET_ENC_NC;
4952149530
WOLFSSL_ENTER("xmss_test");
@@ -49552,8 +49561,13 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t xmss_test(void)
4955249561
if (ret != 0) { ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out); }
4955349562

4955449563
/* Allocate signature array. */
49564+
#ifdef WOLFSSL_NO_MALLOC
49565+
if (sigSz > sizeof(sig))
49566+
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
49567+
#else
4955549568
sig = (byte *)XMALLOC(sigSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
4955649569
if (sig == NULL) { ERROR_OUT(WC_TEST_RET_ENC_ERRNO, out); }
49570+
#endif
4955749571

4955849572
bufSz = sigSz;
4955949573

@@ -49565,11 +49579,16 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t xmss_test(void)
4956549579
#endif
4956649580

4956749581
/* Allocate current and old secret keys.*/
49582+
#ifdef WOLFSSL_NO_MALLOC
49583+
if (skSz > sizeof(sk))
49584+
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
49585+
#else
4956849586
sk = (unsigned char *)XMALLOC(skSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
4956949587
if (sk == NULL) { ERROR_OUT(WC_TEST_RET_ENC_ERRNO, out); }
4957049588

4957149589
old_sk = (unsigned char *)XMALLOC(skSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
4957249590
if (old_sk == NULL) { ERROR_OUT(WC_TEST_RET_ENC_ERRNO, out); }
49591+
#endif
4957349592

4957449593
XMEMSET(sk, 0, skSz);
4957549594
XMEMSET(old_sk, 0, skSz);
@@ -49630,6 +49649,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t xmss_test(void)
4963049649
out:
4963149650

4963249651
/* Cleanup everything. */
49652+
#ifndef WOLFSSL_NO_MALLOC
4963349653
XFREE(sig, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
4963449654
sig = NULL;
4963549655

@@ -49638,6 +49658,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t xmss_test(void)
4963849658

4963949659
XFREE(old_sk, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
4964049660
old_sk = NULL;
49661+
#endif /* !WOLFSSL_NO_MALLOC */
4964149662

4964249663
wc_XmssKey_Free(&signingKey);
4964349664
wc_XmssKey_Free(&verifyKey);
@@ -50152,6 +50173,9 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t lms_test(void)
5015250173
int sigsLeft = 0;
5015350174
LmsKey signingKey;
5015450175
LmsKey verifyKey;
50176+
#if defined(WOLFSSL_NO_MALLOC) && defined(NO_WOLFSSL_MEMORY)
50177+
static byte signingKey_priv_data[4096];
50178+
#endif
5015550179
WC_RNG rng;
5015650180
word32 sigSz = 0;
5015750181
const char * msg = "LMS HSS post quantum signature test";
@@ -50207,6 +50231,9 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t lms_test(void)
5020750231

5020850232
ret = wc_LmsKey_Init(&signingKey, NULL, devId);
5020950233
if (ret != 0) { ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out); }
50234+
#if defined(WOLFSSL_NO_MALLOC) && defined(NO_WOLFSSL_MEMORY)
50235+
signingKey.priv_data = signingKey_priv_data;
50236+
#endif
5021050237

5021150238
ret = wc_LmsKey_Init(&verifyKey, NULL, devId);
5021250239
if (ret != 0) { ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out); }
@@ -50316,6 +50343,9 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t lms_test(void)
5031650343

5031750344
out:
5031850345

50346+
#if defined(WOLFSSL_NO_MALLOC) && defined(NO_WOLFSSL_MEMORY)
50347+
signingKey.priv_data = NULL;
50348+
#endif
5031950349
wc_LmsKey_Free(&signingKey);
5032050350
wc_LmsKey_Free(&verifyKey);
5032150351

wolfssl/wolfcrypt/dilithium.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,10 +797,12 @@ int wc_dilithium_verify_ctx_hash(const byte* sig, word32 sigLen,
797797
const byte* ctx, word32 ctxLen, int hashAlg, const byte* hash,
798798
word32 hashLen, int* res, dilithium_key* key);
799799

800+
#ifndef WC_NO_CONSTRUCTORS
800801
WOLFSSL_API
801802
dilithium_key* wc_dilithium_new(void* heap, int devId);
802803
WOLFSSL_API
803804
int wc_dilithium_delete(dilithium_key* key, dilithium_key** key_p);
805+
#endif /* !WC_NO_CONSTRUCTORS */
804806

805807
WOLFSSL_API
806808
int wc_dilithium_init(dilithium_key* key);

0 commit comments

Comments
 (0)