use crate::Error; use core::marker::PhantomData; use rand::Rng; use super::{ pedersen::{PedersenCommitment, PedersenParameters, PedersenRandomness, PedersenWindow}, CommitmentScheme, }; pub use crate::crh::injective_map::InjectiveMap; use algebra::groups::Group; #[cfg(feature = "r1cs")] pub mod constraints; pub struct PedersenCommCompressor, W: PedersenWindow> { _group: PhantomData, _compressor: PhantomData, _comm: PedersenCommitment, } impl, W: PedersenWindow> CommitmentScheme for PedersenCommCompressor { type Output = I::Output; type Parameters = PedersenParameters; type Randomness = PedersenRandomness; fn setup(rng: &mut R) -> Result { let time = start_timer!(|| format!("PedersenCompressor::Setup")); let params = PedersenCommitment::::setup(rng); end_timer!(time); params } fn commit( parameters: &Self::Parameters, input: &[u8], randomness: &Self::Randomness, ) -> Result { let eval_time = start_timer!(|| "PedersenCompressor::Eval"); let result = I::injective_map(&PedersenCommitment::::commit( parameters, input, randomness, )?)?; end_timer!(eval_time); Ok(result) } }