在Go

时间:2018-03-25 11:19:10

标签: go cryptography certificate bitcoin

我试图在Go中使用椭圆曲线 secp256k1 和#34; crypto / x509"。密钥对生成后,我分别获取公钥 pubKey 和私钥 privKey 。之后,我想生成一个包含公钥的证书,但在我想将私钥存储在 .pem 文件中之前:

keyDer, err := x509.MarshalECPrivateKey(privKey)
    if err != nil {
        log.Fatalf("Failed to serialize ECDSA key: %s\n", err)
    }

但是当我尝试将EC私钥封送到ASN.1,DER格式并编译代码时,我收到一条错误消息:

  

无法序列化ECDSA密钥:x509:未知椭圆曲线

在这种情况下,我必须使用该特定曲线,因此我无法更改为 prime256v1 或类似曲线''''' 39 ;.是否有解决方案允许在 crypto / x509 库中添加对 secp256k1 的支持,或其他方式/建议?

1 个答案:

答案 0 :(得分:2)

There is no secp256k1 curve type in go.

您是如何创建密钥对的?

我遇到了这个问题。就我而言,我使用go-ethereum包来创建此曲线类型。因此,我使用同一包的function来解析密钥。

因此,您必须使用相同程序包的指定函数来解析密钥对。

此x509.MarshalECPrivateKey(privKey)仅有助于Marshal Go的标准曲线类型。