Skip to content

Commit 703bd6d

Browse files
authored
Merge pull request #8975 from JeremiahM37/mldsa_static_mem
ML-DSA Static Memory Fix
2 parents 0407ea1 + 88da86e commit 703bd6d

2 files changed

Lines changed: 49 additions & 5 deletions

File tree

wolfcrypt/test/test.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,6 +1073,15 @@ static WC_MAYBE_UNUSED int wc_DeleteRsaKey(RsaKey* key, RsaKey** key_p)
10731073
#ifdef WOLFSSL_STATIC_MEMORY
10741074
#if defined(WOLFSSL_STATIC_MEMORY_TEST_SZ)
10751075
static byte gTestMemory[WOLFSSL_STATIC_MEMORY_TEST_SZ];
1076+
#elif defined(HAVE_DILITHIUM)
1077+
#if defined(WOLFSSL_DILITHIUM_VERIFY_SMALL_MEM) && \
1078+
defined(WOLFSSL_DILITHIUM_SIGN_SMALL_MEM) && \
1079+
defined(WOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM) && \
1080+
defined(WOLFSSL_DILITHIUM_VERIFY_ONLY)
1081+
static byte gTestMemory[192*1024]; /* Dilithium low mem */
1082+
#else
1083+
static byte gTestMemory[576*1024]; /* Dilithium full mem */
1084+
#endif
10761085
#elif defined(BENCH_EMBEDDED)
10771086
static byte gTestMemory[14000];
10781087
#elif defined(WOLFSSL_CERT_EXT)

wolfssl/wolfcrypt/memory.h

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,18 @@ WOLFSSL_API int wolfSSL_GetAllocators(wolfSSL_Malloc_cb* mf,
133133

134134
#ifndef LARGEST_MEM_BUCKET
135135
#ifndef SESSION_CERTS
136-
#define LARGEST_MEM_BUCKET 16128
136+
#ifdef HAVE_DILITHIUM
137+
#if defined(WOLFSSL_DILITHIUM_VERIFY_SMALL_MEM) && \
138+
defined(WOLFSSL_DILITHIUM_SIGN_SMALL_MEM) && \
139+
defined(WOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM) && \
140+
defined(WOLFSSL_DILITHIUM_VERIFY_ONLY)
141+
#define LARGEST_MEM_BUCKET 14000 /* Dilithium low mem */
142+
#else
143+
#define LARGEST_MEM_BUCKET 131072 /* Dilithium full mem */
144+
#endif
145+
#else
146+
#define LARGEST_MEM_BUCKET 16128
147+
#endif
137148
#elif defined(OPENSSL_EXTRA)
138149
#ifdef WOLFSSL_TLS13
139150
#define LARGEST_MEM_BUCKET 30400
@@ -151,9 +162,24 @@ WOLFSSL_API int wolfSSL_GetAllocators(wolfSSL_Malloc_cb* mf,
151162

152163
#ifndef WOLFMEM_BUCKETS
153164
#ifndef SESSION_CERTS
154-
/* default size of chunks of memory to separate into */
155-
#define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3456,4544,\
156-
LARGEST_MEM_BUCKET
165+
#ifdef HAVE_DILITHIUM
166+
#if defined(WOLFSSL_DILITHIUM_VERIFY_SMALL_MEM) && \
167+
defined(WOLFSSL_DILITHIUM_SIGN_SMALL_MEM) && \
168+
defined(WOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM) && \
169+
defined(WOLFSSL_DILITHIUM_VERIFY_ONLY)
170+
/* default size of chunks of memory to separate into */
171+
#define WOLFMEM_BUCKETS 64,128,256,512,1024,2048,4096,\
172+
8192,LARGEST_MEM_BUCKET
173+
#else
174+
/* default size of chunks of memory to separate into */
175+
#define WOLFMEM_BUCKETS 64,128,256,512,1024,8192,32768,\
176+
65536,LARGEST_MEM_BUCKET
177+
#endif
178+
#else
179+
/* default size of chunks of memory to separate into */
180+
#define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3456,4544,\
181+
LARGEST_MEM_BUCKET
182+
#endif
157183
#elif defined(OPENSSL_EXTRA)
158184
/* extra storage in structs for multiple attributes and order */
159185
#define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3360,4480,\
@@ -168,7 +194,16 @@ WOLFSSL_API int wolfSSL_GetAllocators(wolfSSL_Malloc_cb* mf,
168194
#endif
169195

170196
#ifndef WOLFMEM_DIST
171-
#ifndef WOLFSSL_STATIC_MEMORY_SMALL
197+
#ifdef HAVE_DILITHIUM
198+
#if defined(WOLFSSL_DILITHIUM_VERIFY_SMALL_MEM) && \
199+
defined(WOLFSSL_DILITHIUM_SIGN_SMALL_MEM) && \
200+
defined(WOLFSSL_DILITHIUM_MAKE_KEY_SMALL_MEM) && \
201+
defined(WOLFSSL_DILITHIUM_VERIFY_ONLY)
202+
#define WOLFMEM_DIST 20,8,6,10,8,6,4,2,1
203+
#else
204+
#define WOLFMEM_DIST 30,10,8,15,8,10,8,5,1
205+
#endif
206+
#elif !defined(WOLFSSL_STATIC_MEMORY_SMALL)
172207
#define WOLFMEM_DIST 49,10,6,14,5,6,9,1,1
173208
#else
174209
/* Low resource and not RSA */

0 commit comments

Comments
 (0)