From 6c681d05393bfa330df779c3539e94d14a740249 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Wed, 5 May 2021 13:39:41 -0600 Subject: [PATCH] Generate uniformly distributed nullifiers. --- src/note/nullifier.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/note/nullifier.rs b/src/note/nullifier.rs index 6c1f0471..bc0dd6e3 100644 --- a/src/note/nullifier.rs +++ b/src/note/nullifier.rs @@ -63,14 +63,21 @@ impl Nullifier { pub mod testing { use proptest::prelude::*; + use group::GroupEncoding; use pasta_curves::pallas; use super::Nullifier; + use crate::spec::extract_p; prop_compose! { /// Generate a uniformly distributed nullifier value. - pub fn arb_nullifier()(elems in prop::array::uniform4(prop::num::u64::ANY)) -> Nullifier { - Nullifier(pallas::Base::from_raw(elems)) + pub fn arb_nullifier()( + coord in prop::array::uniform32(any::()).prop_map(|b| pallas::Point::from_bytes(&b)).prop_filter( + "Must generate a valid Pallas point", + |p| p.is_some().into() + ) + ) -> Nullifier { + Nullifier(extract_p(&coord.unwrap())) } } }