arnaucube
arnaucube/arkeddsaPublic Self-hosted repository
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}