使用 gpg --verify,如何以编程方式区分有效签名和来自受信任密钥的有效签名?

使用 gpg --verify,如何以编程方式区分有效签名和来自受信任密钥的有效签名?

我想编写一个运行gpg --verify来检查签名的脚本。

gpg命令对无效签名返回 1,对有效签名返回 0。但是,对于我 trustdb 中的密钥和不在我的 trustdb 中的密钥,它给出了不同的输出:

gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.

我希望gpg以这样的方式运行,将这个警告视为错误,而无需借助 grepping 输出。这可能吗?

顺便说一句:如果解决方案要求我使用 gpgme,那就没问题,但我还没有在 gpgme 的文档中找到与 trustdb 相关的任何内容。

答案1

这不是一个特别优雅的解决方案,但它可能是有用的。

check_sig(){
    local LC_ALL=C output
    output=$(gpg --verify -- "$1" 2>&1) || return 1
    ! grep -Fqx 'gpg: WARNING: This key is not certified with a trusted signature!' <<<"$output"
}

相关内容