1mod engine;
2mod fq;
3mod fq12;
4mod fq2;
5mod fq6;
6mod fr;
7mod g1;
8mod g2;
9
10pub use engine::*;
11pub use fq::*;
12pub use fq12::*;
13pub use fq2::*;
14pub use fq6::*;
15pub use fr::*;
16pub use g1::*;
17pub use g2::*;
18
19const BLS_X: [u8; 64] = [
20 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
21 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
22];
23
24const ENDO_PARAMS: EndoParameters = EndoParameters {
25 gamma2: [0x63f6e522f6cfee30u64, 0x7c6becf1e01faadd, 0x01, 0x0],
27 gamma1: [0x02u64, 0x0, 0x0, 0x0],
29 b1: [0x01u64, 0x0, 0x0, 0x0],
30 b2: [0x0000000100000000, 0xac45a4010001a402, 0x0, 0x0],
31};
32
33use ff::{PrimeField, WithSmallOrderMulGroup};
34
35use crate::arithmetic::{mul_512, sbb, CurveEndo, EndoParameters};
36crate::endo!(G1, Fr, ENDO_PARAMS);
37crate::endo!(G2, Fr, ENDO_PARAMS);