mirror of
https://github.com/arnaucube/schnorr.git
synced 2026-01-12 08:51:33 +01:00
Verify in-circuit returns a bool instead of constraining now
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
|
|
||||||
use plonky2::iop::{
|
use plonky2::iop::{
|
||||||
target::Target,
|
target::{BoolTarget, Target},
|
||||||
witness::{PartialWitness, WitnessWrite},
|
witness::{PartialWitness, WitnessWrite},
|
||||||
};
|
};
|
||||||
use plonky2::field::{
|
use plonky2::field::{
|
||||||
@@ -88,6 +88,20 @@ impl SchnorrBuilder {
|
|||||||
msg: &MessageTarget,
|
msg: &MessageTarget,
|
||||||
pk: &SchnorrPublicKeyTarget,
|
pk: &SchnorrPublicKeyTarget,
|
||||||
) -> () {
|
) -> () {
|
||||||
|
let verification_output = self.verify_sig::<C>(builder, sig, msg, pk);
|
||||||
|
let true_target = builder._true();
|
||||||
|
builder.connect(verification_output.target, true_target.target);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn verify_sig <
|
||||||
|
C: GenericConfig<2, F = GoldF>,
|
||||||
|
> (
|
||||||
|
&self,
|
||||||
|
builder: &mut CircuitBuilder::<GoldF, 2>,
|
||||||
|
sig: &SchnorrSignatureTarget,
|
||||||
|
msg: &MessageTarget,
|
||||||
|
pk: &SchnorrPublicKeyTarget,
|
||||||
|
) -> BoolTarget {
|
||||||
let PRIME_GROUP_GEN: Target = builder.constant(GoldF::from_canonical_u64(6612579038192137166));
|
let PRIME_GROUP_GEN: Target = builder.constant(GoldF::from_canonical_u64(6612579038192137166));
|
||||||
let PRIME_GROUP_ORDER: Target = builder.constant(GoldF::from_canonical_u64(65537));
|
let PRIME_GROUP_ORDER: Target = builder.constant(GoldF::from_canonical_u64(65537));
|
||||||
const num_bits_exp: usize = 32;
|
const num_bits_exp: usize = 32;
|
||||||
@@ -114,8 +128,8 @@ impl SchnorrBuilder {
|
|||||||
|
|
||||||
let e: Target = Mod65537Builder::mod_65537(builder, hash_output);
|
let e: Target = Mod65537Builder::mod_65537(builder, hash_output);
|
||||||
|
|
||||||
// enforce equality
|
// test equality
|
||||||
builder.connect(e, sig.e);
|
builder.is_equal(e, sig.e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user