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§

source

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.

source

fn bls12_381_final_exponentiation( target: <Bls12_381<Self> as Pairing>::TargetField ) -> Result<<Bls12_381<Self> as Pairing>::TargetField, ()>

Pairing final exponentiation.

source

fn bls12_381_msm_g1( bases: &[G1Affine<Self>], scalars: &[<Config<Self> as CurveConfig>::ScalarField] ) -> Result<G1Projective<Self>, ()>

Multi scalar multiplication on G1.

source

fn bls12_381_msm_g2( bases: &[G2Affine<Self>], scalars: &[<Config<Self> as CurveConfig>::ScalarField] ) -> Result<G2Projective<Self>, ()>

Multi scalar multiplication on G2.

source

fn bls12_381_mul_projective_g1( base: &G1Projective<Self>, scalar: &[u64] ) -> Result<G1Projective<Self>, ()>

Projective multiplication on G1.

source

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.

Implementors§