我正在尝试使用ECDSA privateKey
签名,但带有类型字符串。
问题是为了签署我需要使用ecdsa
包中的“签名”方法的消息。
func (priv *PrivateKey) Sign(rand io.Reader, msg []byte, opts crypto.SignerOpts) ([]byte, error)
此方法只能采用PrivateKey
类型。
如何将我的字符串私钥转换为此类型?或者另一种方法可用吗?
答案 0 :(得分:1)
您可以使用标准库x509.ParseECPrivateKey解析DER编码的椭圆曲线私钥。
derKey := []byte(keyString)
privKey, err := x509.ParseECPrivateKey(derKey)
if err != nil {
panic(err)
}
signedMsg, err := privKey.Sign(randReader, msg, otps)
如果您的密钥是PEM格式,则必须先使用pem.Decode解码:
var block *pem.Block
if block, _ = pem.Decode([]byte(keyString)); block == nil {
panic("expected pem block")
}
privKey, err := x509.ParseECPrivateKey(block.Bytes)
// etc... the rest is the same