我有一些内容需要根据 OpenPGP(也是关键字:gpg)公钥的预定白名单进行检查,以获得其中之一的有效签名。
白名单是单独维护的。理想情况下,它应该是 ascii 装甲公钥块的串联,但是每个文件一个公钥的目录就可以了。由于白名单是单独维护的,我们不想使用任何 gpg 的密钥环管理功能。如果内容由我们密钥集中的密钥签名,则它通过。没有不同的信任级别,没有信任网络等。
理想情况下,我们会有一个具有如下界面的程序:
some-program KEYS_FILE CONTENT SIGFILE
Run Code Online (Sandbox Code Playgroud)
或者,使用示例参数,
some-program /etc/ourapp/ourapps_trusted_pubkeys.asc /var/lib/ourapp/newcontent.tar.gz /var/lib/ourapp/newcontent.tar.gz.asc
Run Code Online (Sandbox Code Playgroud)
使用 gpg 执行此操作的最快方法似乎是:
对于我想象的常见用例来说,这是一项巨大的努力。我错过了什么?是否存在类似于假定的 some-program(1) 的工具?
程序gpgv
/gpgv2
用于简单的签名检查。问题是导出的密钥文件不被识别为密钥环。因此,您必须在第一步中创建一个密钥环:
cd /some/tmp/dir || exit 1
test -f pubring.gpg && { rm -f pubring.gpg || exit 1; }
gpg --no-options --no-default-keyring --keyring ./pubring.gpg \
--secret-keyring ./secring.gpg --import /etc/ourapp/ourapps_trusted_pubkeys.asc
Run Code Online (Sandbox Code Playgroud)
现在/some/tmp/dir/pubring.gpg
是一个gpgv
可以使用的密钥环文件:
gpgv --keyring /some/tmp/dir/pubring.gpg \
/var/lib/ourapp/newcontent.tar.gz.asc /var/lib/ourapp/newcontent.tar.gz
Run Code Online (Sandbox Code Playgroud)
如果数据文件路径是没有的签名路径.asc
(如您的示例中所示),那么您可以将其省略。
归档时间: |
|
查看次数: |
827 次 |
最近记录: |