Trait ark_bls12_381_ext::CurveHooks
source · pub trait CurveHooks: 'static + Sized {
// Required methods
fn bls12_381_multi_miller_loop(
g1: impl Iterator<Item = <Bls12_381<Self> as Pairing>::G1Prepared>,
g2: impl Iterator<Item = <Bls12_381<Self> as Pairing>::G2Prepared>
) -> Result<<Bls12_381<Self> as Pairing>::TargetField, ()>;
fn bls12_381_final_exponentiation(
target: <Bls12_381<Self> as Pairing>::TargetField
) -> Result<<Bls12_381<Self> as Pairing>::TargetField, ()>;
fn bls12_381_msm_g1(
bases: &[G1Affine<Self>],
scalars: &[<Config<Self> as CurveConfig>::ScalarField]
) -> Result<G1Projective<Self>, ()>;
fn bls12_381_msm_g2(
bases: &[G2Affine<Self>],
scalars: &[<Config<Self> as CurveConfig>::ScalarField]
) -> Result<G2Projective<Self>, ()>;
fn bls12_381_mul_projective_g1(
base: &G1Projective<Self>,
scalar: &[u64]
) -> Result<G1Projective<Self>, ()>;
fn bls12_381_mul_projective_g2(
base: &G2Projective<Self>,
scalar: &[u64]
) -> Result<G2Projective<Self>, ()>;
}
Expand description
Hooks for BLS12-381 curve.
Required Methods§
sourcefn bls12_381_multi_miller_loop(
g1: impl Iterator<Item = <Bls12_381<Self> as Pairing>::G1Prepared>,
g2: impl Iterator<Item = <Bls12_381<Self> as Pairing>::G2Prepared>
) -> Result<<Bls12_381<Self> as Pairing>::TargetField, ()>
fn bls12_381_multi_miller_loop( g1: impl Iterator<Item = <Bls12_381<Self> as Pairing>::G1Prepared>, g2: impl Iterator<Item = <Bls12_381<Self> as Pairing>::G2Prepared> ) -> Result<<Bls12_381<Self> as Pairing>::TargetField, ()>
Pairing multi Miller loop.
sourcefn bls12_381_final_exponentiation(
target: <Bls12_381<Self> as Pairing>::TargetField
) -> Result<<Bls12_381<Self> as Pairing>::TargetField, ()>
fn bls12_381_final_exponentiation( target: <Bls12_381<Self> as Pairing>::TargetField ) -> Result<<Bls12_381<Self> as Pairing>::TargetField, ()>
Pairing final exponentiation.
sourcefn bls12_381_msm_g1(
bases: &[G1Affine<Self>],
scalars: &[<Config<Self> as CurveConfig>::ScalarField]
) -> Result<G1Projective<Self>, ()>
fn bls12_381_msm_g1( bases: &[G1Affine<Self>], scalars: &[<Config<Self> as CurveConfig>::ScalarField] ) -> Result<G1Projective<Self>, ()>
Multi scalar multiplication on G1.
sourcefn bls12_381_msm_g2(
bases: &[G2Affine<Self>],
scalars: &[<Config<Self> as CurveConfig>::ScalarField]
) -> Result<G2Projective<Self>, ()>
fn bls12_381_msm_g2( bases: &[G2Affine<Self>], scalars: &[<Config<Self> as CurveConfig>::ScalarField] ) -> Result<G2Projective<Self>, ()>
Multi scalar multiplication on G2.
sourcefn bls12_381_mul_projective_g1(
base: &G1Projective<Self>,
scalar: &[u64]
) -> Result<G1Projective<Self>, ()>
fn bls12_381_mul_projective_g1( base: &G1Projective<Self>, scalar: &[u64] ) -> Result<G1Projective<Self>, ()>
Projective multiplication on G1.
sourcefn bls12_381_mul_projective_g2(
base: &G2Projective<Self>,
scalar: &[u64]
) -> Result<G2Projective<Self>, ()>
fn bls12_381_mul_projective_g2( base: &G2Projective<Self>, scalar: &[u64] ) -> Result<G2Projective<Self>, ()>
Projective multiplication on G2.
Object Safety§
This trait is not object safe.