diff --git a/src/key.rs b/src/key.rs index ecec179..fbba1c2 100644 --- a/src/key.rs +++ b/src/key.rs @@ -13,9 +13,11 @@ use serde::ser::SerializeTuple; use crate::ffi::types::c_uint; use crate::ffi::{self, CPtr}; use crate::Error::{self, InvalidPublicKey, InvalidPublicKeySum, InvalidSecretKey}; -use crate::{constants, from_hex, schnorr, Message, Scalar, Secp256k1, Signing, Verification}; #[cfg(feature = "global-context")] -use crate::{ecdsa, SECP256K1}; +use crate::SECP256K1; +use crate::{ + constants, ecdsa, from_hex, schnorr, Message, Scalar, Secp256k1, Signing, Verification, +}; #[cfg(feature = "bitcoin_hashes")] use crate::{hashes, ThirtyTwoByteHash}; @@ -696,6 +698,16 @@ impl PublicKey { (XOnlyPublicKey(xonly_pk), parity) } } + + /// Checks that `sig` is a valid ECDSA signature for `msg` using this public key. + pub fn verify( + &self, + secp: &Secp256k1, + msg: &Message, + sig: &ecdsa::Signature, + ) -> Result<(), Error> { + secp.verify_ecdsa(msg, sig, self) + } } /// This trait enables interaction with the FFI layer and even though it is part of the public API