我该如何使用Go的openpgp包?

6

我一直在查阅Go中openpgp包的文档,但我认为我可能错过了一些明显的要点。例如,有一个ReadKeyRing函数,但没有WriteKeyRing。另一方面,我可以Serialize一个Entity,但我无法读取它。这里发生了什么? 有人真正使用这个包吗?


Camlistore(camlistore.org)是该软件包的主要用户(和动力)。 - Brad Fitzpatrick
2个回答

2
一个实体代表公共+私人GPG密钥信息。 ReadKeyRing 函数允许您读取 GPG 密钥列表。 Entity.Serialize 函数文档 表示:

Serialize 将给定实体的公共部分写入 w。(不会输出任何私钥材料)。

因为只有实体的公共部分,所以您可以使用序列化数据作为公钥创建一个新实体。
确实不存在 WriteKeyRing。它将遍历实体列表并提取公钥到数组中。

1
你所说的一切都在文档中,但我仍然不明白如何使用这个包。例如,假设我想要一个程序,当传递一个标志时,它将创建一个密钥对并将其写入文件;当传递另一个标志时,它应该读取该密钥对并使用它来签名某些内容。只使用ReadKeyRingSerialize(Private),我该怎么做呢? - Anschel Schaffer-Cohen
您不能使用Gos GPG软件包创建密钥对,只能使用已经存在的密钥。 - Kissaki
2
你确定吗?那么 http://golang.org/pkg/crypto/openpgp/#Entity.NewEntity 呢? - Anschel Schaffer-Cohen

1

我也曾经为此苦苦挣扎 - 最终我只是通过样例来学习:

这背后的思想并不是为了用户而设计的,而似乎是从pgp技术实现的实际方式中产生的。

我建议不要通过软件包生成密钥,而是使用pgp命令行工具生成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接