br-crypto 0.4.8

This is an crypto
Documentation
use smcrypto::sm2 as sm;

pub fn sign(private_key: &str, data: &[u8]) -> String {
    let sign_ctx = sm::Sign::new(private_key);
    let sign = sign_ctx.sign(data);
    hex::encode(sign)
}

pub fn sign_rs(private_key: &str, data: &[u8]) -> String {
    let sign_ctx = sm::Sign::new(private_key);
    let sign = sign_ctx.sign(data);
    hex::encode(sign)
}
pub fn verify(sign: &str, pubkey_key: &str, data: &[u8]) -> bool {
    let verify_ctx = sm::Verify::new(pubkey_key);
    let sign = hex::decode(sign).unwrap();
    verify_ctx.verify(data, &sign)
}
/// 创建密钥对 
/// 公钥 SEC1 非压缩格式(04开头 + X + Y)
pub fn create_key() -> (String, String) {
    let (private_key, pubkey_key) = sm::gen_keypair();
    (private_key, format!("04{pubkey_key}"))
}

#[test]
fn tests() {
    let msg = "你好";
    let (private_key, pubkey_key) = create_key();
    assert_eq!(private_key.len(), 64);
    assert_eq!(pubkey_key.len(), 130);
    println!("私钥: {private_key}");
    println!("公钥: {pubkey_key}");
    println!("text: {msg}");
    let sign = sign(private_key.as_str(), msg.as_bytes());
    println!("签名: {sign}");
    //let sign = verify(sign.as_str(), pubkey_key.as_str(), msg.as_bytes());
    //assert_eq!(sign, true)
}