From 5efcd5f1b468edd1beb420074f89d2f617d0534c Mon Sep 17 00:00:00 2001 From: kostiask Date: Wed, 23 Jul 2025 13:52:29 +0200 Subject: [PATCH 1/5] test 1 --- src/sign/ml_dsa_65.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/sign/ml_dsa_65.rs b/src/sign/ml_dsa_65.rs index 09af1a3..843eb6e 100644 --- a/src/sign/ml_dsa_65.rs +++ b/src/sign/ml_dsa_65.rs @@ -10,11 +10,13 @@ const L: usize = params::ml_dsa_65::L; /// * 'sk' - preallocated buffer for private key /// * 'seed' - optional seed; if None [random_bytes()] is used for randomness generation pub fn keypair(pk: &mut [u8], sk: &mut [u8], seed: Option<&[u8]>) { - let mut init_seed = [0u8; params::SEEDBYTES]; + let mut init_seed = [0u8; params::SEEDBYTES+2]; match seed { - Some(x) => init_seed.copy_from_slice(x), - None => crate::random_bytes(&mut init_seed, params::SEEDBYTES) + Some(x) => init_seed[..params::SEEDBYTES].copy_from_slice(x), + None => crate::random_bytes(&mut init_seed, params::SEEDBYTES), }; + init_seed[params::SEEDBYTES] = K as u8; + init_seed[params::SEEDBYTES+1] = L as u8; const SEEDBUF_LEN: usize = 2 * params::SEEDBYTES + params::CRHBYTES; let mut seedbuf = [0u8; SEEDBUF_LEN]; From 0a393b49bf3ee728548e985ae92dfe33c6df01db Mon Sep 17 00:00:00 2001 From: kostiask Date: Wed, 23 Jul 2025 13:56:31 +0200 Subject: [PATCH 2/5] test 2 --- src/sign/ml_dsa_65.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sign/ml_dsa_65.rs b/src/sign/ml_dsa_65.rs index 843eb6e..b6acf41 100644 --- a/src/sign/ml_dsa_65.rs +++ b/src/sign/ml_dsa_65.rs @@ -20,7 +20,7 @@ pub fn keypair(pk: &mut [u8], sk: &mut [u8], seed: Option<&[u8]>) { const SEEDBUF_LEN: usize = 2 * params::SEEDBYTES + params::CRHBYTES; let mut seedbuf = [0u8; SEEDBUF_LEN]; - fips202::shake256(&mut seedbuf, SEEDBUF_LEN, &init_seed, params::SEEDBYTES); + fips202::shake256(&mut seedbuf, SEEDBUF_LEN, &init_seed, params::SEEDBYTES+2); let mut rho = [0u8; params::SEEDBYTES]; rho.copy_from_slice(&seedbuf[..params::SEEDBYTES]); From 2c7f0ef58a3e7b07c17aa8ae4969d3887291a015 Mon Sep 17 00:00:00 2001 From: kostiask Date: Wed, 23 Jul 2025 14:51:38 +0200 Subject: [PATCH 3/5] test 3 --- src/sign/ml_dsa_65.rs | 2 +- src/sign/ml_dsa_87.rs | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/sign/ml_dsa_65.rs b/src/sign/ml_dsa_65.rs index b6acf41..c424dd8 100644 --- a/src/sign/ml_dsa_65.rs +++ b/src/sign/ml_dsa_65.rs @@ -17,7 +17,7 @@ pub fn keypair(pk: &mut [u8], sk: &mut [u8], seed: Option<&[u8]>) { }; init_seed[params::SEEDBYTES] = K as u8; init_seed[params::SEEDBYTES+1] = L as u8; - + const SEEDBUF_LEN: usize = 2 * params::SEEDBYTES + params::CRHBYTES; let mut seedbuf = [0u8; SEEDBUF_LEN]; fips202::shake256(&mut seedbuf, SEEDBUF_LEN, &init_seed, params::SEEDBYTES+2); diff --git a/src/sign/ml_dsa_87.rs b/src/sign/ml_dsa_87.rs index eea5088..0518470 100644 --- a/src/sign/ml_dsa_87.rs +++ b/src/sign/ml_dsa_87.rs @@ -10,15 +10,17 @@ const L: usize = params::ml_dsa_87::L; /// * 'sk' - preallocated buffer for private key /// * 'seed' - optional seed; if None [random_bytes()] is used for randomness generation pub fn keypair(pk: &mut [u8], sk: &mut [u8], seed: Option<&[u8]>) { - let mut init_seed = [0u8; params::SEEDBYTES]; + let mut init_seed = [0u8; params::SEEDBYTES+2]; match seed { - Some(x) => init_seed.copy_from_slice(x), - None => crate::random_bytes(&mut init_seed, params::SEEDBYTES) + Some(x) => init_seed[..params::SEEDBYTES].copy_from_slice(x), + None => crate::random_bytes(&mut init_seed, params::SEEDBYTES), }; + init_seed[params::SEEDBYTES] = K as u8; + init_seed[params::SEEDBYTES+1] = L as u8; const SEEDBUF_LEN: usize = 2 * params::SEEDBYTES + params::CRHBYTES; let mut seedbuf = [0u8; SEEDBUF_LEN]; - fips202::shake256(&mut seedbuf, SEEDBUF_LEN, &init_seed, params::SEEDBYTES); + fips202::shake256(&mut seedbuf, SEEDBUF_LEN, &init_seed, params::SEEDBYTES+2); let mut rho = [0u8; params::SEEDBYTES]; rho.copy_from_slice(&seedbuf[..params::SEEDBYTES]); From 991c5494c0a6bb3b09761dc7b59ea8f880e5cc2c Mon Sep 17 00:00:00 2001 From: kostiask Date: Thu, 24 Jul 2025 00:22:30 +0200 Subject: [PATCH 4/5] test 3 --- src/ml_dsa_44.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ml_dsa_44.rs b/src/ml_dsa_44.rs index b675676..8614819 100644 --- a/src/ml_dsa_44.rs +++ b/src/ml_dsa_44.rs @@ -249,7 +249,9 @@ impl PublicKey { /// /// Returns 'true' if the verification process was successful, 'false' otherwise pub fn verify(&self, msg: &[u8], sig: &[u8], ctx: Option<&[u8]>) -> bool { + println!("verify lib"); if sig.len() != SIGNBYTES { + println!("SIGNBYTES LEN: {:?}", SIGNBYTES); return false; } match ctx { From d68144411df88bb677f8380f276543c748e6425b Mon Sep 17 00:00:00 2001 From: kostiask Date: Thu, 24 Jul 2025 00:54:20 +0200 Subject: [PATCH 5/5] test 4 --- src/ml_dsa_44.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/ml_dsa_44.rs b/src/ml_dsa_44.rs index 8614819..b675676 100644 --- a/src/ml_dsa_44.rs +++ b/src/ml_dsa_44.rs @@ -249,9 +249,7 @@ impl PublicKey { /// /// Returns 'true' if the verification process was successful, 'false' otherwise pub fn verify(&self, msg: &[u8], sig: &[u8], ctx: Option<&[u8]>) -> bool { - println!("verify lib"); if sig.len() != SIGNBYTES { - println!("SIGNBYTES LEN: {:?}", SIGNBYTES); return false; } match ctx {