mirror of
https://github.com/arnaucube/ark-curves-cherry-picked.git
synced 2026-01-27 14:13:46 +01:00
Upgrade to work with latest ark-ff (#95)
Co-authored-by: Sun <huachuang20@gmail.com>
This commit is contained in:
@@ -1,103 +1,7 @@
|
||||
use ark_ff::{
|
||||
biginteger::{BigInt, BigInteger256 as BigInteger},
|
||||
fields::*,
|
||||
};
|
||||
use ark_ff::fields::{Fp256, MontBackend, MontConfig};
|
||||
|
||||
pub type Fr = Fp256<FrParameters>;
|
||||
|
||||
pub struct FrParameters;
|
||||
|
||||
impl Fp256Parameters for FrParameters {}
|
||||
impl FftParameters for FrParameters {
|
||||
type BigInt = BigInteger;
|
||||
|
||||
const TWO_ADICITY: u32 = 28;
|
||||
|
||||
#[rustfmt::skip]
|
||||
const TWO_ADIC_ROOT_OF_UNITY: BigInteger = BigInt::new([
|
||||
7164790868263648668u64,
|
||||
11685701338293206998u64,
|
||||
6216421865291908056u64,
|
||||
1756667274303109607u64,
|
||||
]);
|
||||
}
|
||||
impl FpParameters for FrParameters {
|
||||
/// MODULUS = 21888242871839275222246405745257275088548364400416034343698204186575808495617
|
||||
#[rustfmt::skip]
|
||||
const MODULUS: BigInteger = BigInt::new([
|
||||
4891460686036598785u64,
|
||||
2896914383306846353u64,
|
||||
13281191951274694749u64,
|
||||
3486998266802970665u64,
|
||||
]);
|
||||
|
||||
const MODULUS_BITS: u32 = 254;
|
||||
|
||||
const CAPACITY: u32 = Self::MODULUS_BITS - 1;
|
||||
|
||||
const REPR_SHAVE_BITS: u32 = 2;
|
||||
|
||||
/// R = pow(2, 256) % MODULUS
|
||||
/// = 6350874878119819312338956282401532410528162663560392320966563075034087161851
|
||||
#[rustfmt::skip]
|
||||
const R: BigInteger = BigInt::new([
|
||||
12436184717236109307u64,
|
||||
3962172157175319849u64,
|
||||
7381016538464732718u64,
|
||||
1011752739694698287u64,
|
||||
]);
|
||||
|
||||
/// R2 = R * R % MODULUS
|
||||
/// = 944936681149208446651664254269745548490766851729442924617792859073125903783
|
||||
#[rustfmt::skip]
|
||||
const R2: BigInteger = BigInt::new([
|
||||
1997599621687373223u64,
|
||||
6052339484930628067u64,
|
||||
10108755138030829701u64,
|
||||
150537098327114917u64,
|
||||
]);
|
||||
|
||||
/// INV = (-MODULUS) ^ {-1} % pow(2, 64) = 14042775128853446655
|
||||
const INV: u64 = 14042775128853446655u64;
|
||||
|
||||
/// GENERATOR = 5
|
||||
#[rustfmt::skip]
|
||||
const GENERATOR: BigInteger = BigInt::new([
|
||||
1949230679015292902u64,
|
||||
16913946402569752895u64,
|
||||
5177146667339417225u64,
|
||||
1571765431670520771u64,
|
||||
]);
|
||||
|
||||
/// (MODULUS - 1)/2 =
|
||||
/// 10944121435919637611123202872628637544274182200208017171849102093287904247808
|
||||
#[rustfmt::skip]
|
||||
const MODULUS_MINUS_ONE_DIV_TWO: BigInteger = BigInt::new([
|
||||
0xa1f0fac9f8000000,
|
||||
0x9419f4243cdcb848,
|
||||
0xdc2822db40c0ac2e,
|
||||
0x183227397098d014,
|
||||
]);
|
||||
|
||||
// T and T_MINUS_ONE_DIV_TWO, where r - 1 = 2^s * t
|
||||
|
||||
/// T = (MODULUS - 1) / 2^s =
|
||||
/// 81540058820840996586704275553141814055101440848469862132140264610111
|
||||
#[rustfmt::skip]
|
||||
const T: BigInteger = BigInt::new([
|
||||
0x9b9709143e1f593f,
|
||||
0x181585d2833e8487,
|
||||
0x131a029b85045b68,
|
||||
0x30644e72e,
|
||||
]);
|
||||
|
||||
/// (T - 1) / 2 =
|
||||
/// 40770029410420498293352137776570907027550720424234931066070132305055
|
||||
#[rustfmt::skip]
|
||||
const T_MINUS_ONE_DIV_TWO: BigInteger = BigInt::new([
|
||||
0xcdcb848a1f0fac9f,
|
||||
0x0c0ac2e9419f4243,
|
||||
0x098d014dc2822db4,
|
||||
0x183227397,
|
||||
]);
|
||||
}
|
||||
#[derive(MontConfig)]
|
||||
#[modulus = "21888242871839275222246405745257275088548364400416034343698204186575808495617"]
|
||||
#[generator = "5"]
|
||||
pub struct FrConfig;
|
||||
pub type Fr = Fp256<MontBackend<FrConfig, 4>>;
|
||||
|
||||
Reference in New Issue
Block a user