bash脚本检查GPG签名是否有效并且属于密钥

时间:2011-04-05 10:00:54

标签: python bash gnupg

我正在尝试编写一个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>"

如何在不必解析结果的情况下检测检查是否正确。

这个问题类似于Verify GPG file signature with Perl,但我希望在bash中做到这一点(或者如果非常需要Python。)

2 个答案:

答案 0 :(得分:6)

我不知道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

答案 1 :(得分:1)

来自GnuPG手册页:

  

如果一切正常,程序返回0,如果至少签名错误则返回1,以及致命错误的其他错误代码。

因此,您可以使用http://docs.python.org/library/subprocess.html获取gpg的返回码。