Skip to content

Commit 051ff53

Browse files
committed
fix tests error
1 parent 41610c1 commit 051ff53

2 files changed

Lines changed: 58 additions & 26 deletions

File tree

tests/api/test_mldsa.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,9 @@ int test_wc_dilithium_pub_from_priv(void)
730730
{
731731
EXPECT_DECLS;
732732
#if defined(HAVE_DILITHIUM) && defined(WOLFSSL_WC_DILITHIUM) && \
733-
defined(WOLFSSL_DILITHIUM_PRIVATE_KEY) && defined(WOLFSSL_DILITHIUM_PUBLIC_KEY)
733+
defined(WOLFSSL_DILITHIUM_PRIVATE_KEY) && \
734+
defined(WOLFSSL_DILITHIUM_PUBLIC_KEY) && \
735+
!defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY)
734736
dilithium_key* key = NULL;
735737
dilithium_key* importKey = NULL;
736738
WC_RNG rng;
@@ -739,7 +741,9 @@ int test_wc_dilithium_pub_from_priv(void)
739741
byte* pubKey = NULL;
740742
word32 pubKeyLen = DILITHIUM_MAX_PUB_KEY_SIZE;
741743
byte* origPub = NULL;
744+
#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY)
742745
word32 origPubLen = DILITHIUM_MAX_PUB_KEY_SIZE;
746+
#endif
743747
int ret;
744748

745749
key = (dilithium_key*)XMALLOC(sizeof(*key), NULL, DYNAMIC_TYPE_TMP_BUFFER);
@@ -761,7 +765,9 @@ int test_wc_dilithium_pub_from_priv(void)
761765
if (importKey != NULL) XMEMSET(importKey, 0, sizeof(*importKey));
762766
XMEMSET(&rng, 0, sizeof(WC_RNG));
763767

768+
#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY)
764769
ExpectIntEQ(wc_InitRng(&rng), 0);
770+
#endif
765771
ExpectIntEQ(wc_dilithium_init(key), 0);
766772

767773
#ifndef WOLFSSL_NO_ML_DSA_44
@@ -823,7 +829,9 @@ int test_wc_dilithium_pub_from_priv(void)
823829

824830
wc_dilithium_free(importKey);
825831
wc_dilithium_free(key);
832+
#if !defined(WOLFSSL_DILITHIUM_NO_MAKE_KEY)
826833
wc_FreeRng(&rng);
834+
#endif
827835

828836
XFREE(pubKey, NULL, DYNAMIC_TYPE_TMP_BUFFER);
829837
XFREE(origPub, NULL, DYNAMIC_TYPE_TMP_BUFFER);

wolfcrypt/src/dilithium.c

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8003,29 +8003,37 @@ static int dilithium_pub_from_priv(dilithium_key* key)
80038003
int ret = 0;
80048004
const wc_dilithium_params* params = key->params;
80058005
const byte* pub_seed = key->k;
8006-
const byte* s1p = pub_seed + DILITHIUM_PUB_SEED_SZ + DILITHIUM_K_SZ + DILITHIUM_TR_SZ;
8007-
const byte* s2p = s1p + params->s1EncSz;
8006+
const byte* s1p = NULL;
8007+
const byte* s2p = NULL;
80088008
sword32* a = NULL;
80098009
sword32* s1 = NULL;
80108010
sword32* s2 = NULL;
80118011
sword32* t = NULL;
80128012
byte* t0 = NULL;
80138013
byte* t1 = key->p + DILITHIUM_PUB_SEED_SZ;
80148014

