Skip to content

Commit 2448a6d

Browse files
committed
fix tests error
1 parent b8a2d2c commit 2448a6d

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
@@ -7986,29 +7986,37 @@ static int dilithium_pub_from_priv(dilithium_key* key)
79867986
int ret = 0;
79877987
const wc_dilithium_params* params = key->params;
79887988
const byte* pub_seed = key->k;
7989-
const byte* s1p = pub_seed + DILITHIUM_PUB_SEED_SZ + DILITHIUM_K_SZ + DILITHIUM_TR_SZ;
7990-
const byte* s2p = s1p + params->s1EncSz;
7989+
const byte* s1p = NULL;
7990+
const byte* s2p = NULL;
79917991
sword32* a = NULL;
79927992
sword32* s1 = NULL;
79937993
sword32* s2 = NULL;
79947994
sword32* t = NULL;
79957995
byte* t0 = NULL;
79967996
byte* t1 = key->p + DILITHIUM_PUB_SEED_SZ;
79977997

7998-
/* Allocate and create cached values. */
7999-
#ifndef WC_DILITHIUM_CACHE_MATRIX_A
8000-
a = (sword32*)XMALLOC(params->aSz, key->heap,
8001-
DYNAMIC_TYPE_DILITHIUM);
8002-
if (a == NULL) {
8003-
ret = MEMORY_E;
7998+
if ((params == NULL) || (!key->prvKeySet)) {
7999+
ret = BAD_STATE_E;
80048000
}
8005-
else {
8006-
XMEMSET(a, 0, params->aSz);
8001+
8002+
if (ret == 0) {
8003+
s1p = pub_seed + DILITHIUM_PUB_SEED_SZ + DILITHIUM_K_SZ + DILITHIUM_TR_SZ;
8004+
s2p = s1p + params->s1EncSz;
80078005
}
80088006

8007+
/* Allocate and create cached values. */
8008+
#ifndef WC_DILITHIUM_CACHE_MATRIX_A
80098009
if (ret == 0) {
8010-
ret = dilithium_expand_a(&key->shake, pub_seed, params->k, params->l,
8011-
a, key->heap);
8010+
a = (sword32*)XMALLOC(params->aSz, key->heap,
8011+
DYNAMIC_TYPE_DILITHIUM);
8012+
if (a == NULL) {
8013+
ret = MEMORY_E;
8014+
}
8015+
else {
8016+
XMEMSET(a, 0, params->aSz);
8017+
ret = dilithium_expand_a(&key->shake, pub_seed, params->k,
8018+
params->l, a, key->heap);
8019+
}
80128020
}
80138021
#else
80148022
if (ret == 0) {
@@ -8044,6 +8052,7 @@ static int dilithium_pub_from_priv(dilithium_key* key)
80448052
else {
80458053
s1 = key->s1;
80468054
s2 = key->s2;
8055+
dilithium_vec_invntt_full(s2, params->k);
80478056
}
80488057
}
80498058
#endif
@@ -8071,28 +8080,38 @@ static int dilithium_pub_from_priv(dilithium_key* key)
80718080
dilithium_matrix_mul(t, a, s1, params->k, params->l);
80728081
dilithium_vec_invntt_full(t, params->k);
80738082
dilithium_vec_add(t, s2, params->k);
8074-
/* NTT s2 */
8075-
dilithium_vec_ntt_small(s2, params->k);
80768083

80778084
/* Make positive for decomposing. */
80788085
dilithium_vec_make_pos(t, params->k);
80798086
/* Decompose t in t0 and t1 and encode into public and private key. */
80808087
dilithium_vec_encode_t0_t1(t, params->k, t0, t1);
80818088
}
8082-
8089+
#ifdef WC_DILITHIUM_CACHE_PRIV_VECTORS
8090+
if (s2 != NULL) {
8091+
/* NTT s2 */
8092+
dilithium_vec_ntt_small(s2, params->k);
8093+
}
8094+
#endif
80838095
#ifndef WC_DILITHIUM_CACHE_MATRIX_A
8084-
XMEMSET(a, 0, params->aSz);
8085-
XFREE(a, key->heap, DYNAMIC_TYPE_DILITHIUM);
8096+
if (a != NULL) {
8097+
XMEMSET(a, 0, params->aSz);
8098+
XFREE(a, key->heap, DYNAMIC_TYPE_DILITHIUM);
8099+
}
80868100
#endif
80878101
#ifndef WC_DILITHIUM_CACHE_PRIV_VECTORS
8088-
XMEMSET(s1, 0, params->s1Sz + params->s2Sz);
8089-
XFREE(s1, key->heap, DYNAMIC_TYPE_DILITHIUM);
8102+
if (s1 != NULL) {
8103+
XMEMSET(s1, 0, params->s1Sz + params->s2Sz);
8104+
XFREE(s1, key->heap, DYNAMIC_TYPE_DILITHIUM);
8105+
}
80908106
#endif
8091-
XMEMSET(t0, 0, params->s2Sz);
8092-
XMEMSET(t, 0, params->s2Sz);
8093-
XFREE(t0, key->heap, DYNAMIC_TYPE_DILITHIUM);
8094-
XFREE(t, key->heap, DYNAMIC_TYPE_DILITHIUM);
8095-
8107+
if (t0 != NULL) {
8108+
XMEMSET(t0, 0, params->s2Sz);
8109+
XFREE(t0, key->heap, DYNAMIC_TYPE_DILITHIUM);
8110+
}
8111+
if (t != NULL) {
8112+
XMEMSET(t, 0, params->s2Sz);
8113+
XFREE(t, key->heap, DYNAMIC_TYPE_DILITHIUM);
8114+
}
80968115
if (ret == 0) {
80978116
#ifdef WC_DILITHIUM_CACHE_PUB_VECTORS
80988117
#ifndef WC_DILITHIUM_FIXED_ARRAY
@@ -10255,7 +10274,12 @@ int wc_dilithium_pub_from_priv(dilithium_key* key)
1025510274

1025610275
if (ret == 0) {
1025710276
#ifdef WOLFSSL_WC_DILITHIUM
10258-
ret = dilithium_pub_from_priv(key);
10277+
if ((key->params == NULL) || (!key->prvKeySet)) {
10278+
ret = BAD_STATE_E;
10279+
}
10280+
else {
10281+
ret = dilithium_pub_from_priv(key);
10282+
}
1025910283
#elif defined(HAVE_LIBOQS)
1026010284
ret = NOT_COMPILED_IN;
1026110285
#endif

0 commit comments

Comments
 (0)