use ark_ec::{
|
|
bw6,
|
|
bw6::{BW6Parameters, TwistType, BW6},
|
|
};
|
|
use ark_ff::{biginteger::BigInteger768 as BigInteger, BigInt};
|
|
|
|
use crate::*;
|
|
|
|
pub mod g1;
|
|
pub mod g2;
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|
|
|
|
#[derive(PartialEq, Eq)]
|
|
pub struct Parameters;
|
|
|
|
impl BW6Parameters for Parameters {
|
|
const X: BigInteger = BigInt::new([
|
|
0x8508c00000000001,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
0x0,
|
|
]);
|
|
/// `x` is positive.
|
|
const X_IS_NEGATIVE: bool = false;
|
|
// X+1
|
|
const ATE_LOOP_COUNT_1: &'static [u64] = &[0x8508c00000000002];
|
|
const ATE_LOOP_COUNT_1_IS_NEGATIVE: bool = false;
|
|
// X^3-X^2-X
|
|
const ATE_LOOP_COUNT_2: &'static [i8] = &[
|
|
-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
|
|
0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0,
|
|
1, 0, 0, 0, -1, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, -1, 0, 1, 0, 1, 0, 0, 0, 1,
|
|
0, -1, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 1,
|
|
];
|
|
const ATE_LOOP_COUNT_2_IS_NEGATIVE: bool = false;
|
|
const TWIST_TYPE: TwistType = TwistType::M;
|
|
type Fp = Fq;
|
|
type Fp3Config = Fq3Config;
|
|
type Fp6Config = Fq6Config;
|
|
type G1Parameters = g1::Parameters;
|
|
type G2Parameters = g2::Parameters;
|
|
}
|
|
|
|
pub type BW6_761 = BW6<Parameters>;
|
|
|
|
pub type G1Affine = bw6::G1Affine<Parameters>;
|
|
pub type G1Projective = bw6::G1Projective<Parameters>;
|
|
pub type G2Affine = bw6::G2Affine<Parameters>;
|
|
pub type G2Projective = bw6::G2Projective<Parameters>;
|