mldsa: add support for passing seed to the keygen
authorFelix Fietkau <nbd@nbd.name>
Sat, 12 Jul 2025 09:24:57 +0000 (11:24 +0200)
committerFelix Fietkau <nbd@nbd.name>
Sat, 12 Jul 2025 09:24:57 +0000 (11:24 +0200)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
mldsa.c
mldsa.h

diff --git a/mldsa.c b/mldsa.c
index 9db701c110ff0954e0bce2853800c1cf69cab14c..aa3ef0368ff88726a154a8697807ed2a31ea857b 100644 (file)
--- a/mldsa.c
+++ b/mldsa.c
@@ -1892,10 +1892,13 @@ int MLD_44_ref_pubkey(uint8_t *pk, const uint8_t *sk)
   return 0;
 }
 
-int MLD_44_ref_keypair(uint8_t *pk, uint8_t *sk)
+int MLD_44_ref_keypair(uint8_t *pk, uint8_t *sk, const uint8_t *seed)
 {
-  uint8_t seed[MLDSA_SEEDBYTES];
-  randombytes(seed, MLDSA_SEEDBYTES);
+  uint8_t _seed[MLDSA_SEEDBYTES];
+  if (!seed) {
+         randombytes(_seed, MLDSA_SEEDBYTES);
+         seed = _seed;
+  }
   return crypto_sign_keypair_internal(pk, sk, seed);
 }
 
diff --git a/mldsa.h b/mldsa.h
index e451dff94f4b22451ae73c1053fee6852395016e..fd08571e07549755eb9e6fefcfa6a6a9744eb87a 100644 (file)
--- a/mldsa.h
+++ b/mldsa.h
 #define MLD_44_PUBLICKEYBYTES 1312
 #define MLD_44_SECRETKEYBYTES 2560
 #define MLD_44_BYTES 2420
+#define MLDSA_SEEDBYTES 32
 
 #define MLD_44_ref_PUBLICKEYBYTES MLD_44_PUBLICKEYBYTES
 #define MLD_44_ref_SECRETKEYBYTES MLD_44_SECRETKEYBYTES
 #define MLD_44_ref_BYTES MLD_44_BYTES
 
-int MLD_44_ref_keypair(uint8_t *pk, uint8_t *sk);
+int MLD_44_ref_keypair(uint8_t *pk, uint8_t *sk, const uint8_t *seed);
 int MLD_44_ref_pubkey(uint8_t *pk, const uint8_t *sk);
 
 int MLD_44_ref_signature(uint8_t *sig, size_t *siglen, const uint8_t *m,