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}