8015-
/* Allocate and create cached values. */
8016-
#ifndef WC_DILITHIUM_CACHE_MATRIX_A
8017-
a = (sword32*)XMALLOC(params->aSz, key->heap,
8018-
DYNAMIC_TYPE_DILITHIUM);
8019-
if (a == NULL) {
8020-
ret = MEMORY_E;
8015+
if ((params == NULL) || (!key->prvKeySet)) {
8016+
ret = BAD_STATE_E;
80218017
}
8022-
else {
8023-
XMEMSET(a, 0, params->aSz);
8018+
8019+
if (ret == 0) {
8020+
s1p = pub_seed + DILITHIUM_PUB_SEED_SZ + DILITHIUM_K_SZ + DILITHIUM_TR_SZ;
8021+
s2p = s1p + params->s1EncSz;
80248022
}
80258023

8024+
/* Allocate and create cached values. */
8025+
#ifndef WC_DILITHIUM_CACHE_MATRIX_A
80268026
if (ret == 0) {
8027-
ret = dilithium_expand_a(&key->shake, pub_seed, params->k, params->l,
8028-
a, key->heap);
8027+
a = (sword32*)XMALLOC(params->aSz, key->heap,
8028+
DYNAMIC_TYPE_DILITHIUM);
8029+
if (a == NULL) {
8030+
ret = MEMORY_E;
8031+
}
8032+
else {
8033+
XMEMSET(a, 0, params->aSz);
8034+
ret = dilithium_expand_a(&key->shake, pub_seed, params->k,
8035+
params->l, a, key->heap);
8036+
}
80298037
}
80308038
#else
80318039
if (ret == 0) {
@@ -8061,6 +8069,7 @@ static int dilithium_pub_from_priv(dilithium_key* key)
80618069
else {
80628070
s1 = key->s1;
80638071
s2 = key->s2;
8072+
dilithium_vec_invntt_full(s2, params->k);
80648073
}
80658074
}
80668075
#endif
@@ -8088,28 +8097,38 @@ static int dilithium_pub_from_priv(dilithium_key* key)
80888097
dilithium_matrix_mul(t, a, s1, params->k, params->l);
80898098
dilithium_vec_invntt_full(t, params->k);
80908099
dilithium_vec_add(t, s2, params->k);
8091-
/* NTT s2 */
8092-
dilithium_vec_ntt_small(s2, params->k);
80938100

80948101
/* Make positive for decomposing. */
80958102
dilithium_vec_make_pos(t, params->k);
80968103
/* Decompose t in t0 and t1 and encode into public and private key. */
80978104
dilithium_vec_encode_t0_t1(t, params->k, t0, t1);
80988105
}
8099-
8106+
#ifdef WC_DILITHIUM_CACHE_PRIV_VECTORS
8107+
if (s2 != NULL) {
8108+
/* NTT s2 */
8109+
dilithium_vec_ntt_small(s2, params->k);
8110+
}
8111+
#endif
81008112
#ifndef WC_DILITHIUM_CACHE_MATRIX_A
8101-
XMEMSET(a, 0, params->aSz);
8102-
XFREE(a, key->heap, DYNAMIC_TYPE_DILITHIUM);
8113+
if (a != NULL) {
8114+
XMEMSET(a, 0, params->aSz);
8115+
XFREE(a, key->heap, DYNAMIC_TYPE_DILITHIUM);
8116+
}
81038117
#endif
81048118
#ifndef WC_DILITHIUM_CACHE_PRIV_VECTORS
8105-
XMEMSET(s1, 0, params->s1Sz + params->s2Sz);
8106-
XFREE(s1, key->heap, DYNAMIC_TYPE_DILITHIUM);
8119+
if (s1 != NULL) {
8120+
XMEMSET(s1, 0, params->s1Sz + params->s2Sz);
8121+
XFREE(s1, key->heap, DYNAMIC_TYPE_DILITHIUM);
8122+
}
81078123
#endif
8108-
XMEMSET(t0, 0, params->s2Sz);
8109-
XMEMSET(t, 0, params->s2Sz);
8110-
XFREE(t0, key->heap, DYNAMIC_TYPE_DILITHIUM);
8111-
XFREE(t, key->heap, DYNAMIC_TYPE_DILITHIUM);
8112-
8124+
if (t0 != NULL) {
8125+
XMEMSET(t0, 0, params->s2Sz);
8126+
XFREE(t0, key->heap, DYNAMIC_TYPE_DILITHIUM);
8127+
}
8128+
if (t != NULL) {
8129+
XMEMSET(t, 0, params->s2Sz);
8130+
XFREE(t, key->heap, DYNAMIC_TYPE_DILITHIUM);
8131+
}
81138132
if (ret == 0) {
81148133
#ifdef WC_DILITHIUM_CACHE_PUB_VECTORS
81158134
#ifndef WC_DILITHIUM_FIXED_ARRAY
@@ -10311,7 +10330,12 @@ int wc_dilithium_pub_from_priv(dilithium_key* key)
1031110330

1031210331
if (ret == 0) {
1031310332
#ifdef WOLFSSL_WC_DILITHIUM
10314-
ret = dilithium_pub_from_priv(key);
10333+
if ((key->params == NULL) || (!key->prvKeySet)) {
10334+
ret = BAD_STATE_E;
10335+
}
10336+
else {
10337+
ret = dilithium_pub_from_priv(key);
10338+
}
1031510339
#elif defined(HAVE_LIBOQS)
1031610340
ret = NOT_COMPILED_IN;
1031710341
#endif

0 commit comments

Comments
 (0)