1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#![allow(non_snake_case)]
#[allow(dead_code)]
#[warn(unused_imports)]
#[warn(unused_variables)]
#[warn(unused_must_use)]
pub mod clib;

/// 生成国密sm2密钥对,运行目录下私钥sk.pem,公钥pk.pem

/// # Examples

/// ```

/// GenKeyPair();

/// ```

pub fn GenKeyPair() -> anyhow::Result<String> {
    let b = clib::sm2::GenKeyPair();
    b
}
/// sm2 加密

/// # Examples

/// ```

/// let pk="./pk.pem";

/// let sk="./sk.pem";

/// let enc=Sm2Enc(pk,"testmsg");

/// let dec=Sm2Dec(sk,&enc);

/// ```

pub fn Sm2Enc(pk: &str, msg: &str) -> anyhow::Result<String> {
    let c = clib::sm2::Sm2Enc(pk, msg);
    c
}
/// sm2 解密

pub fn Sm2Dec(sk: &str, msg: &str) -> anyhow::Result<String> {
    let c = clib::sm2::Sm2Dec(sk, msg);
    c
}
/// sm2 签名

/// # Examples

/// ```

/// let pk="./pk.pem";

/// let sk="./sk.pem";

/// let sign=Sm2Sign(sk,"testmsg");

/// let istrue=Sm2Verify(pk,"testmsg",&sign);

/// ```

pub fn Sm2Sign(sk: &str, msg: &str) -> anyhow::Result<String> {
    let c = clib::sm2::Sm2Sign(sk, msg);
    c
}
/// sm2  验签

pub fn Sm2Verify(pk: &str, msg: &str, sign: &str) -> anyhow::Result<String> {
    let c = clib::sm2::Sm2Verify(pk, msg, sign);
    c
}
/// sm3 摘要加密

/// # Examples

/// ```

/// let enc=Sm3("testmsg");

/// ```

pub fn Sm3(msg: &str) -> anyhow::Result<String> {
    let c = clib::sm3::Sm3(msg);
    c
}
/// sm4 加密

/// # Examples

/// ```

/// let k = "1234567890abcdef";

/// let enc=Sm4Enc(k,"testmsg");

/// let dec=SmeDec(k,&enc);

/// ```

pub fn Sm4Enc(k: &str, msg: &str) -> anyhow::Result<String> {
    let c = clib::sm4::Sm4Enc(k, msg);
    c
}
/// sm4 解密

pub fn Sm4Dec(k: &str, msg: &str) -> anyhow::Result<String> {
    let c = clib::sm4::Sm4Dec(k, msg);
    c
}
///Hi for test

pub fn Hi() -> anyhow::Result<()> {
    let b = clib::tools::Hi();
   Ok(())
}