diff --git a/plonky2/src/gadgets/ecdsa.rs b/plonky2/src/gadgets/ecdsa.rs index 5f4c4ff1..5bf43b04 100644 --- a/plonky2/src/gadgets/ecdsa.rs +++ b/plonky2/src/gadgets/ecdsa.rs @@ -1,6 +1,9 @@ use std::marker::PhantomData; +use plonky2_field::secp256k1_scalar::Secp256K1Scalar; + use crate::curve::curve_types::Curve; +use crate::curve::secp256k1::Secp256K1; use crate::field::extension_field::Extendable; use crate::gadgets::curve::AffinePointTarget; use crate::gadgets::nonnative::NonNativeTarget; @@ -20,11 +23,11 @@ pub struct ECDSASignatureTarget { } impl, const D: usize> CircuitBuilder { - pub fn verify_message( + pub fn verify_message( &mut self, - msg: NonNativeTarget, - sig: ECDSASignatureTarget, - pk: ECDSAPublicKeyTarget, + msg: NonNativeTarget, + sig: ECDSASignatureTarget, + pk: ECDSAPublicKeyTarget, ) { let ECDSASignatureTarget { r, s } = sig; @@ -34,12 +37,11 @@ impl, const D: usize> CircuitBuilder { let u1 = self.mul_nonnative(&msg, &c); let u2 = self.mul_nonnative(&r, &c); - let g = self.constant_affine_point(C::GENERATOR_AFFINE); - let point1 = self.curve_scalar_mul_windowed(&g, &u1); - let point2 = self.curve_scalar_mul_windowed(&pk.0, &u2); + let point1 = self.fixed_base_curve_mul(&Secp256K1::GENERATOR_AFFINE, &u1); + let point2 = self.glv_mul(&pk.0, &u2); let point = self.curve_add(&point1, &point2); - let x = NonNativeTarget:: { + let x = NonNativeTarget:: { value: point.x.value, _phantom: PhantomData, };