我正在尝试使用BouncyCastle和PGP2来读取公钥环。问题是,从GnuPG 2.1开始,它存储在pubring.kbx中,而不是pubring.gpg。这将导致IOException public key ring doesn't start with public key tag: tag 0x0有什么想法,如果以及如何我可以使用BC与GnuPG 2.1?
pubring.kbx
pubring.gpg
public key ring doesn't start with public key tag: tag 0x0
j8ag8udp1#
GnuPG 2.1默认使用新的keybox文件格式--如果没有找到pubring.gpg。如果存在“遗留”密钥环文件,则将使用该文件。我不知道Bouncy Castle支持.kbx文件格式。因此,如果你想在GnuPG使用的同一个密钥文件上同时使用Bouncy Castle,你有三个选择:
.kbx
gpg --export
--export-secret-keys
首先,请务必复制整个~/.gnupg文件夹或确保有最新的备份!最后,迁移过程归结为将密钥箱文件中的信息导出为旧的OpenPGP密钥环格式。从上面链接的更新日志中查看从.kbx文件迁移到.gpg文件的建议:
~/.gnupg
.gpg
$ cd ~/.gnupg $ gpg --export-ownertrust > otrust.lst $ mv pubring.gpg publickeys $ gpg2 --import-options import-local-sigs --import publickeys $ gpg2 --import-ownertrust otrust.lst
相反的过程应该看起来非常相似(假设没有存储密钥,否则请阅读下面的内容,并交换gpg2和gpg以匹配您机器上安装的二进制文件):
gpg2
gpg
$ cd ~/.gnupg $ gpg2 --export-ownertrust > otrust.lst $ gpg2 --export > pubring.gpg $ mv pubring.kbx pubring.kbx~ $ gpg2 --import-options import-local-sigs $ gpg2 --import-ownertrust otrust.lst
--export结果可以直接用作新的keyring,因此不需要此文件的--import。Ownertrust可能应该以类似的方式复制,我只是保留了这里提出的更新日志。如果你还存储了私钥,我最好先将它们导出到另一个文件中,最后再导入它们:
--export
--import
$ cd ~/.gnupg $ gpg2 --export-secret-keys > secret-keys.gpg $ gpg2 --export-ownertrust > otrust.lst $ gpg2 --export > pubring.gpg $ mv pubring.kbx pubring.kbx~ $ gpg2 --import-options import-local-sigs --import secret-keys.gpg $ gpg2 --import-ownertrust otrust.lst
1mrurvl12#
从1.60版开始,BouncyCastle支持阅读KeyBox文件。https://www.bouncycastle.org/releasenotes.html现在已经为GNU keybox文件格式添加了一个解析器。GPG SExpr解析器现在覆盖了更广泛的键类型。在KeyBoxTest.java中有一些示例代码。
hiz5n14c3#
如果您已经来到这里,那么您会意识到在bouncyccastle中从.pgp到.kbx文件的API跳跃是缺乏记录的。我已经研究了诸如https://github.com/pgpainless/pgpainless和org.eclipse.jgit.gpg.bc之类的替代品,它们试图使这些变化合理化。但是,将现有的代码重构为.pgp密钥环文件到.kbx是非常具有挑战性的。
3条答案
按热度按时间j8ag8udp1#
GnuPG 2.1默认使用新的keybox文件格式--如果没有找到
pubring.gpg
。如果存在“遗留”密钥环文件,则将使用该文件。我不知道Bouncy Castle支持
.kbx
文件格式。因此,如果你想在GnuPG使用的同一个密钥文件上同时使用Bouncy Castle,你有三个选择:pubring.gpg
文件,这意味着在需要时运行gpg --export
或--export-secret-keys
。旧的pubring.gpg
只是密钥的转储,您可以直接使用导出输出作为keyring。pubring.gpg
,换句话说,放弃.kbx
文件的更好性能以换取兼容性。首先,请务必复制整个
~/.gnupg
文件夹或确保有最新的备份!最后,迁移过程归结为将密钥箱文件中的信息导出为旧的OpenPGP密钥环格式。从上面链接的更新日志中查看从
.kbx
文件迁移到.gpg
文件的建议:相反的过程应该看起来非常相似(假设没有存储密钥,否则请阅读下面的内容,并交换
gpg2
和gpg
以匹配您机器上安装的二进制文件):--export
结果可以直接用作新的keyring,因此不需要此文件的--import
。Ownertrust可能应该以类似的方式复制,我只是保留了这里提出的更新日志。如果你还存储了私钥,我最好先将它们导出到另一个文件中,最后再导入它们:
.kbx
。1mrurvl12#
从1.60版开始,BouncyCastle支持阅读KeyBox文件。
https://www.bouncycastle.org/releasenotes.html
现在已经为GNU keybox文件格式添加了一个解析器。GPG SExpr解析器现在覆盖了更广泛的键类型。
在KeyBoxTest.java中有一些示例代码。
hiz5n14c3#
如果您已经来到这里,那么您会意识到在bouncyccastle中从.pgp到.kbx文件的API跳跃是缺乏记录的。我已经研究了诸如https://github.com/pgpainless/pgpainless和org.eclipse.jgit.gpg.bc之类的替代品,它们试图使这些变化合理化。但是,将现有的代码重构为.pgp密钥环文件到.kbx是非常具有挑战性的。