我想以编程方式确定谁签署了 GPG 清除签名文件。运行gpg --verify
会告诉我这一点,但它是以人可读的格式进行的。是否可以以机器可读的格式获得此结果?
我并不是在寻找解析人类可读格式的方法,因为它可能会在未来的 GPG 版本中发生变化。我需要一个强大的解决方案。
答案1
为此,GnuPG 具有机器可读的--status-fd
格式:
^ gpg --status-fd=1 --verify test.asc
gpg: Signature made Sat 01 Feb 2014 19:37:53 EET using RSA key ID C1B52632
[GNUPG:] SIG_ID LI0kgmtHFCacIrSKM9uxpc3B2jI 2014-02-01 1391276273
[GNUPG:] GOODSIG D24F6CB2C1B52632 Mantas Mikulėnas <[email protected]>
gpg: Good signature from "Mantas Mikulėnas <[email protected]>"
gpg: aka "Mantas Mikulėnas <[email protected]>"
[GNUPG:] NOTATION_NAME [email protected]
[GNUPG:] NOTATION_DATA 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632
[GNUPG:] VALIDSIG 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 2014-02-01 1391276273 0 4 0 1 2 00 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632
[GNUPG:] TRUST_ULTIMATE
输出格式记录在文档/详细信息. (因为我指向了 fd #1,也就是 stdout,所以这些消息与人类可读的消息混杂在一起gpg
。程序可以轻松地为此目的使用两个单独的 fd,例如使用pipe()
.)