From b4e3cd42d446a6a1dc48aeede3a7f28e243a5e1e Mon Sep 17 00:00:00 2001 From: Sarkoxed Date: Thu, 22 Jan 2026 19:51:51 +0300 Subject: [PATCH] update the fields directory --- fields/U1024.nr | 36 ++++++++++++------------------------ fields/U2048.nr | 36 ++++++++++++------------------------ fields/U256.nr | 36 ++++++++++++------------------------ fields/U384.nr | 36 ++++++++++++------------------------ fields/U4096.nr | 36 ++++++++++++------------------------ fields/U512.nr | 36 ++++++++++++------------------------ fields/U768.nr | 36 ++++++++++++------------------------ fields/U8192.nr | 36 ++++++++++++------------------------ fields/bls12_377Fq.nr | 36 ++++++++++++------------------------ fields/bls12_377Fr.nr | 36 ++++++++++++------------------------ fields/bls12_381Fq.nr | 36 ++++++++++++------------------------ fields/bls12_381Fr.nr | 36 ++++++++++++------------------------ fields/bn254Fq.nr | 36 ++++++++++++------------------------ fields/ed25519Fq.nr | 36 ++++++++++++------------------------ fields/ed25519Fr.nr | 36 ++++++++++++------------------------ fields/mnt4_753Fq.nr | 36 ++++++++++++------------------------ fields/mnt4_753Fr.nr | 36 ++++++++++++------------------------ fields/mnt6_753Fq.nr | 36 ++++++++++++------------------------ fields/mnt6_753Fr.nr | 36 ++++++++++++------------------------ fields/pallasFq.nr | 36 ++++++++++++------------------------ fields/pallasFr.nr | 36 ++++++++++++------------------------ fields/secp256k1Fq.nr | 36 ++++++++++++------------------------ fields/secp256k1Fr.nr | 36 ++++++++++++------------------------ fields/secp256r1Fq.nr | 36 ++++++++++++------------------------ fields/secp256r1Fr.nr | 36 ++++++++++++------------------------ fields/secp384r1Fq.nr | 36 ++++++++++++------------------------ fields/secp384r1Fr.nr | 36 ++++++++++++------------------------ fields/vestaFq.nr | 36 ++++++++++++------------------------ fields/vestaFr.nr | 36 ++++++++++++------------------------ 29 files changed, 348 insertions(+), 696 deletions(-) diff --git a/fields/U1024.nr b/fields/U1024.nr index 8843a68..8d44ba3 100644 --- a/fields/U1024.nr +++ b/fields/U1024.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U1024Params {} -impl RuntimeBigNumParamsTrait<9> for U1024Params { - fn modulus_bits() -> u32 { - 1025 - } -} -impl BigNumParamsTrait<9> for U1024Params { - fn get_instance() -> BigNumInstance<9, Self> { - U1024_Instance - } - fn modulus_bits() -> u32 { - 1025 - } -} -pub global U1024_Instance: BigNumInstance<9, U1024Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U1024_PARAMS: BigNumParams<9, 1025> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x010000000000000000 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0x01ffffffffffffffff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x400000000000000000 ] -}; + }; + +#[derive_bignum(9, 1025, quote { U1024_PARAMS })] +pub struct U1024 {limbs: [u128; 9]} + + \ No newline at end of file diff --git a/fields/U2048.nr b/fields/U2048.nr index 1ead8cc..cff79d1 100644 --- a/fields/U2048.nr +++ b/fields/U2048.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U2048Params {} -impl RuntimeBigNumParamsTrait<18> for U2048Params { - fn modulus_bits() -> u32 { - 2049 - } -} -impl BigNumParamsTrait<18> for U2048Params { - fn get_instance() -> BigNumInstance<18, Self> { - U2048_Instance - } - fn modulus_bits() -> u32 { - 2049 - } -} -pub global U2048_Instance: BigNumInstance<18, U2048Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U2048_PARAMS: BigNumParams<18, 2049> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0x01ff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4000 ] -}; + }; + +#[derive_bignum(18, 2049, quote { U2048_PARAMS })] +pub struct U2048 {limbs: [u128; 18]} + + \ No newline at end of file diff --git a/fields/U256.nr b/fields/U256.nr index 66c2996..69337de 100644 --- a/fields/U256.nr +++ b/fields/U256.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U256Params {} -impl RuntimeBigNumParamsTrait<3> for U256Params { - fn modulus_bits() -> u32 { - 257 - } -} -impl BigNumParamsTrait<3> for U256Params { - fn get_instance() -> BigNumInstance<3, Self> { - U256_Instance - } - fn modulus_bits() -> u32 { - 257 - } -} -pub global U256_Instance: BigNumInstance<3, U256Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U256_PARAMS: BigNumParams<3, 257> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x010000 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0x01ffff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x010000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x010000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x400000 ] -}; + }; + +#[derive_bignum(3, 257, quote { U256_PARAMS })] +pub struct U256 {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/U384.nr b/fields/U384.nr index 9723fe6..19e8fd0 100644 --- a/fields/U384.nr +++ b/fields/U384.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U384Params {} -impl RuntimeBigNumParamsTrait<4> for U384Params { - fn modulus_bits() -> u32 { - 385 - } -} -impl BigNumParamsTrait<4> for U384Params { - fn get_instance() -> BigNumInstance<4, Self> { - U384_Instance - } - fn modulus_bits() -> u32 { - 385 - } -} -pub global U384_Instance: BigNumInstance<4, U384Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U384_PARAMS: BigNumParams<4, 385> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x00, 0x01000000 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0x01ffffff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01000000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01000000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x00, 0x40000000 ] -}; + }; + +#[derive_bignum(4, 385, quote { U384_PARAMS })] +pub struct U384 {limbs: [u128; 4]} + + \ No newline at end of file diff --git a/fields/U4096.nr b/fields/U4096.nr index 5273bd5..967b0be 100644 --- a/fields/U4096.nr +++ b/fields/U4096.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U4096Params {} -impl RuntimeBigNumParamsTrait<35> for U4096Params { - fn modulus_bits() -> u32 { - 4097 - } -} -impl BigNumParamsTrait<35> for U4096Params { - fn get_instance() -> BigNumInstance<35, Self> { - U4096_Instance - } - fn modulus_bits() -> u32 { - 4097 - } -} -pub global U4096_Instance: BigNumInstance<35, U4096Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U4096_PARAMS: BigNumParams<35, 4097> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x010000 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0x01ffff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x010000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x010000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x400000 ] -}; + }; + +#[derive_bignum(35, 4097, quote { U4096_PARAMS })] +pub struct U4096 {limbs: [u128; 35]} + + \ No newline at end of file diff --git a/fields/U512.nr b/fields/U512.nr index 38646af..a3703cc 100644 --- a/fields/U512.nr +++ b/fields/U512.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U512Params {} -impl RuntimeBigNumParamsTrait<5> for U512Params { - fn modulus_bits() -> u32 { - 513 - } -} -impl BigNumParamsTrait<5> for U512Params { - fn get_instance() -> BigNumInstance<5, Self> { - U512_Instance - } - fn modulus_bits() -> u32 { - 513 - } -} -pub global U512_Instance: BigNumInstance<5, U512Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U512_PARAMS: BigNumParams<5, 513> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x00, 0x00, 0x0100000000 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0x01ffffffff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100000000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100000000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x00, 0x00, 0x4000000000 ] -}; + }; + +#[derive_bignum(5, 513, quote { U512_PARAMS })] +pub struct U512 {limbs: [u128; 5]} + + \ No newline at end of file diff --git a/fields/U768.nr b/fields/U768.nr index b8828ea..2e783dc 100644 --- a/fields/U768.nr +++ b/fields/U768.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U768Params {} -impl RuntimeBigNumParamsTrait<7> for U768Params { - fn modulus_bits() -> u32 { - 769 - } -} -impl BigNumParamsTrait<7> for U768Params { - fn get_instance() -> BigNumInstance<7, Self> { - U768_Instance - } - fn modulus_bits() -> u32 { - 769 - } -} -pub global U768_Instance: BigNumInstance<7, U768Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U768_PARAMS: BigNumParams<7, 769> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01000000000000 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0x01ffffffffffff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01000000000000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01000000000000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40000000000000 ] -}; + }; + +#[derive_bignum(7, 769, quote { U768_PARAMS })] +pub struct U768 {limbs: [u128; 7]} + + \ No newline at end of file diff --git a/fields/U8192.nr b/fields/U8192.nr index c648412..27856eb 100644 --- a/fields/U8192.nr +++ b/fields/U8192.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct U8192Params {} -impl RuntimeBigNumParamsTrait<69> for U8192Params { - fn modulus_bits() -> u32 { - 8193 - } -} -impl BigNumParamsTrait<69> for U8192Params { - fn get_instance() -> BigNumInstance<69, Self> { - U8192_Instance - } - fn modulus_bits() -> u32 { - 8193 - } -} -pub global U8192_Instance: BigNumInstance<69, U8192Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global U8192_PARAMS: BigNumParams<69, 8193> = BigNumParams { + has_multiplicative_inverse: false, modulus: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100000000 ], double_modulus: [ 0x01000000000000000000000000000000, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffff, 0x01ffffffff ], - modulus_u60: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100000000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0100000000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4000000000 ] -}; + }; + +#[derive_bignum(69, 8193, quote { U8192_PARAMS })] +pub struct U8192 {limbs: [u128; 69]} + + \ No newline at end of file diff --git a/fields/bls12_377Fq.nr b/fields/bls12_377Fq.nr index 32cb87b..366c671 100644 --- a/fields/bls12_377Fq.nr +++ b/fields/bls12_377Fq.nr @@ -16,36 +16,24 @@ //! * G1 curve equation: y^2 = x^3 + 1 //! * G2 curve equation: y^2 = x^3 + B, where //! * B = Fq2(0, 155198655607781456406391640216936120121836107652948796323930557600032281009004493664981332883744016074664192874906) -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct BLS12_377_Fq_Params {} -impl RuntimeBigNumParamsTrait<4> for BLS12_377_Fq_Params { - fn modulus_bits() -> u32 { - 377 - } -} -impl BigNumParamsTrait<4> for BLS12_377_Fq_Params { - fn get_instance() -> BigNumInstance<4, Self> { - BLS12_377_Fq_Instance - } - fn modulus_bits() -> u32 { - 377 - } -} -pub global BLS12_377_Fq_Instance: BigNumInstance<4, BLS12_377_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global BLS12_377_Fq_PARAMS: BigNumParams<4, 377> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x0b5d44300000008508c00000000001, 0xd9f300f5138f1ef3622fba09480017, 0x4617c510eac63b05c06ca1493b1a22, 0x01ae3a ], double_modulus: [ 0x0116ba88600000010a11800000000002, 0x01b3e601ea271e3de6c45f741290002d, 0x018c2f8a21d58c760b80d94292763444, 0x035c73 ], - modulus_u60: U60Repr { limbs: [ - 0x0508c00000000001, 0xb5d44300000008, 0x03622fba09480017, 0x0d9f300f5138f1ef, 0x05c06ca1493b1a22, 0x04617c510eac63b0, 0x01ae3a, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0508c00000000001, 0xb5d44300000008, 0x03622fba09480017, 0x0d9f300f5138f1ef, 0x05c06ca1493b1a22, 0x04617c510eac63b0, 0x01ae3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0xd687789c42a591f9fd58c5e4daffcc, 0x0de6776b1a06af2d488d85a6d02d0e, 0xd0cc4060e976c3ca0582ef4f73bbad, 0x261508 ] -}; + }; + +#[derive_bignum(4, 377, quote { BLS12_377_Fq_PARAMS })] +pub struct BLS12_377_Fq {limbs: [u128; 4]} + + \ No newline at end of file diff --git a/fields/bls12_377Fr.nr b/fields/bls12_377Fr.nr index ee3ac2e..3c69e85 100644 --- a/fields/bls12_377Fr.nr +++ b/fields/bls12_377Fr.nr @@ -17,36 +17,24 @@ //! * G2 curve equation: y^2 = x^3 + B, where //! * B = Fq2(0, 155198655607781456406391640216936120121836107652948796323930557600032281009004493664981332883744016074664192874906) -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct BLS12_377_Fr_Params {} -impl RuntimeBigNumParamsTrait<3> for BLS12_377_Fr_Params { - fn modulus_bits() -> u32 { - 253 - } -} -impl BigNumParamsTrait<3> for BLS12_377_Fr_Params { - fn get_instance() -> BigNumInstance<3, Self> { - BLS12_377_Fr_Instance - } - fn modulus_bits() -> u32 { - 253 - } -} -pub global BLS12_377_Fr_Instance: BigNumInstance<3, BLS12_377_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global BLS12_377_Fr_PARAMS: BigNumParams<3, 253> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xaa76fed00000010a11800000000001, 0x655e9a2ca55660b44d1e5c37b00159, 0x12ab ], double_modulus: [ 0x0154edfda00000021423000000000002, 0x01cabd34594aacc1689a3cb86f6002b2, 0x2555 ], - modulus_u60: U60Repr { limbs: [ - 0x0a11800000000001, 0x0aa76fed00000010, 0x044d1e5c37b00159, 0x0655e9a2ca55660b, 0x12ab, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0a11800000000001, 0x0aa76fed00000010, 0x044d1e5c37b00159, 0x0655e9a2ca55660b, 0x12ab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0xa180b8d69e258f5204c21151e79ea1, 0x91ec40b2c9ee4e51e49faa80548fd0, 0x036d94 ] -}; + }; + +#[derive_bignum(3, 253, quote { BLS12_377_Fr_PARAMS })] +pub struct BLS12_377_Fr {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/bls12_381Fq.nr b/fields/bls12_381Fq.nr index c91b4f3..03e2a06 100644 --- a/fields/bls12_381Fq.nr +++ b/fields/bls12_381Fq.nr @@ -14,36 +14,24 @@ //! * valuation(r - 1, 2) = 32 //! * G1 curve equation: y^2 = x^3 + 4 //! * G2 curve equation: y^2 = x^3 + Fq2(4, 4) -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct BLS12_381_Fq_Params {} -impl RuntimeBigNumParamsTrait<4> for BLS12_381_Fq_Params { - fn modulus_bits() -> u32 { - 381 - } -} -impl BigNumParamsTrait<4> for BLS12_381_Fq_Params { - fn get_instance() -> BigNumInstance<4, Self> { - BLS12_381_Fq_Instance - } - fn modulus_bits() -> u32 { - 381 - } -} -pub global BLS12_381_Fq_Instance: BigNumInstance<4, BLS12_381_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global BLS12_381_Fq_PARAMS: BigNumParams<4, 381> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xabfffeb153ffffb9feffffffffaaab, 0x4b84f38512bf6730d2a0f6b0f6241e, 0xea397fe69a4b1ba7b6434bacd76477, 0x1a0111 ], double_modulus: [ 0x0157fffd62a7ffff73fdffffffff5556, 0x019709e70a257ece61a541ed61ec483c, 0x01d472ffcd3496374f6c869759aec8ed, 0x340222 ], - modulus_u60: U60Repr { limbs: [ - 0x09feffffffffaaab, 0x0abfffeb153ffffb, 0xd2a0f6b0f6241e, 0x04b84f38512bf673, 0x07b6434bacd76477, 0x0ea397fe69a4b1ba, 0x1a0111, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x09feffffffffaaab, 0x0abfffeb153ffffb, 0xd2a0f6b0f6241e, 0x04b84f38512bf673, 0x07b6434bacd76477, 0x0ea397fe69a4b1ba, 0x1a0111, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x5c59e8163c701ec4f881fd59646e8b, 0x9d07fda82a52f7d1dc780a19de74e6, 0xbcf32791738a0406c331e9ae8a46e0, 0x02760d74 ] -}; + }; + +#[derive_bignum(4, 381, quote { BLS12_381_Fq_PARAMS })] +pub struct BLS12_381_Fq {limbs: [u128; 4]} + + \ No newline at end of file diff --git a/fields/bls12_381Fr.nr b/fields/bls12_381Fr.nr index 598db38..ff438ee 100644 --- a/fields/bls12_381Fr.nr +++ b/fields/bls12_381Fr.nr @@ -14,36 +14,24 @@ //! * valuation(r - 1, 2) = 32 //! * G1 curve equation: y^2 = x^3 + 4 //! * G2 curve equation: y^2 = x^3 + Fq2(4, 4) -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct BLS12_381_Fr_Params {} -impl RuntimeBigNumParamsTrait<3> for BLS12_381_Fr_Params { - fn modulus_bits() -> u32 { - 255 - } -} -impl BigNumParamsTrait<3> for BLS12_381_Fr_Params { - fn get_instance() -> BigNumInstance<3, Self> { - BLS12_381_Fr_Instance - } - fn modulus_bits() -> u32 { - 255 - } -} -pub global BLS12_381_Fr_Instance: BigNumInstance<3, BLS12_381_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global BLS12_381_Fr_PARAMS: BigNumParams<3, 255> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xbda402fffe5bfeffffffff00000001, 0xa753299d7d483339d80809a1d80553, 0x73ed ], double_modulus: [ 0x017b4805fffcb7fdfffffffe00000002, 0x014ea6533afa906673b0101343b00aa6, 0xe7da ], - modulus_u60: U60Repr { limbs: [ - 0x0fffffff00000001, 0x0bda402fffe5bfef, 0x09d80809a1d80553, 0x0a753299d7d48333, 0x73ed, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0fffffff00000001, 0x0bda402fffe5bfef, 0x09d80809a1d80553, 0x0a753299d7d48333, 0x73ed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x10fad2f92eb5c509cde80830358e4c, 0x53b7fb78ddf0e2d772dc1f823b4d94, 0x08d542 ] -}; + }; + +#[derive_bignum(3, 255, quote { BLS12_381_Fr_PARAMS })] +pub struct BLS12_381_Fr {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/bn254Fq.nr b/fields/bn254Fq.nr index 4120eda..49fa095 100644 --- a/fields/bn254Fq.nr +++ b/fields/bn254Fq.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct BN254_Fq_Params {} -impl RuntimeBigNumParamsTrait<3> for BN254_Fq_Params { - fn modulus_bits() -> u32 { - 254 - } -} -impl BigNumParamsTrait<3> for BN254_Fq_Params { - fn get_instance() -> BigNumInstance<3, Self> { - BN254_Fq_Instance - } - fn modulus_bits() -> u32 { - 254 - } -} -pub global BN254_Fq_Instance: BigNumInstance<3, BN254_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global BN254_Fq_PARAMS: BigNumParams<3, 254> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x816a916871ca8d3c208c16d87cfd47, 0x4e72e131a029b85045b68181585d97, 0x3064 ], double_modulus: [ 0x0102d522d0e3951a7841182db0f9fa8e, 0x019ce5c263405370a08b6d0302b0bb2e, 0x60c7 ], - modulus_u60: U60Repr { limbs: [ - 0x0c208c16d87cfd47, 0x0816a916871ca8d3, 0x45b68181585d97, 0x04e72e131a029b85, 0x3064, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0c208c16d87cfd47, 0x0816a916871ca8d3, 0x45b68181585d97, 0x04e72e131a029b85, 0x3064, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x65e1767cd4c086f3aed8a19bf90e51, 0x462623a04a7ab074a5868073013ae9, 0x054a47 ] -}; + }; + +#[derive_bignum(3, 254, quote { BN254_Fq_PARAMS })] +pub struct BN254_Fq {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/ed25519Fq.nr b/fields/ed25519Fq.nr index 66b292f..de0499d 100644 --- a/fields/ed25519Fq.nr +++ b/fields/ed25519Fq.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct ED25519_Fq_Params {} -impl RuntimeBigNumParamsTrait<3> for ED25519_Fq_Params { - fn modulus_bits() -> u32 { - 255 - } -} -impl BigNumParamsTrait<3> for ED25519_Fq_Params { - fn get_instance() -> BigNumInstance<3, Self> { - ED25519_Fq_Instance - } - fn modulus_bits() -> u32 { - 255 - } -} -pub global ED25519_Fq_Instance: BigNumInstance<3, ED25519_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global ED25519_Fq_PARAMS: BigNumParams<3, 255> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xffffffffffffffffffffffffffffed, 0xffffffffffffffffffffffffffffff, 0x7fff ], double_modulus: [ 0x01ffffffffffffffffffffffffffffda, 0x01fffffffffffffffffffffffffffffe, 0xfffe ], - modulus_u60: U60Repr { limbs: [ - 0x0fffffffffffffed, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x7fff, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0fffffffffffffed, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x7fff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x0130, 0x00, 0x080000 ] -}; + }; + +#[derive_bignum(3, 255, quote { ED25519_Fq_PARAMS })] +pub struct ED25519_Fq {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/ed25519Fr.nr b/fields/ed25519Fr.nr index fba4d52..33718ba 100644 --- a/fields/ed25519Fr.nr +++ b/fields/ed25519Fr.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct ED25519_Fr_Params {} -impl RuntimeBigNumParamsTrait<3> for ED25519_Fr_Params { - fn modulus_bits() -> u32 { - 253 - } -} -impl BigNumParamsTrait<3> for ED25519_Fr_Params { - fn get_instance() -> BigNumInstance<3, Self> { - ED25519_Fr_Instance - } - fn modulus_bits() -> u32 { - 253 - } -} -pub global ED25519_Fr_Instance: BigNumInstance<3, ED25519_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global ED25519_Fr_PARAMS: BigNumParams<3, 253> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xdef9dea2f79cd65812631a5cf5d3ed, 0x14, 0x1000 ], double_modulus: [ 0x01bdf3bd45ef39acb024c634b9eba7da, 0x01000000000000000000000000000028, 0x1fff ], - modulus_u60: U60Repr { limbs: [ - 0x0812631a5cf5d3ed, 0x0def9dea2f79cd65, 0x14, 0x00, 0x1000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0812631a5cf5d3ed, 0x0def9dea2f79cd65, 0x14, 0x00, 0x1000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x4188574218ca69fb673968c28b04c6, 0xfffffffffffffffffffffffffffac8, 0x03ffff ] -}; + }; + +#[derive_bignum(3, 253, quote { ED25519_Fr_PARAMS })] +pub struct ED25519_Fr {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/mnt4_753Fq.nr b/fields/mnt4_753Fq.nr index e0a8599..5fc0d48 100644 --- a/fields/mnt4_753Fq.nr +++ b/fields/mnt4_753Fq.nr @@ -19,36 +19,24 @@ //! * B = Fq2(0, b * NON_RESIDUE) //! * NON_RESIDUE = 13 is the quadratic non-residue used to conpub struct the //! extension field Fq2 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct MNT4_753_Fq_Params {} -impl RuntimeBigNumParamsTrait<7> for MNT4_753_Fq_Params { - fn modulus_bits() -> u32 { - 753 - } -} -impl BigNumParamsTrait<7> for MNT4_753_Fq_Params { - fn get_instance() -> BigNumInstance<7, Self> { - MNT4_753_Fq_Instance - } - fn modulus_bits() -> u32 { - 753 - } -} -pub global MNT4_753_Fq_Instance: BigNumInstance<7, MNT4_753_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global MNT4_753_Fq_PARAMS: BigNumParams<7, 753> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x9d54522cdd119f5e9063de245e8001, 0xcce9767254a4638810719ac425f0e3, 0x76f218059db80f0da5cb537e38685a, 0xe8a0ed8d99d124d9a15af79db117e7, 0x8fafed5eb7e8f96c97d87307fdb925, 0xc41110229022eee2cdadb7f997505b, 0x01c4c62d92 ], double_modulus: [ 0x013aa8a459ba233ebd20c7bc48bd0002, 0x0199d2ece4a948c71020e335884be1c6, 0x01ede4300b3b701e1b4b96a6fc70d0b4, 0x01d141db1b33a249b342b5ef3b622fcd, 0x011f5fdabd6fd1f2d92fb0e60ffb724a, 0x01882220452045ddc59b5b6ff32ea0b6, 0x03898c5b24 ], - modulus_u60: U60Repr { limbs: [ - 0x0e9063de245e8001, 0x09d54522cdd119f5, 0x0810719ac425f0e3, 0x0cce9767254a4638, 0x0da5cb537e38685a, 0x076f218059db80f0, 0x09a15af79db117e7, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0e9063de245e8001, 0x09d54522cdd119f5, 0x0810719ac425f0e3, 0x0cce9767254a4638, 0x0da5cb537e38685a, 0x076f218059db80f0, 0x09a15af79db117e7, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x5dcc95da918349f4965a2aee8fd750, 0x82372b75580c27c4d1f1f57a96a114, 0x58326e3c0552419849e3c7171d8522, 0x300e0ede1965cbf72f0aa9bf03479d, 0x7fb932cae2aba9a5d17c1ff73538ba, 0x82727c6eaef38056aaa0aaedb05746, 0x242f916cfa ] -}; + }; + +#[derive_bignum(7, 753, quote { MNT4_753_Fq_PARAMS })] +pub struct MNT4_753_Fq {limbs: [u128; 7]} + + \ No newline at end of file diff --git a/fields/mnt4_753Fr.nr b/fields/mnt4_753Fr.nr index 033fb4d..f67249e 100644 --- a/fields/mnt4_753Fr.nr +++ b/fields/mnt4_753Fr.nr @@ -19,36 +19,24 @@ //! * B = Fq2(0, b * NON_RESIDUE) //! * NON_RESIDUE = 13 is the quadratic non-residue used to conpub struct the //! extension field Fq2 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct MNT4_753_Fr_Params {} -impl RuntimeBigNumParamsTrait<7> for MNT4_753_Fr_Params { - fn modulus_bits() -> u32 { - 753 - } -} -impl BigNumParamsTrait<7> for MNT4_753_Fr_Params { - fn get_instance() -> BigNumInstance<7, Self> { - MNT4_753_Fr_Instance - } - fn modulus_bits() -> u32 { - 753 - } -} -pub global MNT4_753_Fr_Instance: BigNumInstance<7, MNT4_753_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global MNT4_753_Fr_PARAMS: BigNumParams<7, 753> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xa099170fa13a4fd90776e240000001, 0xf97634993aa4d6c381bc3f0057974e, 0x28c859a99b3eebca9429212636b9df, 0xe8a0ed8d99d124d9a15af79db26c5c, 0x8fafed5eb7e8f96c97d87307fdb925, 0xc41110229022eee2cdadb7f997505b, 0x01c4c62d92 ], double_modulus: [ 0x0141322e1f42749fb20eedc480000002, 0x01f2ec69327549ad8703787e00af2e9c, 0x015190b353367dd7952852424c6d73be, 0x01d141db1b33a249b342b5ef3b64d8b7, 0x011f5fdabd6fd1f2d92fb0e60ffb724a, 0x01882220452045ddc59b5b6ff32ea0b6, 0x03898c5b24 ], - modulus_u60: U60Repr { limbs: [ - 0x090776e240000001, 0x0a099170fa13a4fd, 0x0381bc3f0057974e, 0x0f97634993aa4d6c, 0x0a9429212636b9df, 0x028c859a99b3eebc, 0x09a15af79db26c5c, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x090776e240000001, 0x0a099170fa13a4fd, 0x0381bc3f0057974e, 0x0f97634993aa4d6c, 0x0a9429212636b9df, 0x028c859a99b3eebc, 0x09a15af79db26c5c, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x2dae11d15867718ec70f5ff059bba2, 0x76d65fe7e00ba391da260f2623ff9a, 0x140a086edaa60c58eb476bdedcb352, 0x300e0ede1965cbf72f0aa9bee81208, 0x7fb932cae2aba9a5d17c1ff73538ba, 0x82727c6eaef38056aaa0aaedb05746, 0x242f916cfa ] -}; + }; + +#[derive_bignum(7, 753, quote { MNT4_753_Fr_PARAMS })] +pub struct MNT4_753_Fr {limbs: [u128; 7]} + + \ No newline at end of file diff --git a/fields/mnt6_753Fq.nr b/fields/mnt6_753Fq.nr index 41ede6e..4c9ca2b 100644 --- a/fields/mnt6_753Fq.nr +++ b/fields/mnt6_753Fq.nr @@ -19,36 +19,24 @@ //! * B = Fq3(b * NON_RESIDUE, 0, 0) //! * NON_RESIDUE = 11 is the cubic non-residue used to conpub struct the //! extension field Fq3 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct MNT6_753_Fq_Params {} -impl RuntimeBigNumParamsTrait<7> for MNT6_753_Fq_Params { - fn modulus_bits() -> u32 { - 753 - } -} -impl BigNumParamsTrait<7> for MNT6_753_Fq_Params { - fn get_instance() -> BigNumInstance<7, Self> { - MNT6_753_Fq_Instance - } - fn modulus_bits() -> u32 { - 753 - } -} -pub global MNT6_753_Fq_Instance: BigNumInstance<7, MNT6_753_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global MNT6_753_Fq_PARAMS: BigNumParams<7, 753> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xa099170fa13a4fd90776e240000001, 0xf97634993aa4d6c381bc3f0057974e, 0x28c859a99b3eebca9429212636b9df, 0xe8a0ed8d99d124d9a15af79db26c5c, 0x8fafed5eb7e8f96c97d87307fdb925, 0xc41110229022eee2cdadb7f997505b, 0x01c4c62d92 ], double_modulus: [ 0x0141322e1f42749fb20eedc480000002, 0x01f2ec69327549ad8703787e00af2e9c, 0x015190b353367dd7952852424c6d73be, 0x01d141db1b33a249b342b5ef3b64d8b7, 0x011f5fdabd6fd1f2d92fb0e60ffb724a, 0x01882220452045ddc59b5b6ff32ea0b6, 0x03898c5b24 ], - modulus_u60: U60Repr { limbs: [ - 0x090776e240000001, 0x0a099170fa13a4fd, 0x0381bc3f0057974e, 0x0f97634993aa4d6c, 0x0a9429212636b9df, 0x028c859a99b3eebc, 0x09a15af79db26c5c, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x090776e240000001, 0x0a099170fa13a4fd, 0x0381bc3f0057974e, 0x0f97634993aa4d6c, 0x0a9429212636b9df, 0x028c859a99b3eebc, 0x09a15af79db26c5c, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x2dae11d15867718ec70f5ff059bba2, 0x76d65fe7e00ba391da260f2623ff9a, 0x140a086edaa60c58eb476bdedcb352, 0x300e0ede1965cbf72f0aa9bee81208, 0x7fb932cae2aba9a5d17c1ff73538ba, 0x82727c6eaef38056aaa0aaedb05746, 0x242f916cfa ] -}; + }; + +#[derive_bignum(7, 753, quote { MNT6_753_Fq_PARAMS })] +pub struct MNT6_753_Fq {limbs: [u128; 7]} + + \ No newline at end of file diff --git a/fields/mnt6_753Fr.nr b/fields/mnt6_753Fr.nr index 9d67e42..26983e9 100644 --- a/fields/mnt6_753Fr.nr +++ b/fields/mnt6_753Fr.nr @@ -19,36 +19,24 @@ //! * B = Fq3(b * NON_RESIDUE, 0, 0) //! * NON_RESIDUE = 11 is the cubic non-residue used to conpub struct the //! extension field Fq3 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct MNT6_753_Fr_Params {} -impl RuntimeBigNumParamsTrait<7> for MNT6_753_Fr_Params { - fn modulus_bits() -> u32 { - 753 - } -} -impl BigNumParamsTrait<7> for MNT6_753_Fr_Params { - fn get_instance() -> BigNumInstance<7, Self> { - MNT6_753_Fr_Instance - } - fn modulus_bits() -> u32 { - 753 - } -} -pub global MNT6_753_Fr_Instance: BigNumInstance<7, MNT6_753_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global MNT6_753_Fr_PARAMS: BigNumParams<7, 753> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x9d54522cdd119f5e9063de245e8001, 0xcce9767254a4638810719ac425f0e3, 0x76f218059db80f0da5cb537e38685a, 0xe8a0ed8d99d124d9a15af79db117e7, 0x8fafed5eb7e8f96c97d87307fdb925, 0xc41110229022eee2cdadb7f997505b, 0x01c4c62d92 ], double_modulus: [ 0x013aa8a459ba233ebd20c7bc48bd0002, 0x0199d2ece4a948c71020e335884be1c6, 0x01ede4300b3b701e1b4b96a6fc70d0b4, 0x01d141db1b33a249b342b5ef3b622fcd, 0x011f5fdabd6fd1f2d92fb0e60ffb724a, 0x01882220452045ddc59b5b6ff32ea0b6, 0x03898c5b24 ], - modulus_u60: U60Repr { limbs: [ - 0x0e9063de245e8001, 0x09d54522cdd119f5, 0x0810719ac425f0e3, 0x0cce9767254a4638, 0x0da5cb537e38685a, 0x076f218059db80f0, 0x09a15af79db117e7, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0e9063de245e8001, 0x09d54522cdd119f5, 0x0810719ac425f0e3, 0x0cce9767254a4638, 0x0da5cb537e38685a, 0x076f218059db80f0, 0x09a15af79db117e7, 0x0e8a0ed8d99d124d, 0x0c97d87307fdb925, 0x08fafed5eb7e8f96, 0x02cdadb7f997505b, 0x0c41110229022eee, 0x01c4c62d92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x5dcc95da918349f4965a2aee8fd750, 0x82372b75580c27c4d1f1f57a96a114, 0x58326e3c0552419849e3c7171d8522, 0x300e0ede1965cbf72f0aa9bf03479d, 0x7fb932cae2aba9a5d17c1ff73538ba, 0x82727c6eaef38056aaa0aaedb05746, 0x242f916cfa ] -}; + }; + +#[derive_bignum(7, 753, quote { MNT6_753_Fr_PARAMS })] +pub struct MNT6_753_Fr {limbs: [u128; 7]} + + \ No newline at end of file diff --git a/fields/pallasFq.nr b/fields/pallasFq.nr index 99d7cb7..7f8129c 100644 --- a/fields/pallasFq.nr +++ b/fields/pallasFq.nr @@ -13,36 +13,24 @@ //! * Curve equation: y^2 = x^3 + 5 //! * Valuation(q - 1, 2) = 32 //! * Valuation(r - 1, 2) = 32 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Pallas_Fq_Params {} -impl RuntimeBigNumParamsTrait<3> for Pallas_Fq_Params { - fn modulus_bits() -> u32 { - 255 - } -} -impl BigNumParamsTrait<3> for Pallas_Fq_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Pallas_Fq_Instance - } - fn modulus_bits() -> u32 { - 255 - } -} -pub global Pallas_Fq_Instance: BigNumInstance<3, Pallas_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Pallas_Fq_PARAMS: BigNumParams<3, 255> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x4698fc094cf91b992d30ed00000001, 0x22, 0x4000 ], double_modulus: [ 0x018d31f81299f237325a61da00000002, 0x01000000000000000000000000000043, 0x7fff ], - modulus_u60: U60Repr { limbs: [ - 0x092d30ed00000001, 0x04698fc094cf91b9, 0x22, 0x00, 0x4000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x092d30ed00000001, 0x04698fc094cf91b9, 0x22, 0x00, 0x4000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x59c0fdacc1b919b4b3c4bfffffffc4, 0xfffffffffffffffffffffffffff76e, 0x0fffff ] -}; + }; + +#[derive_bignum(3, 255, quote { Pallas_Fq_PARAMS })] +pub struct Pallas_Fq {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/pallasFr.nr b/fields/pallasFr.nr index 36ff966..84e03b9 100644 --- a/fields/pallasFr.nr +++ b/fields/pallasFr.nr @@ -13,36 +13,24 @@ //! * Curve equation: y^2 = x^3 + 5 //! * Valuation(q - 1, 2) = 32 //! * Valuation(r - 1, 2) = 32 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Pallas_Fr_Params {} -impl RuntimeBigNumParamsTrait<3> for Pallas_Fr_Params { - fn modulus_bits() -> u32 { - 255 - } -} -impl BigNumParamsTrait<3> for Pallas_Fr_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Pallas_Fr_Instance - } - fn modulus_bits() -> u32 { - 255 - } -} -pub global Pallas_Fr_Instance: BigNumInstance<3, Pallas_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Pallas_Fr_PARAMS: BigNumParams<3, 255> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x4698fc0994a8dd8c46eb2100000001, 0x22, 0x4000 ], double_modulus: [ 0x018d31f8132951bb188dd64200000002, 0x01000000000000000000000000000043, 0x7fff ], - modulus_u60: U60Repr { limbs: [ - 0x0c46eb2100000001, 0x04698fc0994a8dd8, 0x22, 0x00, 0x4000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0c46eb2100000001, 0x04698fc0994a8dd8, 0x22, 0x00, 0x4000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x59c0fd9ad5c89cee4537bfffffffc4, 0xfffffffffffffffffffffffffff76e, 0x0fffff ] -}; + }; + +#[derive_bignum(3, 255, quote { Pallas_Fr_PARAMS })] +pub struct Pallas_Fr {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/secp256k1Fq.nr b/fields/secp256k1Fq.nr index dbb3b5e..e85c05a 100644 --- a/fields/secp256k1Fq.nr +++ b/fields/secp256k1Fq.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Secp256k1_Fq_Params {} -impl RuntimeBigNumParamsTrait<3> for Secp256k1_Fq_Params { - fn modulus_bits() -> u32 { - 256 - } -} -impl BigNumParamsTrait<3> for Secp256k1_Fq_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Secp256k1_Fq_Instance - } - fn modulus_bits() -> u32 { - 256 - } -} -pub global Secp256k1_Fq_Instance: BigNumInstance<3, Secp256k1_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Secp256k1_Fq_PARAMS: BigNumParams<3, 256> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xfffffffffffffffffffffefffffc2f, 0xffffffffffffffffffffffffffffff, 0xffff ], double_modulus: [ 0x01fffffffffffffffffffffdfffff85e, 0x01fffffffffffffffffffffffffffffe, 0x01fffe ], - modulus_u60: U60Repr { limbs: [ - 0x0ffffffefffffc2f, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0xffff, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0ffffffefffffc2f, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0xffff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x1000003d10, 0x00, 0x100000 ] -}; + }; + +#[derive_bignum(3, 256, quote { Secp256k1_Fq_PARAMS })] +pub struct Secp256k1_Fq {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/secp256k1Fr.nr b/fields/secp256k1Fr.nr index ae0f439..f54ed8b 100644 --- a/fields/secp256k1Fr.nr +++ b/fields/secp256k1Fr.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Secp256k1_Fr_Params {} -impl RuntimeBigNumParamsTrait<3> for Secp256k1_Fr_Params { - fn modulus_bits() -> u32 { - 256 - } -} -impl BigNumParamsTrait<3> for Secp256k1_Fr_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Secp256k1_Fr_Instance - } - fn modulus_bits() -> u32 { - 256 - } -} -pub global Secp256k1_Fr_Instance: BigNumInstance<3, Secp256k1_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Secp256k1_Fr_PARAMS: BigNumParams<3, 256> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xaedce6af48a03bbfd25e8cd0364141, 0xfffffffffffffffffffffffffffeba, 0xffff ], double_modulus: [ 0x015db9cd5e9140777fa4bd19a06c8282, 0x01fffffffffffffffffffffffffffd74, 0x01fffe ], - modulus_u60: U60Repr { limbs: [ - 0x0fd25e8cd0364141, 0x0aedce6af48a03bb, 0x0ffffffffffffeba, 0x0fffffffffffffff, 0xffff, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0fd25e8cd0364141, 0x0aedce6af48a03bb, 0x0ffffffffffffeba, 0x0fffffffffffffff, 0xffff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x1231950b75fc4402da1732fc9bec09, 0x1455, 0x100000 ] -}; + }; + +#[derive_bignum(3, 256, quote { Secp256k1_Fr_PARAMS })] +pub struct Secp256k1_Fr {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/secp256r1Fq.nr b/fields/secp256r1Fq.nr index cce7c04..7bfe997 100644 --- a/fields/secp256r1Fq.nr +++ b/fields/secp256r1Fq.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Secp256r1_Fq_Params {} -impl RuntimeBigNumParamsTrait<3> for Secp256r1_Fq_Params { - fn modulus_bits() -> u32 { - 256 - } -} -impl BigNumParamsTrait<3> for Secp256r1_Fq_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Secp256r1_Fq_Instance - } - fn modulus_bits() -> u32 { - 256 - } -} -pub global Secp256r1_Fq_Instance: BigNumInstance<3, Secp256r1_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Secp256r1_Fq_PARAMS: BigNumParams<3, 256> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xffffffffffffffffffffffff, 0xffff00000001000000000000000000, 0xffff ], double_modulus: [ 0x01000001fffffffffffffffffffffffe, 0x01fffe00000001ffffffffffffffffff, 0x01fffe ], - modulus_u60: U60Repr { limbs: [ - 0x0fffffffffffffff, 0x0fffffffff, 0x00, 0x0ffff00000001000, 0xffff, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0fffffffffffffff, 0x0fffffffff, 0x00, 0x0ffff00000001000, 0xffff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0xffffeffffffff00000000000000030, 0x0fffffffffffffffefffffffefff, 0x100000 ] -}; + }; + +#[derive_bignum(3, 256, quote { Secp256r1_Fq_PARAMS })] +pub struct Secp256r1_Fq {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/secp256r1Fr.nr b/fields/secp256r1Fr.nr index 892be23..c53a27d 100644 --- a/fields/secp256r1Fr.nr +++ b/fields/secp256r1Fr.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Secp256r1_Fr_Params {} -impl RuntimeBigNumParamsTrait<3> for Secp256r1_Fr_Params { - fn modulus_bits() -> u32 { - 256 - } -} -impl BigNumParamsTrait<3> for Secp256r1_Fr_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Secp256r1_Fr_Instance - } - fn modulus_bits() -> u32 { - 256 - } -} -pub global Secp256r1_Fr_Instance: BigNumInstance<3, Secp256r1_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Secp256r1_Fr_PARAMS: BigNumParams<3, 256> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xe6faada7179e84f3b9cac2fc632551, 0xffff00000000ffffffffffffffffbc, 0xffff ], double_modulus: [ 0x01cdf55b4e2f3d09e7739585f8c64aa2, 0x01fffe00000001ffffffffffffffff78, 0x01fffe ], - modulus_u60: U60Repr { limbs: [ - 0x03b9cac2fc632551, 0x0e6faada7179e84f, 0x0fffffffffffffbc, 0x0ffff00000000fff, 0xffff, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x03b9cac2fc632551, 0x0e6faada7179e84f, 0x0fffffffffffffbc, 0x0ffff00000000fff, 0xffff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x90552df1a6c21012ffd85eedf9bfe6, 0x0fffffffffffffffeffffffff431, 0x100000 ] -}; + }; + +#[derive_bignum(3, 256, quote { Secp256r1_Fr_PARAMS })] +pub struct Secp256r1_Fr {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/secp384r1Fq.nr b/fields/secp384r1Fq.nr index 558c532..4241b1f 100644 --- a/fields/secp384r1Fq.nr +++ b/fields/secp384r1Fq.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Secp384r1_Fq_Params {} -impl RuntimeBigNumParamsTrait<4> for Secp384r1_Fq_Params { - fn modulus_bits() -> u32 { - 384 - } -} -impl BigNumParamsTrait<4> for Secp384r1_Fq_Params { - fn get_instance() -> BigNumInstance<4, Self> { - Secp384r1_Fq_Instance - } - fn modulus_bits() -> u32 { - 384 - } -} -pub global Secp384r1_Fq_Instance: BigNumInstance<4, Secp384r1_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Secp384r1_Fq_PARAMS: BigNumParams<4, 384> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0xffffff0000000000000000ffffffff, 0xfffffffffffffffffffffffffffeff, 0xffffffffffffffffffffffffffffff, 0xffffff ], double_modulus: [ 0x01fffffe0000000000000001fffffffe, 0x01fffffffffffffffffffffffffffdfe, 0x01fffffffffffffffffffffffffffffe, 0x01fffffe ], - modulus_u60: U60Repr { limbs: [ - 0xffffffff, 0x0ffffff000000000, 0x0ffffffffffffeff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0xffffff, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0xffffffff, 0x0ffffff000000000, 0x0ffffffffffffeff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0x0fffffffffffffff, 0xffffff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x0ffffffffffffffff000000010, 0x1000, 0x00, 0x10000000 ] -}; + }; + +#[derive_bignum(4, 384, quote { Secp384r1_Fq_PARAMS })] +pub struct Secp384r1_Fq {limbs: [u128; 4]} + + \ No newline at end of file diff --git a/fields/secp384r1Fr.nr b/fields/secp384r1Fr.nr index 874ef77..82685c2 100644 --- a/fields/secp384r1Fr.nr +++ b/fields/secp384r1Fr.nr @@ -1,34 +1,22 @@ -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Secp384r1_Fr_Params {} -impl RuntimeBigNumParamsTrait<4> for Secp384r1_Fr_Params { - fn modulus_bits() -> u32 { - 384 - } -} -impl BigNumParamsTrait<4> for Secp384r1_Fr_Params { - fn get_instance() -> BigNumInstance<4, Self> { - Secp384r1_Fr_Instance - } - fn modulus_bits() -> u32 { - 384 - } -} -pub global Secp384r1_Fr_Instance: BigNumInstance<4, Secp384r1_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Secp384r1_Fr_PARAMS: BigNumParams<4, 384> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x1a0db248b0a77aecec196accc52973, 0xffffffffffffc7634d81f4372ddf58, 0xffffffffffffffffffffffffffffff, 0xffffff ], double_modulus: [ 0x01341b6491614ef5d9d832d5998a52e6, 0x01ffffffffffff8ec69b03e86e5bbeaf, 0x01fffffffffffffffffffffffffffffe, 0x01fffffe ], - modulus_u60: U60Repr { limbs: [ - 0x0cec196accc52973, 0x01a0db248b0a77ae, 0x034d81f4372ddf58, 0x0ffffffffffffc76, 0x0fffffffffffffff, 0x0fffffffffffffff, 0xffffff, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0cec196accc52973, 0x01a0db248b0a77ae, 0x034d81f4372ddf58, 0x0ffffffffffffc76, 0x0fffffffffffffff, 0x0fffffffffffffff, 0xffffff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x5f24db74f58851313e695333ad68d0, 0x0389cb27e0bc8d220a7e, 0x00, 0x10000000 ] -}; + }; + +#[derive_bignum(4, 384, quote { Secp384r1_Fr_PARAMS })] +pub struct Secp384r1_Fr {limbs: [u128; 4]} + + \ No newline at end of file diff --git a/fields/vestaFq.nr b/fields/vestaFq.nr index 39abb50..b52ae8f 100644 --- a/fields/vestaFq.nr +++ b/fields/vestaFq.nr @@ -14,36 +14,24 @@ //! * Curve equation: y^2 = x^3 + 5 //! * Valuation(q - 1, 2) = 32 //! * Valuation(r - 1, 2) = 32 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Vesta_Fq_Params {} -impl RuntimeBigNumParamsTrait<3> for Vesta_Fq_Params { - fn modulus_bits() -> u32 { - 255 - } -} -impl BigNumParamsTrait<3> for Vesta_Fq_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Vesta_Fq_Instance - } - fn modulus_bits() -> u32 { - 255 - } -} -pub global Vesta_Fq_Instance: BigNumInstance<3, Vesta_Fq_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Vesta_Fq_PARAMS: BigNumParams<3, 255> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x4698fc0994a8dd8c46eb2100000001, 0x22, 0x4000 ], double_modulus: [ 0x018d31f8132951bb188dd64200000002, 0x01000000000000000000000000000043, 0x7fff ], - modulus_u60: U60Repr { limbs: [ - 0x0c46eb2100000001, 0x04698fc0994a8dd8, 0x22, 0x00, 0x4000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x0c46eb2100000001, 0x04698fc0994a8dd8, 0x22, 0x00, 0x4000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x59c0fd9ad5c89cee4537bfffffffc4, 0xfffffffffffffffffffffffffff76e, 0x0fffff ] -}; + }; + +#[derive_bignum(3, 255, quote { Vesta_Fq_PARAMS })] +pub struct Vesta_Fq {limbs: [u128; 3]} + + \ No newline at end of file diff --git a/fields/vestaFr.nr b/fields/vestaFr.nr index b5fccf5..1d2bb35 100644 --- a/fields/vestaFr.nr +++ b/fields/vestaFr.nr @@ -14,36 +14,24 @@ //! * Curve equation: y^2 = x^3 + 5 //! * Valuation(q - 1, 2) = 32 //! * Valuation(r - 1, 2) = 32 -use crate::BigNumParamsTrait; -use crate::runtime_bignum::BigNumInstance; -use crate::runtime_bignum::BigNumParamsTrait as RuntimeBigNumParamsTrait; -use crate::utils::u60_representation::U60Repr; -pub struct Vesta_Fr_Params {} -impl RuntimeBigNumParamsTrait<3> for Vesta_Fr_Params { - fn modulus_bits() -> u32 { - 255 - } -} -impl BigNumParamsTrait<3> for Vesta_Fr_Params { - fn get_instance() -> BigNumInstance<3, Self> { - Vesta_Fr_Instance - } - fn modulus_bits() -> u32 { - 255 - } -} -pub global Vesta_Fr_Instance: BigNumInstance<3, Vesta_Fr_Params> = BigNumInstance { +use crate::bignum::BigNum; +use crate::bignum::derive_bignum; +use crate::params::BigNumParams; + +pub global Vesta_Fr_PARAMS: BigNumParams<3, 255> = BigNumParams { + has_multiplicative_inverse: true, modulus: [ 0x4698fc094cf91b992d30ed00000001, 0x22, 0x4000 ], double_modulus: [ 0x018d31f81299f237325a61da00000002, 0x01000000000000000000000000000043, 0x7fff ], - modulus_u60: U60Repr { limbs: [ - 0x092d30ed00000001, 0x04698fc094cf91b9, 0x22, 0x00, 0x4000, 0x00]}, - modulus_u60_x4: U60Repr { limbs: [ - 0x092d30ed00000001, 0x04698fc094cf91b9, 0x22, 0x00, 0x4000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }, redc_param: [ 0x59c0fdacc1b919b4b3c4bfffffffc4, 0xfffffffffffffffffffffffffff76e, 0x0fffff ] -}; + }; + +#[derive_bignum(3, 255, quote { Vesta_Fr_PARAMS })] +pub struct Vesta_Fr {limbs: [u128; 3]} + + \ No newline at end of file