spongefish_poseidon2/
risc0_poseidon2.rs

1use risc0_zkp::field::baby_bear::BabyBearElem;
2use spongefish::Permutation;
3
4#[derive(Clone, Debug, Default)]
5pub struct RiscZeroBabyBearPoseidon2_24;
6
7impl Permutation<24> for RiscZeroBabyBearPoseidon2_24 {
8    type U = BabyBearElem;
9
10    fn permute(&self, state: &[Self::U; 24]) -> [Self::U; 24] {
11        let mut new_state = *state;
12        risc0_zkp::core::hash::poseidon2::poseidon2_mix(&mut new_state);
13        new_state
14    }
15
16    fn permute_mut(&self, state: &mut [Self::U; 24]) {
17        risc0_zkp::core::hash::poseidon2::poseidon2_mix(state);
18    }
19}