go - 在 Go 中使用 secp256k1

标签 go cryptography certificate bitcoin

我正在尝试在 Go 中使用带有库“crypto/x509”的椭圆曲线 secp256k1。生成 key 对后,分别得到公钥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 格式并编译代码时,我收到一条错误消息:

Failed to serialize ECDSA key: x509: unknown elliptic curve



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

最佳答案

There is no secp256k1 curve type in go.
你是如何创建 key 对的?
我遇到了这个问题。就我而言,我使用了 go-ethereum包来创建这种曲线类型。所以,我使用了同一个包的 function解析 key 。
所以你必须使用相同包的指定函数来解析 key 对。
这个 x509.MarshalECPrivateKey(privKey) 只会帮助 Marshal go 的标准曲线类型。

关于go - 在 Go 中使用 secp256k1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49475216/

相关文章:

Golang 中的 Shell 扩展(命令替换)

javascript - 如何在 chrome 中使用 SubtleCrypto(window.crypto.subtle 未定义)

encryption - 能够分解大量数字如何决定流行加密算法的安全性?

c# - 使用C#进行AES解密

go - 单值上下文中的多值 url.Parse() (net/url)

docker - Go 应用程序在使用 docker-compose 运行时失败并退出,但使用 docker run 命令运行良好

go - 堆栈跟踪中的这些数字是什么意思?

c - 如何将 PEM 证书作为 i2d_X509 的第一个参数传递

ios - “未找到有效的代码签名身份”错误

java - 未找到证书链,但 keystore 包含私钥