GmSSL/test/sm9test.c
其中包括了SM9流程中密钥产生,加解密,封装解封装和签名验签流程。
编译后运行。测试结果如下:
gmssl$ GmSSL/test/sm9test
sm9 sign tests passed
sm9 exch tests passed
sm9 key wrap tests passed
sm9 encrypt tests passed
(1) KGC产生主密钥
KGC产生主公钥和主私钥,主私钥用于生成用户私钥,主公钥公开给用户,用于生产用户公钥
(2) A向KGC申请密钥。
A将自己的标识,口令,发给KGC, KGC利用主私钥+用户标识等生成用户私钥,用口令把用户私钥加密后发给A,同时将用户私钥版本号发给A,同时将主公钥发给A。
(3) A 给B加密。
A 用主公钥+用户B标识和用户B密钥版本号,生成用户B公钥,用该公钥对数据加密,发给B。
(4) 用户B解密
B收到加密数据后,用自己的私钥对数据进行解密即可。