如何针对特定的公钥验证gpg签名的文件?

招标人麦基肯

背景信息:我的目录中充满了文件和分离的.asc签名。我也有我的默认密钥环,其中包括许多人的公共密钥(我信任的一些人,而我不信任的一些人)。

如果我验证目录中的所有文件,gpg将为每个文件输出类似于以下内容的内容

Signature made XXX using RSA key ID XXXX
Good signature from SIGNER

我的问题源于需要检查每个文件的这些行,以确保签名者是我期望的签名者。我想做的是限制公用密钥gpg可以用来验证文件。

问题:是否可以将gpg配置为仅使用一个公钥来验证文件?

一种解决方案是每次需要验证文件时都使用一个新的临时密钥环(只有一个密钥)。但是,如果我需要执行多次以上,此解决方案很快就会变得乏味。

用户名

使用通过“ status-fd”提供的信息:

$ cat message.txt | gpg --verify --status-fd = 1 
[GNUPG:] NEWSIG 
gpg:签名进行了2019-12-18T15:06:03 EET 
gpg:使用RSA密钥2357E10CEF ... 
[GNUPG:] KEY_CONSIDERED 2357Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2632 0 
[GNUPG:] SIG_ID XZf34rp0ZuF0AqxbAkJhqrEV / Og 2019-12-18 1576674363 
[GNUPG:] KEY_CONSIDERED 2357Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2632 0 
[GNUPG:] GOODSIG xxxxxxxxxxxx263263 Fred Foobar <[email protected]>
从[[email protected]>“ [[email protected]>” gpg:良好签名] [GNUPG:] VALIDSIG 2357Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2632 2019-12-18 1576674363 0 4 0 1 10 00 2357Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2632 
[GNUPG:] KEY_CONSIDERED 2357Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2632 0

[GNUPG:] TRUST_ULTIMATE 0 pgp 
[GNUPG:] VERIFICATION_COMPLIANCE_MODE 23

因此,如果要确保它由特定密钥签名,则可以使用:

verify_with() {
    local fingerprint=$1
    local file=$2
    local status

    fingerprint=$(echo "$fingerprint" | tr a-z A-Z | tr -dc A-Z)

    status=$(gpg --status-fd=4 --trust-model=always verify "$file" 4>&1 >/dev/null 2>&1)

    if grep -qs "^\\[GNUPG:\\] VALIDSIG $fingerprint " <<< "$status"; then
        return 0
    else
        return 1
    fi
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章