Browse Source

add padding in constants generation

pull/1/head
arnaucube 4 years ago
parent
commit
3028cd7975
2 changed files with 10 additions and 1 deletions
  1. +2
    -0
      Cargo.toml
  2. +8
    -1
      src/lib.rs

+ 2
- 0
Cargo.toml

@ -5,6 +5,8 @@ authors = ["arnaucube "]
edition = "2018"
license = "GPL-3.0"
description = "MIMC7 hash implementation"
repository = "https://github.com/arnaucube/mimc-rs"
readme = "README.md"
[dependencies]
num = "0.2.0"

+ 8
- 1
src/lib.rs

@ -64,15 +64,22 @@ pub fn get_constants(r: &BigInt, seed: &str, n_rounds: i64) -> Vec {
let mut c = BigInt::from_bytes_be(Sign::Plus, &h);
for _ in 1..n_rounds {
let (_, c_bytes) = c.to_bytes_be();
let mut c_bytes32: [u8;32] = [0;32];
let diff = c_bytes32.len() - c_bytes.len();
c_bytes32[diff..].copy_from_slice(&c_bytes[..]);
let mut keccak = Keccak::new_keccak256();
let mut h = [0u8; 32];
let (_, c_bytes) = c.to_bytes_be();
keccak.update(&c_bytes[..]);
keccak.finalize(&mut h);
c = BigInt::from_bytes_be(Sign::Plus, &h);
let n = modulus(&c, &r);
cts.push(n);
}
// let l = cts.len();
// cts[l-1] = Zero::zero();
cts
}

Loading…
Cancel
Save