Trait ark_ec::models::bw6::BW6Config

source ·
pub trait BW6Config: 'static + Eq + Sized {
    type Fp: PrimeField + Into<<Self::Fp as PrimeField>::BigInt>;
    type Fp3Config: Fp3Config<Fp = Self::Fp>;
    type Fp6Config: Fp6Config<Fp3Config = Self::Fp3Config>;
    type G1Config: SWCurveConfig<BaseField = Self::Fp>;
    type G2Config: SWCurveConfig<BaseField = Self::Fp, ScalarField = <Self::G1Config as CurveConfig>::ScalarField>;

    const X: <Self::Fp as PrimeField>::BigInt;
    const X_IS_NEGATIVE: bool;
    const ATE_LOOP_COUNT_1: &'static [u64];
    const ATE_LOOP_COUNT_1_IS_NEGATIVE: bool;
    const ATE_LOOP_COUNT_2: &'static [i8];
    const ATE_LOOP_COUNT_2_IS_NEGATIVE: bool;
    const TWIST_TYPE: TwistType;

    // Provided methods
    fn final_exponentiation(
        f: MillerLoopOutput<BW6<Self>>
    ) -> Option<PairingOutput<BW6<Self>>> { ... }
    fn multi_miller_loop(
        a: impl IntoIterator<Item = impl Into<G1Prepared<Self>>>,
        b: impl IntoIterator<Item = impl Into<G2Prepared<Self>>>
    ) -> MillerLoopOutput<BW6<Self>> { ... }
}

Required Associated Types§

source

type Fp: PrimeField + Into<<Self::Fp as PrimeField>::BigInt>

source

type Fp3Config: Fp3Config<Fp = Self::Fp>

source

type Fp6Config: Fp6Config<Fp3Config = Self::Fp3Config>

source

type G1Config: SWCurveConfig<BaseField = Self::Fp>

source

type G2Config: SWCurveConfig<BaseField = Self::Fp, ScalarField = <Self::G1Config as CurveConfig>::ScalarField>

Required Associated Constants§

Provided Methods§

source

fn final_exponentiation( f: MillerLoopOutput<BW6<Self>> ) -> Option<PairingOutput<BW6<Self>>>

source

fn multi_miller_loop( a: impl IntoIterator<Item = impl Into<G1Prepared<Self>>>, b: impl IntoIterator<Item = impl Into<G2Prepared<Self>>> ) -> MillerLoopOutput<BW6<Self>>

Implementors§