Add constraints for Edwards curves over MNT4 (#221)
Weikeng Chen w.k@berkeley.edu
Sun, 14 Jun 2020 21:51:56 -0700
9 files changed,
65 insertions(+),
1 deletions(-)
jump to
M
r1cs-std/Cargo.toml
→
r1cs-std/Cargo.toml
@@ -37,7 +37,7 @@ [features]
default = ["std"] full = [ "bls12_377", "ed_on_bls12_381", "ed_on_bls12_377", "ed_on_cp6_782", - "ed_on_bw6_761", "mnt4_298", "mnt4_753", "mnt6_298", "mnt6_753" + "ed_on_bw6_761", "ed_on_mnt4_298", "ed_on_mnt4_753", "mnt4_298", "mnt4_753", "mnt6_298", "mnt6_753" ] bls12_377 = [ "algebra/bls12_377" ]@@ -45,6 +45,8 @@ ed_on_bls12_381 = [ "algebra/ed_on_bls12_381" ]
ed_on_bls12_377 = [ "algebra/ed_on_bls12_377" ] ed_on_cp6_782 = [ "algebra/ed_on_cp6_782" ] ed_on_bw6_761 = [ "algebra/ed_on_bw6_761", "algebra/ed_on_cp6_782" ] +ed_on_mnt4_298 = [ "algebra/ed_on_mnt4_298" ] +ed_on_mnt4_753 = [ "algebra/ed_on_mnt4_753" ] mnt4_298 = [ "algebra/mnt4_298" ] mnt4_753 = [ "algebra/mnt4_753" ] mnt6_298 = [ "algebra/mnt6_298" ]
A
r1cs-std/src/instantiated/ed_on_mnt4_298/curves.rs
@@ -0,0 +1,11 @@
+use crate::groups::curves::twisted_edwards::AffineGadget; +use algebra::ed_on_mnt4_298::*; + +use crate::instantiated::ed_on_mnt4_298::fields::FqGadget; + +pub type EdwardsGadget = AffineGadget<EdwardsParameters, Fq, FqGadget>; + +#[test] +fn test() { + crate::groups::curves::twisted_edwards::test::<_, EdwardsParameters, EdwardsGadget>(); +}
A
r1cs-std/src/instantiated/ed_on_mnt4_298/fields.rs
@@ -0,0 +1,9 @@
+use crate::fields::fp::FpGadget; +use algebra::ed_on_mnt4_298::fq::Fq; + +pub type FqGadget = FpGadget<Fq>; + +#[test] +fn test() { + crate::fields::tests::field_test::<_, Fq, FqGadget>(); +}
A
r1cs-std/src/instantiated/ed_on_mnt4_298/mod.rs
@@ -0,0 +1,5 @@
+mod curves; +mod fields; + +pub use curves::*; +pub use fields::*;
A
r1cs-std/src/instantiated/ed_on_mnt4_753/curves.rs
@@ -0,0 +1,11 @@
+use crate::groups::curves::twisted_edwards::AffineGadget; +use algebra::ed_on_mnt4_753::*; + +use crate::instantiated::ed_on_mnt4_753::fields::FqGadget; + +pub type EdwardsGadget = AffineGadget<EdwardsParameters, Fq, FqGadget>; + +#[test] +fn test() { + crate::groups::curves::twisted_edwards::test::<_, EdwardsParameters, EdwardsGadget>(); +}
A
r1cs-std/src/instantiated/ed_on_mnt4_753/fields.rs
@@ -0,0 +1,9 @@
+use crate::fields::fp::FpGadget; +use algebra::ed_on_mnt4_753::fq::Fq; + +pub type FqGadget = FpGadget<Fq>; + +#[test] +fn test() { + crate::fields::tests::field_test::<_, Fq, FqGadget>(); +}
A
r1cs-std/src/instantiated/ed_on_mnt4_753/mod.rs
@@ -0,0 +1,5 @@
+mod curves; +mod fields; + +pub use curves::*; +pub use fields::*;
M
r1cs-std/src/instantiated/mod.rs
→
r1cs-std/src/instantiated/mod.rs
@@ -16,6 +16,12 @@
#[cfg(feature = "ed_on_bls12_381")] pub mod ed_on_bls12_381; +#[cfg(feature = "ed_on_mnt4_298")] +pub mod ed_on_mnt4_298; + +#[cfg(feature = "ed_on_mnt4_753")] +pub mod ed_on_mnt4_753; + #[cfg(feature = "mnt4_298")] pub mod mnt4_298;
M
r1cs-std/src/lib.rs
→
r1cs-std/src/lib.rs
@@ -51,6 +51,12 @@
#[cfg(feature = "ed_on_bls12_377")] pub use instantiated::ed_on_bls12_377; +#[cfg(feature = "ed_on_mnt4_298")] +pub use instantiated::ed_on_mnt4_298; + +#[cfg(feature = "ed_on_mnt4_753")] +pub use instantiated::ed_on_mnt4_753; + #[cfg(feature = "ed_on_cp6_782")] pub use instantiated::ed_on_cp6_782;