pub struct MNT4<P>(/* private fields */)
where
P: MNT4Config;
Implementations§
Source§impl<P> MNT4<P>where
P: MNT4Config,
impl<P> MNT4<P>where
P: MNT4Config,
pub fn ate_miller_loop( p: &G1Prepared<P>, q: &G2Prepared<P>, ) -> QuadExtField<Fp4ConfigWrapper<<P as MNT4Config>::Fp4Config>>
Trait Implementations§
Source§impl<P> Pairing for MNT4<P>where
P: MNT4Config,
impl<P> Pairing for MNT4<P>where
P: MNT4Config,
Source§type BaseField = <<P as MNT4Config>::G1Config as CurveConfig>::BaseField
type BaseField = <<P as MNT4Config>::G1Config as CurveConfig>::BaseField
This is the base field of the G1 group and base prime field of G2.
Source§type ScalarField = <<P as MNT4Config>::G1Config as CurveConfig>::ScalarField
type ScalarField = <<P as MNT4Config>::G1Config as CurveConfig>::ScalarField
This is the scalar field of the G1/G2 groups.
Source§type G1 = Projective<<P as MNT4Config>::G1Config>
type G1 = Projective<<P as MNT4Config>::G1Config>
An element in G1.
type G1Affine = Affine<<P as MNT4Config>::G1Config>
Source§type G1Prepared = G1Prepared<P>
type G1Prepared = G1Prepared<P>
A G1 element that has been preprocessed for use in a pairing.
Source§type G2 = Projective<<P as MNT4Config>::G2Config>
type G2 = Projective<<P as MNT4Config>::G2Config>
An element of G2.
Source§type G2Affine = Affine<<P as MNT4Config>::G2Config>
type G2Affine = Affine<<P as MNT4Config>::G2Config>
The affine representation of an element in G2.
Source§type G2Prepared = G2Prepared<P>
type G2Prepared = G2Prepared<P>
A G2 element that has been preprocessed for use in a pairing.
Source§type TargetField = QuadExtField<Fp4ConfigWrapper<<P as MNT4Config>::Fp4Config>>
type TargetField = QuadExtField<Fp4ConfigWrapper<<P as MNT4Config>::Fp4Config>>
The extension field that hosts the target group of the pairing.
Source§fn multi_miller_loop(
a: impl IntoIterator<Item = impl Into<<MNT4<P> as Pairing>::G1Prepared>>,
b: impl IntoIterator<Item = impl Into<<MNT4<P> as Pairing>::G2Prepared>>,
) -> MillerLoopOutput<MNT4<P>>
fn multi_miller_loop( a: impl IntoIterator<Item = impl Into<<MNT4<P> as Pairing>::G1Prepared>>, b: impl IntoIterator<Item = impl Into<<MNT4<P> as Pairing>::G2Prepared>>, ) -> MillerLoopOutput<MNT4<P>>
Computes the product of Miller loops for some number of (G1, G2) pairs.
Source§fn final_exponentiation(
f: MillerLoopOutput<MNT4<P>>,
) -> Option<PairingOutput<MNT4<P>>>
fn final_exponentiation( f: MillerLoopOutput<MNT4<P>>, ) -> Option<PairingOutput<MNT4<P>>>
Performs final exponentiation of the result of a
Self::multi_miller_loop
.Source§fn miller_loop(
a: impl Into<Self::G1Prepared>,
b: impl Into<Self::G2Prepared>,
) -> MillerLoopOutput<Self>
fn miller_loop( a: impl Into<Self::G1Prepared>, b: impl Into<Self::G2Prepared>, ) -> MillerLoopOutput<Self>
Computes the Miller loop over
a
and b
.Source§fn multi_pairing(
a: impl IntoIterator<Item = impl Into<Self::G1Prepared>>,
b: impl IntoIterator<Item = impl Into<Self::G2Prepared>>,
) -> PairingOutput<Self>
fn multi_pairing( a: impl IntoIterator<Item = impl Into<Self::G1Prepared>>, b: impl IntoIterator<Item = impl Into<Self::G2Prepared>>, ) -> PairingOutput<Self>
Computes a “product” of pairings.
Source§fn pairing(
p: impl Into<Self::G1Prepared>,
q: impl Into<Self::G2Prepared>,
) -> PairingOutput<Self>
fn pairing( p: impl Into<Self::G1Prepared>, q: impl Into<Self::G2Prepared>, ) -> PairingOutput<Self>
Performs multiple pairing operations
impl<P> Copy for MNT4<P>
impl<P> Eq for MNT4<P>
Auto Trait Implementations§
impl<P> Freeze for MNT4<P>
impl<P> RefUnwindSafe for MNT4<P>
impl<P> Send for MNT4<P>
impl<P> Sync for MNT4<P>
impl<P> Unpin for MNT4<P>
impl<P> UnwindSafe for MNT4<P>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more