Jak*_*ski 4 java bouncycastle gnupg openpgp
我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)
反向过程应该看起来非常相似(假设没有存储密钥,否则请在下面阅读,并交换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
Run Code Online (Sandbox Code Playgroud)
该--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
Run Code Online (Sandbox Code Playgroud)实施.kbxBouncy Castle 的格式.
从 1.60 版开始,BouncyCastle 支持读取 KeyBox 文件。
https://www.bouncycastle.org/releasenotes.html
现在已为 GNU 密钥箱文件格式添加了解析器。GPG SExpr 解析器现在涵盖更广泛的密钥类型。
KeyBoxTest.java中有一些示例代码。
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |