繁体   English   中英

Go的openpgp包中的PGP密钥装甲编码

[英]PGP key armored encoding in Go's openpgp package

我正在尝试使用Go的openpgp/armor包以ASCII装甲编码打印PGP公钥。

我期望的输出:

-----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>

它只打印公钥的第一部分。

公钥是从本地密钥环文件获取的,并按如下方式处理:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM