pub trait CommitmentGadget<C, F> where
C: CommitmentScheme,
F: Field, {
type OutputGadget: ConditionalEqGadget<F> + CondSelectGadget<F> + EqGadget<F> + ToBytesGadget<F> + AllocGadget<<C as CommitmentScheme>::Output, F> + Clone + Sized + Debug;
type ParametersGadget: AllocGadget<<C as CommitmentScheme>::Parameters, F> + Clone;
type RandomnessGadget: AllocGadget<<C as CommitmentScheme>::Randomness, F> + Clone;
fn check_commitment_gadget<CS>(
cs: CS,
parameters: &Self::ParametersGadget,
input: &[UInt8],
r: &Self::RandomnessGadget
) -> Result<Self::OutputGadget, SynthesisError>
where
CS: ConstraintSystem<F>;
}
impl<F, G, GG, S> CommitmentGadget<PedersenCommitment<G, S>, F> for PedersenCommitmentGadget<G, F, GG> where
G: Group,
S: PedersenSize,
F: PrimeField,
GG: GroupGadget<G, F>, impl<F, G, GG, S> CommitmentGadget<PedersenCompressedCommitment<G, S>, F> for PedersenCompressedCommitmentGadget<G, F, GG> where
G: Group + ProjectiveCurve,
S: PedersenSize,
F: PrimeField,
GG: CompressedGroupGadget<G, F>,