arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
Add supplementary small group bases for some common fields (#137)

* update

* use r1cs std

* fix

* rem

* Apply suggestions from code review

Co-authored-by: onewayfunc <onewayfunc@gmail.com>
Weikeng Chen w.k@berkeley.edu
Wed, 21 Dec 2022 18:06:24 -0800
commit

a82486db1df02cd11f4d705e49119718865add94

parent

febd7635fbee31e7e94eac1ba38f75cd22793bde

M Cargo.toml → Cargo.toml

@@ -64,7 +64,9 @@ debug-assertions = true

debug = true [patch.crates-io] -ark-ff = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4" } -ark-ec = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4" } +ark-ff = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4-debug-secp256k1" } +ark-ec = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4-debug-secp256k1" } ark-poly = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4" } -ark-serialize = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4" }+ark-serialize = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4-debug-secp256k1" } +ark-algebra-test-templates = { git = "https://github.com/arkworks-rs/algebra/", branch = "release-0.4-debug-secp256k1" } +ark-r1cs-std = { git = "https://github.com/arkworks-rs/r1cs-std/", branch = "release-0.4" }
M bls12_381/src/fields/fq.rs → bls12_381/src/fields/fq.rs

@@ -3,5 +3,7 @@

#[derive(MontConfig)] #[modulus = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787"] #[generator = "2"] +#[small_subgroup_base = "3"] +#[small_subgroup_power = "2"] pub struct FqConfig; pub type Fq = Fp384<MontBackend<FqConfig, 6>>;
M bls12_381/src/fields/fr.rs → bls12_381/src/fields/fr.rs

@@ -3,5 +3,7 @@

#[derive(MontConfig)] #[modulus = "52435875175126190479447740508185965837690552500527637822603658699938581184513"] #[generator = "7"] +#[small_subgroup_base = "3"] +#[small_subgroup_power = "1"] pub struct FrConfig; pub type Fr = Fp256<MontBackend<FrConfig, 4>>;
M curve25519/src/fields/fq.rs → curve25519/src/fields/fq.rs

@@ -3,5 +3,7 @@

#[derive(MontConfig)] #[modulus = "57896044618658097711785492504343953926634992332820282019728792003956564819949"] #[generator = "2"] +#[small_subgroup_base = "3"] +#[small_subgroup_power = "1"] pub struct FqConfig; pub type Fq = Fp256<MontBackend<FqConfig, 4>>;
M curve25519/src/fields/fr.rs → curve25519/src/fields/fr.rs

@@ -3,5 +3,7 @@

#[derive(MontConfig)] #[modulus = "7237005577332262213973186563042994240857116359379907606001950938285454250989"] #[generator = "2"] +#[small_subgroup_base = "3"] +#[small_subgroup_power = "1"] pub struct FrConfig; pub type Fr = Fp256<MontBackend<FrConfig, 4>>;
M ed25519/Cargo.toml → ed25519/Cargo.toml

@@ -17,6 +17,7 @@ ark-ff = { version = "0.4.0-alpha", default-features = false }

ark-ec = { version = "0.4.0-alpha", default-features = false } ark-std = { version = "0.4.0-alpha", default-features = false } ark-r1cs-std = { version = "0.4.0-alpha", default-features = false, optional = true } +ark-curve25519 = { path = "../curve25519" } [dev-dependencies] ark-relations = { version = "0.4.0-alpha", default-features = false }
M ed25519/src/fields/fq.rs → ed25519/src/fields/fq.rs

@@ -1,7 +1,1 @@

-use ark_ff::fields::{Fp256, MontBackend, MontConfig}; - -#[derive(MontConfig)] -#[modulus = "57896044618658097711785492504343953926634992332820282019728792003956564819949"] -#[generator = "2"] -pub struct FqConfig; -pub type Fq = Fp256<MontBackend<FqConfig, 4>>; +pub use ark_curve25519::{Fq, FqConfig};
M ed25519/src/fields/fr.rs → ed25519/src/fields/fr.rs

@@ -1,7 +1,1 @@

-use ark_ff::fields::{Fp256, MontBackend, MontConfig}; - -#[derive(MontConfig)] -#[modulus = "7237005577332262213973186563042994240857116359379907606001950938285454250989"] -#[generator = "2"] -pub struct FrConfig; -pub type Fr = Fp256<MontBackend<FrConfig, 4>>; +pub use ark_curve25519::{Fr, FrConfig};
M secp256k1/src/fields/fq.rs → secp256k1/src/fields/fq.rs

@@ -3,5 +3,7 @@

#[derive(MontConfig)] #[modulus = "115792089237316195423570985008687907853269984665640564039457584007908834671663"] #[generator = "3"] +#[small_subgroup_base = "3"] +#[small_subgroup_power = "1"] pub struct FqConfig; pub type Fq = Fp256<MontBackend<FqConfig, 4>>;
M secp256k1/src/fields/fr.rs → secp256k1/src/fields/fr.rs

@@ -3,5 +3,7 @@

#[derive(MontConfig)] #[modulus = "115792089237316195423570985008687907852837564279074904382605163141518161494337"] #[generator = "7"] +#[small_subgroup_base = "3"] +#[small_subgroup_power = "1"] pub struct FrConfig; pub type Fr = Fp256<MontBackend<FrConfig, 4>>;