mmr_crypto_primitives/commitment/
mod.rs

1use ark_ff::UniformRand;
2use ark_std::rand::Rng;
3use ark_std::{fmt::Debug, hash::Hash};
4
5use ark_ff::bytes::ToBytes;
6
7pub mod blake2s;
8pub mod injective_map;
9pub mod pedersen;
10
11#[cfg(feature = "r1cs")]
12pub mod constraints;
13#[cfg(feature = "r1cs")]
14pub use constraints::*;
15
16use crate::Error;
17
18pub trait CommitmentScheme {
19    type Output: ToBytes + Clone + Default + Eq + Hash + Debug;
20    type Parameters: Clone;
21    type Randomness: Clone + ToBytes + Default + Eq + UniformRand + Debug;
22
23    fn setup<R: Rng>(r: &mut R) -> Result<Self::Parameters, Error>;
24
25    fn commit(
26        parameters: &Self::Parameters,
27        input: &[u8],
28        r: &Self::Randomness,
29    ) -> Result<Self::Output, Error>;
30}