use secp256k1::{Secp256k1, Message, PublicKey, SecretKey};
use secp256k1::ecdsa::Signature;
use sha2::{Sha256, Digest};
pub fn sign_message(message: &[u8], secret_key: &SecretKey) -> Result<Signature, secp256k1::Error> {
let secp = Secp256k1::signing_only();
let hashed_message = Sha256::digest(message);
let message = Message::from_slice(hashed_message.as_slice())?;
Ok(secp.sign_ecdsa(&message, secret_key))
}
pub fn verify_signature(message: &[u8], signature: &Signature, pubkey: &PublicKey) -> Result<bool, secp256k1::Error> {
let secp = Secp256k1::verification_only();
let hashed_message = Sha256::digest(message);
let message = Message::from_slice(hashed_message.as_slice())?;
Ok(secp.verify_ecdsa(&message, signature, pubkey).is_ok())
}