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>;
Show 11 associated constants and 5 methods
const X: <Self::Fp as PrimeField>::BigInt;
const X_IS_NEGATIVE: bool;
const X_MINUS_1_DIV_3: <Self::Fp as PrimeField>::BigInt;
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;
const H_T: i64;
const H_Y: i64;
const T_MOD_R_IS_ZERO: bool;
// Provided methods
fn cyclotomic_exp_signed(
f: &Fp6<Self::Fp6Config>,
x: impl AsRef<[u64]>,
invert: bool,
) -> Fp6<Self::Fp6Config> { ... }
fn exp_by_x(f: &Fp6<Self::Fp6Config>) -> Fp6<Self::Fp6Config> { ... }
fn final_exponentiation_hard_part(
f: &Fp6<Self::Fp6Config>,
) -> Fp6<Self::Fp6Config> { ... }
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 Constants§
const X: <Self::Fp as PrimeField>::BigInt
const X_IS_NEGATIVE: bool
const X_MINUS_1_DIV_3: <Self::Fp as PrimeField>::BigInt
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
const H_T: i64
const H_Y: i64
const T_MOD_R_IS_ZERO: bool
Required Associated Types§
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>
Provided Methods§
fn cyclotomic_exp_signed( f: &Fp6<Self::Fp6Config>, x: impl AsRef<[u64]>, invert: bool, ) -> Fp6<Self::Fp6Config>
fn exp_by_x(f: &Fp6<Self::Fp6Config>) -> Fp6<Self::Fp6Config>
fn final_exponentiation_hard_part( f: &Fp6<Self::Fp6Config>, ) -> Fp6<Self::Fp6Config>
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>>
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.