我正在尝试使用BouncyCastle和PGP2来读取公钥.问题是,因为GnuPG 2.1存储在pubring.kbx
而不是pubring.gpg
.这导致IOExceptionpublic key ring doesn't start with public key tag: tag 0x0
知道我是否以及如何使用BC与GnuPG 2.1?
GnuPG 2.1默认使用新的密钥箱文件格式 - 如果pubring.gpg
找不到.如果存在"遗留"密钥环文件,则将使用它.
我不知道Bouncy Castle支持.kbx
文件格式.因此,如果你想在GnuPG使用的相同密钥文件上一起使用Bouncy Castle,你有三个选择:
另外在其他pubring.gpg
地方维护旧文件,这意味着运行gpg --export
或--export-secret-keys
在需要时运行.旧pubring.gpg
的只是一个键转储,你可以直接使用导出输出作为密钥环.
pubring.gpg
在GnuPG主目录中使用a ,使用其他词语来降低.kbx
文件的性能以换取兼容性.
首先,请务必复制整个~/.gnupg
文件夹或确保备份最新!
最后,迁移过程归结为将密钥箱文件中的信息导出为旧的OpenPGP密钥环格式.查看上面链接的更改日志中从.kbx
文件迁移到文件的提议.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
匹配您计算机上安装的二进制文件):
$ 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
结果可以直接作为新密钥环,所以没有--import
这个文件的需要.Ownertrust应该以类似的方式复制,我保留的是这里提出的更改日志.
如果您还存储了私钥,我最好先将它们导出到另一个文件中,然后再次导入它们:
$ 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
实施.kbx
Bouncy Castle 的格式.