英文:
How to create .der file in golang same as openssl do
问题
"openssl rsa -in prevate.pem -outform DER -pubout -out public.der" 的中文翻译是:将 prevate.pem 文件转换为 DER 格式的公钥,并将结果保存为 public.der。
英文:
"openssl rsa -in prevate.pem -outform DER -pubout -out public.der"
答案1
得分: 3
你可以考虑使用google/trillian
这样的库,它包含了一个MustMarshalPublicPEMToDER(keyPEM string) []byte
函数。
// MustMarshalPublicPEMToDER将一个PEM编码的公钥读取并以DER编码返回。
// 如果发生错误,它会引发panic。
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所指出的,如果要读取一个私有的PKCS#8 PEM编码的密钥,你需要使用crypto/x509#ParsePKCS8PrivateKey
。编组部分不会改变。
英文:
You might consider a library like google/trillian
, which does include a MustMarshalPublicPEMToDER(keyPEM string) []byte
function.
// 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
}
As the comment of this function shows, this reads a PEM-encoded public key.
As noted by Topaco, you would need crypto/x509#ParsePKCS8PrivateKey
in order to read a private PKCS#8 PEM encoded key.
The marshal part does not change.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论