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格式,若与其他工具/系统交互,可能需要自己转换格式