spark_sdk/wallet/utils/ecdsa.rs
1use crate::error::SparkSdkError;
2use bitcoin::secp256k1::ecdsa::Signature;
3use bitcoin::secp256k1::Message;
4use bitcoin::secp256k1::PublicKey;
5use bitcoin::secp256k1::VerifyOnly;
6
7pub(crate) fn verify_operator_ecdsa_signature(
8 operator_sig: &[u8],
9 operator_pubkey: &[u8],
10 message: &[u8],
11 secp: &bitcoin::secp256k1::Secp256k1<VerifyOnly>,
12) -> Result<(), SparkSdkError> {
13 let message = Message::from_digest_slice(&message)?;
14 let sig = Signature::from_der(&operator_sig)?;
15 let operator_pubkey = PublicKey::from_slice(&operator_pubkey)?;
16
17 secp.verify_ecdsa(&message, &sig, &operator_pubkey)?;
18
19 Ok(())
20}