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
type G1Gadget: GroupGadget<Pairing::G1Projective, F>
[src]
type G1Gadget: GroupGadget<Pairing::G1Projective, F>
[src]type G2Gadget: GroupGadget<Pairing::G2Projective, F>
[src]
type G2Gadget: GroupGadget<Pairing::G2Projective, F>
[src]type G1PreparedGadget: ToBytesGadget<F> + Clone + Debug
[src]
type G1PreparedGadget: ToBytesGadget<F> + Clone + Debug
[src]type G2PreparedGadget: ToBytesGadget<F> + AllocGadget<<Pairing::G2Affine as PairingCurve>::Prepared, F> + Clone + Debug
[src]
type G2PreparedGadget: ToBytesGadget<F> + AllocGadget<<Pairing::G2Affine as PairingCurve>::Prepared, F> + Clone + Debug
[src]type GTGadget: FieldGadget<Pairing::Fqk, F> + Clone
[src]
type GTGadget: FieldGadget<Pairing::Fqk, F> + Clone
[src]Required methods
fn miller_loop<CS: ConstraintSystem<F>>(
cs: CS,
p: &[Self::G1PreparedGadget],
q: &[Self::G2PreparedGadget]
) -> Result<Self::GTGadget, SynthesisError>
[src]
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 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_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]
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 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]
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]
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]
cs: CS,
ps: &[Self::G1PreparedGadget],
qs: &[Self::G2PreparedGadget]
) -> Result<Self::GTGadget, SynthesisError>
fn final_exponentiation<CS: ConstraintSystem<P::Fp>>(
cs: CS,
f: &Self::GTGadget
) -> Result<Self::GTGadget, SynthesisError>
[src]
cs: CS,
f: &Self::GTGadget
) -> Result<Self::GTGadget, SynthesisError>
fn prepare_g1<CS: ConstraintSystem<P::Fp>>(
cs: CS,
p: Self::G1Gadget
) -> Result<Self::G1PreparedGadget, SynthesisError>
[src]
cs: CS,
p: Self::G1Gadget
) -> Result<Self::G1PreparedGadget, SynthesisError>
fn prepare_g2<CS: ConstraintSystem<P::Fp>>(
cs: CS,
q: Self::G2Gadget
) -> Result<Self::G2PreparedGadget, SynthesisError>
[src]
cs: CS,
q: Self::G2Gadget
) -> Result<Self::G2PreparedGadget, SynthesisError>