From fccc17a15a94190592872854b99ff5787b2bbe6a Mon Sep 17 00:00:00 2001 From: arnaucube Date: Fri, 29 Nov 2024 08:28:38 +0100 Subject: [PATCH] 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 --- src/constraints.rs | 13 ++++++------- src/lib.rs | 45 +++++++++++++++++++++++---------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/constraints.rs b/src/constraints.rs index c8c5ace..cbae34b 100644 --- a/src/constraints.rs +++ b/src/constraints.rs @@ -51,18 +51,17 @@ where #[cfg(test)] mod tests { - 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 super::*; + use crate::ed_on_bn254_twist::{ + constraints::EdwardsVar as GVar, BaseField as Fq, EdwardsConfig, EdwardsProjective as G, + ScalarField as Fr, + }; + use crate::{poseidon_config, SigningKey}; #[test] fn gadget_verify() { diff --git a/src/lib.rs b/src/lib.rs index 190da68..acc9157 100644 --- a/src/lib.rs +++ b/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 @@ pub mod signature; #[cfg(feature = "r1cs")] pub mod constraints; -use ark_ff::PrimeField; -use digest::Digest; pub use eddsa::*; pub(crate) fn from_digest(digest: D) -> F { @@ -29,35 +32,33 @@ impl core::fmt::Display for Error { } } -impl ark_std::error::Error for Error {} +/// Generates poseidon constants and returns the config +pub fn poseidon_config( + rate: usize, + full_rounds: usize, + partial_rounds: usize, +) -> PoseidonConfig { + 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( - rate: usize, - full_rounds: usize, - partial_rounds: usize, - ) -> PoseidonConfig { - 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() where