Skip to main content

airbender_crypto/bls12_381/curves/
mod.rs

1use 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// pub type Bls12_381 = Bls12<Config>;
22
23#[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}