mmr_crypto_primitives/commitment/blake2s/
mod.rs1use super::CommitmentScheme;
2use crate::Error;
3use ark_std::rand::Rng;
4use blake2::Blake2s as b2s;
5use digest::Digest;
6
7pub struct Commitment;
8
9#[cfg(feature = "r1cs")]
10pub mod constraints;
11
12impl CommitmentScheme for Commitment {
13 type Parameters = ();
14 type Randomness = [u8; 32];
15 type Output = [u8; 32];
16
17 fn setup<R: Rng>(_: &mut R) -> Result<Self::Parameters, Error> {
18 Ok(())
19 }
20
21 fn commit(
22 _: &Self::Parameters,
23 input: &[u8],
24 r: &Self::Randomness,
25 ) -> Result<Self::Output, Error> {
26 let mut h = b2s::new();
27 h.update(input);
28 h.update(r.as_ref());
29 let mut result = [0u8; 32];
30 result.copy_from_slice(&h.finalize());
31 Ok(result)
32 }
33}