arkeddsa/src/poseidon.rs
src/poseidon.rsRaw
1use ark_crypto_primitives::sponge::poseidon::{find_poseidon_ark_and_mds, PoseidonConfig};
2use ark_ff::PrimeField;
3
4/// Generates poseidon constants and returns the config
5pub fn poseidon_config<F: PrimeField>(
6 rate: usize,
7 full_rounds: usize,
8 partial_rounds: usize,
9) -> PoseidonConfig<F> {
10 let prime_bits = F::MODULUS_BIT_SIZE as u64;
11 let (ark, mds) = find_poseidon_ark_and_mds(
12 prime_bits,
13 rate,
14 full_rounds as u64,
15 partial_rounds as u64,
16 0,
17 );
18 PoseidonConfig::new(full_rounds, partial_rounds, 5, mds, ark, rate, 1)
19}