4

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

4

2 回答 2

7

我不知道该gpg命令,但它是否为“错误”和“正确”结果返回不同的退出值?运行命令后检查它的最简单方法是:

echo $?

如果一切正常,我希望它返回 0,否则返回 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
于 2011-04-05T10:12:27.127 回答
1

从 GnuPG 手册页:

如果一切正常,程序返回 0,如果至少有一个签​​名是错误的,则返回 1,而其他错误代码则表示致命错误。

所以你可以使用http://docs.python.org/library/subprocess.html来获取gpg.

于 2011-04-05T10:08:33.260 回答