Skip to content

Commit b983fa7

Browse files
authored
Merge pull request #783 from Frauschi/mldsa_rename
Continue the ML-DSA renaming
2 parents 6e3c43e + 6e60abd commit b983fa7

9 files changed

Lines changed: 54 additions & 61 deletions

File tree

docs/PQ.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ approved PQ signature algorithms:
88
- LMS/HSS: https://csrc.nist.gov/projects/stateful-hash-based-signatures
99
- XMSS/XMSS^MT: https://csrc.nist.gov/projects/stateful-hash-based-signatures
1010

11-
ML-DSA is a PQ lattice-based algorithm, derived from
12-
CRYSTALS-DILITHIUM (a round three NIST finalist).
11+
ML-DSA is a PQ lattice-based algorithm standardized by NIST (FIPS 204).
1312

1413
LMS/HSS and XMSS/XMSS^MT are both PQ stateful hash-based signature (HBS)
1514
schemes, recommended in NIST SP 800-208.
@@ -82,9 +81,9 @@ IMAGE_SIGNATURE_SIZE=2420
8281
IMAGE_HEADER_SIZE?=4840
8382
```
8483

85-
Note: The wolfcrypt implementation of ML-DSA (dilithium) builds to the
86-
FIPS 204 final standard by default. If you wish to conform to the older
87-
FIPS 204 draft standard, then build with `WOLFSSL_DILITHIUM_FIPS204_DRAFT`
84+
Note: The wolfcrypt implementation of ML-DSA builds to the FIPS 204 final
85+
standard by default. If you wish to conform to the older FIPS 204 draft
86+
standard, then build with `WOLFSSL_MLDSA_FIPS204_DRAFT`
8887
instead.
8988

9089
## Stateful Hash-Based Signature Methods

docs/Targets.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1567,7 +1567,7 @@ FDT: MAC1 = 00:04:A3:5B:22:89
15671567
RISC-V 64-bit U54 (RV64GC1) 625 MHz
15681568
15691569
```
1570-
./configure --enable-riscv-asm --enable-dilithium --enable-mlkem --enable-sp=yes
1570+
./configure --enable-riscv-asm --enable-mldsa --enable-mlkem --enable-sp=yes
15711571
make
15721572
./wolfcrypt/benchmark/benchmark
15731573
------------------------------------------------------------------------------

hal/sim.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ static int sim_cryptocb(int devIdArg, wc_CryptoInfo* info, void* ctx)
8484
case WC_PK_TYPE_RSA: name = "RSA"; break;
8585
case WC_PK_TYPE_ECDSA_VERIFY: name = "ECDSA-verify"; break;
8686
case WC_PK_TYPE_ED25519_VERIFY: name = "ED25519-verify"; break;
87-
#ifdef HAVE_DILITHIUM
87+
#ifdef WOLFSSL_HAVE_MLDSA
8888
case WC_PK_TYPE_PQC_SIG_VERIFY:
8989
name = "ML-DSA-verify";
9090
break;

include/user_settings.h

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -316,27 +316,25 @@ extern int tolower(int c);
316316
# define NO_RSA
317317
#endif /* RSA */
318318

