From 31781e844fe976649c817ed3fc32c683aa383c76 Mon Sep 17 00:00:00 2001 From: Kobi Gurkan Date: Wed, 26 Sep 2018 10:21:18 +0300 Subject: [PATCH] Fix circuit pedersen hash to support maximum input sizes --- src/circuit/pedersen_hash.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/circuit/pedersen_hash.rs b/src/circuit/pedersen_hash.rs index eb1745f..51409af 100644 --- a/src/circuit/pedersen_hash.rs +++ b/src/circuit/pedersen_hash.rs @@ -32,12 +32,16 @@ pub fn pedersen_hash( assert_eq!(personalization.len(), 6); let mut edwards_result = None; - let mut bits = personalization.iter().chain(bits.iter()); + let mut bits = personalization.iter().chain(bits.iter()).peekable(); let mut segment_generators = params.pedersen_circuit_generators().iter(); let boolean_false = Boolean::constant(false); let mut segment_i = 0; loop { + // no more bits left, don't take the next generator + if bits.peek().is_none() { + break + } let mut segment_result = None; let mut segment_windows = &segment_generators.next() .expect("enough segments")[..]; @@ -149,7 +153,7 @@ mod test { let mut rng = XorShiftRng::from_seed([0x3dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]); let params = &JubjubBls12::new(); - for length in 0..751 { + for length in 0..940 { for _ in 0..5 { let mut input: Vec = (0..length).map(|_| rng.gen()).collect();