将 BouncyCastle 与 GnuPG 2.1 的“pubring.kbx”文件一起使用
Using BouncyCastle with GnuPG 2.1's `pubring.kbx` file
我正在尝试将 BouncyCastle 与 PGP2 结合使用来读取 public 密钥环。问题是自 GnuPG 2.1 起,它存储在 pubring.kbx
而不是 pubring.gpg
。这导致 IOException public key ring doesn't start with public key tag: tag 0x0
知道我是否以及如何将 BC 与 GnuPG 2.1 一起使用吗?
GnuPG 2.1 by default uses the new keybox file format -- 如果没有找到 pubring.gpg
。如果有 "legacy" 密钥环文件,将使用它代替。
我不知道 Bouncy Castle 支持 .kbx
文件格式。所以如果你想在 GnuPG 正在使用的相同密钥文件上同时使用 Bouncy Castle,你有三个选择:
- 另外在其他地方维护一个旧的
pubring.gpg
文件,这意味着需要时 运行 一个 gpg --export
或 --export-secret-keys
。旧的pubring.gpg
只是密钥的转储,你可以直接使用导出输出作为密钥环。
在您的 GnuPG 主目录中使用 pubring.gpg
,换句话说,放弃 .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
结果可以直接作为新的keyring,不需要--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
格式。
从 1.60 版本开始,BouncyCastle 支持读取 KeyBox 文件。
https://www.bouncycastle.org/releasenotes.html
A parser has now been added for the GNU keybox file format. The GPG SExpr parser now covers a wider range of key types.
KeyBoxTest.java中有一些示例代码。
我正在尝试将 BouncyCastle 与 PGP2 结合使用来读取 public 密钥环。问题是自 GnuPG 2.1 起,它存储在 pubring.kbx
而不是 pubring.gpg
。这导致 IOException public key ring doesn't start with public key tag: tag 0x0
知道我是否以及如何将 BC 与 GnuPG 2.1 一起使用吗?
GnuPG 2.1 by default uses the new keybox file format -- 如果没有找到 pubring.gpg
。如果有 "legacy" 密钥环文件,将使用它代替。
我不知道 Bouncy Castle 支持 .kbx
文件格式。所以如果你想在 GnuPG 正在使用的相同密钥文件上同时使用 Bouncy Castle,你有三个选择:
- 另外在其他地方维护一个旧的
pubring.gpg
文件,这意味着需要时 运行 一个gpg --export
或--export-secret-keys
。旧的pubring.gpg
只是密钥的转储,你可以直接使用导出输出作为密钥环。 在您的 GnuPG 主目录中使用
pubring.gpg
,换句话说,放弃.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
结果可以直接作为新的keyring,不需要--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
格式。
从 1.60 版本开始,BouncyCastle 支持读取 KeyBox 文件。
https://www.bouncycastle.org/releasenotes.html
A parser has now been added for the GNU keybox file format. The GPG SExpr parser now covers a wider range of key types.
KeyBoxTest.java中有一些示例代码。