【问题标题】:How to create .der file in golang same as openssl do如何在 golang 中创建与 openssl 相同的 .der 文件
【发布时间】:2022-01-11 09:24:04
【问题描述】:

“openssl rsa -in prevate.pem -outform DER -pubout -out public.der”

【问题讨论】:

  • key的输入格式是什么? PEM?
  • 这是 PEM 文件,我使用的是 preivate.pem 文件
  • 实际上,OpenSSL 语句从 private PKCS#8 PEM 编码密钥中提取 public X.509 DER 编码密钥。这可以通过 X509 包中的 ParsePKCS8PrivateKey()MarshalPKIXPublicKey() 函数来实现。

标签: go openssl cryptography


【解决方案1】:

您可能会考虑像 google/trillian 这样的库,它确实包含一个 MustMarshalPublicPEMToDER(keyPEM string) []byte 函数。

// MustMarshalPublicPEMToDER reads a PEM-encoded public key and returns it in DER encoding.
// If an error occurs, it panics.
func MustMarshalPublicPEMToDER(keyPEM string) []byte {
    block, _ := pem.Decode([]byte(keyPEM))
    key, err := x509.ParsePKIXPublicKey(block.Bytes)
    if err != nil {
        panic(err)
    }

    keyDER, err := x509.MarshalPKIXPublicKey(key)
    if err != nil {
        panic(err)
    }
    return keyDER
}

正如该函数的注释所示,它读取的是 PEM 编码的公钥。

Topaco 所述,您需要crypto/x509#ParsePKCS8PrivateKey 才能读取私有PKCS#8 PEM 编码密钥。
元帅部分没有变化。

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2018-07-05
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2020-06-02
    相关资源
    最近更新 更多