通过编程确定谁是 GPG 签名的文件

通过编程确定谁是 GPG 签名的文件

我想以编程方式确定谁签署了 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().)

相关内容