airbender_crypto/bls12_381/curves/
mod.rs1use ark_ec::bls12::{Bls12Config, TwistType};
2
3use crate::bls12_381::fields::{Fq, Fq12Config, Fq2Config, Fq6Config};
4
5pub mod g1;
6pub mod g2;
7pub(crate) mod util;
8
9mod pairing_impl;
10
11mod g1_swu_iso;
12mod g2_swu_iso;
13
14pub use self::{
15 g1::{G1Affine, G1Projective},
16 g2::{G2Affine, G2Projective},
17 pairing_impl::G2PreparedNoAlloc,
18 pairing_impl::BLS12_381_NUM_ELL_COEFFS,
19};
20
21#[derive(Copy, Clone, PartialEq, Eq, Debug, Hash)]
24pub struct Bls12_381;
25
26pub struct Config;
27
28impl Bls12Config for Config {
29 const X: &'static [u64] = &[0xd201000000010000];
30 const X_IS_NEGATIVE: bool = true;
31 const TWIST_TYPE: TwistType = TwistType::M;
32 type Fp = Fq;
33 type Fp2Config = Fq2Config;
34 type Fp6Config = Fq6Config;
35 type Fp12Config = Fq12Config;
36 type G1Config = self::g1::Config;
37 type G2Config = self::g2::Config;
38}