Trait snarkvm_gadgets::traits::curves::pairing::PairingGadget[][src]

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

Associated Types

Required methods

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

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

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

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

Provided methods

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

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

Computes a product of pairings.

Implementors

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

type G1Gadget = G1Gadget<P>

type G1PreparedGadget = G1PreparedGadget<P>

type G2Gadget = G2Gadget<P>

type G2PreparedGadget = G2PreparedGadget<P>

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

fn miller_loop<CS: ConstraintSystem<P::Fp>>(
    cs: CS,
    ps: &[Self::G1PreparedGadget],
    qs: &[Self::G2PreparedGadget]
) -> Result<Self::GTGadget, SynthesisError>
[src]

fn final_exponentiation<CS: ConstraintSystem<P::Fp>>(
    cs: CS,
    f: &Self::GTGadget
) -> Result<Self::GTGadget, SynthesisError>
[src]

fn prepare_g1<CS: ConstraintSystem<P::Fp>>(
    cs: CS,
    p: Self::G1Gadget
) -> Result<Self::G1PreparedGadget, SynthesisError>
[src]

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