Trait snarkvm_wasm::PairingGadget[][src]

pub trait PairingGadget<Pairing, F> where
    F: Field,
    Pairing: PairingEngine
{ type G1Gadget: GroupGadget<<Pairing as PairingEngine>::G1Projective, F>; type G2Gadget: GroupGadget<<Pairing as PairingEngine>::G2Projective, F>; type G1PreparedGadget: ToBytesGadget<F> + Clone + Debug; type G2PreparedGadget: ToBytesGadget<F> + AllocGadget<<<Pairing as PairingEngine>::G2Affine as PairingCurve>::Prepared, F> + Clone + Debug; type GTGadget: FieldGadget<<Pairing as PairingEngine>::Fqk, F> + Clone; fn miller_loop<CS>(
        cs: CS,
        p: &[Self::G1PreparedGadget],
        q: &[Self::G2PreparedGadget]
    ) -> Result<Self::GTGadget, SynthesisError>
    where
        CS: ConstraintSystem<F>
;
fn final_exponentiation<CS>(
        cs: CS,
        p: &Self::GTGadget
    ) -> Result<Self::GTGadget, SynthesisError>
    where
        CS: ConstraintSystem<F>
;
fn prepare_g1<CS>(
        cs: CS,
        q: Self::G1Gadget
    ) -> Result<Self::G1PreparedGadget, SynthesisError>
    where
        CS: ConstraintSystem<F>
;
fn prepare_g2<CS>(
        cs: CS,
        q: Self::G2Gadget
    ) -> Result<Self::G2PreparedGadget, SynthesisError>
    where
        CS: ConstraintSystem<F>
; fn pairing<CS>(
        cs: CS,
        p: Self::G1PreparedGadget,
        q: Self::G2PreparedGadget
    ) -> Result<Self::GTGadget, SynthesisError>
    where
        CS: ConstraintSystem<F>
, { ... }
fn product_of_pairings<CS>(
        cs: CS,
        p: &[Self::G1PreparedGadget],
        q: &[Self::G2PreparedGadget]
    ) -> Result<Self::GTGadget, SynthesisError>
    where
        CS: ConstraintSystem<F>
, { ... } }

Associated Types

Required methods

fn miller_loop<CS>(
    cs: CS,
    p: &[Self::G1PreparedGadget],
    q: &[Self::G2PreparedGadget]
) -> Result<Self::GTGadget, SynthesisError> where
    CS: ConstraintSystem<F>, 
[src]

fn final_exponentiation<CS>(
    cs: CS,
    p: &Self::GTGadget
) -> Result<Self::GTGadget, SynthesisError> where
    CS: ConstraintSystem<F>, 
[src]

fn prepare_g1<CS>(
    cs: CS,
    q: Self::G1Gadget
) -> Result<Self::G1PreparedGadget, SynthesisError> where
    CS: ConstraintSystem<F>, 
[src]

fn prepare_g2<CS>(
    cs: CS,
    q: Self::G2Gadget
) -> Result<Self::G2PreparedGadget, SynthesisError> where
    CS: ConstraintSystem<F>, 
[src]

Provided methods

fn pairing<CS>(
    cs: CS,
    p: Self::G1PreparedGadget,
    q: Self::G2PreparedGadget
) -> Result<Self::GTGadget, SynthesisError> where
    CS: ConstraintSystem<F>, 
[src]

fn product_of_pairings<CS>(
    cs: CS,
    p: &[Self::G1PreparedGadget],
    q: &[Self::G2PreparedGadget]
) -> Result<Self::GTGadget, SynthesisError> where
    CS: ConstraintSystem<F>, 
[src]

Computes a product of pairings.

Implementors

