use crate::Error; use core::marker::PhantomData; use rand::Rng; use super::{pedersen, CommitmentScheme}; pub use crate::crh::injective_map::InjectiveMap; use algebra_core::ProjectiveCurve; #[cfg(feature = "r1cs")] pub mod constraints; pub struct PedersenCommCompressor, W: pedersen::Window> { _group: PhantomData, _compressor: PhantomData, _comm: pedersen::Commitment, } impl, W: pedersen::Window> CommitmentScheme for PedersenCommCompressor { type Output = I::Output; type Parameters = pedersen::Parameters; type Randomness = pedersen::Randomness; fn setup(rng: &mut R) -> Result { let time = start_timer!(|| format!("PedersenCompressor::Setup")); let params = pedersen::Commitment::::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(&pedersen::Commitment::::commit( parameters, input, randomness, )?)?; end_timer!(eval_time); Ok(result) } }