ark_test_curves::models::bn

Trait BnConfig

Source
pub trait BnConfig: Sized + 'static {
    type Fp: PrimeField + Into<<Self::Fp as PrimeField>::BigInt>;
    type Fp2Config: Fp2Config<Fp = Self::Fp>;
    type Fp6Config: Fp6Config<Fp2Config = Self::Fp2Config>;
    type Fp12Config: Fp12Config<Fp6Config = Self::Fp6Config>;
    type G1Config: SWCurveConfig<BaseField = Self::Fp>;
    type G2Config: SWCurveConfig<BaseField = QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>, ScalarField = <Self::G1Config as CurveConfig>::ScalarField>;

    const X: &'static [u64];
    const X_IS_NEGATIVE: bool;
    const ATE_LOOP_COUNT: &'static [i8];
    const TWIST_TYPE: TwistType;
    const TWIST_MUL_BY_Q_X: QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>;
    const TWIST_MUL_BY_Q_Y: QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>;

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

Required Associated Constants§

Source

const X: &'static [u64]

The absolute value of the BN curve parameter X (as in q = 36 X^4 + 36 X^3 + 24 X^2 + 6 X + 1).

Source

const X_IS_NEGATIVE: bool

Whether or not X is negative.

Source

const ATE_LOOP_COUNT: &'static [i8]

The absolute value of 6X + 2.

Source

const TWIST_TYPE: TwistType

Source

const TWIST_MUL_BY_Q_X: QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>

Source

const TWIST_MUL_BY_Q_Y: QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>

Required Associated Types§

Source

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

Source

type Fp2Config: Fp2Config<Fp = Self::Fp>

Source

type Fp6Config: Fp6Config<Fp2Config = Self::Fp2Config>

Source

type Fp12Config: Fp12Config<Fp6Config = Self::Fp6Config>

Source

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

Source

type G2Config: SWCurveConfig<BaseField = QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>, ScalarField = <Self::G1Config as CurveConfig>::ScalarField>

Provided Methods§

Source

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

Source

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§