From 22ccd1bceb7d1f4051757352560963cef16b2e93 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Sun, 11 Nov 2018 10:52:08 +1300 Subject: [PATCH] Update sapling-crypto crate to use ff crate --- Cargo.lock | 1 + sapling-crypto/Cargo.toml | 1 + sapling-crypto/src/circuit/boolean.rs | 10 +++------- sapling-crypto/src/circuit/ecc.rs | 8 +++----- sapling-crypto/src/circuit/lookup.rs | 4 +++- sapling-crypto/src/circuit/multieq.rs | 7 ++----- sapling-crypto/src/circuit/multipack.rs | 3 ++- sapling-crypto/src/circuit/num.rs | 11 +++-------- sapling-crypto/src/circuit/pedersen_hash.rs | 2 +- sapling-crypto/src/circuit/sapling/mod.rs | 10 +++------- sapling-crypto/src/circuit/sprout/mod.rs | 3 ++- sapling-crypto/src/circuit/test/mod.rs | 10 +++------- sapling-crypto/src/circuit/uint32.rs | 9 +++------ sapling-crypto/src/group_hash.rs | 2 +- sapling-crypto/src/jubjub/edwards.rs | 8 +------- sapling-crypto/src/jubjub/fs.rs | 8 +++++--- sapling-crypto/src/jubjub/mod.rs | 8 ++------ sapling-crypto/src/jubjub/montgomery.rs | 8 +------- sapling-crypto/src/jubjub/tests.rs | 2 +- sapling-crypto/src/lib.rs | 1 + sapling-crypto/src/pedersen_hash.rs | 2 +- sapling-crypto/src/primitives/mod.rs | 6 +----- sapling-crypto/src/redjubjub.rs | 2 +- 23 files changed, 45 insertions(+), 81 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c477d522f..fa0511ce7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -365,6 +365,7 @@ dependencies = [ "blake2-rfc 0.2.18 (git+https://github.com/gtank/blake2-rfc?rev=7a5b5fc99ae483a0043db7547fb79a6fa44b88a9)", "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ff 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "pairing 0.14.2", "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/sapling-crypto/Cargo.toml b/sapling-crypto/Cargo.toml index 393c01f68..626919f24 100644 --- a/sapling-crypto/Cargo.toml +++ b/sapling-crypto/Cargo.toml @@ -14,6 +14,7 @@ features = ["expose-arith"] [dependencies] bellman = { path = "../bellman" } +ff = "0.4" rand = "0.4" digest = "0.7" byteorder = "1" diff --git a/sapling-crypto/src/circuit/boolean.rs b/sapling-crypto/src/circuit/boolean.rs index 08f407edf..2fe6ef182 100644 --- a/sapling-crypto/src/circuit/boolean.rs +++ b/sapling-crypto/src/circuit/boolean.rs @@ -1,9 +1,5 @@ -use pairing::{ - Engine, - Field, - PrimeField, - BitIterator -}; +use ff::{BitIterator, Field, PrimeField}; +use pairing::Engine; use bellman::{ ConstraintSystem, @@ -806,8 +802,8 @@ impl From for Boolean { #[cfg(test)] mod test { use bellman::{ConstraintSystem}; + use ff::{Field, PrimeField}; use pairing::bls12_381::{Bls12, Fr}; - use pairing::{Field, PrimeField}; use ::circuit::test::*; use super::{ AllocatedBit, diff --git a/sapling-crypto/src/circuit/ecc.rs b/sapling-crypto/src/circuit/ecc.rs index 71f1caa7a..107164996 100644 --- a/sapling-crypto/src/circuit/ecc.rs +++ b/sapling-crypto/src/circuit/ecc.rs @@ -1,7 +1,5 @@ -use pairing::{ - Engine, - Field -}; +use ff::Field; +use pairing::Engine; use bellman::{ SynthesisError, @@ -751,8 +749,8 @@ impl MontgomeryPoint { mod test { use bellman::{ConstraintSystem}; use rand::{XorShiftRng, SeedableRng, Rand, Rng}; + use ff::{BitIterator, Field, PrimeField}; use pairing::bls12_381::{Bls12, Fr}; - use pairing::{BitIterator, Field, PrimeField}; use ::circuit::test::*; use ::jubjub::{ montgomery, diff --git a/sapling-crypto/src/circuit/lookup.rs b/sapling-crypto/src/circuit/lookup.rs index 1ffc7f7d9..272f5f656 100644 --- a/sapling-crypto/src/circuit/lookup.rs +++ b/sapling-crypto/src/circuit/lookup.rs @@ -1,4 +1,6 @@ -use pairing::{Engine, Field}; +use ff::Field; +use pairing::Engine; + use super::*; use super::num::{ AllocatedNum, diff --git a/sapling-crypto/src/circuit/multieq.rs b/sapling-crypto/src/circuit/multieq.rs index 0f9c75568..4cfc3b84a 100644 --- a/sapling-crypto/src/circuit/multieq.rs +++ b/sapling-crypto/src/circuit/multieq.rs @@ -1,8 +1,5 @@ -use pairing::{ - Engine, - Field, - PrimeField -}; +use ff::{Field, PrimeField}; +use pairing::Engine; use bellman::{ SynthesisError, diff --git a/sapling-crypto/src/circuit/multipack.rs b/sapling-crypto/src/circuit/multipack.rs index 54d41385a..bf1b04653 100644 --- a/sapling-crypto/src/circuit/multipack.rs +++ b/sapling-crypto/src/circuit/multipack.rs @@ -1,4 +1,5 @@ -use pairing::{Engine, Field, PrimeField}; +use ff::{Field, PrimeField}; +use pairing::Engine; use bellman::{ConstraintSystem, SynthesisError}; use super::boolean::{Boolean}; use super::num::Num; diff --git a/sapling-crypto/src/circuit/num.rs b/sapling-crypto/src/circuit/num.rs index 53a2f6cf5..919d9217e 100644 --- a/sapling-crypto/src/circuit/num.rs +++ b/sapling-crypto/src/circuit/num.rs @@ -1,10 +1,5 @@ -use pairing::{ - Engine, - Field, - PrimeField, - PrimeFieldRepr, - BitIterator -}; +use ff::{BitIterator, Field, PrimeField, PrimeFieldRepr}; +use pairing::Engine; use bellman::{ SynthesisError, @@ -462,8 +457,8 @@ impl Num { mod test { use rand::{SeedableRng, Rand, Rng, XorShiftRng}; use bellman::{ConstraintSystem}; + use ff::{BitIterator, Field, PrimeField}; use pairing::bls12_381::{Bls12, Fr}; - use pairing::{Field, PrimeField, BitIterator}; use ::circuit::test::*; use super::{AllocatedNum, Boolean}; diff --git a/sapling-crypto/src/circuit/pedersen_hash.rs b/sapling-crypto/src/circuit/pedersen_hash.rs index eb1745fd7..297a0e0dd 100644 --- a/sapling-crypto/src/circuit/pedersen_hash.rs +++ b/sapling-crypto/src/circuit/pedersen_hash.rs @@ -116,8 +116,8 @@ mod test { use super::*; use ::circuit::test::*; use ::circuit::boolean::{Boolean, AllocatedBit}; + use ff::PrimeField; use pairing::bls12_381::{Bls12, Fr}; - use pairing::PrimeField; #[test] fn test_pedersen_hash_constraints() { diff --git a/sapling-crypto/src/circuit/sapling/mod.rs b/sapling-crypto/src/circuit/sapling/mod.rs index 650e16224..e84b94adb 100644 --- a/sapling-crypto/src/circuit/sapling/mod.rs +++ b/sapling-crypto/src/circuit/sapling/mod.rs @@ -1,8 +1,4 @@ -use pairing::{ - PrimeField, - PrimeFieldRepr, - Field, -}; +use ff::{Field, PrimeField, PrimeFieldRepr}; use bellman::{ SynthesisError, @@ -602,7 +598,7 @@ impl<'a, E: JubjubEngine> Circuit for Output<'a, E> { #[test] fn test_input_circuit_with_bls12_381() { - use pairing::{Field, BitIterator}; + use ff::{BitIterator, Field}; use pairing::bls12_381::*; use rand::{SeedableRng, Rng, XorShiftRng}; use ::circuit::test::*; @@ -734,7 +730,7 @@ fn test_input_circuit_with_bls12_381() { #[test] fn test_output_circuit_with_bls12_381() { - use pairing::{Field}; + use ff::Field; use pairing::bls12_381::*; use rand::{SeedableRng, Rng, XorShiftRng}; use ::circuit::test::*; diff --git a/sapling-crypto/src/circuit/sprout/mod.rs b/sapling-crypto/src/circuit/sprout/mod.rs index 586de8c7d..7027b4a4f 100644 --- a/sapling-crypto/src/circuit/sprout/mod.rs +++ b/sapling-crypto/src/circuit/sprout/mod.rs @@ -1,4 +1,5 @@ -use pairing::{Engine, Field}; +use ff::Field; +use pairing::Engine; use bellman::{ConstraintSystem, SynthesisError, Circuit, LinearCombination}; use circuit::boolean::{ AllocatedBit, diff --git a/sapling-crypto/src/circuit/test/mod.rs b/sapling-crypto/src/circuit/test/mod.rs index 12fe0ca33..18a77ba4a 100644 --- a/sapling-crypto/src/circuit/test/mod.rs +++ b/sapling-crypto/src/circuit/test/mod.rs @@ -1,9 +1,5 @@ -use pairing::{ - Engine, - Field, - PrimeField, - PrimeFieldRepr -}; +use ff::{Field, PrimeField, PrimeFieldRepr}; +use pairing::Engine; use bellman::{ LinearCombination, @@ -445,8 +441,8 @@ impl ConstraintSystem for TestConstraintSystem { #[test] fn test_cs() { + use ff::PrimeField; use pairing::bls12_381::{Bls12, Fr}; - use pairing::PrimeField; let mut cs = TestConstraintSystem::::new(); assert!(cs.is_satisfied()); diff --git a/sapling-crypto/src/circuit/uint32.rs b/sapling-crypto/src/circuit/uint32.rs index fb0bfa922..4e66091e5 100644 --- a/sapling-crypto/src/circuit/uint32.rs +++ b/sapling-crypto/src/circuit/uint32.rs @@ -1,8 +1,5 @@ -use pairing::{ - Engine, - Field, - PrimeField -}; +use ff::{Field, PrimeField}; +use pairing::Engine; use bellman::{ SynthesisError, @@ -415,8 +412,8 @@ mod test { use rand::{XorShiftRng, SeedableRng, Rng}; use ::circuit::boolean::{Boolean}; use super::{UInt32}; + use ff::Field; use pairing::bls12_381::{Bls12}; - use pairing::{Field}; use ::circuit::test::*; use bellman::{ConstraintSystem}; use circuit::multieq::MultiEq; diff --git a/sapling-crypto/src/group_hash.rs b/sapling-crypto/src/group_hash.rs index 25e65f90e..43e87e8fe 100644 --- a/sapling-crypto/src/group_hash.rs +++ b/sapling-crypto/src/group_hash.rs @@ -4,7 +4,7 @@ use jubjub::{ edwards }; -use pairing::{ +use ff::{ PrimeField }; diff --git a/sapling-crypto/src/jubjub/edwards.rs b/sapling-crypto/src/jubjub/edwards.rs index e91455c81..49018fe7f 100644 --- a/sapling-crypto/src/jubjub/edwards.rs +++ b/sapling-crypto/src/jubjub/edwards.rs @@ -1,10 +1,4 @@ -use pairing::{ - Field, - SqrtField, - PrimeField, - PrimeFieldRepr, - BitIterator -}; +use ff::{BitIterator, Field, PrimeField, PrimeFieldRepr, SqrtField}; use super::{ JubjubEngine, diff --git a/sapling-crypto/src/jubjub/fs.rs b/sapling-crypto/src/jubjub/fs.rs index eb10e6505..6a5157382 100644 --- a/sapling-crypto/src/jubjub/fs.rs +++ b/sapling-crypto/src/jubjub/fs.rs @@ -1,7 +1,9 @@ use byteorder::{ByteOrder, LittleEndian}; -use pairing::{BitIterator, Field, PrimeField, SqrtField, PrimeFieldRepr, PrimeFieldDecodingError, LegendreSymbol}; -use pairing::LegendreSymbol::*; -use pairing::{adc, sbb, mac_with_carry}; +use ff::{ + adc, mac_with_carry, sbb, BitIterator, Field, + LegendreSymbol::{self, *}, + PrimeField, PrimeFieldDecodingError, PrimeFieldRepr, SqrtField, +}; use super::ToUniform; diff --git a/sapling-crypto/src/jubjub/mod.rs b/sapling-crypto/src/jubjub/mod.rs index 51a000a29..e46fac55a 100644 --- a/sapling-crypto/src/jubjub/mod.rs +++ b/sapling-crypto/src/jubjub/mod.rs @@ -17,12 +17,8 @@ //! the Montgomery curve forms a group isomorphism, allowing points //! to be freely converted between the two forms. -use pairing::{ - Engine, - Field, - PrimeField, - SqrtField -}; +use ff::{Field, PrimeField, SqrtField}; +use pairing::Engine; use group_hash::group_hash; diff --git a/sapling-crypto/src/jubjub/montgomery.rs b/sapling-crypto/src/jubjub/montgomery.rs index 18d0fcb0a..76203ebc7 100644 --- a/sapling-crypto/src/jubjub/montgomery.rs +++ b/sapling-crypto/src/jubjub/montgomery.rs @@ -1,10 +1,4 @@ -use pairing::{ - Field, - SqrtField, - PrimeField, - PrimeFieldRepr, - BitIterator -}; +use ff::{BitIterator, Field, PrimeField, PrimeFieldRepr, SqrtField}; use super::{ JubjubEngine, diff --git a/sapling-crypto/src/jubjub/tests.rs b/sapling-crypto/src/jubjub/tests.rs index 421a8f704..eb7e36b78 100644 --- a/sapling-crypto/src/jubjub/tests.rs +++ b/sapling-crypto/src/jubjub/tests.rs @@ -6,7 +6,7 @@ use super::{ edwards }; -use pairing::{ +use ff::{ Field, PrimeField, PrimeFieldRepr, diff --git a/sapling-crypto/src/lib.rs b/sapling-crypto/src/lib.rs index 27d306cf8..ae3757361 100644 --- a/sapling-crypto/src/lib.rs +++ b/sapling-crypto/src/lib.rs @@ -2,6 +2,7 @@ extern crate pairing; extern crate bellman; extern crate blake2_rfc; extern crate digest; +extern crate ff; extern crate rand; extern crate byteorder; diff --git a/sapling-crypto/src/pedersen_hash.rs b/sapling-crypto/src/pedersen_hash.rs index 0590a5c88..aacca3791 100644 --- a/sapling-crypto/src/pedersen_hash.rs +++ b/sapling-crypto/src/pedersen_hash.rs @@ -1,5 +1,5 @@ +use ff::{Field, PrimeField, PrimeFieldRepr}; use jubjub::*; -use pairing::*; #[derive(Copy, Clone)] pub enum Personalization { diff --git a/sapling-crypto/src/primitives/mod.rs b/sapling-crypto/src/primitives/mod.rs index 26dafabcd..849aaf297 100644 --- a/sapling-crypto/src/primitives/mod.rs +++ b/sapling-crypto/src/primitives/mod.rs @@ -1,8 +1,4 @@ -use pairing::{ - Field, - PrimeField, - PrimeFieldRepr -}; +use ff::{Field, PrimeField, PrimeFieldRepr}; use constants; diff --git a/sapling-crypto/src/redjubjub.rs b/sapling-crypto/src/redjubjub.rs index dfae28c05..e159179d0 100644 --- a/sapling-crypto/src/redjubjub.rs +++ b/sapling-crypto/src/redjubjub.rs @@ -1,7 +1,7 @@ //! Implementation of RedJubjub, a specialization of RedDSA to the Jubjub curve. //! See section 5.4.6 of the Sapling protocol specification. -use pairing::{Field, PrimeField, PrimeFieldRepr}; +use ff::{Field, PrimeField, PrimeFieldRepr}; use rand::{Rng, Rand}; use std::io::{self, Read, Write};