bash脚本检查GPG签名是否有效且属于某个密钥
我正在尝试写一个bash脚本,用来检查给定的签名是否有效。我有两个可能的输出结果:
$ gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz
错误
gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0
gpg: Can't check signature: public key not found
正确
gpg: Signature made Tue 05 Apr 2011 11:01:19 CEST using RSA key ID E32804F0
gpg: Good signature from "Test key <test@localhost>"
我想知道怎么能在不解析结果的情况下,判断检查是否正确。
这个问题和用Perl验证GPG文件签名类似,但我想用bash来实现(如果非常需要的话,也可以用Python)。
2 个回答
1
来自GnuPG的手册:
这个程序如果一切正常,会返回0;如果至少有一个签名出错,会返回1;其他的错误代码则表示严重错误。
所以你可以使用 http://docs.python.org/library/subprocess.html 来获取 gpg
的返回代码。
8
我不知道 gpg
这个命令,但它在结果“错误”和“正确”时会返回不同的退出值吗?运行这个命令后,检查这个的最简单方法是:
echo $?
我希望如果一切正常,它返回0;如果不正常,就返回其他值。所以你的bash脚本看起来会是:
gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz
if [ $? -eq 0 ]
then
echo All is well.
else
echo Problem with signature.
fi