我试图在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 的支持,或其他方式/建议?
答案 0 :(得分:2)
There is no secp256k1 curve type in go.
您是如何创建密钥对的?
我遇到了这个问题。就我而言,我使用go-ethereum包来创建此曲线类型。因此,我使用同一包的function来解析密钥。
因此,您必须使用相同程序包的指定函数来解析密钥对。
此x509.MarshalECPrivateKey(privKey)仅有助于Marshal Go的标准曲线类型。