319-
/* ML-DSA (dilithium) */
319+
/* ML-DSA */
320320
#if defined(WOLFBOOT_SIGN_ML_DSA) || defined(WOLFBOOT_SIGN_SECONDARY_ML_DSA)
321-
# define HAVE_DILITHIUM
322-
# define WOLFSSL_WC_DILITHIUM
321+
# define WOLFSSL_HAVE_MLDSA
323322
# define WOLFSSL_EXPERIMENTAL_SETTINGS
324-
/* Wolfcrypt builds ML-DSA (dilithium) to the FIPS 204 final
325-
* standard by default. Uncomment this if you want the draft
326-
* version instead. */
323+
/* Wolfcrypt builds ML-DSA to the FIPS 204 final standard by default.
324+
* Uncomment this if you want the draft version instead. */
327325
# if 0
328-
# define WOLFSSL_DILITHIUM_FIPS204_DRAFT
326+
# define WOLFSSL_MLDSA_FIPS204_DRAFT
329327
# endif
330-
# define WOLFSSL_DILITHIUM_VERIFY_ONLY
331-
# define WOLFSSL_DILITHIUM_NO_LARGE_CODE
332-
# define WOLFSSL_DILITHIUM_SMALL
333-
# define WOLFSSL_DILITHIUM_VERIFY_SMALL_MEM
334-
# define WOLFSSL_DILITHIUM_VERIFY_NO_MALLOC
328+
# define WOLFSSL_MLDSA_VERIFY_ONLY
329+
# define WOLFSSL_MLDSA_NO_LARGE_CODE
330+
# define WOLFSSL_MLDSA_SMALL
331+
# define WOLFSSL_MLDSA_VERIFY_SMALL_MEM
332+
# define WOLFSSL_MLDSA_VERIFY_NO_MALLOC
335333
# if !defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT) && \
336334
!defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER)
337-
# define WOLFSSL_DILITHIUM_NO_ASN1
335+
# define WOLFSSL_MLDSA_NO_ASN1
338336
# endif
339-
/* dilithium needs these sha functions. */
337+
/* ML-DSA 44/65/87 uses SHAKE */
340338
# define WOLFSSL_SHA3
341339
# define WOLFSSL_SHAKE256
342340
# define WOLFSSL_SHAKE128

options.mk

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ LMS_OBJS=\
167167

168168
LMS_EXTRA=\
169169
-D"WOLFSSL_HAVE_LMS" \
170-
-D"WOLFSSL_WC_LMS" -D"WOLFSSL_WC_LMS_SMALL" \
170+
-D"WOLFSSL_WC_LMS_SMALL" \
171171
-D"WOLFSSL_LMS_MAX_LEVELS=$(LMS_LEVELS)" \
172172
-D"WOLFSSL_LMS_MAX_HEIGHT=$(LMS_HEIGHT)" \
173173
-D"LMS_LEVELS=$(LMS_LEVELS)" -D"LMS_HEIGHT=$(LMS_HEIGHT)" \
@@ -181,7 +181,7 @@ XMSS_OBJS=\
181181

182182
XMSS_EXTRA=\
183183
-D"WOLFSSL_HAVE_XMSS" \
184-
-D"WOLFSSL_WC_XMSS" -D"WOLFSSL_WC_XMSS_SMALL" \
184+
-D"WOLFSSL_WC_XMSS_SMALL" \
185185
-DWOLFBOOT_XMSS_PARAMS=\"$(XMSS_PARAMS)\" \
186186
-D"XMSS_IMAGE_SIGNATURE_SIZE"=$(IMAGE_SIGNATURE_SIZE) \
187187
-D"WOLFSSL_XMSS_VERIFY_ONLY" -D"WOLFSSL_XMSS_MAX_HEIGHT=32"
@@ -570,7 +570,7 @@ ifeq ($(SIGN),XMSS)
570570
endif
571571

572572
ifeq ($(SIGN),ML_DSA)
573-
# Use wolfcrypt ML-DSA dilithium implementation.
573+
# Use wolfcrypt ML-DSA implementation.
574574
KEYGEN_OPTIONS+=--ml_dsa
575575
SIGN_OPTIONS+=--ml_dsa
576576
WOLFCRYPT_OBJS+= $(ML_DSA_OBJS)
@@ -1309,11 +1309,11 @@ ifeq ($(WOLFHSM_CLIENT),1)
13091309

13101310
ifeq ($(SIGN),ML_DSA)
13111311
WOLFCRYPT_OBJS += $(MATH_OBJS)
1312-
# Dilithium asn.c decode/encode requires mp_xxx functions
1312+
# ML-DSA asn.c decode/encode requires mp_xxx functions
13131313
WOLFCRYPT_OBJS += \
13141314
$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/random.o
13151315

1316-
# Large enough to handle the largest Dilithium key/signature
1316+
# Large enough to handle the largest ML-DSA key/signature
13171317
CFLAGS += -DWOLFHSM_CFG_COMM_DATA_LEN=5000
13181318
endif
13191319

