Browse Source

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
main^2
arnaucube 4 months ago
parent
commit
fccc17a15a
2 changed files with 29 additions and 29 deletions
  1. +6
    -7
      src/constraints.rs
  2. +23
    -22
      src/lib.rs

+ 6
- 7
src/constraints.rs

@ -51,18 +51,17 @@ where
#[cfg(test)] #[cfg(test)]
mod tests { 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_ff::PrimeField;
use ark_r1cs_std::{alloc::AllocVar, eq::EqGadget, fields::nonnative::NonNativeFieldVar}; use ark_r1cs_std::{alloc::AllocVar, eq::EqGadget, fields::nonnative::NonNativeFieldVar};
use ark_relations::r1cs::ConstraintSystem; use ark_relations::r1cs::ConstraintSystem;
use rand_core::OsRng; 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] #[test]
fn gadget_verify() { fn gadget_verify() {

+ 23
- 22
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 ed_on_bn254_twist;
pub mod eddsa; pub mod eddsa;
pub mod signature; pub mod signature;
@ -5,8 +10,6 @@ pub mod signature;
#[cfg(feature = "r1cs")] #[cfg(feature = "r1cs")]
pub mod constraints; pub mod constraints;
use ark_ff::PrimeField;
use digest::Digest;
pub use eddsa::*; pub use eddsa::*;
pub(crate) fn from_digest<F: PrimeField, D: Digest>(digest: D) -> F { pub(crate) fn from_digest<F: PrimeField, D: 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<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)] #[cfg(test)]
mod 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_crypto_primitives::sponge::Absorb;
use ark_ec::twisted_edwards::TECurveConfig; use ark_ec::twisted_edwards::TECurveConfig;
use ark_ff::PrimeField; use ark_ff::PrimeField;
use digest::Digest; use digest::Digest;
use rand_core::OsRng; 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>() fn run_test<TE: TECurveConfig + Clone, D: Digest>()
where where

Loading…
Cancel
Save