背景信息:我的目录中充满了文件和分离的.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] 删除。
我来说两句