Go 的 openpgp 包中的 PGP 密钥装甲编码
PGP key armored encoding in Go's openpgp package
我正在尝试使用 Go 的 openpgp/armor
包在 ASCII 装甲编码中打印 PGP public 密钥。
我期望的输出:
-----BEGIN PGP PUBLIC KEY BLOCK-----
<base64 encoded bytes of public key>
<checksum>
-----END PGP PUBLIC KEY BLOCK-----
我得到的输出:
-----BEGIN PGP PUBLIC KEY BLOCK-----
<first part of base64 encoded bytes of public key>
它只打印 public 键的第一部分。
public密钥是从本地keyring文件中获取的,处理如下:
keyRingFileBuffer, err := os.Open(keyRingFilePath)
if err != nil {
log.Fatal(err)
}
defer keyRingFileBuffer.Close()
keyRing,err := openpgp.ReadKeyRing(keyRingFileBuffer)
if err != nil {
log.Fatal(err)
}
for _, k := range keyRing {
w, _ := armor.Encode(os.Stdout, openpgp.PublicKeyType, nil)
k.PrimaryKey.Serialize(w)
}
我是不是用错了包?关于如何追踪这个(在我看来)错误输出的原因有什么想法吗?
哎呀,在悬赏这个问题后我找到了答案。嗯。
必须关闭 armor
编写器才能添加该结束行。
pubKeyBuf := bytes.NewBuffer(nil)
pubKeyWriter, err := armor.Encode(pubKeyBuf, openpgp.PublicKeyType, nil)
checkIfError(err)
err = e.Serialize(pubKeyWriter)
pubKeyWriter.Close()
checkIfError(err)
我正在尝试使用 Go 的 openpgp/armor
包在 ASCII 装甲编码中打印 PGP public 密钥。
我期望的输出:
-----BEGIN PGP PUBLIC KEY BLOCK-----
<base64 encoded bytes of public key>
<checksum>
-----END PGP PUBLIC KEY BLOCK-----
我得到的输出:
-----BEGIN PGP PUBLIC KEY BLOCK-----
<first part of base64 encoded bytes of public key>
它只打印 public 键的第一部分。
public密钥是从本地keyring文件中获取的,处理如下:
keyRingFileBuffer, err := os.Open(keyRingFilePath)
if err != nil {
log.Fatal(err)
}
defer keyRingFileBuffer.Close()
keyRing,err := openpgp.ReadKeyRing(keyRingFileBuffer)
if err != nil {
log.Fatal(err)
}
for _, k := range keyRing {
w, _ := armor.Encode(os.Stdout, openpgp.PublicKeyType, nil)
k.PrimaryKey.Serialize(w)
}
我是不是用错了包?关于如何追踪这个(在我看来)错误输出的原因有什么想法吗?
哎呀,在悬赏这个问题后我找到了答案。嗯。
必须关闭 armor
编写器才能添加该结束行。
pubKeyBuf := bytes.NewBuffer(nil)
pubKeyWriter, err := armor.Encode(pubKeyBuf, openpgp.PublicKeyType, nil)
checkIfError(err)
err = e.Serialize(pubKeyWriter)
pubKeyWriter.Close()
checkIfError(err)