impl<P> PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp> for Bls12PairingGadget<P> where
    P: Bls12Parameters,
    GroupAffine<<P as Bls12Parameters>::G1Parameters>: PairingCurve,
    GroupAffine<<P as Bls12Parameters>::G2Parameters>: PairingCurve,
    <GroupAffine<<P as Bls12Parameters>::G1Parameters> as AffineCurve>::BaseField == <<P as Bls12Parameters>::G1Parameters as ModelParameters>::BaseField,
    <GroupAffine<<P as Bls12Parameters>::G1Parameters> as AffineCurve>::ScalarField == <<P as Bls12Parameters>::G1Parameters as ModelParameters>::ScalarField,
    <GroupAffine<<P as Bls12Parameters>::G1Parameters> as AffineCurve>::Projective == GroupProjective<<P as Bls12Parameters>::G1Parameters>,
    <GroupAffine<<P as Bls12Parameters>::G1Parameters> as PairingCurve>::PairWith == GroupAffine<<P as Bls12Parameters>::G2Parameters>,
    <GroupAffine<<P as Bls12Parameters>::G1Parameters> as PairingCurve>::Prepared == G1Prepared<P>,
    <GroupAffine<<P as Bls12Parameters>::G1Parameters> as PairingCurve>::PairingResult == Fp12<<P as Bls12Parameters>::Fp12Params>,
    <GroupAffine<<P as Bls12Parameters>::G2Parameters> as AffineCurve>::BaseField == <<P as Bls12Parameters>::G2Parameters as ModelParameters>::BaseField,
    <GroupAffine<<P as Bls12Parameters>::G2Parameters> as AffineCurve>::ScalarField == <<P as Bls12Parameters>::G1Parameters as ModelParameters>::ScalarField,
    <GroupAffine<<P as Bls12Parameters>::G2Parameters> as AffineCurve>::Projective == GroupProjective<<P as Bls12Parameters>::G2Parameters>,
    <GroupAffine<<P as Bls12Parameters>::G2Parameters> as PairingCurve>::PairWith == GroupAffine<<P as Bls12Parameters>::G1Parameters>,
    <GroupAffine<<P as Bls12Parameters>::G2Parameters> as PairingCurve>::Prepared == G2Prepared<P>,
    <GroupAffine<<P as Bls12Parameters>::G2Parameters> as PairingCurve>::PairingResult == Fp12<<P as Bls12Parameters>::Fp12Params>, 
[src]

type G1Gadget = AffineGadget<<P as Bls12Parameters>::G1Parameters, <P as Bls12Parameters>::Fp, FpGadget<<P as Bls12Parameters>::Fp>>

type G1PreparedGadget = G1PreparedGadget<P>

type G2Gadget = AffineGadget<<P as Bls12Parameters>::G2Parameters, <P as Bls12Parameters>::Fp, Fp2Gadget<<P as Bls12Parameters>::Fp2Params, <P as Bls12Parameters>::Fp>>

type G2PreparedGadget = G2PreparedGadget<P>

type GTGadget = Fp12Gadget<<P as Bls12Parameters>::Fp12Params, <P as Bls12Parameters>::Fp>

pub fn miller_loop<CS>(
    cs: CS,
    ps: &[<Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::G1PreparedGadget],
    qs: &[<Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::G2PreparedGadget]
) -> Result<<Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::GTGadget, SynthesisError> where
    CS: ConstraintSystem<<P as Bls12Parameters>::Fp>, 
[src]

pub fn final_exponentiation<CS>(
    cs: CS,
    f: &<Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::GTGadget
) -> Result<<Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::GTGadget, SynthesisError> where
    CS: ConstraintSystem<<P as Bls12Parameters>::Fp>, 
[src]

pub fn prepare_g1<CS>(
    cs: CS,
    p: <Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::G1Gadget
) -> Result<<Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::G1PreparedGadget, SynthesisError> where
    CS: ConstraintSystem<<P as Bls12Parameters>::Fp>, 
[src]

pub fn prepare_g2<CS>(
    cs: CS,
    q: <Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::G2Gadget
) -> Result<<Bls12PairingGadget<P> as PairingGadget<Bls12<P>, <P as Bls12Parameters>::Fp>>::G2PreparedGadget, SynthesisError> where
    CS: ConstraintSystem<<P as Bls12Parameters>::Fp>, 
[src]