我有一个加密并由GPG签名的文件。
如果解密的文件已签名,则还会验证签名。
我想做的不仅仅是验证签名是否有效“如果文件已签名” - 我想:
- 检查文件是否已签名
- 检查签名是否来自密钥环中的特定用户或用户子集
什么gpg命令可以用来做到这一点?
我有一个加密并由GPG签名的文件。
如果解密的文件已签名,则还会验证签名。
我想做的不仅仅是验证签名是否有效“如果文件已签名” - 我想:
什么gpg命令可以用来做到这一点?
Answers:
该--decrypt
选项已经完成了大部分工作。
$ gpg --decrypt <test.gpg gpg:使用4096位RSA密钥加密,ID CE7B5510340F19EF,创建于2009-10-31 “grawity <grawity@gmail.com>” WELL(或整个地球的Lectronic Link)是边境最新事物的一个例子 村庄,电脑公告板。在这样的小镇,主街是一个 中央小型机(在WELL的情况下)多达64台微型计算机 可以通过电话线和称为调制解调器的小闪烁盒一次连接。 gpg:Signature made 2015-05-15T07:52:55 EEST gpg:使用RSA密钥D24F6CB2C1B52632 gpg:来自“grawity <grawity@gmail.com>”的好签名[终极] gpg:又名“grawity <grawity@example.org>”[终极]
有关机器可读信息,您可以使用--status-fd
。
[GNUPG:] ENC_TO CE7B5510340F19EF 1 0 [GNUPG:] BEGIN_DECRYPTION [GNUPG:] DECRYPTION_INFO 2 9 [GNUPG:] PLAINTEXT 62 1431665575 [GNUPG:] NEWSIG [GNUPG:] SIG_ID 8AaWsnfpINFLIVjEqk665x7fuKA 2015-05-15 1431665575 [GNUPG:] GOODSIG D24F6CB2C1B52632 grawity <grawity@gmail.com> [GNUPG:] NOTATION_NAME issuer-fpr@notations.openpgp.fifthhorseman.net [GNUPG:] NOTATION_DATA 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 [GNUPG:] VALIDSIG 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 2015-05-15 1431665575 0 4 0 1 10 00 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 [GNUPG:] TRUST_ULTIMATE [GNUPG:] DECRYPTION_OKAY [GNUPG:] GOODMDC [GNUPG:] END_DECRYPTION
双方GOODSIG
并VALIDSIG
在此意味着签名进行检查,TRUST_*
对应于该密钥的认证级别。例如,您直接签名(或签名)的密钥将具有TRUST_FULL。
您可以将此包装在一个脚本中,该脚本将检查VALIDSIG中的指纹与密钥白名单,或者只依赖于密钥信任模型。
请注意,由于PGP使用sign-before-encrypt ,因此无法在不先解密文件的情况下检查文件是否已签名。
gpg --decrypt < data.pgp > /dev/null
这将导致以下输出:
gpg: encrypted with 4096-bit RSA key, ID B91FFCCDDEE362261A, created 2015-05-21
"Shubham Chaudhary <me@chaudhary.xyz>"
gpg: Signature made Mon Aug 21 23:13:03 2017 IST
gpg: using RSA key 71B6BEEFEED2DCA
gpg: issuer "Shubham Chaudhary <test@shubhamchaudhary.in>"
gpg: Good signature from "Shubham Chaudhary <me@chaudhary.xyz>" [ultimate]