Determinando quem GPG assinou um arquivo por meio de programação

5

Eu quero determinar programaticamente quem assinou um arquivo de sinal claro GPG. Executar gpg --verify me dirá isso, mas em um formato legível por humanos. É possível obter esse resultado em um formato legível por máquina?

Eu não estou procurando por métodos para analisar o formato legível, pois ele pode mudar em futuras versões do GPG. Eu preciso de uma solução robusta.

    
por jornane 19.05.2014 / 20:26

1 resposta

11

Para isso, o GnuPG tem o formato --status-fd legível por máquina:

^ 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

O formato de saída está documentado em doc / DETALHES . (As mensagens são misturadas com as que podem ser lidas por humanos porque eu apontei gpg para fd # 1, também conhecido como stdout. Um programa poderia facilmente usar dois fds separados para essa finalidade, por exemplo, usando pipe() .)

    
por 19.05.2014 / 20:31