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§
Sourceconst X: &'static [u64]
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
).
Sourceconst X_IS_NEGATIVE: bool
const X_IS_NEGATIVE: bool
Whether or not X
is negative.
Sourceconst ATE_LOOP_COUNT: &'static [i8]
const ATE_LOOP_COUNT: &'static [i8]
The absolute value of 6X + 2
.
const TWIST_TYPE: TwistType
const TWIST_MUL_BY_Q_X: QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>
const TWIST_MUL_BY_Q_Y: QuadExtField<Fp2ConfigWrapper<Self::Fp2Config>>
Required Associated Types§
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>
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>>>
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.