ark-r1cs-std/crypto-primitives/src/commitment/blake2s/mod.rs
crypto-primitives/src/commitment/blake2s/mod.rsRaw
1use super::CommitmentScheme;
2use crate::Error;
3use blake2::Blake2s as b2s;
4use digest::Digest;
5use rand::Rng;
6
7pub struct Blake2sCommitment;
8
9#[cfg(feature = "r1cs")]
10pub mod constraints;
11
12impl CommitmentScheme for Blake2sCommitment {
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 randomness: &Self::Randomness,
25 ) -> Result<Self::Output, Error> {
26 let mut h = b2s::new();
27 h.input(input);
28 h.input(randomness.as_ref());
29 let mut result = [0u8; 32];
30 result.copy_from_slice(&h.result());
31 Ok(result)
32 }
33}