在 Go 中使用 secp256k1
Use secp256k1 in Go
我正在尝试在 Go 中使用椭圆曲线 secp256k1 和库 "crypto/x509"。密钥对生成后,我分别得到了public密钥pubKey和私钥privKey。之后,我想生成一个包含 public 密钥的证书,但在我想将私钥存储在 .pem 文件之前:
keyDer, err := x509.MarshalECPrivateKey(privKey)
if err != nil {
log.Fatalf("Failed to serialize ECDSA key: %s\n", err)
}
但是当我尝试将 EC 私钥编组为 ASN.1、DER 格式并编译代码时,我收到一条错误消息:
Failed to serialize ECDSA key: x509: unknown elliptic curve
在这种情况下,我有必要使用该特定曲线,因此我无法更改为 prime256v1 或“'similar curve'”。是否有允许在 crypto/x509 库或另一个 way/suggestion 中添加对 secp256k1 的支持的解决方案?
There is no secp256k1 curve type in go.
您是如何创建 key-pairs 的?
我遇到了这个问题。就我而言,我使用 go-ethereum package to create this curve type. So, I used the same package's function 来解析密钥。
所以你必须使用同一个包的指定函数来解析key-pair。
这个x509.MarshalECPrivateKey(privKey)只会对Marshal go的标准曲线类型有帮助。
您可以通过decred/dcrd. It is currently used by btcsuite/btcd repo使用secp256k1模块。
我正在尝试在 Go 中使用椭圆曲线 secp256k1 和库 "crypto/x509"。密钥对生成后,我分别得到了public密钥pubKey和私钥privKey。之后,我想生成一个包含 public 密钥的证书,但在我想将私钥存储在 .pem 文件之前:
keyDer, err := x509.MarshalECPrivateKey(privKey)
if err != nil {
log.Fatalf("Failed to serialize ECDSA key: %s\n", err)
}
但是当我尝试将 EC 私钥编组为 ASN.1、DER 格式并编译代码时,我收到一条错误消息:
Failed to serialize ECDSA key: x509: unknown elliptic curve
在这种情况下,我有必要使用该特定曲线,因此我无法更改为 prime256v1 或“'similar curve'”。是否有允许在 crypto/x509 库或另一个 way/suggestion 中添加对 secp256k1 的支持的解决方案?
There is no secp256k1 curve type in go.
您是如何创建 key-pairs 的?
我遇到了这个问题。就我而言,我使用 go-ethereum package to create this curve type. So, I used the same package's function 来解析密钥。
所以你必须使用同一个包的指定函数来解析key-pair。
这个x509.MarshalECPrivateKey(privKey)只会对Marshal go的标准曲线类型有帮助。
您可以通过decred/dcrd. It is currently used by btcsuite/btcd repo使用secp256k1模块。