@@ -1371,7 +1371,7 @@ ifeq ($(WOLFHSM_SERVER),1)
13711371

13721372
ifeq ($(SIGN),ML_DSA)
13731373
WOLFCRYPT_OBJS += $(MATH_OBJS)
1374-
# Large enough to handle the largest Dilithium key/signature
1374+
# Large enough to handle the largest ML-DSA key/signature
13751375
CFLAGS += -DWOLFHSM_CFG_COMM_DATA_LEN=5000
13761376
endif
13771377

src/image.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -724,13 +724,13 @@ static void wolfBoot_verify_signature_xmss(uint8_t key_slot,
724724
#endif /* WOLFBOOT_SIGN_XMSS */
725725

726726
#ifdef WOLFBOOT_SIGN_ML_DSA
727-
#include <wolfssl/wolfcrypt/dilithium.h>
727+
#include <wolfssl/wolfcrypt/wc_mldsa.h>
728728

729729
static void wolfBoot_verify_signature_ml_dsa(uint8_t key_slot,
730730
struct wolfBoot_image *img, uint8_t *sig)
731731
{
732-
int ret = 0;
733-
MlDsaKey ml_dsa;
732+
int ret = 0;
733+
wc_MlDsaKey ml_dsa;
734734
#if !defined WOLFBOOT_ENABLE_WOLFHSM_CLIENT || \
735735
(defined WOLFBOOT_ENABLE_WOLFHSM_CLIENT && \
736736
!defined(WOLFBOOT_USE_WOLFHSM_PUBKEY_ID))

tools/keytools/keygen.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@
7777
#endif
7878
#endif
7979

80-
#ifdef WOLFSSL_WC_DILITHIUM
81-
#include <wolfssl/wolfcrypt/dilithium.h>
80+
#ifdef WOLFSSL_HAVE_MLDSA
81+
#include <wolfssl/wolfcrypt/wc_mldsa.h>
8282
#endif
8383

8484
#include <wolfssl/wolfcrypt/random.h>
@@ -1071,19 +1071,19 @@ static void keygen_xmss(const char *priv_fname, uint32_t id_mask)
10711071

10721072
static void keygen_ml_dsa(const char *priv_fname, uint32_t id_mask)
10731073
{
1074-
FILE * fpriv = NULL;
1075-
MlDsaKey key;
1076-
int ret;
1077-
byte * priv = NULL;
1078-
byte pub[ML_DSA_L5_PUBKEY_SIZE]; /* max size */
1079-
word32 priv_len = 0;
1080-
word32 pub_len = 0;
1081-
int ml_dsa_priv_len = 0;
1082-
int ml_dsa_pub_len = 0;
1083-
int ml_dsa_level = ML_DSA_LEVEL;
1084-
int exit_code = 0;
1085-
int key_init = 0;
1086-
char * env_ml_dsa_level = getenv("ML_DSA_LEVEL");
1074+
FILE * fpriv = NULL;
1075+
wc_MlDsaKey key;
1076+
int ret;
1077+
byte * priv = NULL;
1078+
byte pub[ML_DSA_L5_PUBKEY_SIZE]; /* max size */
1079+
word32 priv_len = 0;
1080+
word32 pub_len = 0;
1081+
int ml_dsa_priv_len = 0;
1082+
int ml_dsa_pub_len = 0;
1083+
int ml_dsa_level = ML_DSA_LEVEL;
1084+
int exit_code = 0;
1085+
int key_init = 0;
1086+
char * env_ml_dsa_level = getenv("ML_DSA_LEVEL");
10871087
if (env_ml_dsa_level != NULL) {
10881088
ml_dsa_level = atoi(env_ml_dsa_level);
10891089
}
@@ -1232,7 +1232,7 @@ static void keygen_ml_dsa(const char *priv_fname, uint32_t id_mask)
12321232

12331233
/* Export public key in DER format */
12341234

1235-
pubOutLen = wc_Dilithium_PublicKeyToDer(&key, pubDer, pubDerSz,
1235+
pubOutLen = wc_MlDsaKey_PublicKeyToDer(&key, pubDer, pubDerSz,
12361236
WITH_ALG_SPKI);
12371237
if (pubOutLen < 0) {
12381238
fprintf(stderr, "Unable to export public key to DER, ret=%d\n",
@@ -1368,7 +1368,7 @@ static void key_generate(uint32_t ktype, const char *kfilename, uint32_t id_mask
13681368
break;
13691369
#endif
13701370

1371-
#ifdef WOLFSSL_WC_DILITHIUM
1371+
#ifdef WOLFSSL_HAVE_MLDSA
13721372
case AUTH_KEY_ML_DSA:
13731373
keygen_ml_dsa(kfilename, id_mask);
13741374
break;
@@ -1546,7 +1546,7 @@ int main(int argc, char** argv)
15461546
keytype = AUTH_KEY_XMSS;
15471547
}
15481548
#endif
1549-
#if defined(WOLFSSL_WC_DILITHIUM)
1549+
#if defined(WOLFSSL_HAVE_MLDSA)
15501550
else if (strcmp(argv[i], "--ml_dsa") == 0) {
15511551
keytype = AUTH_KEY_ML_DSA;
15521552
}

tools/keytools/sign.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ static inline int fp_truncate(FILE *f, size_t len)
127127
#endif
128128
#endif
129129

130-
#ifdef WOLFSSL_WC_DILITHIUM
131-
#include <wolfssl/wolfcrypt/dilithium.h>
130+
#ifdef WOLFSSL_HAVE_MLDSA
131+
#include <wolfssl/wolfcrypt/wc_mldsa.h>
132132
#endif
133133

134134
#ifdef DEBUG_SIGNTOOL
@@ -308,7 +308,7 @@ static struct {
308308
RsaKey rsa;
309309
LmsKey lms;
310310
XmssKey xmss;
311-
MlDsaKey ml_dsa;
311+
wc_MlDsaKey ml_dsa;
312312
} key;
313313

314314
struct cmd_options {

tools/keytools/user_settings.h

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,28 +80,25 @@
8080
/* Enable experimental PQ algos */
8181
#define WOLFSSL_EXPERIMENTAL_SETTINGS
8282

83-
/* ML-DSA (dilithium) */
84-
#define HAVE_DILITHIUM
85-
#define WOLFSSL_WC_DILITHIUM
86-
/* Wolfcrypt builds ML-DSA (dilithium) to the FIPS 204 final
87-
* standard by default. Uncomment this if you want the draft
88-
* version instead. */
83+
/* ML-DSA */
84+
#define WOLFSSL_HAVE_MLDSA
85+
/* Wolfcrypt builds ML-DSA to the FIPS 204 final standard by default.
86+
* Uncomment this if you want the draft version instead. */
8987
#if 0
90-
#define WOLFSSL_DILITHIUM_FIPS204_DRAFT
88+
#define WOLFSSL_MLDSA_FIPS204_DRAFT
9189
#endif
9290

9391
/* Default the keygen/sign tool to use ML-DSA level 2 */
9492
#ifndef ML_DSA_LEVEL
9593
#define ML_DSA_LEVEL 2
9694
#endif
9795

98-
/* Dilithium needs SHAKE128 */
96+
/* ML-DSA needs SHAKE128 */
9997
#define WOLFSSL_SHAKE128
10098

10199
/* LMS */
102100
#define WOLFBOOT_SIGN_LMS
103101
#define WOLFSSL_HAVE_LMS
104-
#define WOLFSSL_WC_LMS
105102
#ifndef LMS_LEVELS
106103
#define LMS_LEVELS 1
107104
#endif
@@ -115,7 +112,6 @@
115112
/* XMSS */
116113
#define WOLFBOOT_SIGN_XMSS
117114
#define WOLFSSL_HAVE_XMSS
118-
#define WOLFSSL_WC_XMSS
119115
#ifndef WOLFBOOT_XMSS_PARAMS
120116
#define WOLFBOOT_XMSS_PARAMS "XMSS-SHA2_10_256"
121117
#endif

0 commit comments

Comments
 (0)