1. 从PEM私钥创建SM2私钥gmssl.PrivateKey
key, _ := ioutil.ReadFile("./skey.pem")
sm2sk, _ := gmssl.NewPrivateKeyFromPEM(string(key), password)
2. 从SM2私钥gmssl.PrivateKey获取SM2公钥gmssl.PublicKey
sm2pkpem, _ := sm2sk.GetPublicKeyPEM()
sm2pk, _ := gmssl.NewPublicKeyFromPEM(sm2pkpem)
3. 使用SM2私钥gmssl.PrivateKey签名
sig, err := sm2sk.Sign("sm2sign", data, nil)
4. 使用SM2公钥gmssl.PublicKey验签
err := sm2pk.Verify("sm2sign", data, sig, nil)
5. 注意签名验签的签名值是asn格式,若与其他工具/系统交互,可能需要自己转换格式
博客介绍了在GO语言中使用gmssl库实现SM2签名与验签的方法。包括从PEM私钥创建SM2私钥、从私钥获取公钥、使用私钥签名、使用公钥验签等步骤,还提醒签名验签的签名值是asn格式,与其他工具/系统交互时可能需转换格式。
3489

被折叠的 条评论
为什么被折叠?



