Skip to main content

k256_kit/
sign_verify.rs

1use libsecp256k1::{Message, PublicKey, RecoveryId, SecretKey, sign, Signature, verify};
2use super::result::Result;
3
4pub trait SignVerify {
5    /// 数据签名
6    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    /// 验证签名
12    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}