ark-curves-cherry-picked/bn254/src/curves/mod.rs
bn254/src/curves/mod.rsRaw
1use ark_ec::{
2 bn,
3 bn::{Bn, BnParameters, TwistType},
4};
5use ark_ff::{MontFp, QuadExt};
6
7use crate::*;
8
9pub mod g1;
10pub mod g2;
11
12#[cfg(test)]
13mod tests;
14
15pub struct Parameters;
16
17impl BnParameters for Parameters {
18 const X: &'static [u64] = &[4965661367192848881];
19 /// `x` is positive.
20 const X_IS_NEGATIVE: bool = false;
21 const ATE_LOOP_COUNT: &'static [i8] = &[
22 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 1, -1, 0, 0, 1, 0, 0, 1, 1, 0, -1, 0, 0, 1, 0, -1, 0, 0, 0,
23 0, 1, 1, 1, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, -1, 0, 0, 0, 1, 1, 0,
24 -1, 0, 0, 1, 0, 1, 1,
25 ];
26
27 const TWIST_MUL_BY_Q_X: Fq2 = QuadExt!(
28 MontFp!(
29 Fq,
30 "21575463638280843010398324269430826099269044274347216827212613867836435027261"
31 ),
32 MontFp!(
33 Fq,
34 "10307601595873709700152284273816112264069230130616436755625194854815875713954"
35 ),
36 );
37 const TWIST_MUL_BY_Q_Y: Fq2 = QuadExt!(
38 MontFp!(
39 Fq,
40 "2821565182194536844548159561693502659359617185244120367078079554186484126554"
41 ),
42 MontFp!(
43 Fq,
44 "3505843767911556378687030309984248845540243509899259641013678093033130930403"
45 ),
46 );
47 const TWIST_TYPE: TwistType = TwistType::D;
48 type Fp = Fq;
49 type Fp2Config = Fq2Config;
50 type Fp6Config = Fq6Config;
51 type Fp12Config = Fq12Config;
52 type G1Parameters = g1::Parameters;
53 type G2Parameters = g2::Parameters;
54}
55
56pub type Bn254 = Bn<Parameters>;
57
58pub type G1Affine = bn::G1Affine<Parameters>;
59pub type G1Projective = bn::G1Projective<Parameters>;
60pub type G2Affine = bn::G2Affine<Parameters>;
61pub type G2Projective = bn::G2Projective<Parameters>;