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