This is an automated email from the ASF dual-hosted git repository. kmccusker pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-rust.git
commit a665a5cec38836d6ed774765e85684ecb926f934 Author: Kirk Baird <[email protected]> AuthorDate: Wed Jul 3 11:25:15 2019 +1000 Add gitignore and run cargo fmt --all --- .gitignore | 1 + src/aes.rs | 50 +++--- src/big.rs | 14 +- src/bls.rs | 18 +- src/bls192.rs | 20 +-- src/bls256.rs | 18 +- src/dbig.rs | 6 +- src/ecdh.rs | 11 +- src/ecp.rs | 31 ++-- src/ecp2.rs | 35 ++-- src/ecp4.rs | 4 +- src/ecp8.rs | 6 +- src/ff.rs | 4 +- src/fp.rs | 38 ++--- src/fp12.rs | 381 ++++++++++++++++++++++++------------------ src/fp16.rs | 22 +-- src/fp2.rs | 26 +-- src/fp24.rs | 360 ++++++++++++++++++++++----------------- src/fp4.rs | 32 ++-- src/fp48.rs | 362 ++++++++++++++++++++++----------------- src/fp8.rs | 23 ++- src/lib.rs | 182 ++++++++++---------- src/mpin.rs | 9 +- src/mpin192.rs | 9 +- src/mpin256.rs | 6 +- src/pair.rs | 101 ++++++----- src/pair192.rs | 67 ++++---- src/pair256.rs | 65 ++++--- src/roms/rom_anssi_32.rs | 4 +- src/roms/rom_anssi_64.rs | 4 +- src/roms/rom_bls24_32.rs | 4 +- src/roms/rom_bls24_64.rs | 4 +- src/roms/rom_bls381_32.rs | 4 +- src/roms/rom_bls381_64.rs | 4 +- src/roms/rom_bls383_32.rs | 4 +- src/roms/rom_bls383_64.rs | 4 +- src/roms/rom_bls461_32.rs | 4 +- src/roms/rom_bls461_64.rs | 4 +- src/roms/rom_bls48_32.rs | 4 +- src/roms/rom_bls48_64.rs | 4 +- src/roms/rom_bn254CX_32.rs | 4 +- src/roms/rom_bn254CX_64.rs | 5 +- src/roms/rom_bn254_32.rs | 4 +- src/roms/rom_bn254_64.rs | 6 +- src/roms/rom_brainpool_32.rs | 4 +- src/roms/rom_brainpool_64.rs | 4 +- src/roms/rom_c25519_32.rs | 4 +- src/roms/rom_c25519_64.rs | 4 +- src/roms/rom_c41417_32.rs | 4 +- src/roms/rom_c41417_64.rs | 4 +- src/roms/rom_ed25519_32.rs | 4 +- src/roms/rom_ed25519_64.rs | 4 +- src/roms/rom_fp256bn_32.rs | 5 +- src/roms/rom_fp256bn_64.rs | 4 +- src/roms/rom_fp512bn_32.rs | 4 +- src/roms/rom_fp512bn_64.rs | 4 +- src/roms/rom_goldilocks_32.rs | 4 +- src/roms/rom_goldilocks_64.rs | 4 +- src/roms/rom_hifive_32.rs | 4 +- src/roms/rom_hifive_64.rs | 4 +- src/roms/rom_nist256_32.rs | 7 +- src/roms/rom_nist256_64.rs | 4 +- src/roms/rom_nist384_32.rs | 4 +- src/roms/rom_nist384_64.rs | 5 +- src/roms/rom_nist521_32.rs | 4 +- src/roms/rom_nist521_64.rs | 4 +- src/roms/rom_nums256e_32.rs | 5 +- src/roms/rom_nums256e_64.rs | 5 +- src/roms/rom_nums256w_32.rs | 4 +- src/roms/rom_nums256w_64.rs | 4 +- src/roms/rom_nums384e_32.rs | 5 +- src/roms/rom_nums384e_64.rs | 5 +- src/roms/rom_nums384w_32.rs | 5 +- src/roms/rom_nums384w_64.rs | 5 +- src/roms/rom_nums512e_32.rs | 4 +- src/roms/rom_nums512e_64.rs | 4 +- src/roms/rom_nums512w_32.rs | 4 +- src/roms/rom_nums512w_64.rs | 4 +- src/roms/rom_rsa2048_32.rs | 2 +- src/roms/rom_rsa2048_64.rs | 2 +- src/roms/rom_rsa3072_32.rs | 2 +- src/roms/rom_rsa3072_64.rs | 2 +- src/roms/rom_rsa4096_32.rs | 2 +- src/roms/rom_rsa4096_64.rs | 2 +- src/roms/rom_secp256k1_32.rs | 4 +- src/roms/rom_secp256k1_64.rs | 4 +- src/types.rs | 1 - 87 files changed, 1146 insertions(+), 990 deletions(-) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/src/aes.rs b/src/aes.rs index eedea79..335a273 100644 --- a/src/aes.rs +++ b/src/aes.rs @@ -331,31 +331,31 @@ impl AES { while j < n { self.fkey[j] = self.fkey[j - nk] ^ AES::subbyte(AES::rotl24(self.fkey[j - 1])) ^ (RCO[k] as u32); - if nk<=6 { - for i in 1..nk { - if (i + j) >= n { - break; - } - self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1]; - } - } else { - for i in 1..4 { - if (i + j) >= n { - break; - } - self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1]; - } - - if (j + 4) < n { - self.fkey[j + 4] = self.fkey[j + 4 - nk] ^ AES::subbyte(self.fkey[j + 3]); - } - for i in 5..nk { - if (i + j) >= n { - break; - } - self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1]; - } - } + if nk <= 6 { + for i in 1..nk { + if (i + j) >= n { + break; + } + self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1]; + } + } else { + for i in 1..4 { + if (i + j) >= n { + break; + } + self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1]; + } + + if (j + 4) < n { + self.fkey[j + 4] = self.fkey[j + 4 - nk] ^ AES::subbyte(self.fkey[j + 3]); + } + for i in 5..nk { + if (i + j) >= n { + break; + } + self.fkey[i + j] = self.fkey[i + j - nk] ^ self.fkey[i + j - 1]; + } + } j += nk; k += 1; } diff --git a/src/big.rs b/src/big.rs index 7267ad4..285d82e 100644 --- a/src/big.rs +++ b/src/big.rs @@ -25,8 +25,8 @@ use super::super::arch::DChunk; use super::dbig::DBIG; use rand::RAND; -pub use super::rom::MODBYTES; pub use super::rom::BASEBITS; +pub use super::rom::MODBYTES; use std::cmp::Ordering; use std::fmt; @@ -44,7 +44,9 @@ pub struct BIG { } impl Clone for BIG { - fn clone(&self) -> BIG { *self } + fn clone(&self) -> BIG { + *self + } } impl fmt::Display for BIG { @@ -63,7 +65,7 @@ impl fmt::Debug for BIG { impl PartialEq for BIG { fn eq(&self, other: &BIG) -> bool { - if BIG::comp(self,other)==0 { + if BIG::comp(self, other) == 0 { return true; } else { return false; @@ -84,7 +86,7 @@ impl Ord for BIG { } } -impl Eq for BIG { } +impl Eq for BIG {} impl PartialOrd for BIG { fn partial_cmp(&self, other: &BIG) -> Option<Ordering> { @@ -345,7 +347,7 @@ impl BIG { res.w[0] += n as Chunk; for i in 1..len { res.shl(4); - let op = &val[i..i+1]; + let op = &val[i..i + 1]; let n = u8::from_str_radix(op, 16).unwrap(); res.w[0] += n as Chunk; } @@ -355,7 +357,7 @@ impl BIG { pub fn from_hex(val: String) -> BIG { BIG::fromstring(val) } - + pub fn to_hex(&mut self) -> String { self.tostring() } diff --git a/src/bls.rs b/src/bls.rs index 7e7fd7a..c5c1b33 100644 --- a/src/bls.rs +++ b/src/bls.rs @@ -16,13 +16,13 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -use std::str; use super::ecp::ECP; use super::ecp2::ECP2; +use std::str; //use super::fp12::FP12; +use super::big; use super::big::BIG; use super::pair; -use super::big; use super::rom; use rand::RAND; @@ -79,14 +79,14 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize { let pk = ECP2::frombytes(&w); d.neg(); -// Use new multi-pairing mechanism - let mut r=pair::initmp(); - pair::another(&mut r,&g,&d); - pair::another(&mut r,&pk,&hm); - let mut v=pair::miller(&r); + // Use new multi-pairing mechanism + let mut r = pair::initmp(); + pair::another(&mut r, &g, &d); + pair::another(&mut r, &pk, &hm); + let mut v = pair::miller(&r); -//.. or alternatively -// let mut v = pair::ate2(&g, &d, &pk, &hm); + //.. or alternatively + // let mut v = pair::ate2(&g, &d, &pk, &hm); v = pair::fexp(&v); if v.isunity() { diff --git a/src/bls192.rs b/src/bls192.rs index 20ee92e..e981ab3 100644 --- a/src/bls192.rs +++ b/src/bls192.rs @@ -16,13 +16,13 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -use std::str; use super::ecp::ECP; use super::ecp4::ECP4; +use std::str; //use super::fp24::FP24; +use super::big; use super::big::BIG; use super::pair192; -use super::big; use super::rom; use rand::RAND; @@ -79,15 +79,15 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize { let pk = ECP4::frombytes(&w); d.neg(); -// Use new multi-pairing mechanism - let mut r=pair192::initmp(); - pair192::another(&mut r,&g,&d); - pair192::another(&mut r,&pk,&hm); - let mut v=pair192::miller(&r); + // Use new multi-pairing mechanism + let mut r = pair192::initmp(); + pair192::another(&mut r, &g, &d); + pair192::another(&mut r, &pk, &hm); + let mut v = pair192::miller(&r); + + //.. or alternatively + // let mut v = pair192::ate2(&g, &d, &pk, &hm); -//.. or alternatively -// let mut v = pair192::ate2(&g, &d, &pk, &hm); - v = pair192::fexp(&v); if v.isunity() { return BLS_OK; diff --git a/src/bls256.rs b/src/bls256.rs index cdb553d..f9e4815 100644 --- a/src/bls256.rs +++ b/src/bls256.rs @@ -16,13 +16,13 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -use std::str; use super::ecp::ECP; use super::ecp8::ECP8; +use std::str; //use super::fp48::FP48; +use super::big; use super::big::BIG; use super::pair256; -use super::big; use super::rom; use rand::RAND; @@ -79,14 +79,14 @@ pub fn verify(sig: &[u8], m: &str, w: &[u8]) -> isize { let pk = ECP8::frombytes(&w); d.neg(); -// Use new multi-pairing mechanism - let mut r=pair256::initmp(); - pair256::another(&mut r,&g,&d); - pair256::another(&mut r,&pk,&hm); - let mut v=pair256::miller(&r); + // Use new multi-pairing mechanism + let mut r = pair256::initmp(); + pair256::another(&mut r, &g, &d); + pair256::another(&mut r, &pk, &hm); + let mut v = pair256::miller(&r); -//.. or alternatively -// let mut v = pair256::ate2(&g, &d, &pk, &hm); + //.. or alternatively + // let mut v = pair256::ate2(&g, &d, &pk, &hm); v = pair256::fexp(&v); if v.isunity() { diff --git a/src/dbig.rs b/src/dbig.rs index 353443a..2f5ad31 100644 --- a/src/dbig.rs +++ b/src/dbig.rs @@ -18,9 +18,9 @@ under the License. */ use super::super::arch; +use super::super::arch::Chunk; use super::big; use super::big::BIG; -use super::super::arch::Chunk; #[derive(Copy)] pub struct DBIG { @@ -28,7 +28,9 @@ pub struct DBIG { } impl Clone for DBIG { - fn clone(&self) -> DBIG { *self } + fn clone(&self) -> DBIG { + *self + } } impl DBIG { diff --git a/src/ecdh.rs b/src/ecdh.rs index 9b49e18..2f9e516 100644 --- a/src/ecdh.rs +++ b/src/ecdh.rs @@ -17,19 +17,18 @@ specific language governing permissions and limitations under the License. */ +use super::big; +use super::big::BIG; use super::ecp; use super::ecp::ECP; -use super::big::BIG; use super::rom; -use super::big; -use rand::RAND; +use aes; +use aes::AES; use hash256::HASH256; use hash384::HASH384; use hash512::HASH512; -use aes; -use aes::AES; - +use rand::RAND; pub const INVALID_PUBLIC_KEY: isize = -2; pub const ERROR: isize = -3; diff --git a/src/ecp.rs b/src/ecp.rs index 9e7b29c..a5c90c8 100644 --- a/src/ecp.rs +++ b/src/ecp.rs @@ -17,15 +17,15 @@ specific language governing permissions and limitations under the License. */ -use super::fp::FP; -use super::big::BIG; use super::big; +use super::big::BIG; +use super::fp::FP; use super::rom; -pub use super::rom::{CURVETYPE, CURVE_PAIRING_TYPE, SEXTIC_TWIST, SIGN_OF_X, HASH_TYPE, AESKEY}; -pub use types::CurveType; -use std::str::SplitWhitespace; +pub use super::rom::{AESKEY, CURVETYPE, CURVE_PAIRING_TYPE, HASH_TYPE, SEXTIC_TWIST, SIGN_OF_X}; use std::fmt; +use std::str::SplitWhitespace; +pub use types::CurveType; #[derive(Copy, Clone)] pub struct ECP { @@ -41,15 +41,15 @@ impl PartialEq for ECP { } impl fmt::Display for ECP { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z) - } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z) + } } impl fmt::Debug for ECP { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z) - } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "ECP: [ {}, {}, {} ]", self.x, self.y, self.z) + } } #[allow(non_snake_case)] @@ -193,7 +193,7 @@ impl ECP { /* test for O point-at-infinity */ pub fn is_infinity(&self) -> bool { match CURVETYPE { - CurveType::EDWARDS=> self.x.iszilch() && self.y.equals(&self.z), + CurveType::EDWARDS => self.x.iszilch() && self.y.equals(&self.z), CurveType::WEIERSTRASS => self.x.iszilch() && self.z.iszilch(), CurveType::MONTGOMERY => self.z.iszilch(), } @@ -440,7 +440,12 @@ impl ECP { } pub fn to_hex(&self) -> String { - format!("{} {} {}", self.x.to_hex(), self.y.to_hex(), self.z.to_hex()) + format!( + "{} {} {}", + self.x.to_hex(), + self.y.to_hex(), + self.z.to_hex() + ) } pub fn from_hex_iter(iter: &mut SplitWhitespace) -> ECP { diff --git a/src/ecp2.rs b/src/ecp2.rs index afd9376..c7445fa 100644 --- a/src/ecp2.rs +++ b/src/ecp2.rs @@ -17,14 +17,14 @@ specific language governing permissions and limitations under the License. */ -use super::rom; use super::big; +use super::big::BIG; use super::ecp; use super::fp2::FP2; -use super::big::BIG; -use types::{SexticTwist, CurvePairingType, SignOfX}; -use std::str::SplitWhitespace; +use super::rom; use std::fmt; +use std::str::SplitWhitespace; +use types::{CurvePairingType, SexticTwist, SignOfX}; #[derive(Copy, Clone)] pub struct ECP2 { @@ -34,21 +34,21 @@ pub struct ECP2 { } impl PartialEq for ECP2 { - fn eq(&self, other: &ECP2) -> bool { - self.equals(other) - } + fn eq(&self, other: &ECP2) -> bool { + self.equals(other) + } } impl fmt::Display for ECP2 { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z) - } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z) + } } impl fmt::Debug for ECP2 { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z) - } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "ECP2: [ {}, {}, {} ]", self.x, self.y, self.z) + } } #[allow(non_snake_case)] @@ -291,14 +291,19 @@ impl ECP2 { } pub fn to_hex(&self) -> String { - format!("{} {} {}", self.x.to_hex(), self.y.to_hex(), self.z.to_hex()) + format!( + "{} {} {}", + self.x.to_hex(), + self.y.to_hex(), + self.z.to_hex() + ) } pub fn from_hex_iter(iter: &mut SplitWhitespace) -> ECP2 { ECP2 { x: FP2::from_hex_iter(iter), y: FP2::from_hex_iter(iter), - z: FP2::from_hex_iter(iter) + z: FP2::from_hex_iter(iter), } } diff --git a/src/ecp4.rs b/src/ecp4.rs index d34b0fd..31a92e1 100644 --- a/src/ecp4.rs +++ b/src/ecp4.rs @@ -17,12 +17,12 @@ specific language governing permissions and limitations under the License. */ -use super::rom; use super::big; +use super::big::BIG; use super::ecp; use super::fp2::FP2; use super::fp4::FP4; -use super::big::BIG; +use super::rom; use types::{SexticTwist, SignOfX}; //use std::str::SplitWhitespace; diff --git a/src/ecp8.rs b/src/ecp8.rs index a6d32a4..99953dc 100644 --- a/src/ecp8.rs +++ b/src/ecp8.rs @@ -17,13 +17,13 @@ specific language governing permissions and limitations under the License. */ -use super::rom; use super::big; +use super::big::BIG; use super::ecp; use super::fp2::FP2; use super::fp4::FP4; use super::fp8::FP8; -use super::big::BIG; +use super::rom; use types::{SexticTwist, SignOfX}; pub struct ECP8 { @@ -914,7 +914,7 @@ impl ECP8 { // Number of bits mt.zero(); for i in 0..16 { - t[i].norm(); + t[i].norm(); mt.or(&t[i]); } diff --git a/src/ff.rs b/src/ff.rs index 4737ee8..f1abc00 100644 --- a/src/ff.rs +++ b/src/ff.rs @@ -17,10 +17,10 @@ specific language governing permissions and limitations under the License. */ +use super::super::arch::Chunk; use super::big; -use super::dbig::DBIG; use super::big::BIG; -use super::super::arch::Chunk; +use super::dbig::DBIG; use rand::RAND; use super::super::arch::DChunk; diff --git a/src/fp.rs b/src/fp.rs index 57345c1..bd790d3 100644 --- a/src/fp.rs +++ b/src/fp.rs @@ -17,14 +17,14 @@ specific language governing permissions and limitations under the License. */ +use super::super::arch; +use super::super::arch::Chunk; use super::big; use super::big::BIG; use super::dbig::DBIG; use super::rom; -use super::super::arch::Chunk; -use super::super::arch; -use types::ModType; use std::str::FromStr; +use types::ModType; #[derive(Copy, Clone)] pub struct FP { @@ -50,14 +50,14 @@ impl fmt::Debug for FP { } } -pub use super::rom::{MODBITS, MOD8, MODTYPE, SH}; -use std::str::SplitWhitespace; +pub use super::rom::{MOD8, MODBITS, MODTYPE, SH}; use std::fmt; +use std::str::SplitWhitespace; -pub const FEXCESS:i32 = (((1 as i32)<<SH)-1); -pub const OMASK:Chunk = (-1)<<(MODBITS%big::BASEBITS); -pub const TBITS:usize=MODBITS%big::BASEBITS; // Number of active bits in top word -pub const TMASK:Chunk=(1<<TBITS)-1; +pub const FEXCESS: i32 = (((1 as i32) << SH) - 1); +pub const OMASK: Chunk = (-1) << (MODBITS % big::BASEBITS); +pub const TBITS: usize = MODBITS % big::BASEBITS; // Number of active bits in top word +pub const TMASK: Chunk = (1 << TBITS) - 1; impl FP { /* Constructors */ @@ -91,8 +91,8 @@ impl FP { pub fn nres(&mut self) { if MODTYPE != ModType::PSEUDO_MERSENNE && MODTYPE != ModType::GENERALISED_MERSENNE { - let r=BIG::new_ints(&rom::R2MODP); - let mut d=BIG::mul(&(self.x),&r); + let r = BIG::new_ints(&rom::R2MODP); + let mut d = BIG::mul(&(self.x), &r); self.x.copy(&FP::modulo(&mut d)); self.xes = 2; } else { @@ -105,7 +105,7 @@ impl FP { let x = iter.next().unwrap(); FP { x: BIG::from_hex(x.to_string()), - xes + xes, } } @@ -120,10 +120,10 @@ impl FP { format!("{} {}", self.xes, big) } -/* convert back to regular form */ + /* convert back to regular form */ pub fn redc(&mut self) -> BIG { if MODTYPE != ModType::PSEUDO_MERSENNE && MODTYPE != ModType::GENERALISED_MERSENNE { - let mut d=DBIG::new_scopy(&(self.x)); + let mut d = DBIG::new_scopy(&(self.x)); return FP::modulo(&mut d); } else { let r = BIG::new_copy(&(self.x)); @@ -134,9 +134,9 @@ impl FP { /* reduce a DBIG to a BIG using the appropriate form of the modulus */ /* dd */ pub fn modulo(d: &mut DBIG) -> BIG { - if MODTYPE==ModType::PSEUDO_MERSENNE { - let mut b=BIG::new(); - let mut t=d.split(MODBITS); + if MODTYPE == ModType::PSEUDO_MERSENNE { + let mut b = BIG::new(); + let mut t = d.split(MODBITS); b.dcopy(&d); let v = t.pmul(rom::MCONST as isize); @@ -149,8 +149,8 @@ impl FP { t.norm(); return t; } - - if MODTYPE==ModType::MONTGOMERY_FRIENDLY { + + if MODTYPE == ModType::MONTGOMERY_FRIENDLY { let mut b = BIG::new(); for i in 0..big::NLEN { let x = d.w[i]; diff --git a/src/fp12.rs b/src/fp12.rs index 9c06a3e..745814f 100644 --- a/src/fp12.rs +++ b/src/fp12.rs @@ -18,19 +18,19 @@ under the License. */ use super::big; +use super::big::BIG; +use super::ecp; use super::fp2::FP2; use super::fp4::FP4; -use super::big::BIG; use super::rom; -use types::SexticTwist; use std::str::SplitWhitespace; -use super::ecp; +use types::SexticTwist; -pub const ZERO: usize=0; -pub const ONE: usize=1; -pub const SPARSER: usize=2; -pub const SPARSE: usize=3; -pub const DENSE: usize=4; +pub const ZERO: usize = 0; +pub const ONE: usize = 1; +pub const SPARSER: usize = 2; +pub const SPARSE: usize = 3; +pub const DENSE: usize = 4; #[derive(Copy, Clone)] pub struct FP12 { @@ -41,9 +41,9 @@ pub struct FP12 { } impl PartialEq for FP12 { - fn eq(&self, other: &FP12) -> bool { - self.equals(other) - } + fn eq(&self, other: &FP12) -> bool { + self.equals(other) + } } impl FP12 { @@ -52,12 +52,12 @@ impl FP12 { a: FP4::new(), b: FP4::new(), c: FP4::new(), - stype: ZERO, + stype: ZERO, } } - pub fn settype(&mut self,t: usize) { - self.stype = t; + pub fn settype(&mut self, t: usize) { + self.stype = t; } pub fn gettype(&self) -> usize { @@ -69,11 +69,11 @@ impl FP12 { f.a.copy(&FP4::new_int(a)); f.b.zero(); f.c.zero(); - if a == 1 { - f.stype=ONE; - } else { - f.stype=SPARSER; - } + if a == 1 { + f.stype = ONE; + } else { + f.stype = SPARSER; + } return f; } @@ -82,7 +82,7 @@ impl FP12 { f.a.copy(&x.a); f.b.copy(&x.b); f.c.copy(&x.c); - f.stype=x.stype; + f.stype = x.stype; return f; } @@ -91,7 +91,7 @@ impl FP12 { g.a.copy(d); g.b.copy(e); g.c.copy(f); - g.stype=DENSE; + g.stype = DENSE; return g; } @@ -100,7 +100,7 @@ impl FP12 { g.a.copy(d); g.b.zero(); g.c.zero(); - g.stype=SPARSER; + g.stype = SPARSER; return g; } @@ -129,9 +129,9 @@ impl FP12 { self.a.cmove(&g.a, d); self.b.cmove(&g.b, d); self.c.cmove(&g.c, d); - let mut u=d as usize; - u=!(u-1); - self.stype^=(self.stype^g.stype)&u; + let mut u = d as usize; + u = !(u - 1); + self.stype ^= (self.stype ^ g.stype) & u; } /* return 1 if b==c, no branching */ @@ -175,20 +175,20 @@ impl FP12 { pub fn geta(&mut self) -> FP4 { return self.a; -// let f = FP4::new_copy(&self.a); -// return f; + // let f = FP4::new_copy(&self.a); + // return f; } pub fn getb(&mut self) -> FP4 { return self.b; -// let f = FP4::new_copy(&self.b); -// return f; + // let f = FP4::new_copy(&self.b); + // return f; } pub fn getc(&mut self) -> FP4 { return self.c; -// let f = FP4::new_copy(&self.c); -// return f; + // let f = FP4::new_copy(&self.c); + // return f; } /* copy self=x */ @@ -196,7 +196,7 @@ impl FP12 { self.a.copy(&x.a); self.b.copy(&x.b); self.c.copy(&x.c); - self.stype=x.stype; + self.stype = x.stype; } /* set self=1 */ @@ -204,7 +204,7 @@ impl FP12 { self.a.one(); self.b.zero(); self.c.zero(); - self.stype=ONE; + self.stype = ONE; } /* set self=0 */ @@ -212,7 +212,7 @@ impl FP12 { self.a.zero(); self.b.zero(); self.c.zero(); - self.stype=ZERO; + self.stype = ZERO; } /* this=conj(this) */ @@ -260,13 +260,13 @@ impl FP12 { self.c.dbl(); self.b.add(&b); self.c.add(&c); - self.stype=DENSE; + self.stype = DENSE; self.reduce(); } /* Chung-Hasan SQR2 method from http://cacr.uwaterloo.ca/techreports/2006/cacr2006-24.pdf */ pub fn sqr(&mut self) { - if self.stype==ONE { + if self.stype == ONE { return; } @@ -304,10 +304,10 @@ impl FP12 { self.b.copy(&c); self.b.add(&d); self.c.add(&a); - if self.stype==SPARSER { - self.stype=SPARSE; + if self.stype == SPARSER { + self.stype = SPARSE; } else { - self.stype=DENSE; + self.stype = DENSE; } self.norm(); } @@ -379,128 +379,144 @@ impl FP12 { z3.times_i(); self.a.copy(&z0); self.a.add(&z3); - self.stype=DENSE; + self.stype = DENSE; self.norm(); } - -/* FP12 full multiplication w=w*y */ -/* Supports sparse multiplicands */ -/* Usually w is denser than y */ + /* FP12 full multiplication w=w*y */ + /* Supports sparse multiplicands */ + /* Usually w is denser than y */ pub fn ssmul(&mut self, y: &FP12) { - if self.stype==ONE { + if self.stype == ONE { self.copy(&y); return; } - if y.stype==ONE { + if y.stype == ONE { return; } - if y.stype>=SPARSE { - let mut z0=FP4::new_copy(&self.a); - let mut z1=FP4::new_int(0); - let mut z2=FP4::new_int(0); - let mut z3=FP4::new_int(0); + if y.stype >= SPARSE { + let mut z0 = FP4::new_copy(&self.a); + let mut z1 = FP4::new_int(0); + let mut z2 = FP4::new_int(0); + let mut z3 = FP4::new_int(0); z0.mul(&y.a); - if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE { - if y.stype==SPARSE || self.stype==SPARSE { - - let mut ga=FP2::new_int(0); - let mut gb=FP2::new_int(0); + if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE { + if y.stype == SPARSE || self.stype == SPARSE { + let mut ga = FP2::new_int(0); + let mut gb = FP2::new_int(0); gb.copy(&self.b.getb()); gb.mul(&y.b.getb()); ga.zero(); - if y.stype!=SPARSE { + if y.stype != SPARSE { ga.copy(&self.b.getb()); ga.mul(&y.b.geta()); } - if self.stype!=SPARSE { + if self.stype != SPARSE { ga.copy(&self.b.geta()); ga.mul(&y.b.getb()); } - z2.set_fp2s(&ga,&gb); + z2.set_fp2s(&ga, &gb); z2.times_i(); } else { z2.copy(&self.b); z2.mul(&y.b); } - } else { - z2.copy(&self.b); - z2.mul(&y.b); + } else { + z2.copy(&self.b); + z2.mul(&y.b); } - let mut t0=FP4::new_copy(&self.a); - let mut t1=FP4::new_copy(&y.a); - t0.add(&self.b); t0.norm(); - t1.add(&y.b); t1.norm(); - - z1.copy(&t0); z1.mul(&t1); - t0.copy(&self.b); t0.add(&self.c); t0.norm(); - t1.copy(&y.b); t1.add(&y.c); t1.norm(); - - z3.copy(&t0); z3.mul(&t1); + let mut t0 = FP4::new_copy(&self.a); + let mut t1 = FP4::new_copy(&y.a); + t0.add(&self.b); + t0.norm(); + t1.add(&y.b); + t1.norm(); + + z1.copy(&t0); + z1.mul(&t1); + t0.copy(&self.b); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.b); + t1.add(&y.c); + t1.norm(); + + z3.copy(&t0); + z3.mul(&t1); + + t0.copy(&z0); + t0.neg(); + t1.copy(&z2); + t1.neg(); - t0.copy(&z0); t0.neg(); - t1.copy(&z2); t1.neg(); - z1.add(&t0); - self.b.copy(&z1); self.b.add(&t1); + self.b.copy(&z1); + self.b.add(&t1); z3.add(&t1); z2.add(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); - t1.copy(&y.a); t1.add(&y.c); t1.norm(); - + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.a); + t1.add(&y.c); + t1.norm(); + t0.mul(&t1); z2.add(&t0); - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { - if y.stype==SPARSE || self.stype==SPARSE { - - let mut ga=FP2::new_int(0); - let mut gb=FP2::new_int(0); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + if y.stype == SPARSE || self.stype == SPARSE { + let mut ga = FP2::new_int(0); + let mut gb = FP2::new_int(0); ga.copy(&self.c.geta()); ga.mul(&y.c.geta()); gb.zero(); - if y.stype!=SPARSE { + if y.stype != SPARSE { gb.copy(&self.c.geta()); gb.mul(&y.c.getb()); } - if self.stype!=SPARSE { + if self.stype != SPARSE { gb.copy(&self.c.getb()); gb.mul(&y.c.geta()); } - t0.set_fp2s(&ga,&gb); + t0.set_fp2s(&ga, &gb); } else { t0.copy(&self.c); t0.mul(&y.c); } - } else { + } else { t0.copy(&self.c); t0.mul(&y.c); } - t1.copy(&t0); t1.neg(); + t1.copy(&t0); + t1.neg(); - self.c.copy(&z2); self.c.add(&t1); + self.c.copy(&z2); + self.c.add(&t1); z3.add(&t1); t0.times_i(); self.b.add(&t0); z3.norm(); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); + self.a.copy(&z0); + self.a.add(&z3); } else { - if self.stype==SPARSER { + if self.stype == SPARSER { self.smul(&y); return; } - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { // dense by sparser - 13m - let mut z0=FP4::new_copy(&self.a); - let mut z2=FP4::new_copy(&self.b); - let mut z3=FP4::new_copy(&self.b); - let mut t0=FP4::new_int(0); - let mut t1=FP4::new_copy(&y.a); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + // dense by sparser - 13m + let mut z0 = FP4::new_copy(&self.a); + let mut z2 = FP4::new_copy(&self.b); + let mut z3 = FP4::new_copy(&self.b); + let mut t0 = FP4::new_int(0); + let mut t1 = FP4::new_copy(&y.a); z0.mul(&y.a); z2.pmul(&y.b.geta()); @@ -514,8 +530,10 @@ impl FP12 { z3.norm(); z3.pmul(&y.b.geta()); - t0.copy(&z0); t0.neg(); - t1.copy(&z2); t1.neg(); + t0.copy(&z0); + t0.neg(); + t1.copy(&z2); + t1.neg(); self.b.add(&t0); @@ -523,97 +541,121 @@ impl FP12 { z3.add(&t1); z2.add(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); z3.norm(); t0.mul(&y.a); - self.c.copy(&z2); self.c.add(&t0); + self.c.copy(&z2); + self.c.add(&t0); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); + self.a.copy(&z0); + self.a.add(&z3); } - if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE { - + if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE { let mut z0 = FP4::new_copy(&self.a); let mut z1 = FP4::new(); let mut z2 = FP4::new(); let mut z3 = FP4::new(); let mut t0 = FP4::new_copy(&self.a); let mut t1 = FP4::new(); - + z0.mul(&y.a); - t0.add(&self.b); t0.norm(); + t0.add(&self.b); + t0.norm(); - z1.copy(&t0); z1.mul(&y.a); - t0.copy(&self.b); t0.add(&self.c); + z1.copy(&t0); + z1.mul(&y.a); + t0.copy(&self.b); + t0.add(&self.c); t0.norm(); z3.copy(&t0); z3.pmul(&y.c.getb()); z3.times_i(); - t0.copy(&z0); t0.neg(); + t0.copy(&z0); + t0.neg(); z1.add(&t0); self.b.copy(&z1); z2.copy(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); - t1.copy(&y.a); t1.add(&y.c); t1.norm(); + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.a); + t1.add(&y.c); + t1.norm(); t0.mul(&t1); z2.add(&t0); t0.copy(&self.c); - + t0.pmul(&y.c.getb()); t0.times_i(); - t1.copy(&t0); t1.neg(); + t1.copy(&t0); + t1.neg(); - self.c.copy(&z2); self.c.add(&t1); + self.c.copy(&z2); + self.c.add(&t1); z3.add(&t1); t0.times_i(); self.b.add(&t0); z3.norm(); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); - } + self.a.copy(&z0); + self.a.add(&z3); + } } - self.stype=DENSE; + self.stype = DENSE; self.norm(); } /* Special case of multiplication arises from special form of ATE pairing line function */ pub fn smul(&mut self, y: &FP12) { - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { - let mut w1=FP2::new_copy(&self.a.geta()); - let mut w2=FP2::new_copy(&self.a.getb()); - let mut w3=FP2::new_copy(&self.b.geta()); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + let mut w1 = FP2::new_copy(&self.a.geta()); + let mut w2 = FP2::new_copy(&self.a.getb()); + let mut w3 = FP2::new_copy(&self.b.geta()); w1.mul(&y.a.geta()); w2.mul(&y.a.getb()); w3.mul(&y.b.geta()); - let mut ta=FP2::new_copy(&self.a.geta()); - let mut tb=FP2::new_copy(&y.a.geta()); - ta.add(&self.a.getb()); ta.norm(); - tb.add(&y.a.getb()); tb.norm(); - let mut tc=FP2::new_copy(&ta); + let mut ta = FP2::new_copy(&self.a.geta()); + let mut tb = FP2::new_copy(&y.a.geta()); + ta.add(&self.a.getb()); + ta.norm(); + tb.add(&y.a.getb()); + tb.norm(); + let mut tc = FP2::new_copy(&ta); tc.mul(&tb); - let mut t=FP2::new_copy(&w1); + let mut t = FP2::new_copy(&w1); t.add(&w2); t.neg(); tc.add(&t); - ta.copy(&self.a.geta()); ta.add(&self.b.geta()); ta.norm(); - tb.copy(&y.a.geta()); tb.add(&y.b.geta()); tb.norm(); - let mut td=FP2::new_copy(&ta); + ta.copy(&self.a.geta()); + ta.add(&self.b.geta()); + ta.norm(); + tb.copy(&y.a.geta()); + tb.add(&y.b.geta()); + tb.norm(); + let mut td = FP2::new_copy(&ta); td.mul(&tb); t.copy(&w1); t.add(&w3); t.neg(); td.add(&t); - ta.copy(&self.a.getb()); ta.add(&self.b.geta()); ta.norm(); - tb.copy(&y.a.getb()); tb.add(&y.b.geta()); tb.norm(); - let mut te=FP2::new_copy(&ta); + ta.copy(&self.a.getb()); + ta.add(&self.b.geta()); + ta.norm(); + tb.copy(&y.a.getb()); + tb.add(&y.b.geta()); + tb.norm(); + let mut te = FP2::new_copy(&ta); te.mul(&tb); t.copy(&w2); t.add(&w3); @@ -623,44 +665,54 @@ impl FP12 { w2.mul_ip(); w1.add(&w2); - self.a.set_fp2s(&w1,&tc); - self.b.set_fp2s(&td,&te); - self.c.set_fp2(&w3); - + self.a.set_fp2s(&w1, &tc); + self.b.set_fp2s(&td, &te); + self.c.set_fp2(&w3); + self.a.norm(); self.b.norm(); } else { - let mut w1=FP2::new_copy(&self.a.geta()); - let mut w2=FP2::new_copy(&self.a.getb()); - let mut w3=FP2::new_copy(&self.c.getb()); + let mut w1 = FP2::new_copy(&self.a.geta()); + let mut w2 = FP2::new_copy(&self.a.getb()); + let mut w3 = FP2::new_copy(&self.c.getb()); w1.mul(&y.a.geta()); w2.mul(&y.a.getb()); w3.mul(&y.c.getb()); - let mut ta=FP2::new_copy(&self.a.geta()); - let mut tb=FP2::new_copy(&y.a.geta()); - ta.add(&self.a.getb()); ta.norm(); - tb.add(&y.a.getb()); tb.norm(); - let mut tc=FP2::new_copy(&ta); + let mut ta = FP2::new_copy(&self.a.geta()); + let mut tb = FP2::new_copy(&y.a.geta()); + ta.add(&self.a.getb()); + ta.norm(); + tb.add(&y.a.getb()); + tb.norm(); + let mut tc = FP2::new_copy(&ta); tc.mul(&tb); - let mut t=FP2::new_copy(&w1); + let mut t = FP2::new_copy(&w1); t.add(&w2); t.neg(); tc.add(&t); - ta.copy(&self.a.geta()); ta.add(&self.c.getb()); ta.norm(); - tb.copy(&y.a.geta()); tb.add(&y.c.getb()); tb.norm(); - let mut td=FP2::new_copy(&ta); + ta.copy(&self.a.geta()); + ta.add(&self.c.getb()); + ta.norm(); + tb.copy(&y.a.geta()); + tb.add(&y.c.getb()); + tb.norm(); + let mut td = FP2::new_copy(&ta); td.mul(&tb); t.copy(&w1); t.add(&w3); t.neg(); td.add(&t); - ta.copy(&self.a.getb()); ta.add(&self.c.getb()); ta.norm(); - tb.copy(&y.a.getb()); tb.add(&y.c.getb()); tb.norm(); - let mut te=FP2::new_copy(&ta); + ta.copy(&self.a.getb()); + ta.add(&self.c.getb()); + ta.norm(); + tb.copy(&y.a.getb()); + tb.add(&y.c.getb()); + tb.norm(); + let mut te = FP2::new_copy(&ta); te.mul(&tb); t.copy(&w2); t.add(&w3); @@ -669,20 +721,20 @@ impl FP12 { w2.mul_ip(); w1.add(&w2); - self.a.set_fp2s(&w1,&tc); + self.a.set_fp2s(&w1, &tc); w3.mul_ip(); w3.norm(); - self.b.set_fp2h(&w3); + self.b.set_fp2h(&w3); te.norm(); te.mul_ip(); - self.c.set_fp2s(&te,&td); + self.c.set_fp2s(&te, &td); self.a.norm(); self.c.norm(); - } - self.stype=SPARSE; + } + self.stype = SPARSE; } /* self=1/self */ @@ -730,7 +782,7 @@ impl FP12 { self.b.mul(&f3); self.c.copy(&f2); self.c.mul(&f3); - self.stype=DENSE; + self.stype = DENSE; } /* self=self^p using Frobenius */ @@ -747,7 +799,7 @@ impl FP12 { self.b.pmul(f); self.c.pmul(&f2); - self.stype=DENSE; + self.stype = DENSE; } /* trace function */ @@ -902,7 +954,12 @@ impl FP12 { } pub fn to_hex(&self) -> String { - format!("{} {} {}", self.a.to_hex(), self.b.to_hex(), self.c.to_hex()) + format!( + "{} {} {}", + self.a.to_hex(), + self.b.to_hex(), + self.c.to_hex() + ) } pub fn from_hex_iter(iter: &mut SplitWhitespace) -> FP12 { @@ -910,7 +967,7 @@ impl FP12 { a: FP4::from_hex_iter(iter), b: FP4::from_hex_iter(iter), c: FP4::from_hex_iter(iter), - stype: DENSE + stype: DENSE, } } diff --git a/src/fp16.rs b/src/fp16.rs index c579db4..4ecf744 100644 --- a/src/fp16.rs +++ b/src/fp16.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ +use super::big::BIG; use super::fp2::FP2; use super::fp8::FP8; -use super::big::BIG; //use std::str::SplitWhitespace; #[derive(Copy, Clone)] @@ -64,19 +64,19 @@ impl FP16 { return f; } - pub fn set_fp8s(&mut self,c: &FP8, d: &FP8) { + pub fn set_fp8s(&mut self, c: &FP8, d: &FP8) { self.a.copy(&c); - self.b.copy(&d); + self.b.copy(&d); } - pub fn set_fp8(&mut self,c: &FP8) { + pub fn set_fp8(&mut self, c: &FP8) { self.a.copy(&c); - self.b.zero(); + self.b.zero(); } - pub fn set_fp8h(&mut self,c: &FP8) { + pub fn set_fp8h(&mut self, c: &FP8) { self.b.copy(&c); - self.a.zero(); + self.a.zero(); } /* reduce components mod Modulus */ @@ -119,14 +119,14 @@ impl FP16 { pub fn geta(&self) -> FP8 { return self.a; -// let f = FP8::new_copy(&self.a); -// return f; + // let f = FP8::new_copy(&self.a); + // return f; } /* extract imaginary part b */ pub fn getb(&self) -> FP8 { return self.b; -// let f = FP8::new_copy(&self.b); -// return f; + // let f = FP8::new_copy(&self.b); + // return f; } /* test self=x */ diff --git a/src/fp2.rs b/src/fp2.rs index c848f19..be6c1df 100644 --- a/src/fp2.rs +++ b/src/fp2.rs @@ -17,13 +17,13 @@ specific language governing permissions and limitations under the License. */ -use super::fp; -use super::fp::FP; use super::big::BIG; use super::dbig::DBIG; +use super::fp; +use super::fp::FP; use super::rom; -use std::str::SplitWhitespace; use std::fmt; +use std::str::SplitWhitespace; #[derive(Copy, Clone)] pub struct FP2 { @@ -32,21 +32,21 @@ pub struct FP2 { } impl PartialEq for FP2 { - fn eq(&self, other: &FP2) -> bool { - self.equals(other) - } + fn eq(&self, other: &FP2) -> bool { + self.equals(other) + } } impl fmt::Display for FP2 { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "FP2: [ {}, {} ]", self.a, self.b) - } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "FP2: [ {}, {} ]", self.a, self.b) + } } impl fmt::Debug for FP2 { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "FP2: [ {}, {} ]", self.a, self.b) - } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "FP2: [ {}, {} ]", self.a, self.b) + } } impl FP2 { @@ -331,7 +331,7 @@ impl FP2 { pub fn from_hex_iter(iter: &mut SplitWhitespace) -> FP2 { FP2 { a: FP::from_hex_iter(iter), - b: FP::from_hex_iter(iter) + b: FP::from_hex_iter(iter), } } diff --git a/src/fp24.rs b/src/fp24.rs index 5f154b3..4041b1f 100644 --- a/src/fp24.rs +++ b/src/fp24.rs @@ -18,20 +18,20 @@ under the License. */ use super::big; +use super::big::BIG; use super::ecp; use super::fp2::FP2; use super::fp4::FP4; use super::fp8::FP8; -use super::big::BIG; use super::rom; -use types::{SexticTwist}; +use types::SexticTwist; //use std::str::SplitWhitespace; -pub const ZERO: usize=0; -pub const ONE: usize=1; -pub const SPARSER: usize=2; -pub const SPARSE: usize=3; -pub const DENSE: usize=4; +pub const ZERO: usize = 0; +pub const ONE: usize = 1; +pub const SPARSER: usize = 2; +pub const SPARSE: usize = 3; +pub const DENSE: usize = 4; #[derive(Copy, Clone)] pub struct FP24 { @@ -51,8 +51,8 @@ impl FP24 { } } - pub fn settype(&mut self,t: usize) { - self.stype = t; + pub fn settype(&mut self, t: usize) { + self.stype = t; } pub fn gettype(&self) -> usize { @@ -64,11 +64,11 @@ impl FP24 { f.a.copy(&FP8::new_int(a)); f.b.zero(); f.c.zero(); - if a == 1 { - f.stype=ONE; - } else { - f.stype=SPARSER; - } + if a == 1 { + f.stype = ONE; + } else { + f.stype = SPARSER; + } return f; } @@ -77,7 +77,7 @@ impl FP24 { f.a.copy(&x.a); f.b.copy(&x.b); f.c.copy(&x.c); - f.stype=x.stype; + f.stype = x.stype; return f; } @@ -86,7 +86,7 @@ impl FP24 { g.a.copy(d); g.b.copy(e); g.c.copy(f); - g.stype=DENSE; + g.stype = DENSE; return g; } @@ -95,7 +95,7 @@ impl FP24 { g.a.copy(d); g.b.zero(); g.c.zero(); - g.stype=SPARSER; + g.stype = SPARSER; return g; } @@ -123,9 +123,9 @@ impl FP24 { self.a.cmove(&g.a, d); self.b.cmove(&g.b, d); self.c.cmove(&g.c, d); - let mut u=d as usize; - u=!(u-1); - self.stype^=(self.stype^g.stype)&u; + let mut u = d as usize; + u = !(u - 1); + self.stype ^= (self.stype ^ g.stype) & u; } /* return 1 if b==c, no branching */ @@ -169,20 +169,20 @@ impl FP24 { pub fn geta(&mut self) -> FP8 { return self.a; -// let f = FP8::new_copy(&self.a); -// return f; + // let f = FP8::new_copy(&self.a); + // return f; } pub fn getb(&mut self) -> FP8 { return self.b; -// let f = FP8::new_copy(&self.b); -// return f; + // let f = FP8::new_copy(&self.b); + // return f; } pub fn getc(&mut self) -> FP8 { return self.c; -// let f = FP8::new_copy(&self.c); -// return f; + // let f = FP8::new_copy(&self.c); + // return f; } /* copy self=x */ @@ -190,7 +190,7 @@ impl FP24 { self.a.copy(&x.a); self.b.copy(&x.b); self.c.copy(&x.c); - self.stype=x.stype; + self.stype = x.stype; } /* set self=1 */ @@ -198,7 +198,7 @@ impl FP24 { self.a.one(); self.b.zero(); self.c.zero(); - self.stype=ONE; + self.stype = ONE; } /* set self=0 */ @@ -206,7 +206,7 @@ impl FP24 { self.a.zero(); self.b.zero(); self.c.zero(); - self.stype=ZERO; + self.stype = ZERO; } /* this=conj(this) */ @@ -254,13 +254,13 @@ impl FP24 { self.c.dbl(); self.b.add(&b); self.c.add(&c); - self.stype=DENSE; + self.stype = DENSE; self.reduce(); } /* Chung-Hasan SQR2 method from http://cacr.uwaterloo.ca/techreports/2006/cacr2006-24.pdf */ pub fn sqr(&mut self) { - if self.stype==ONE { + if self.stype == ONE { return; } let mut a = FP8::new_copy(&self.a); @@ -297,10 +297,10 @@ impl FP24 { self.b.copy(&c); self.b.add(&d); self.c.add(&a); - if self.stype==SPARSER { - self.stype=SPARSE; + if self.stype == SPARSER { + self.stype = SPARSE; } else { - self.stype=DENSE; + self.stype = DENSE; } self.norm(); } @@ -373,127 +373,144 @@ impl FP24 { z3.times_i(); self.a.copy(&z0); self.a.add(&z3); - self.stype=DENSE; + self.stype = DENSE; self.norm(); } -/* FP24 full multiplication w=w*y */ -/* Supports sparse multiplicands */ -/* Usually w is denser than y */ + /* FP24 full multiplication w=w*y */ + /* Supports sparse multiplicands */ + /* Usually w is denser than y */ pub fn ssmul(&mut self, y: &FP24) { - if self.stype==ONE { + if self.stype == ONE { self.copy(&y); return; } - if y.stype==ONE { + if y.stype == ONE { return; } - if y.stype>=SPARSE { - let mut z0=FP8::new_copy(&self.a); - let mut z1=FP8::new_int(0); - let mut z2=FP8::new_int(0); - let mut z3=FP8::new_int(0); + if y.stype >= SPARSE { + let mut z0 = FP8::new_copy(&self.a); + let mut z1 = FP8::new_int(0); + let mut z2 = FP8::new_int(0); + let mut z3 = FP8::new_int(0); z0.mul(&y.a); - if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE { - if y.stype==SPARSE || self.stype==SPARSE { - - let mut ga=FP4::new_int(0); - let mut gb=FP4::new_int(0); + if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE { + if y.stype == SPARSE || self.stype == SPARSE { + let mut ga = FP4::new_int(0); + let mut gb = FP4::new_int(0); gb.copy(&self.b.getb()); gb.mul(&y.b.getb()); ga.zero(); - if y.stype!=SPARSE { + if y.stype != SPARSE { ga.copy(&self.b.getb()); ga.mul(&y.b.geta()); } - if self.stype!=SPARSE { + if self.stype != SPARSE { ga.copy(&self.b.geta()); ga.mul(&y.b.getb()); } - z2.set_fp4s(&ga,&gb); + z2.set_fp4s(&ga, &gb); z2.times_i(); } else { z2.copy(&self.b); z2.mul(&y.b); } - } else { - z2.copy(&self.b); - z2.mul(&y.b); + } else { + z2.copy(&self.b); + z2.mul(&y.b); } - let mut t0=FP8::new_copy(&self.a); - let mut t1=FP8::new_copy(&y.a); - t0.add(&self.b); t0.norm(); - t1.add(&y.b); t1.norm(); + let mut t0 = FP8::new_copy(&self.a); + let mut t1 = FP8::new_copy(&y.a); + t0.add(&self.b); + t0.norm(); + t1.add(&y.b); + t1.norm(); + + z1.copy(&t0); + z1.mul(&t1); + t0.copy(&self.b); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.b); + t1.add(&y.c); + t1.norm(); + + z3.copy(&t0); + z3.mul(&t1); + + t0.copy(&z0); + t0.neg(); + t1.copy(&z2); + t1.neg(); - z1.copy(&t0); z1.mul(&t1); - t0.copy(&self.b); t0.add(&self.c); t0.norm(); - t1.copy(&y.b); t1.add(&y.c); t1.norm(); - - z3.copy(&t0); z3.mul(&t1); - - t0.copy(&z0); t0.neg(); - t1.copy(&z2); t1.neg(); - z1.add(&t0); - self.b.copy(&z1); self.b.add(&t1); + self.b.copy(&z1); + self.b.add(&t1); z3.add(&t1); z2.add(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); - t1.copy(&y.a); t1.add(&y.c); t1.norm(); - + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.a); + t1.add(&y.c); + t1.norm(); + t0.mul(&t1); z2.add(&t0); - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { - if y.stype==SPARSE || self.stype==SPARSE { - - let mut ga=FP4::new_int(0); - let mut gb=FP4::new_int(0); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + if y.stype == SPARSE || self.stype == SPARSE { + let mut ga = FP4::new_int(0); + let mut gb = FP4::new_int(0); ga.copy(&self.c.geta()); ga.mul(&y.c.geta()); gb.zero(); - if y.stype!=SPARSE { + if y.stype != SPARSE { gb.copy(&self.c.geta()); gb.mul(&y.c.getb()); } - if self.stype!=SPARSE { + if self.stype != SPARSE { gb.copy(&self.c.getb()); gb.mul(&y.c.geta()); } - t0.set_fp4s(&ga,&gb); + t0.set_fp4s(&ga, &gb); } else { t0.copy(&self.c); t0.mul(&y.c); } - } else { + } else { t0.copy(&self.c); t0.mul(&y.c); } - t1.copy(&t0); t1.neg(); + t1.copy(&t0); + t1.neg(); - self.c.copy(&z2); self.c.add(&t1); + self.c.copy(&z2); + self.c.add(&t1); z3.add(&t1); t0.times_i(); self.b.add(&t0); z3.norm(); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); + self.a.copy(&z0); + self.a.add(&z3); } else { - if self.stype==SPARSER { + if self.stype == SPARSER { self.smul(&y); return; } - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { // dense by sparser - 13m - let mut z0=FP8::new_copy(&self.a); - let mut z2=FP8::new_copy(&self.b); - let mut z3=FP8::new_copy(&self.b); - let mut t0=FP8::new_int(0); - let mut t1=FP8::new_copy(&y.a); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + // dense by sparser - 13m + let mut z0 = FP8::new_copy(&self.a); + let mut z2 = FP8::new_copy(&self.b); + let mut z3 = FP8::new_copy(&self.b); + let mut t0 = FP8::new_int(0); + let mut t1 = FP8::new_copy(&y.a); z0.mul(&y.a); z2.pmul(&y.b.geta()); @@ -507,8 +524,10 @@ impl FP24 { z3.norm(); z3.pmul(&y.b.geta()); - t0.copy(&z0); t0.neg(); - t1.copy(&z2); t1.neg(); + t0.copy(&z0); + t0.neg(); + t1.copy(&z2); + t1.neg(); self.b.add(&t0); @@ -516,98 +535,121 @@ impl FP24 { z3.add(&t1); z2.add(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); z3.norm(); t0.mul(&y.a); - self.c.copy(&z2); self.c.add(&t0); + self.c.copy(&z2); + self.c.add(&t0); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); + self.a.copy(&z0); + self.a.add(&z3); } - if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE { - + if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE { let mut z0 = FP8::new_copy(&self.a); let mut z1 = FP8::new(); let mut z2 = FP8::new(); let mut z3 = FP8::new(); let mut t0 = FP8::new_copy(&self.a); let mut t1 = FP8::new(); - + z0.mul(&y.a); - t0.add(&self.b); t0.norm(); + t0.add(&self.b); + t0.norm(); - z1.copy(&t0); z1.mul(&y.a); - t0.copy(&self.b); t0.add(&self.c); + z1.copy(&t0); + z1.mul(&y.a); + t0.copy(&self.b); + t0.add(&self.c); t0.norm(); z3.copy(&t0); z3.pmul(&y.c.getb()); z3.times_i(); - t0.copy(&z0); t0.neg(); + t0.copy(&z0); + t0.neg(); z1.add(&t0); self.b.copy(&z1); z2.copy(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); - t1.copy(&y.a); t1.add(&y.c); t1.norm(); + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.a); + t1.add(&y.c); + t1.norm(); t0.mul(&t1); z2.add(&t0); t0.copy(&self.c); - + t0.pmul(&y.c.getb()); t0.times_i(); - t1.copy(&t0); t1.neg(); + t1.copy(&t0); + t1.neg(); - self.c.copy(&z2); self.c.add(&t1); + self.c.copy(&z2); + self.c.add(&t1); z3.add(&t1); t0.times_i(); self.b.add(&t0); z3.norm(); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); - } + self.a.copy(&z0); + self.a.add(&z3); + } } - self.stype=DENSE; + self.stype = DENSE; self.norm(); } - /* Special case of multiplication arises from special form of ATE pairing line function */ pub fn smul(&mut self, y: &FP24) { - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { - let mut w1=FP4::new_copy(&self.a.geta()); - let mut w2=FP4::new_copy(&self.a.getb()); - let mut w3=FP4::new_copy(&self.b.geta()); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + let mut w1 = FP4::new_copy(&self.a.geta()); + let mut w2 = FP4::new_copy(&self.a.getb()); + let mut w3 = FP4::new_copy(&self.b.geta()); w1.mul(&y.a.geta()); w2.mul(&y.a.getb()); w3.mul(&y.b.geta()); - let mut ta=FP4::new_copy(&self.a.geta()); - let mut tb=FP4::new_copy(&y.a.geta()); - ta.add(&self.a.getb()); ta.norm(); - tb.add(&y.a.getb()); tb.norm(); - let mut tc=FP4::new_copy(&ta); + let mut ta = FP4::new_copy(&self.a.geta()); + let mut tb = FP4::new_copy(&y.a.geta()); + ta.add(&self.a.getb()); + ta.norm(); + tb.add(&y.a.getb()); + tb.norm(); + let mut tc = FP4::new_copy(&ta); tc.mul(&tb); - let mut t=FP4::new_copy(&w1); + let mut t = FP4::new_copy(&w1); t.add(&w2); t.neg(); tc.add(&t); - ta.copy(&self.a.geta()); ta.add(&self.b.geta()); ta.norm(); - tb.copy(&y.a.geta()); tb.add(&y.b.geta()); tb.norm(); - let mut td=FP4::new_copy(&ta); + ta.copy(&self.a.geta()); + ta.add(&self.b.geta()); + ta.norm(); + tb.copy(&y.a.geta()); + tb.add(&y.b.geta()); + tb.norm(); + let mut td = FP4::new_copy(&ta); td.mul(&tb); t.copy(&w1); t.add(&w3); t.neg(); td.add(&t); - ta.copy(&self.a.getb()); ta.add(&self.b.geta()); ta.norm(); - tb.copy(&y.a.getb()); tb.add(&y.b.geta()); tb.norm(); - let mut te=FP4::new_copy(&ta); + ta.copy(&self.a.getb()); + ta.add(&self.b.geta()); + ta.norm(); + tb.copy(&y.a.getb()); + tb.add(&y.b.geta()); + tb.norm(); + let mut te = FP4::new_copy(&ta); te.mul(&tb); t.copy(&w2); t.add(&w3); @@ -617,44 +659,54 @@ impl FP24 { w2.times_i(); w1.add(&w2); - self.a.set_fp4s(&w1,&tc); - self.b.set_fp4s(&td,&te); - self.c.set_fp4(&w3); + self.a.set_fp4s(&w1, &tc); + self.b.set_fp4s(&td, &te); + self.c.set_fp4(&w3); self.a.norm(); self.b.norm(); } else { - let mut w1=FP4::new_copy(&self.a.geta()); - let mut w2=FP4::new_copy(&self.a.getb()); - let mut w3=FP4::new_copy(&self.c.getb()); + let mut w1 = FP4::new_copy(&self.a.geta()); + let mut w2 = FP4::new_copy(&self.a.getb()); + let mut w3 = FP4::new_copy(&self.c.getb()); w1.mul(&y.a.geta()); w2.mul(&y.a.getb()); w3.mul(&y.c.getb()); - let mut ta=FP4::new_copy(&self.a.geta()); - let mut tb=FP4::new_copy(&y.a.geta()); - ta.add(&self.a.getb()); ta.norm(); - tb.add(&y.a.getb()); tb.norm(); - let mut tc=FP4::new_copy(&ta); + let mut ta = FP4::new_copy(&self.a.geta()); + let mut tb = FP4::new_copy(&y.a.geta()); + ta.add(&self.a.getb()); + ta.norm(); + tb.add(&y.a.getb()); + tb.norm(); + let mut tc = FP4::new_copy(&ta); tc.mul(&tb); - let mut t=FP4::new_copy(&w1); + let mut t = FP4::new_copy(&w1); t.add(&w2); t.neg(); tc.add(&t); - ta.copy(&self.a.geta()); ta.add(&self.c.getb()); ta.norm(); - tb.copy(&y.a.geta()); tb.add(&y.c.getb()); tb.norm(); - let mut td=FP4::new_copy(&ta); + ta.copy(&self.a.geta()); + ta.add(&self.c.getb()); + ta.norm(); + tb.copy(&y.a.geta()); + tb.add(&y.c.getb()); + tb.norm(); + let mut td = FP4::new_copy(&ta); td.mul(&tb); t.copy(&w1); t.add(&w3); t.neg(); td.add(&t); - ta.copy(&self.a.getb()); ta.add(&self.c.getb()); ta.norm(); - tb.copy(&y.a.getb()); tb.add(&y.c.getb()); tb.norm(); - let mut te=FP4::new_copy(&ta); + ta.copy(&self.a.getb()); + ta.add(&self.c.getb()); + ta.norm(); + tb.copy(&y.a.getb()); + tb.add(&y.c.getb()); + tb.norm(); + let mut te = FP4::new_copy(&ta); te.mul(&tb); t.copy(&w2); t.add(&w3); @@ -663,20 +715,20 @@ impl FP24 { w2.times_i(); w1.add(&w2); - self.a.set_fp4s(&w1,&tc); + self.a.set_fp4s(&w1, &tc); w3.times_i(); w3.norm(); - self.b.set_fp4h(&w3); + self.b.set_fp4h(&w3); te.norm(); te.times_i(); - self.c.set_fp4s(&te,&td); + self.c.set_fp4s(&te, &td); self.a.norm(); self.c.norm(); - } - self.stype=SPARSE; + } + self.stype = SPARSE; } /* self=1/self */ @@ -724,7 +776,7 @@ impl FP24 { self.b.mul(&f3); self.c.copy(&f2); self.c.mul(&f3); - self.stype=DENSE; + self.stype = DENSE; } /* self=self^p using Frobenius */ @@ -749,7 +801,7 @@ impl FP24 { self.c.times_i2(); self.c.times_i2(); } - self.stype=DENSE; + self.stype = DENSE; } /* trace function */ diff --git a/src/fp4.rs b/src/fp4.rs index 1db4b73..1e5f847 100644 --- a/src/fp4.rs +++ b/src/fp4.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ +use super::big::BIG; use super::fp::FP; use super::fp2::FP2; -use super::big::BIG; use std::str::SplitWhitespace; #[derive(Copy, Clone)] @@ -29,9 +29,9 @@ pub struct FP4 { } impl PartialEq for FP4 { - fn eq(&self, other: &FP4) -> bool { - self.equals(other) - } + fn eq(&self, other: &FP4) -> bool { + self.equals(other) + } } impl FP4 { @@ -69,20 +69,20 @@ impl FP4 { f.b.zero(); return f; } - - pub fn set_fp2s(&mut self,c: &FP2, d: &FP2) { + + pub fn set_fp2s(&mut self, c: &FP2, d: &FP2) { self.a.copy(&c); - self.b.copy(&d); + self.b.copy(&d); } - pub fn set_fp2(&mut self,c: &FP2) { + pub fn set_fp2(&mut self, c: &FP2) { self.a.copy(&c); - self.b.zero(); + self.b.zero(); } - pub fn set_fp2h(&mut self,c: &FP2) { + pub fn set_fp2h(&mut self, c: &FP2) { self.b.copy(&c); - self.a.zero(); + self.a.zero(); } /* reduce components mod Modulus */ @@ -125,14 +125,14 @@ impl FP4 { pub fn geta(&self) -> FP2 { return self.a; -// let f = FP2::new_copy(&self.a); -// return f; + // let f = FP2::new_copy(&self.a); + // return f; } /* extract imaginary part b */ pub fn getb(&self) -> FP2 { return self.b; -// let f = FP2::new_copy(&self.b); -// return f; + // let f = FP2::new_copy(&self.b); + // return f; } /* test self=x */ @@ -313,7 +313,7 @@ impl FP4 { pub fn from_hex_iter(iter: &mut SplitWhitespace) -> FP4 { FP4 { a: FP2::from_hex_iter(iter), - b: FP2::from_hex_iter(iter) + b: FP2::from_hex_iter(iter), } } diff --git a/src/fp48.rs b/src/fp48.rs index c72ee4c..96174b0 100644 --- a/src/fp48.rs +++ b/src/fp48.rs @@ -18,21 +18,21 @@ under the License. */ use super::big; +use super::big::BIG; use super::ecp; +use super::fp16::FP16; use super::fp2::FP2; use super::fp4::FP4; use super::fp8::FP8; -use super::fp16::FP16; -use super::big::BIG; use super::rom; use types::SexticTwist; //use std::str::SplitWhitespace; -pub const ZERO: usize=0; -pub const ONE: usize=1; -pub const SPARSER: usize=2; -pub const SPARSE: usize=3; -pub const DENSE: usize=4; +pub const ZERO: usize = 0; +pub const ONE: usize = 1; +pub const SPARSER: usize = 2; +pub const SPARSE: usize = 3; +pub const DENSE: usize = 4; #[derive(Copy, Clone)] pub struct FP48 { @@ -48,12 +48,12 @@ impl FP48 { a: FP16::new(), b: FP16::new(), c: FP16::new(), - stype: ZERO, + stype: ZERO, } } - pub fn settype(&mut self,t: usize) { - self.stype = t; + pub fn settype(&mut self, t: usize) { + self.stype = t; } pub fn gettype(&self) -> usize { @@ -65,11 +65,11 @@ impl FP48 { f.a.copy(&FP16::new_int(a)); f.b.zero(); f.c.zero(); - if a == 1 { - f.stype=ONE; - } else { - f.stype=SPARSER; - } + if a == 1 { + f.stype = ONE; + } else { + f.stype = SPARSER; + } return f; } @@ -78,7 +78,7 @@ impl FP48 { f.a.copy(&x.a); f.b.copy(&x.b); f.c.copy(&x.c); - f.stype=x.stype; + f.stype = x.stype; return f; } @@ -87,7 +87,7 @@ impl FP48 { g.a.copy(d); g.b.copy(e); g.c.copy(f); - g.stype=DENSE; + g.stype = DENSE; return g; } @@ -96,7 +96,7 @@ impl FP48 { g.a.copy(d); g.b.zero(); g.c.zero(); - g.stype=SPARSER; + g.stype = SPARSER; return g; } @@ -124,9 +124,9 @@ impl FP48 { self.a.cmove(&g.a, d); self.b.cmove(&g.b, d); self.c.cmove(&g.c, d); - let mut u=d as usize; - u=!(u-1); - self.stype^=(self.stype^g.stype)&u; + let mut u = d as usize; + u = !(u - 1); + self.stype ^= (self.stype ^ g.stype) & u; } /* return 1 if b==c, no branching */ @@ -170,20 +170,20 @@ impl FP48 { pub fn geta(&mut self) -> FP16 { return self.a; -// let f = FP16::new_copy(&self.a); -// return f; + // let f = FP16::new_copy(&self.a); + // return f; } pub fn getb(&mut self) -> FP16 { return self.b; -// let f = FP16::new_copy(&self.b); -// return f; + // let f = FP16::new_copy(&self.b); + // return f; } pub fn getc(&mut self) -> FP16 { return self.c; -// let f = FP16::new_copy(&self.c); -// return f; + // let f = FP16::new_copy(&self.c); + // return f; } /* copy self=x */ @@ -191,7 +191,7 @@ impl FP48 { self.a.copy(&x.a); self.b.copy(&x.b); self.c.copy(&x.c); - self.stype=x.stype; + self.stype = x.stype; } /* set self=1 */ @@ -199,7 +199,7 @@ impl FP48 { self.a.one(); self.b.zero(); self.c.zero(); - self.stype=ONE; + self.stype = ONE; } /* set self=0 */ @@ -207,7 +207,7 @@ impl FP48 { self.a.zero(); self.b.zero(); self.c.zero(); - self.stype=ZERO; + self.stype = ZERO; } /* this=conj(this) */ @@ -255,13 +255,13 @@ impl FP48 { self.c.dbl(); self.b.add(&b); self.c.add(&c); - self.stype=DENSE; + self.stype = DENSE; self.reduce(); } /* Chung-Hasan SQR2 method from http://cacr.uwaterloo.ca/techreports/2006/cacr2006-24.pdf */ pub fn sqr(&mut self) { - if self.stype==ONE { + if self.stype == ONE { return; } let mut a = FP16::new_copy(&self.a); @@ -298,10 +298,10 @@ impl FP48 { self.b.copy(&c); self.b.add(&d); self.c.add(&a); - if self.stype==SPARSER { - self.stype=SPARSE; + if self.stype == SPARSER { + self.stype = SPARSE; } else { - self.stype=DENSE; + self.stype = DENSE; } self.norm(); } @@ -373,127 +373,144 @@ impl FP48 { z3.times_i(); self.a.copy(&z0); self.a.add(&z3); - self.stype=DENSE; + self.stype = DENSE; self.norm(); } -/* FP48 full multiplication w=w*y */ -/* Supports sparse multiplicands */ -/* Usually w is denser than y */ + /* FP48 full multiplication w=w*y */ + /* Supports sparse multiplicands */ + /* Usually w is denser than y */ pub fn ssmul(&mut self, y: &FP48) { - if self.stype==ONE { + if self.stype == ONE { self.copy(&y); return; } - if y.stype==ONE { + if y.stype == ONE { return; } - if y.stype>=SPARSE { - let mut z0=FP16::new_copy(&self.a); - let mut z1=FP16::new_int(0); - let mut z2=FP16::new_int(0); - let mut z3=FP16::new_int(0); + if y.stype >= SPARSE { + let mut z0 = FP16::new_copy(&self.a); + let mut z1 = FP16::new_int(0); + let mut z2 = FP16::new_int(0); + let mut z3 = FP16::new_int(0); z0.mul(&y.a); - if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE { - if y.stype==SPARSE || self.stype==SPARSE { - - let mut ga=FP8::new_int(0); - let mut gb=FP8::new_int(0); + if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE { + if y.stype == SPARSE || self.stype == SPARSE { + let mut ga = FP8::new_int(0); + let mut gb = FP8::new_int(0); gb.copy(&self.b.getb()); gb.mul(&y.b.getb()); ga.zero(); - if y.stype!=SPARSE { + if y.stype != SPARSE { ga.copy(&self.b.getb()); ga.mul(&y.b.geta()); } - if self.stype!=SPARSE { + if self.stype != SPARSE { ga.copy(&self.b.geta()); ga.mul(&y.b.getb()); } - z2.set_fp8s(&ga,&gb); + z2.set_fp8s(&ga, &gb); z2.times_i(); } else { z2.copy(&self.b); z2.mul(&y.b); } - } else { - z2.copy(&self.b); - z2.mul(&y.b); + } else { + z2.copy(&self.b); + z2.mul(&y.b); } - let mut t0=FP16::new_copy(&self.a); - let mut t1=FP16::new_copy(&y.a); - t0.add(&self.b); t0.norm(); - t1.add(&y.b); t1.norm(); - - z1.copy(&t0); z1.mul(&t1); - t0.copy(&self.b); t0.add(&self.c); t0.norm(); - t1.copy(&y.b); t1.add(&y.c); t1.norm(); - - z3.copy(&t0); z3.mul(&t1); + let mut t0 = FP16::new_copy(&self.a); + let mut t1 = FP16::new_copy(&y.a); + t0.add(&self.b); + t0.norm(); + t1.add(&y.b); + t1.norm(); + + z1.copy(&t0); + z1.mul(&t1); + t0.copy(&self.b); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.b); + t1.add(&y.c); + t1.norm(); + + z3.copy(&t0); + z3.mul(&t1); + + t0.copy(&z0); + t0.neg(); + t1.copy(&z2); + t1.neg(); - t0.copy(&z0); t0.neg(); - t1.copy(&z2); t1.neg(); - z1.add(&t0); - self.b.copy(&z1); self.b.add(&t1); + self.b.copy(&z1); + self.b.add(&t1); z3.add(&t1); z2.add(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); - t1.copy(&y.a); t1.add(&y.c); t1.norm(); - + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.a); + t1.add(&y.c); + t1.norm(); + t0.mul(&t1); z2.add(&t0); - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { - if y.stype==SPARSE || self.stype==SPARSE { - - let mut ga=FP8::new_int(0); - let mut gb=FP8::new_int(0); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + if y.stype == SPARSE || self.stype == SPARSE { + let mut ga = FP8::new_int(0); + let mut gb = FP8::new_int(0); ga.copy(&self.c.geta()); ga.mul(&y.c.geta()); gb.zero(); - if y.stype!=SPARSE { + if y.stype != SPARSE { gb.copy(&self.c.geta()); gb.mul(&y.c.getb()); } - if self.stype!=SPARSE { + if self.stype != SPARSE { gb.copy(&self.c.getb()); gb.mul(&y.c.geta()); } - t0.set_fp8s(&ga,&gb); + t0.set_fp8s(&ga, &gb); } else { t0.copy(&self.c); t0.mul(&y.c); } - } else { + } else { t0.copy(&self.c); t0.mul(&y.c); } - t1.copy(&t0); t1.neg(); + t1.copy(&t0); + t1.neg(); - self.c.copy(&z2); self.c.add(&t1); + self.c.copy(&z2); + self.c.add(&t1); z3.add(&t1); t0.times_i(); self.b.add(&t0); z3.norm(); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); + self.a.copy(&z0); + self.a.add(&z3); } else { - if self.stype==SPARSER { + if self.stype == SPARSER { self.smul(&y); return; } - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { // dense by sparser - 13m - let mut z0=FP16::new_copy(&self.a); - let mut z2=FP16::new_copy(&self.b); - let mut z3=FP16::new_copy(&self.b); - let mut t0=FP16::new_int(0); - let mut t1=FP16::new_copy(&y.a); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + // dense by sparser - 13m + let mut z0 = FP16::new_copy(&self.a); + let mut z2 = FP16::new_copy(&self.b); + let mut z3 = FP16::new_copy(&self.b); + let mut t0 = FP16::new_int(0); + let mut t1 = FP16::new_copy(&y.a); z0.mul(&y.a); z2.pmul(&y.b.geta()); @@ -507,8 +524,10 @@ impl FP48 { z3.norm(); z3.pmul(&y.b.geta()); - t0.copy(&z0); t0.neg(); - t1.copy(&z2); t1.neg(); + t0.copy(&z0); + t0.neg(); + t1.copy(&z2); + t1.neg(); self.b.add(&t0); @@ -516,98 +535,121 @@ impl FP48 { z3.add(&t1); z2.add(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); z3.norm(); t0.mul(&y.a); - self.c.copy(&z2); self.c.add(&t0); + self.c.copy(&z2); + self.c.add(&t0); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); + self.a.copy(&z0); + self.a.add(&z3); } - if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE { - + if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE { let mut z0 = FP16::new_copy(&self.a); let mut z1 = FP16::new(); let mut z2 = FP16::new(); let mut z3 = FP16::new(); let mut t0 = FP16::new_copy(&self.a); let mut t1 = FP16::new(); - + z0.mul(&y.a); - t0.add(&self.b); t0.norm(); + t0.add(&self.b); + t0.norm(); - z1.copy(&t0); z1.mul(&y.a); - t0.copy(&self.b); t0.add(&self.c); + z1.copy(&t0); + z1.mul(&y.a); + t0.copy(&self.b); + t0.add(&self.c); t0.norm(); z3.copy(&t0); z3.pmul(&y.c.getb()); z3.times_i(); - t0.copy(&z0); t0.neg(); + t0.copy(&z0); + t0.neg(); z1.add(&t0); self.b.copy(&z1); z2.copy(&t0); - t0.copy(&self.a); t0.add(&self.c); t0.norm(); - t1.copy(&y.a); t1.add(&y.c); t1.norm(); + t0.copy(&self.a); + t0.add(&self.c); + t0.norm(); + t1.copy(&y.a); + t1.add(&y.c); + t1.norm(); t0.mul(&t1); z2.add(&t0); t0.copy(&self.c); - + t0.pmul(&y.c.getb()); t0.times_i(); - t1.copy(&t0); t1.neg(); + t1.copy(&t0); + t1.neg(); - self.c.copy(&z2); self.c.add(&t1); + self.c.copy(&z2); + self.c.add(&t1); z3.add(&t1); t0.times_i(); self.b.add(&t0); z3.norm(); z3.times_i(); - self.a.copy(&z0); self.a.add(&z3); - } + self.a.copy(&z0); + self.a.add(&z3); + } } - self.stype=DENSE; + self.stype = DENSE; self.norm(); } - /* Special case of multiplication arises from special form of ATE pairing line function */ pub fn smul(&mut self, y: &FP48) { - if ecp::SEXTIC_TWIST==SexticTwist::D_TYPE { - let mut w1=FP8::new_copy(&self.a.geta()); - let mut w2=FP8::new_copy(&self.a.getb()); - let mut w3=FP8::new_copy(&self.b.geta()); + if ecp::SEXTIC_TWIST == SexticTwist::D_TYPE { + let mut w1 = FP8::new_copy(&self.a.geta()); + let mut w2 = FP8::new_copy(&self.a.getb()); + let mut w3 = FP8::new_copy(&self.b.geta()); w1.mul(&y.a.geta()); w2.mul(&y.a.getb()); w3.mul(&y.b.geta()); - let mut ta=FP8::new_copy(&self.a.geta()); - let mut tb=FP8::new_copy(&y.a.geta()); - ta.add(&self.a.getb()); ta.norm(); - tb.add(&y.a.getb()); tb.norm(); - let mut tc=FP8::new_copy(&ta); + let mut ta = FP8::new_copy(&self.a.geta()); + let mut tb = FP8::new_copy(&y.a.geta()); + ta.add(&self.a.getb()); + ta.norm(); + tb.add(&y.a.getb()); + tb.norm(); + let mut tc = FP8::new_copy(&ta); tc.mul(&tb); - let mut t=FP8::new_copy(&w1); + let mut t = FP8::new_copy(&w1); t.add(&w2); t.neg(); tc.add(&t); - ta.copy(&self.a.geta()); ta.add(&self.b.geta()); ta.norm(); - tb.copy(&y.a.geta()); tb.add(&y.b.geta()); tb.norm(); - let mut td=FP8::new_copy(&ta); + ta.copy(&self.a.geta()); + ta.add(&self.b.geta()); + ta.norm(); + tb.copy(&y.a.geta()); + tb.add(&y.b.geta()); + tb.norm(); + let mut td = FP8::new_copy(&ta); td.mul(&tb); t.copy(&w1); t.add(&w3); t.neg(); td.add(&t); - ta.copy(&self.a.getb()); ta.add(&self.b.geta()); ta.norm(); - tb.copy(&y.a.getb()); tb.add(&y.b.geta()); tb.norm(); - let mut te=FP8::new_copy(&ta); + ta.copy(&self.a.getb()); + ta.add(&self.b.geta()); + ta.norm(); + tb.copy(&y.a.getb()); + tb.add(&y.b.geta()); + tb.norm(); + let mut te = FP8::new_copy(&ta); te.mul(&tb); t.copy(&w2); t.add(&w3); @@ -617,44 +659,54 @@ impl FP48 { w2.times_i(); w1.add(&w2); - self.a.set_fp8s(&w1,&tc); - self.b.set_fp8s(&td,&te); - self.c.set_fp8(&w3); + self.a.set_fp8s(&w1, &tc); + self.b.set_fp8s(&td, &te); + self.c.set_fp8(&w3); self.a.norm(); self.b.norm(); } else { - let mut w1=FP8::new_copy(&self.a.geta()); - let mut w2=FP8::new_copy(&self.a.getb()); - let mut w3=FP8::new_copy(&self.c.getb()); + let mut w1 = FP8::new_copy(&self.a.geta()); + let mut w2 = FP8::new_copy(&self.a.getb()); + let mut w3 = FP8::new_copy(&self.c.getb()); w1.mul(&y.a.geta()); w2.mul(&y.a.getb()); w3.mul(&y.c.getb()); - let mut ta=FP8::new_copy(&self.a.geta()); - let mut tb=FP8::new_copy(&y.a.geta()); - ta.add(&self.a.getb()); ta.norm(); - tb.add(&y.a.getb()); tb.norm(); - let mut tc=FP8::new_copy(&ta); + let mut ta = FP8::new_copy(&self.a.geta()); + let mut tb = FP8::new_copy(&y.a.geta()); + ta.add(&self.a.getb()); + ta.norm(); + tb.add(&y.a.getb()); + tb.norm(); + let mut tc = FP8::new_copy(&ta); tc.mul(&tb); - let mut t=FP8::new_copy(&w1); + let mut t = FP8::new_copy(&w1); t.add(&w2); t.neg(); tc.add(&t); - ta.copy(&self.a.geta()); ta.add(&self.c.getb()); ta.norm(); - tb.copy(&y.a.geta()); tb.add(&y.c.getb()); tb.norm(); - let mut td=FP8::new_copy(&ta); + ta.copy(&self.a.geta()); + ta.add(&self.c.getb()); + ta.norm(); + tb.copy(&y.a.geta()); + tb.add(&y.c.getb()); + tb.norm(); + let mut td = FP8::new_copy(&ta); td.mul(&tb); t.copy(&w1); t.add(&w3); t.neg(); td.add(&t); - ta.copy(&self.a.getb()); ta.add(&self.c.getb()); ta.norm(); - tb.copy(&y.a.getb()); tb.add(&y.c.getb()); tb.norm(); - let mut te=FP8::new_copy(&ta); + ta.copy(&self.a.getb()); + ta.add(&self.c.getb()); + ta.norm(); + tb.copy(&y.a.getb()); + tb.add(&y.c.getb()); + tb.norm(); + let mut te = FP8::new_copy(&ta); te.mul(&tb); t.copy(&w2); t.add(&w3); @@ -663,20 +715,20 @@ impl FP48 { w2.times_i(); w1.add(&w2); - self.a.set_fp8s(&w1,&tc); + self.a.set_fp8s(&w1, &tc); w3.times_i(); w3.norm(); - self.b.set_fp8h(&w3); + self.b.set_fp8h(&w3); te.norm(); te.times_i(); - self.c.set_fp8s(&te,&td); + self.c.set_fp8s(&te, &td); self.a.norm(); self.c.norm(); - } - self.stype=SPARSE; + } + self.stype = SPARSE; } /* self=1/self */ @@ -724,7 +776,7 @@ impl FP48 { self.b.mul(&f3); self.c.copy(&f2); self.c.mul(&f3); - self.stype=DENSE; + self.stype = DENSE; } /* self=self^p using Frobenius */ @@ -753,7 +805,7 @@ impl FP48 { self.c.times_i4(); self.c.times_i4(); } - self.stype=DENSE; + self.stype = DENSE; } /* trace function */ diff --git a/src/fp8.rs b/src/fp8.rs index dfc84d1..e693b13 100644 --- a/src/fp8.rs +++ b/src/fp8.rs @@ -17,10 +17,10 @@ specific language governing permissions and limitations under the License. */ +use super::big::BIG; use super::fp::FP; use super::fp2::FP2; use super::fp4::FP4; -use super::big::BIG; //use std::str::SplitWhitespace; #[derive(Copy, Clone)] @@ -65,22 +65,21 @@ impl FP8 { return f; } - pub fn set_fp4s(&mut self,c: &FP4, d: &FP4) { + pub fn set_fp4s(&mut self, c: &FP4, d: &FP4) { self.a.copy(&c); - self.b.copy(&d); + self.b.copy(&d); } - pub fn set_fp4(&mut self,c: &FP4) { + pub fn set_fp4(&mut self, c: &FP4) { self.a.copy(&c); - self.b.zero(); + self.b.zero(); } - pub fn set_fp4h(&mut self,c: &FP4) { + pub fn set_fp4h(&mut self, c: &FP4) { self.b.copy(&c); - self.a.zero(); + self.a.zero(); } - /* reduce components mod Modulus */ pub fn reduce(&mut self) { self.a.reduce(); @@ -121,14 +120,14 @@ impl FP8 { pub fn geta(&self) -> FP4 { return self.a; -// let f = FP4::new_copy(&self.a); -// return f; + // let f = FP4::new_copy(&self.a); + // return f; } /* extract imaginary part b */ pub fn getb(&self) -> FP4 { return self.b; -// let f = FP4::new_copy(&self.b); -// return f; + // let f = FP4::new_copy(&self.b); + // return f; } /* test self=x */ diff --git a/src/lib.rs b/src/lib.rs index 108057b..c68a165 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,18 +1,18 @@ pub mod aes; +#[cfg(target_pointer_width = "32")] +#[path = "arch/arch32.rs"] +pub mod arch; +#[cfg(target_pointer_width = "64")] +#[path = "arch/arch64.rs"] +pub mod arch; pub mod gcm; pub mod hash256; pub mod hash384; pub mod hash512; +pub mod nhs; pub mod rand; pub mod sha3; -pub mod nhs; pub mod types; -#[cfg(target_pointer_width = "32")] -#[path = "arch/arch32.rs"] -pub mod arch; -#[cfg(target_pointer_width = "64")] -#[path = "arch/arch64.rs"] -pub mod arch; #[cfg(feature = "bls48")] #[path = "./"] @@ -25,18 +25,18 @@ pub mod bls48 { pub mod rom; pub mod big; + pub mod bls256; pub mod dbig; - pub mod fp; pub mod ecp; pub mod ecp8; + pub mod fp; + pub mod fp16; pub mod fp2; pub mod fp4; - pub mod fp8; - pub mod fp16; pub mod fp48; - pub mod pair256; + pub mod fp8; pub mod mpin256; - pub mod bls256; + pub mod pair256; } #[cfg(feature = "bls461")] @@ -50,16 +50,16 @@ pub mod bls461 { pub mod rom; pub mod big; + pub mod bls; pub mod dbig; - pub mod fp; pub mod ecp; pub mod ecp2; + pub mod fp; + pub mod fp12; pub mod fp2; pub mod fp4; - pub mod fp12; - pub mod pair; pub mod mpin; - pub mod bls; + pub mod pair; } #[cfg(feature = "bls383")] @@ -73,16 +73,16 @@ pub mod bls383 { pub mod rom; pub mod big; + pub mod bls; pub mod dbig; - pub mod fp; pub mod ecp; pub mod ecp2; + pub mod fp; + pub mod fp12; pub mod fp2; pub mod fp4; - pub mod fp12; - pub mod pair; pub mod mpin; - pub mod bls; + pub mod pair; } #[cfg(feature = "bls381")] @@ -96,16 +96,16 @@ pub mod bls381 { pub mod rom; pub mod big; + pub mod bls; pub mod dbig; - pub mod fp; pub mod ecp; pub mod ecp2; + pub mod fp; + pub mod fp12; pub mod fp2; pub mod fp4; - pub mod fp12; - pub mod pair; pub mod mpin; - pub mod bls; + pub mod pair; } #[cfg(feature = "fp512bn")] @@ -119,16 +119,16 @@ pub mod fp512bn { pub mod rom; pub mod big; + pub mod bls; pub mod dbig; - pub mod fp; pub mod ecp; pub mod ecp2; + pub mod fp; + pub mod fp12; pub mod fp2; pub mod fp4; - pub mod fp12; - pub mod pair; pub mod mpin; - pub mod bls; + pub mod pair; } #[cfg(feature = "fp256bn")] @@ -142,16 +142,16 @@ pub mod fp256bn { pub mod rom; pub mod big; + pub mod bls; pub mod dbig; - pub mod fp; pub mod ecp; pub mod ecp2; + pub mod fp; + pub mod fp12; pub mod fp2; pub mod fp4; - pub mod fp12; - pub mod pair; pub mod mpin; - pub mod bls; + pub mod pair; } #[cfg(feature = "bls24")] @@ -165,17 +165,17 @@ pub mod bls24 { pub mod rom; pub mod big; + pub mod bls192; pub mod dbig; + pub mod ecp; + pub mod ecp4; pub mod fp; pub mod fp2; + pub mod fp24; pub mod fp4; pub mod fp8; - pub mod fp24; - pub mod ecp; - pub mod ecp4; - pub mod pair192; pub mod mpin192; - pub mod bls192; + pub mod pair192; } #[cfg(feature = "anssi")] @@ -190,9 +190,9 @@ pub mod anssi { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "brainpool")] @@ -207,9 +207,9 @@ pub mod brainpool { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "goldilocks")] @@ -224,9 +224,9 @@ pub mod goldilocks { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "hifive")] @@ -241,9 +241,9 @@ pub mod hifive { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nist256")] @@ -258,9 +258,9 @@ pub mod nist256 { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nist384")] @@ -275,9 +275,9 @@ pub mod nist384 { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nist521")] @@ -292,9 +292,9 @@ pub mod nist521 { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nums256e")] @@ -309,9 +309,9 @@ pub mod nums256e { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nums256w")] @@ -326,9 +326,9 @@ pub mod nums256w { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nums384e")] @@ -343,9 +343,9 @@ pub mod nums384e { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nums384w")] @@ -360,9 +360,9 @@ pub mod nums384w { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nums512w")] @@ -377,9 +377,9 @@ pub mod nums512w { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "nums512e")] @@ -394,9 +394,9 @@ pub mod nums512e { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "secp256k1")] @@ -411,9 +411,9 @@ pub mod secp256k1 { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "c25519")] @@ -428,9 +428,9 @@ pub mod c25519 { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "c41417")] @@ -445,9 +445,9 @@ pub mod c41417 { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "ed25519")] @@ -462,9 +462,9 @@ pub mod ed25519 { pub mod big; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; + pub mod fp; } #[cfg(feature = "bn254CX")] @@ -478,17 +478,17 @@ pub mod bn254CX { pub mod rom; pub mod big; + pub mod bls; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; pub mod ecp2; + pub mod fp; + pub mod fp12; pub mod fp2; pub mod fp4; - pub mod fp12; - pub mod pair; pub mod mpin; - pub mod bls; + pub mod pair; } #[cfg(feature = "bn254")] @@ -502,60 +502,60 @@ pub mod bn254 { pub mod rom; pub mod big; + pub mod bls; pub mod dbig; - pub mod fp; - pub mod ecp; pub mod ecdh; + pub mod ecp; pub mod ecp2; + pub mod fp; + pub mod fp12; pub mod fp2; pub mod fp4; - pub mod fp12; - pub mod pair; pub mod mpin; - pub mod bls; + pub mod pair; } #[cfg(feature = "rsa2048")] #[path = "./"] pub mod rsa2048 { + pub mod big; + pub mod dbig; + pub mod ff; #[cfg(target_pointer_width = "32")] #[path = "roms/rom_rsa2048_32.rs"] pub mod rom; #[cfg(target_pointer_width = "64")] #[path = "roms/rom_rsa2048_64.rs"] pub mod rom; - pub mod big; - pub mod dbig; - pub mod ff; pub mod rsa; } #[cfg(feature = "rsa3072")] #[path = "./"] pub mod rsa3072 { + pub mod big; + pub mod dbig; + pub mod ff; #[cfg(target_pointer_width = "32")] #[path = "roms/rom_rsa3072_32.rs"] pub mod rom; #[cfg(target_pointer_width = "64")] #[path = "roms/rom_rsa3072_64.rs"] pub mod rom; - pub mod big; - pub mod dbig; - pub mod ff; pub mod rsa; } #[cfg(feature = "rsa4096")] #[path = "./"] pub mod rsa4096 { + pub mod big; + pub mod dbig; + pub mod ff; #[cfg(target_pointer_width = "32")] #[path = "roms/rom_rsa4096_32.rs"] mod rom; #[cfg(target_pointer_width = "64")] #[path = "roms/rom_rsa4096_64.rs"] mod rom; - pub mod big; - pub mod dbig; - pub mod ff; pub mod rsa; -} \ No newline at end of file +} diff --git a/src/mpin.rs b/src/mpin.rs index 6d7e9ca..dbb713b 100644 --- a/src/mpin.rs +++ b/src/mpin.rs @@ -20,21 +20,20 @@ under the License. use std::time::SystemTime; use std::time::UNIX_EPOCH; +use super::big; +use super::big::BIG; use super::ecp; use super::ecp::ECP; use super::ecp2::ECP2; -use super::fp4::FP4; use super::fp12::FP12; -use super::big::BIG; +use super::fp4::FP4; use super::pair; -use super::big; use super::rom; -use rand::RAND; use hash256::HASH256; use hash384::HASH384; use hash512::HASH512; - +use rand::RAND; /* MPIN API Functions */ diff --git a/src/mpin192.rs b/src/mpin192.rs index 276a560..3278b30 100644 --- a/src/mpin192.rs +++ b/src/mpin192.rs @@ -20,21 +20,20 @@ under the License. use std::time::SystemTime; use std::time::UNIX_EPOCH; +use super::big; +use super::big::BIG; use super::ecp; use super::ecp::ECP; use super::ecp4::ECP4; -use super::fp8::FP8; use super::fp24::FP24; -use super::big::BIG; +use super::fp8::FP8; use super::pair192; -use super::big; use super::rom; -use rand::RAND; use hash256::HASH256; use hash384::HASH384; use hash512::HASH512; - +use rand::RAND; /* MPIN API Functions */ diff --git a/src/mpin256.rs b/src/mpin256.rs index b4928e9..76340c7 100644 --- a/src/mpin256.rs +++ b/src/mpin256.rs @@ -20,20 +20,20 @@ under the License. use std::time::SystemTime; use std::time::UNIX_EPOCH; +use super::big; +use super::big::BIG; use super::ecp; use super::ecp::ECP; use super::ecp8::ECP8; use super::fp16::FP16; use super::fp48::FP48; -use super::big::BIG; use super::pair256; -use super::big; use super::rom; -use rand::RAND; use hash256::HASH256; use hash384::HASH384; use hash512::HASH512; +use rand::RAND; /* MPIN API Functions */ diff --git a/src/pair.rs b/src/pair.rs index 2050296..ce59f0d 100644 --- a/src/pair.rs +++ b/src/pair.rs @@ -17,19 +17,18 @@ specific language governing permissions and limitations under the License. */ - -use super::fp::FP; +use super::big::BIG; +use super::dbig::DBIG; +use super::ecp; use super::ecp::ECP; -use super::fp2::FP2; use super::ecp2::ECP2; -use super::fp4::FP4; +use super::fp::FP; use super::fp12; use super::fp12::FP12; -use super::big::BIG; -use super::dbig::DBIG; -use super::ecp; +use super::fp2::FP2; +use super::fp4::FP4; use super::rom; -use types::{SexticTwist, CurvePairingType, SignOfX}; +use types::{CurvePairingType, SexticTwist, SignOfX}; #[allow(non_snake_case)] fn linedbl(A: &mut ECP2, qx: &FP, qy: &FP) -> FP12 { @@ -81,7 +80,7 @@ fn linedbl(A: &mut ECP2, qx: &FP, qy: &FP) -> FP12 { c.times_i(); } A.dbl(); - let mut res= FP12::new_fp4s(&a, &b, &c); + let mut res = FP12::new_fp4s(&a, &b, &c); res.settype(fp12::SPARSER); return res; } @@ -132,18 +131,18 @@ fn lineadd(A: &mut ECP2, B: &ECP2, qx: &FP, qy: &FP) -> FP12 { } A.add(B); - let mut res= FP12::new_fp4s(&a, &b, &c); + let mut res = FP12::new_fp4s(&a, &b, &c); res.settype(fp12::SPARSER); return res; } /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ #[allow(non_snake_case)] -fn lbits(n3: &mut BIG,n: &mut BIG) -> usize { +fn lbits(n3: &mut BIG, n: &mut BIG) -> usize { n.copy(&BIG::new_ints(&rom::CURVE_BNX)); - if ecp::CURVE_PAIRING_TYPE==CurvePairingType::BN { + if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN { n.pmul(6); - if ecp::SIGN_OF_X==SignOfX::POSITIVEX { + if ecp::SIGN_OF_X == SignOfX::POSITIVEX { n.inc(2); } else { n.dec(2); @@ -159,18 +158,18 @@ fn lbits(n3: &mut BIG,n: &mut BIG) -> usize { /* prepare for multi-pairing */ pub fn initmp() -> [FP12; rom::ATE_BITS] { let r: [FP12; rom::ATE_BITS] = [FP12::new_int(1); rom::ATE_BITS]; - return r + return r; } /* basic Miller loop */ -pub fn miller(r:&[FP12]) -> FP12 { - let mut res=FP12::new_int(1); +pub fn miller(r: &[FP12]) -> FP12 { + let mut res = FP12::new_int(1); for i in (1..rom::ATE_BITS).rev() { res.sqr(); res.ssmul(&r[i]); } - if ecp::SIGN_OF_X==SignOfX::NEGATIVEX { + if ecp::SIGN_OF_X == SignOfX::NEGATIVEX { res.conj(); } res.ssmul(&r[0]); @@ -179,14 +178,13 @@ pub fn miller(r:&[FP12]) -> FP12 { /* Accumulate another set of line functions for n-pairing */ #[allow(non_snake_case)] -pub fn another(r:&mut [FP12],P1: &ECP2,Q1: &ECP) { +pub fn another(r: &mut [FP12], P1: &ECP2, Q1: &ECP) { let mut f = FP2::new_bigs(&BIG::new_ints(&rom::FRA), &BIG::new_ints(&rom::FRB)); let mut n = BIG::new(); let mut n3 = BIG::new(); let mut K = ECP2::new(); - -// P is needed in affine form for line function, Q for (Qx,Qy) extraction + // P is needed in affine form for line function, Q for (Qx,Qy) extraction let mut P = ECP2::new(); P.copy(P1); P.affine(); @@ -194,8 +192,8 @@ pub fn another(r:&mut [FP12],P1: &ECP2,Q1: &ECP) { Q.copy(Q1); Q.affine(); - if ecp::CURVE_PAIRING_TYPE==CurvePairingType::BN { - if ecp::SEXTIC_TWIST==SexticTwist::M_TYPE { + if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN { + if ecp::SEXTIC_TWIST == SexticTwist::M_TYPE { f.inverse(); f.norm(); } @@ -210,37 +208,37 @@ pub fn another(r:&mut [FP12],P1: &ECP2,Q1: &ECP) { NP.copy(&P); NP.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); - for i in (1..nb-1).rev() { - let mut lv=linedbl(&mut A,&qx,&qy); + for i in (1..nb - 1).rev() { + let mut lv = linedbl(&mut A, &qx, &qy); - let bt=n3.bit(i)-n.bit(i); - if bt==1 { - let lv2=lineadd(&mut A,&P,&qx,&qy); + let bt = n3.bit(i) - n.bit(i); + if bt == 1 { + let lv2 = lineadd(&mut A, &P, &qx, &qy); lv.smul(&lv2); } - if bt==-1 { - let lv2=lineadd(&mut A,&NP,&qx,&qy); + if bt == -1 { + let lv2 = lineadd(&mut A, &NP, &qx, &qy); lv.smul(&lv2); } r[i].ssmul(&lv); } -/* R-ate fixup required for BN curves */ - if ecp::CURVE_PAIRING_TYPE==CurvePairingType::BN { - if ecp::SIGN_OF_X==SignOfX::NEGATIVEX { + /* R-ate fixup required for BN curves */ + if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN { + if ecp::SIGN_OF_X == SignOfX::NEGATIVEX { A.neg(); } K.copy(&P); K.frob(&f); - let mut lv=lineadd(&mut A,&K,&qx,&qy); + let mut lv = lineadd(&mut A, &K, &qx, &qy); K.frob(&f); K.neg(); - let lv2=lineadd(&mut A,&K,&qx,&qy); + let lv2 = lineadd(&mut A, &K, &qx, &qy); lv.smul(&lv2); - r[0].ssmul(&lv); - } + r[0].ssmul(&lv); + } } #[allow(non_snake_case)] @@ -256,7 +254,7 @@ pub fn ate(P1: &ECP2, Q1: &ECP) -> FP12 { f.inverse(); f.norm(); } - } + } let mut P = ECP2::new(); P.copy(P1); P.affine(); @@ -275,7 +273,7 @@ pub fn ate(P1: &ECP2, Q1: &ECP) -> FP12 { NP.copy(&P); NP.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); for i in (1..nb - 1).rev() { r.sqr(); @@ -310,7 +308,7 @@ pub fn ate(P1: &ECP2, Q1: &ECP) -> FP12 { K.frob(&f); K.neg(); let lv2 = lineadd(&mut A, &K, &qx, &qy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); } @@ -330,7 +328,7 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 { f.inverse(); f.norm(); } - } + } let mut P = ECP2::new(); P.copy(P1); @@ -365,25 +363,25 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 { NR.copy(&R); NR.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); for i in (1..nb - 1).rev() { r.sqr(); let mut lv = linedbl(&mut A, &qx, &qy); let lv2 = linedbl(&mut B, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); let bt = n3.bit(i) - n.bit(i); if bt == 1 { lv = lineadd(&mut A, &P, &qx, &qy); let lv2 = lineadd(&mut B, &R, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); } if bt == -1 { lv = lineadd(&mut A, &NP, &qx, &qy); let lv2 = lineadd(&mut B, &NR, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); } } @@ -405,7 +403,7 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 { K.frob(&f); K.neg(); let mut lv2 = lineadd(&mut A, &K, &qx, &qy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); K.copy(&R); @@ -415,9 +413,8 @@ pub fn ate2(P1: &ECP2, Q1: &ECP, R1: &ECP2, S1: &ECP) -> FP12 { K.frob(&f); K.neg(); lv2 = lineadd(&mut B, &K, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); - } return r; @@ -439,10 +436,10 @@ pub fn fexp(m: &FP12) -> FP12 { r.frob(&f); r.frob(&f); r.mul(&lv); -// if r.isunity() { -// r.zero(); -// return r; -// } + // if r.isunity() { + // r.zero(); + // return r; + // } /* Hard part of final exp */ if ecp::CURVE_PAIRING_TYPE == CurvePairingType::BN { diff --git a/src/pair192.rs b/src/pair192.rs index 4310b6b..3883b90 100644 --- a/src/pair192.rs +++ b/src/pair192.rs @@ -17,17 +17,16 @@ specific language governing permissions and limitations under the License. */ - -use super::fp::FP; +use super::big::BIG; +use super::ecp; use super::ecp::ECP; -use super::fp2::FP2; use super::ecp4::ECP4; -use super::fp4::FP4; -use super::fp8::FP8; +use super::fp::FP; +use super::fp2::FP2; use super::fp24; use super::fp24::FP24; -use super::big::BIG; -use super::ecp; +use super::fp4::FP4; +use super::fp8::FP8; use super::rom; use types::{SexticTwist, SignOfX}; @@ -80,7 +79,7 @@ fn linedbl(A: &mut ECP4, qx: &FP, qy: &FP) -> FP24 { c.times_i(); } A.dbl(); - let mut res= FP24::new_fp8s(&a, &b, &c); + let mut res = FP24::new_fp8s(&a, &b, &c); res.settype(fp24::SPARSER); return res; } @@ -130,14 +129,14 @@ fn lineadd(A: &mut ECP4, B: &ECP4, qx: &FP, qy: &FP) -> FP24 { } A.add(B); - let mut res= FP24::new_fp8s(&a, &b, &c); + let mut res = FP24::new_fp8s(&a, &b, &c); res.settype(fp24::SPARSER); return res; } /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ #[allow(non_snake_case)] -fn lbits(n3: &mut BIG,n: &mut BIG) -> usize { +fn lbits(n3: &mut BIG, n: &mut BIG) -> usize { n.copy(&BIG::new_ints(&rom::CURVE_BNX)); n3.copy(&n); n3.pmul(3); @@ -148,18 +147,18 @@ fn lbits(n3: &mut BIG,n: &mut BIG) -> usize { /* prepare for multi-pairing */ pub fn initmp() -> [FP24; rom::ATE_BITS] { let r: [FP24; rom::ATE_BITS] = [FP24::new_int(1); rom::ATE_BITS]; - return r + return r; } /* basic Miller loop */ -pub fn miller(r:&[FP24]) -> FP24 { - let mut res=FP24::new_int(1); +pub fn miller(r: &[FP24]) -> FP24 { + let mut res = FP24::new_int(1); for i in (1..rom::ATE_BITS).rev() { res.sqr(); res.ssmul(&r[i]); } - if ecp::SIGN_OF_X==SignOfX::NEGATIVEX { + if ecp::SIGN_OF_X == SignOfX::NEGATIVEX { res.conj(); } res.ssmul(&r[0]); @@ -168,11 +167,11 @@ pub fn miller(r:&[FP24]) -> FP24 { /* Accumulate another set of line functions for n-pairing */ #[allow(non_snake_case)] -pub fn another(r:&mut [FP24],P1: &ECP4,Q1: &ECP) { +pub fn another(r: &mut [FP24], P1: &ECP4, Q1: &ECP) { let mut n = BIG::new(); let mut n3 = BIG::new(); - -// P is needed in affine form for line function, Q for (Qx,Qy) extraction + + // P is needed in affine form for line function, Q for (Qx,Qy) extraction let mut P = ECP4::new(); P.copy(P1); P.affine(); @@ -189,18 +188,18 @@ pub fn another(r:&mut [FP24],P1: &ECP4,Q1: &ECP) { NP.copy(&P); NP.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); - for i in (1..nb-1).rev() { - let mut lv=linedbl(&mut A,&qx,&qy); + for i in (1..nb - 1).rev() { + let mut lv = linedbl(&mut A, &qx, &qy); - let bt=n3.bit(i)-n.bit(i); - if bt==1 { - let lv2=lineadd(&mut A,&P,&qx,&qy); + let bt = n3.bit(i) - n.bit(i); + if bt == 1 { + let lv2 = lineadd(&mut A, &P, &qx, &qy); lv.smul(&lv2); } - if bt==-1 { - let lv2=lineadd(&mut A,&NP,&qx,&qy); + if bt == -1 { + let lv2 = lineadd(&mut A, &NP, &qx, &qy); lv.smul(&lv2); } r[i].ssmul(&lv); @@ -231,7 +230,7 @@ pub fn ate(P1: &ECP4, Q1: &ECP) -> FP24 { NP.copy(&P); NP.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); for i in (1..nb - 1).rev() { r.sqr(); @@ -296,25 +295,25 @@ pub fn ate2(P1: &ECP4, Q1: &ECP, R1: &ECP4, S1: &ECP) -> FP24 { NR.copy(&R); NR.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); for i in (1..nb - 1).rev() { r.sqr(); let mut lv = linedbl(&mut A, &qx, &qy); let lv2 = linedbl(&mut B, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); let bt = n3.bit(i) - n.bit(i); if bt == 1 { lv = lineadd(&mut A, &P, &qx, &qy); let lv2 = lineadd(&mut B, &R, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); } if bt == -1 { lv = lineadd(&mut A, &NP, &qx, &qy); let lv2 = lineadd(&mut B, &NR, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); } } @@ -341,10 +340,10 @@ pub fn fexp(m: &FP24) -> FP24 { lv.copy(&r); r.frob(&f, 4); r.mul(&lv); -// if r.isunity() { -// r.zero(); -// return r; -// } + // if r.isunity() { + // r.zero(); + // return r; + // } /* Hard part of final exp */ // Ghamman & Fouotsa Method diff --git a/src/pair256.rs b/src/pair256.rs index 7cdca72..9353fe6 100644 --- a/src/pair256.rs +++ b/src/pair256.rs @@ -17,19 +17,18 @@ specific language governing permissions and limitations under the License. */ - -use super::fp::FP; +use super::big::BIG; +use super::ecp; use super::ecp::ECP; -use super::fp2::FP2; use super::ecp8::ECP8; -use super::fp8::FP8; +use super::fp::FP; use super::fp16::FP16; +use super::fp2::FP2; use super::fp48; use super::fp48::FP48; -use super::big::BIG; -use super::ecp; +use super::fp8::FP8; use super::rom; -use types::{SignOfX, SexticTwist}; +use types::{SexticTwist, SignOfX}; #[allow(non_snake_case)] fn linedbl(A: &mut ECP8, qx: &FP, qy: &FP) -> FP48 { @@ -80,7 +79,7 @@ fn linedbl(A: &mut ECP8, qx: &FP, qy: &FP) -> FP48 { c.times_i(); } A.dbl(); - let mut res= FP48::new_fp16s(&a, &b, &c); + let mut res = FP48::new_fp16s(&a, &b, &c); res.settype(fp48::SPARSER); return res; } @@ -130,14 +129,14 @@ fn lineadd(A: &mut ECP8, B: &ECP8, qx: &FP, qy: &FP) -> FP48 { } A.add(B); - let mut res= FP48::new_fp16s(&a, &b, &c); + let mut res = FP48::new_fp16s(&a, &b, &c); res.settype(fp48::SPARSER); return res; } /* prepare ate parameter, n=6u+2 (BN) or n=u (BLS), n3=3*n */ #[allow(non_snake_case)] -fn lbits(n3: &mut BIG,n: &mut BIG) -> usize { +fn lbits(n3: &mut BIG, n: &mut BIG) -> usize { n.copy(&BIG::new_ints(&rom::CURVE_BNX)); n3.copy(&n); n3.pmul(3); @@ -148,18 +147,18 @@ fn lbits(n3: &mut BIG,n: &mut BIG) -> usize { /* prepare for multi-pairing */ pub fn initmp() -> [FP48; rom::ATE_BITS] { let r: [FP48; rom::ATE_BITS] = [FP48::new_int(1); rom::ATE_BITS]; - return r + return r; } /* basic Miller loop */ -pub fn miller(r:&[FP48]) -> FP48 { - let mut res=FP48::new_int(1); +pub fn miller(r: &[FP48]) -> FP48 { + let mut res = FP48::new_int(1); for i in (1..rom::ATE_BITS).rev() { res.sqr(); res.ssmul(&r[i]); } - if ecp::SIGN_OF_X==SignOfX::NEGATIVEX { + if ecp::SIGN_OF_X == SignOfX::NEGATIVEX { res.conj(); } res.ssmul(&r[0]); @@ -168,11 +167,11 @@ pub fn miller(r:&[FP48]) -> FP48 { /* Accumulate another set of line functions for n-pairing */ #[allow(non_snake_case)] -pub fn another(r:&mut [FP48],P1: &ECP8,Q1: &ECP) { +pub fn another(r: &mut [FP48], P1: &ECP8, Q1: &ECP) { let mut n = BIG::new(); let mut n3 = BIG::new(); -// P is needed in affine form for line function, Q for (Qx,Qy) extraction + // P is needed in affine form for line function, Q for (Qx,Qy) extraction let mut P = ECP8::new(); P.copy(P1); P.affine(); @@ -189,18 +188,18 @@ pub fn another(r:&mut [FP48],P1: &ECP8,Q1: &ECP) { NP.copy(&P); NP.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); - for i in (1..nb-1).rev() { - let mut lv=linedbl(&mut A,&qx,&qy); + for i in (1..nb - 1).rev() { + let mut lv = linedbl(&mut A, &qx, &qy); - let bt=n3.bit(i)-n.bit(i); - if bt==1 { - let lv2=lineadd(&mut A,&P,&qx,&qy); + let bt = n3.bit(i) - n.bit(i); + if bt == 1 { + let lv2 = lineadd(&mut A, &P, &qx, &qy); lv.smul(&lv2); } - if bt==-1 { - let lv2=lineadd(&mut A,&NP,&qx,&qy); + if bt == -1 { + let lv2 = lineadd(&mut A, &NP, &qx, &qy); lv.smul(&lv2); } r[i].ssmul(&lv); @@ -231,7 +230,7 @@ pub fn ate(P1: &ECP8, Q1: &ECP) -> FP48 { NP.copy(&P); NP.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); for i in (1..nb - 1).rev() { r.sqr(); @@ -294,25 +293,25 @@ pub fn ate2(P1: &ECP8, Q1: &ECP, R1: &ECP8, S1: &ECP) -> FP48 { NR.copy(&R); NR.neg(); - let nb=lbits(&mut n3,&mut n); + let nb = lbits(&mut n3, &mut n); for i in (1..nb - 1).rev() { r.sqr(); let mut lv = linedbl(&mut A, &qx, &qy); let lv2 = linedbl(&mut B, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); let bt = n3.bit(i) - n.bit(i); if bt == 1 { lv = lineadd(&mut A, &P, &qx, &qy); let lv2 = lineadd(&mut B, &R, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); } if bt == -1 { lv = lineadd(&mut A, &NP, &qx, &qy); let lv2 = lineadd(&mut B, &NR, &sx, &sy); - lv.smul(&lv2); + lv.smul(&lv2); r.ssmul(&lv); } } @@ -339,10 +338,10 @@ pub fn fexp(m: &FP48) -> FP48 { lv.copy(&r); r.frob(&f, 8); r.mul(&lv); -// if r.isunity() { -// r.zero(); -// return r; -// } + // if r.isunity() { + // r.zero(); + // return r; + // } /* Hard part of final exp */ // Ghamman & Fouotsa Method diff --git a/src/roms/rom_anssi_32.rs b/src/roms/rom_anssi_32.rs index 403fb04..d64b4fc 100644 --- a/src/roms/rom_anssi_32.rs +++ b/src/roms/rom_anssi_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use anssi::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use anssi::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 // anssi Modulus diff --git a/src/roms/rom_anssi_64.rs b/src/roms/rom_anssi_64.rs index b0add0f..654ad6f 100644 --- a/src/roms/rom_anssi_64.rs +++ b/src/roms/rom_anssi_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use anssi::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use anssi::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // anssi Modulus diff --git a/src/roms/rom_bls24_32.rs b/src/roms/rom_bls24_32.rs index 72afe58..afdc8b9 100644 --- a/src/roms/rom_bls24_32.rs +++ b/src/roms/rom_bls24_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls24::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls24::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // bls24 Modulus diff --git a/src/roms/rom_bls24_64.rs b/src/roms/rom_bls24_64.rs index 0c500da..33a6f13 100644 --- a/src/roms/rom_bls24_64.rs +++ b/src/roms/rom_bls24_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls24::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls24::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // bls24 Modulus diff --git a/src/roms/rom_bls381_32.rs b/src/roms/rom_bls381_32.rs index 1ba0fe5..61f3140 100644 --- a/src/roms/rom_bls381_32.rs +++ b/src/roms/rom_bls381_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls381::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls381::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // bls381 Modulus diff --git a/src/roms/rom_bls381_64.rs b/src/roms/rom_bls381_64.rs index 08df12c..cea1446 100644 --- a/src/roms/rom_bls381_64.rs +++ b/src/roms/rom_bls381_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls381::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls381::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 58 // bls381 Modulus diff --git a/src/roms/rom_bls383_32.rs b/src/roms/rom_bls383_32.rs index 0ccb42d..4fd502e 100644 --- a/src/roms/rom_bls383_32.rs +++ b/src/roms/rom_bls383_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls383::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls383::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 pub const MODULUS: [Chunk; NLEN] = [ diff --git a/src/roms/rom_bls383_64.rs b/src/roms/rom_bls383_64.rs index 71bef66..5b3b97d 100644 --- a/src/roms/rom_bls383_64.rs +++ b/src/roms/rom_bls383_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls383::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls383::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 58 pub const MODULUS: [Chunk; NLEN] = [ diff --git a/src/roms/rom_bls461_32.rs b/src/roms/rom_bls461_32.rs index c452a9f..3a07a56 100644 --- a/src/roms/rom_bls461_32.rs +++ b/src/roms/rom_bls461_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls461::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls461::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 // bls461 Modulus diff --git a/src/roms/rom_bls461_64.rs b/src/roms/rom_bls461_64.rs index 500ef04..b6d822c 100644 --- a/src/roms/rom_bls461_64.rs +++ b/src/roms/rom_bls461_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls461::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls461::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 60 // bls461 Modulus diff --git a/src/roms/rom_bls48_32.rs b/src/roms/rom_bls48_32.rs index 83517a8..73cedc4 100644 --- a/src/roms/rom_bls48_32.rs +++ b/src/roms/rom_bls48_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls48::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls48::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // bls48 Modulus diff --git a/src/roms/rom_bls48_64.rs b/src/roms/rom_bls48_64.rs index 129c776..fe41cb4 100644 --- a/src/roms/rom_bls48_64.rs +++ b/src/roms/rom_bls48_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bls48::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bls48::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 58 // bls48 Modulus diff --git a/src/roms/rom_bn254CX_32.rs b/src/roms/rom_bn254CX_32.rs index e1cff0d..e0ebba9 100644 --- a/src/roms/rom_bn254CX_32.rs +++ b/src/roms/rom_bn254CX_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bn254CX::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bn254CX::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 // bn254CX Modulus diff --git a/src/roms/rom_bn254CX_64.rs b/src/roms/rom_bn254CX_64.rs index 7f6d274..fa9e221 100644 --- a/src/roms/rom_bn254CX_64.rs +++ b/src/roms/rom_bn254CX_64.rs @@ -17,10 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bn254CX::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; - +use bn254CX::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // bn254CX Modulus diff --git a/src/roms/rom_bn254_32.rs b/src/roms/rom_bn254_32.rs index c9ae5ec..e31eb7e 100644 --- a/src/roms/rom_bn254_32.rs +++ b/src/roms/rom_bn254_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bn254::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bn254::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 pub const MODULUS: [Chunk; NLEN] = [ diff --git a/src/roms/rom_bn254_64.rs b/src/roms/rom_bn254_64.rs index f61b542..ce48907 100644 --- a/src/roms/rom_bn254_64.rs +++ b/src/roms/rom_bn254_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use bn254::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use bn254::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // BN254 Modulus // Base Bits= 56 @@ -205,4 +205,4 @@ pub const SEXTIC_TWIST: SexticTwist = SexticTwist::D_TYPE; pub const ATE_BITS: usize = 66; pub const SIGN_OF_X: SignOfX = SignOfX::NEGATIVEX; pub const HASH_TYPE: usize = 32; -pub const AESKEY: usize = 16; \ No newline at end of file +pub const AESKEY: usize = 16; diff --git a/src/roms/rom_brainpool_32.rs b/src/roms/rom_brainpool_32.rs index b788632..440c8e8 100644 --- a/src/roms/rom_brainpool_32.rs +++ b/src/roms/rom_brainpool_32.rs @@ -19,9 +19,9 @@ under the License. /* Note that the original curve has been transformed to an isomorphic curve with A=-3 */ -use brainpool::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use brainpool::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 // brainpool Modulus diff --git a/src/roms/rom_brainpool_64.rs b/src/roms/rom_brainpool_64.rs index 8191561..804e479 100644 --- a/src/roms/rom_brainpool_64.rs +++ b/src/roms/rom_brainpool_64.rs @@ -19,9 +19,9 @@ under the License. /* Note that the original curve has been transformed to an isomorphic curve with A=-3 */ -use brainpool::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use brainpool::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // brainpool Modulus diff --git a/src/roms/rom_c25519_32.rs b/src/roms/rom_c25519_32.rs index 6da6a05..ca6d72c 100644 --- a/src/roms/rom_c25519_32.rs +++ b/src/roms/rom_c25519_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use c25519::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use c25519::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // Curve25519 Modulus diff --git a/src/roms/rom_c25519_64.rs b/src/roms/rom_c25519_64.rs index 9a8c59f..bf3eb59 100644 --- a/src/roms/rom_c25519_64.rs +++ b/src/roms/rom_c25519_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use c25519::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use c25519::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // Curve25519 Modulus diff --git a/src/roms/rom_c41417_32.rs b/src/roms/rom_c41417_32.rs index a8330cb..bd177c8 100644 --- a/src/roms/rom_c41417_32.rs +++ b/src/roms/rom_c41417_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use c41417::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use c41417::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // c41417 Modulus diff --git a/src/roms/rom_c41417_64.rs b/src/roms/rom_c41417_64.rs index 52b51b1..5c08731 100644 --- a/src/roms/rom_c41417_64.rs +++ b/src/roms/rom_c41417_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use c41417::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use c41417::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 60 // c41417 Modulus diff --git a/src/roms/rom_ed25519_32.rs b/src/roms/rom_ed25519_32.rs index be1d156..d92afa1 100644 --- a/src/roms/rom_ed25519_32.rs +++ b/src/roms/rom_ed25519_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use ed25519::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use ed25519::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // Curve25519 Modulus diff --git a/src/roms/rom_ed25519_64.rs b/src/roms/rom_ed25519_64.rs index cf23672..cf6f1f9 100644 --- a/src/roms/rom_ed25519_64.rs +++ b/src/roms/rom_ed25519_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use ed25519::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use ed25519::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // Curve25519 Modulus diff --git a/src/roms/rom_fp256bn_32.rs b/src/roms/rom_fp256bn_32.rs index e3cabe1..85b145a 100644 --- a/src/roms/rom_fp256bn_32.rs +++ b/src/roms/rom_fp256bn_32.rs @@ -17,10 +17,9 @@ specific language governing permissions and limitations under the License. */ -use fp256bn::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; - +use fp256bn::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 pub const MODULUS: [Chunk; NLEN] = [ diff --git a/src/roms/rom_fp256bn_64.rs b/src/roms/rom_fp256bn_64.rs index bde7639..77ffc40 100644 --- a/src/roms/rom_fp256bn_64.rs +++ b/src/roms/rom_fp256bn_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use fp256bn::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use fp256bn::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // fp256bn Modulus // Base Bits= 56 diff --git a/src/roms/rom_fp512bn_32.rs b/src/roms/rom_fp512bn_32.rs index cdc44af..18fefed 100644 --- a/src/roms/rom_fp512bn_32.rs +++ b/src/roms/rom_fp512bn_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use fp512bn::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use fp512bn::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 pub const MODULUS: [Chunk; NLEN] = [ diff --git a/src/roms/rom_fp512bn_64.rs b/src/roms/rom_fp512bn_64.rs index 54d85c4..65779f7 100644 --- a/src/roms/rom_fp512bn_64.rs +++ b/src/roms/rom_fp512bn_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use fp512bn::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use fp512bn::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 60 pub const MODULUS: [Chunk; NLEN] = [ diff --git a/src/roms/rom_goldilocks_32.rs b/src/roms/rom_goldilocks_32.rs index 5d5f8bb..791423c 100644 --- a/src/roms/rom_goldilocks_32.rs +++ b/src/roms/rom_goldilocks_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use goldilocks::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use goldilocks::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // Goldilocks modulus diff --git a/src/roms/rom_goldilocks_64.rs b/src/roms/rom_goldilocks_64.rs index d6cadf1..15e48b3 100644 --- a/src/roms/rom_goldilocks_64.rs +++ b/src/roms/rom_goldilocks_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use goldilocks::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use goldilocks::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 58 // Goldilocks modulus diff --git a/src/roms/rom_hifive_32.rs b/src/roms/rom_hifive_32.rs index cfa9f59..19ef026 100644 --- a/src/roms/rom_hifive_32.rs +++ b/src/roms/rom_hifive_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use hifive::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use hifive::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 diff --git a/src/roms/rom_hifive_64.rs b/src/roms/rom_hifive_64.rs index b2eebb9..b59e423 100644 --- a/src/roms/rom_hifive_64.rs +++ b/src/roms/rom_hifive_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use hifive::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use hifive::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 60 diff --git a/src/roms/rom_nist256_32.rs b/src/roms/rom_nist256_32.rs index 6859da5..bed195e 100644 --- a/src/roms/rom_nist256_32.rs +++ b/src/roms/rom_nist256_32.rs @@ -19,9 +19,9 @@ under the License. /* Fixed Data in ROM - Field and Curve parameters */ -use nist256::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nist256::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 @@ -45,8 +45,7 @@ pub const CURVE_B: [Chunk; NLEN] = [ 0xAC635D8, 0x5, ]; pub const CURVE_ORDER: [Chunk; NLEN] = [ - 0xC632551, 0xB9CAC2F, 0x79E84F3, 0xFAADA71, 0xFFFBCE6, 0xFFFFFFF, 0xFFFFFF, 0x0, 0xFFFFFFF, - 0xF, + 0xC632551, 0xB9CAC2F, 0x79E84F3, 0xFAADA71, 0xFFFBCE6, 0xFFFFFFF, 0xFFFFFF, 0x0, 0xFFFFFFF, 0xF, ]; pub const CURVE_GX: [Chunk; NLEN] = [ 0x898C296, 0xA13945D, 0xB33A0F4, 0x7D812DE, 0xF27703, 0xE563A44, 0x7F8BCE6, 0xE12C424, diff --git a/src/roms/rom_nist256_64.rs b/src/roms/rom_nist256_64.rs index 015bbb3..fa4fd8b 100644 --- a/src/roms/rom_nist256_64.rs +++ b/src/roms/rom_nist256_64.rs @@ -19,9 +19,9 @@ under the License. /* Fixed Data in ROM - Field and Curve parameters */ -use nist256::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nist256::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // nist256 modulus diff --git a/src/roms/rom_nist384_32.rs b/src/roms/rom_nist384_32.rs index 48d7826..b025645 100644 --- a/src/roms/rom_nist384_32.rs +++ b/src/roms/rom_nist384_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nist384::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nist384::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 diff --git a/src/roms/rom_nist384_64.rs b/src/roms/rom_nist384_64.rs index f0f5c69..0c8b75c 100644 --- a/src/roms/rom_nist384_64.rs +++ b/src/roms/rom_nist384_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nist384::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nist384::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 @@ -44,7 +44,6 @@ pub const R2MODP: [Chunk; NLEN] = [ ]; pub const MCONST: Chunk = 0x100000001; - // nist384 Curve pub const CURVE_COF_I: isize = 1; pub const CURVE_A: isize = -3; diff --git a/src/roms/rom_nist521_32.rs b/src/roms/rom_nist521_32.rs index 55cbf30..11d8c51 100644 --- a/src/roms/rom_nist521_32.rs +++ b/src/roms/rom_nist521_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nist521::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nist521::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 // nist521 Modulus diff --git a/src/roms/rom_nist521_64.rs b/src/roms/rom_nist521_64.rs index bf241b2..11bb5f2 100644 --- a/src/roms/rom_nist521_64.rs +++ b/src/roms/rom_nist521_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nist521::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nist521::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 60 // nist521 Modulus diff --git a/src/roms/rom_nums256e_32.rs b/src/roms/rom_nums256e_32.rs index 45506bd..1f3b5c1 100644 --- a/src/roms/rom_nums256e_32.rs +++ b/src/roms/rom_nums256e_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums256e::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums256e::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 @@ -68,4 +68,3 @@ pub const ATE_BITS: usize = 0; pub const SIGN_OF_X: SignOfX = SignOfX::NOT; pub const HASH_TYPE: usize = 32; pub const AESKEY: usize = 16; - diff --git a/src/roms/rom_nums256e_64.rs b/src/roms/rom_nums256e_64.rs index 4382924..bae331c 100644 --- a/src/roms/rom_nums256e_64.rs +++ b/src/roms/rom_nums256e_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums256e::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums256e::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // nums256 Modulus @@ -77,4 +77,3 @@ pub const ATE_BITS: usize = 0; pub const SIGN_OF_X: SignOfX = SignOfX::NOT; pub const HASH_TYPE: usize = 32; pub const AESKEY: usize = 16; - diff --git a/src/roms/rom_nums256w_32.rs b/src/roms/rom_nums256w_32.rs index b768380..2e56c41 100644 --- a/src/roms/rom_nums256w_32.rs +++ b/src/roms/rom_nums256w_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums256w::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums256w::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 // nums256 modulus diff --git a/src/roms/rom_nums256w_64.rs b/src/roms/rom_nums256w_64.rs index 5b5d491..711d7ec 100644 --- a/src/roms/rom_nums256w_64.rs +++ b/src/roms/rom_nums256w_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums256w::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums256w::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // nums256 Modulus diff --git a/src/roms/rom_nums384e_32.rs b/src/roms/rom_nums384e_32.rs index eaad1c8..888eff6 100644 --- a/src/roms/rom_nums384e_32.rs +++ b/src/roms/rom_nums384e_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums384e::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums384e::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // nums384 Modulus @@ -71,4 +71,3 @@ pub const ATE_BITS: usize = 0; pub const SIGN_OF_X: SignOfX = SignOfX::NOT; pub const HASH_TYPE: usize = 48; pub const AESKEY: usize = 24; - diff --git a/src/roms/rom_nums384e_64.rs b/src/roms/rom_nums384e_64.rs index 08d83c2..20ee825 100644 --- a/src/roms/rom_nums384e_64.rs +++ b/src/roms/rom_nums384e_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums384e::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums384e::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 // nums384 Modulus @@ -92,4 +92,3 @@ pub const ATE_BITS: usize = 0; pub const SIGN_OF_X: SignOfX = SignOfX::NOT; pub const HASH_TYPE: usize = 48; pub const AESKEY: usize = 24; - diff --git a/src/roms/rom_nums384w_32.rs b/src/roms/rom_nums384w_32.rs index 92181a6..f49379e 100644 --- a/src/roms/rom_nums384w_32.rs +++ b/src/roms/rom_nums384w_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums384w::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums384w::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // nums384 Modulus @@ -71,4 +71,3 @@ pub const ATE_BITS: usize = 0; pub const SIGN_OF_X: SignOfX = SignOfX::NOT; pub const HASH_TYPE: usize = 48; pub const AESKEY: usize = 24; - diff --git a/src/roms/rom_nums384w_64.rs b/src/roms/rom_nums384w_64.rs index 3f51d94..f9e134b 100644 --- a/src/roms/rom_nums384w_64.rs +++ b/src/roms/rom_nums384w_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums384w::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums384w::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 58 // nums384 Modulus @@ -91,4 +91,3 @@ pub const ATE_BITS: usize = 0; pub const SIGN_OF_X: SignOfX = SignOfX::NOT; pub const HASH_TYPE: usize = 48; pub const AESKEY: usize = 24; - diff --git a/src/roms/rom_nums512e_32.rs b/src/roms/rom_nums512e_32.rs index 8d53f9f..b14a0a1 100644 --- a/src/roms/rom_nums512e_32.rs +++ b/src/roms/rom_nums512e_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums512e::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums512e::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // nums512 Modulus diff --git a/src/roms/rom_nums512e_64.rs b/src/roms/rom_nums512e_64.rs index 298f3cc..7e3fd98 100644 --- a/src/roms/rom_nums512e_64.rs +++ b/src/roms/rom_nums512e_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums512e::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums512e::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 60 // nums512 Modulus diff --git a/src/roms/rom_nums512w_32.rs b/src/roms/rom_nums512w_32.rs index 785070c..c3e07c5 100644 --- a/src/roms/rom_nums512w_32.rs +++ b/src/roms/rom_nums512w_32.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums512w::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums512w::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 29 // nums512 Modulus diff --git a/src/roms/rom_nums512w_64.rs b/src/roms/rom_nums512w_64.rs index 6868c87..52ee250 100644 --- a/src/roms/rom_nums512w_64.rs +++ b/src/roms/rom_nums512w_64.rs @@ -17,9 +17,9 @@ specific language governing permissions and limitations under the License. */ -use nums512w::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use nums512w::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 60 // nums512 Modulus diff --git a/src/roms/rom_rsa2048_32.rs b/src/roms/rom_rsa2048_32.rs index 6dd06a6..29b5a60 100644 --- a/src/roms/rom_rsa2048_32.rs +++ b/src/roms/rom_rsa2048_32.rs @@ -1,3 +1,3 @@ pub const MODBYTES: usize = 128; pub const BASEBITS: usize = 28; -pub const FFLEN: usize = 2; \ No newline at end of file +pub const FFLEN: usize = 2; diff --git a/src/roms/rom_rsa2048_64.rs b/src/roms/rom_rsa2048_64.rs index be3ba0d..4caac22 100644 --- a/src/roms/rom_rsa2048_64.rs +++ b/src/roms/rom_rsa2048_64.rs @@ -1,3 +1,3 @@ pub const MODBYTES: usize = 128; pub const BASEBITS: usize = 58; -pub const FFLEN: usize = 2; \ No newline at end of file +pub const FFLEN: usize = 2; diff --git a/src/roms/rom_rsa3072_32.rs b/src/roms/rom_rsa3072_32.rs index d5622e2..62b929e 100644 --- a/src/roms/rom_rsa3072_32.rs +++ b/src/roms/rom_rsa3072_32.rs @@ -1,3 +1,3 @@ pub const MODBYTES: usize = 48; pub const BASEBITS: usize = 28; -pub const FFLEN: usize = 8; \ No newline at end of file +pub const FFLEN: usize = 8; diff --git a/src/roms/rom_rsa3072_64.rs b/src/roms/rom_rsa3072_64.rs index 4d1ed2b..ef66da7 100644 --- a/src/roms/rom_rsa3072_64.rs +++ b/src/roms/rom_rsa3072_64.rs @@ -1,3 +1,3 @@ pub const MODBYTES: usize = 48; pub const BASEBITS: usize = 58; -pub const FFLEN: usize = 8; \ No newline at end of file +pub const FFLEN: usize = 8; diff --git a/src/roms/rom_rsa4096_32.rs b/src/roms/rom_rsa4096_32.rs index 223cb7d..16ade15 100644 --- a/src/roms/rom_rsa4096_32.rs +++ b/src/roms/rom_rsa4096_32.rs @@ -1,3 +1,3 @@ pub const MODBYTES: usize = 64; pub const BASEBITS: usize = 29; -pub const FFLEN: usize = 8; \ No newline at end of file +pub const FFLEN: usize = 8; diff --git a/src/roms/rom_rsa4096_64.rs b/src/roms/rom_rsa4096_64.rs index 77d3eb6..e8ebfc6 100644 --- a/src/roms/rom_rsa4096_64.rs +++ b/src/roms/rom_rsa4096_64.rs @@ -1,3 +1,3 @@ pub const MODBYTES: usize = 64; pub const BASEBITS: usize = 60; -pub const FFLEN: usize = 8; \ No newline at end of file +pub const FFLEN: usize = 8; diff --git a/src/roms/rom_secp256k1_32.rs b/src/roms/rom_secp256k1_32.rs index 94bbbaa..cb28327 100644 --- a/src/roms/rom_secp256k1_32.rs +++ b/src/roms/rom_secp256k1_32.rs @@ -19,9 +19,9 @@ under the License. /* Fixed Data in ROM - Field and Curve parameters */ -use secp256k1::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use secp256k1::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 28 // secp256k1 modulus diff --git a/src/roms/rom_secp256k1_64.rs b/src/roms/rom_secp256k1_64.rs index b22d875..43a3b91 100644 --- a/src/roms/rom_secp256k1_64.rs +++ b/src/roms/rom_secp256k1_64.rs @@ -19,9 +19,9 @@ under the License. /* Fixed Data in ROM - Field and Curve parameters */ -use secp256k1::big::NLEN; use super::super::arch::Chunk; -use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; +use secp256k1::big::NLEN; +use types::{CurvePairingType, CurveType, ModType, SexticTwist, SignOfX}; // Base Bits= 56 diff --git a/src/types.rs b/src/types.rs index ea310d7..19b43d0 100644 --- a/src/types.rs +++ b/src/types.rs @@ -42,4 +42,3 @@ pub enum SignOfX { POSITIVEX, NEGATIVEX, } -
