arnaucube
arnaucube/arkeddsaPublic Self-hosted repository
move the poseidon_config function outside from tests

move the poseidon_config function outside from tests, since when
externally using this lib usually the user will also use the
poseidon_config helper to generate the poseidon config to be used in the
signature
arnaucube git@arnaucube.com
Fri, 29 Nov 2024 08:28:38 +0100
commit

fccc17a15a94190592872854b99ff5787b2bbe6a

parent

b409860439b81179cbfc197bdcc3b335248d1058

2 files changed, 29 insertions(+), 29 deletions(-)

jump to
M src/constraints.rs → src/constraints.rs

@@ -51,18 +51,17 @@ }

#[cfg(test)] mod tests { + use ark_ff::PrimeField; + use ark_r1cs_std::{alloc::AllocVar, eq::EqGadget, fields::nonnative::NonNativeFieldVar}; + use ark_relations::r1cs::ConstraintSystem; + use rand_core::OsRng; + use super::*; use crate::ed_on_bn254_twist::{ constraints::EdwardsVar as GVar, BaseField as Fq, EdwardsConfig, EdwardsProjective as G, ScalarField as Fr, }; - use ark_ff::PrimeField; - use ark_r1cs_std::{alloc::AllocVar, eq::EqGadget, fields::nonnative::NonNativeFieldVar}; - use ark_relations::r1cs::ConstraintSystem; - use rand_core::OsRng; - - use crate::test::poseidon_config; - use crate::SigningKey; + use crate::{poseidon_config, SigningKey}; #[test] fn gadget_verify() {
M src/lib.rs → src/lib.rs

@@ -1,3 +1,8 @@

+use ark_ff::PrimeField; +use digest::Digest; +impl ark_std::error::Error for Error {} +use ark_crypto_primitives::sponge::poseidon::{find_poseidon_ark_and_mds, PoseidonConfig}; + pub mod ed_on_bn254_twist; pub mod eddsa; pub mod signature;

@@ -5,8 +10,6 @@

#[cfg(feature = "r1cs")] pub mod constraints; -use ark_ff::PrimeField; -use digest::Digest; pub use eddsa::*; pub(crate) fn from_digest<F: PrimeField, D: Digest>(digest: D) -> F {

@@ -29,35 +32,33 @@ }

} } -impl ark_std::error::Error for Error {} +/// Generates poseidon constants and returns the config +pub fn poseidon_config<F: PrimeField>( + rate: usize, + full_rounds: usize, + partial_rounds: usize, +) -> PoseidonConfig<F> { + let prime_bits = F::MODULUS_BIT_SIZE as u64; + let (ark, mds) = find_poseidon_ark_and_mds( + prime_bits, + rate, + full_rounds as u64, + partial_rounds as u64, + 0, + ); + PoseidonConfig::new(full_rounds, partial_rounds, 5, mds, ark, rate, 1) +} #[cfg(test)] mod test { - - use crate::SigningKey; - use ark_crypto_primitives::sponge::poseidon::{find_poseidon_ark_and_mds, PoseidonConfig}; use ark_crypto_primitives::sponge::Absorb; use ark_ec::twisted_edwards::TECurveConfig; use ark_ff::PrimeField; use digest::Digest; use rand_core::OsRng; - /// Generates poseidon constants and returns the config - pub fn poseidon_config<F: PrimeField>( - rate: usize, - full_rounds: usize, - partial_rounds: usize, - ) -> PoseidonConfig<F> { - let prime_bits = F::MODULUS_BIT_SIZE as u64; - let (ark, mds) = find_poseidon_ark_and_mds( - prime_bits, - rate, - full_rounds as u64, - partial_rounds as u64, - 0, - ); - PoseidonConfig::new(full_rounds, partial_rounds, 5, mds, ark, rate, 1) - } + use super::poseidon_config; + use crate::SigningKey; fn run_test<TE: TECurveConfig + Clone, D: Digest>() where