1use libsecp256k1::{Message, PublicKey, RecoveryId, SecretKey, sign, Signature, verify};
2use super::result::Result;
3
4pub trait SignVerify {
5 fn sign(secret_key: &[u8], msg: &[u8]) -> Result<(Signature, RecoveryId)> {
7 let private_key = SecretKey::parse_slice(secret_key)?;
8 Ok(sign(&Message::parse_slice(msg)?, &private_key))
9 }
10
11 fn verify(pub_key: &[u8], sign: &Signature, msg: &[u8]) -> Result<bool> {
13 let pub_key = PublicKey::parse_slice(pub_key, None)?;
14 Ok(verify(&Message::parse_slice(msg)?, sign, &pub_key))
15 }
16}