【问题标题】:How to sign a message with an ECDSA string privateKey如何使用 ECDSA 字符串 privateKey 签署消息
【发布时间】:2018-01-23 00:21:35
【问题描述】:

我正在尝试使用 ECDSA privateKey 但使用类型字符串对消息进行签名。 问题是为了对消息进行签名,我需要使用 ecdsa 包中的“签名”方法。

func (priv *PrivateKey) Sign(rand io.Reader, msg []byte, opts crypto.SignerOpts) ([]byte, error)

此方法只能采用PrivateKey 类型。 如何将我的字符串私钥转换为这种类型?或者有其他方法吗?

【问题讨论】:

    标签: go ecdsa


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多