mirror of
https://github.com/Qortal/pirate-librustzcash.git
synced 2025-07-31 12:31:22 +00:00
pedersen_hash: adds test vectors for the circuit implementation
This commit is contained in:
@@ -5,7 +5,6 @@ use ff::{Field, PrimeField, PrimeFieldRepr};
|
||||
pub enum Personalization {
|
||||
NoteCommitment,
|
||||
MerkleTree(usize),
|
||||
Empty,
|
||||
}
|
||||
|
||||
impl Personalization {
|
||||
@@ -17,9 +16,6 @@ impl Personalization {
|
||||
|
||||
(0..6).map(|i| (num >> i) & 1 == 1).collect()
|
||||
}
|
||||
Personalization::Empty => {
|
||||
vec![true, true, true, true, true, true]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,14 +38,12 @@ where
|
||||
let mut generators = params.pedersen_hash_exp_table().iter();
|
||||
|
||||
loop {
|
||||
// acc is <M_i>
|
||||
let mut acc = E::Fs::zero();
|
||||
let mut cur = E::Fs::one();
|
||||
let mut chunks_remaining = params.pedersen_hash_chunks_per_generator();
|
||||
let mut encountered_bits = false;
|
||||
|
||||
// Grab three bits from the input
|
||||
// spec: iterate over chunks (a,b,c)
|
||||
while let Some(a) = bits.next() {
|
||||
encountered_bits = true;
|
||||
|
||||
@@ -57,7 +51,6 @@ where
|
||||
let c = bits.next().unwrap_or(false);
|
||||
|
||||
// Start computing this portion of the scalar
|
||||
// tmp is enc(m_j)
|
||||
let mut tmp = cur;
|
||||
if a {
|
||||
tmp.add_assign(&cur);
|
||||
@@ -112,29 +105,3 @@ where
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::{
|
||||
jubjub::*,
|
||||
pedersen_hash::{pedersen_hash, Personalization},
|
||||
};
|
||||
use pairing::bls12_381::{Bls12, Fr};
|
||||
|
||||
#[test]
|
||||
fn test_pedersen_hash_noncircuit() {
|
||||
let params = &JubjubBls12::new();
|
||||
/*
|
||||
for (i, generator) in params.pedersen_hash_generators().iter().enumerate() {
|
||||
println!("generator {}, x={}, y={}", i, generator.to_xy().0, generator.to_xy().1)
|
||||
}
|
||||
*/
|
||||
|
||||
let mut input: Vec<bool> = vec![];
|
||||
for i in 0..(63*3*4+1) {
|
||||
input.push(true);
|
||||
}
|
||||
let p = pedersen_hash::<Bls12, _>(Personalization::Empty, input, ¶ms).to_xy();
|
||||
println!("hash = {}, {}", p.0, p.1);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user