【问题标题】:bash script checking if GPG signature is valid and belongs to a keybash 脚本检查 GPG 签名是否有效并且属于密钥
【发布时间】:2011-04-05 10:00:53
【问题描述】:

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

【问题讨论】:

    标签: python bash gnupg


    【解决方案1】:

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

    【讨论】:

    • 不就是和gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz &amp;&amp; echo All is well || echo Problem with signature一样吗?或者如果:if gpg --no-default-keyring --keyring /etc/pubring.gpg --verify file.tgz.sig file.tgz; then echo All is well ; else echo Problem with signature ; fi
    【解决方案2】:

    来自 GnuPG 手册页:

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

    所以你可以使用http://docs.python.org/library/subprocess.html获取gpg的返回码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      相关资源
      最近更新 更多