如何从python中的gpg签名获取指纹或key_id?

时间:2018-06-24 14:32:44

标签: python signature gnupg

我正在使用phyton-gpg库进行解密/加密。解密邮件时进行验证可以很好地工作,但是我还试图检查使用了哪个密钥来创建PGP签名,例如,当邮件未加密而只是签名时。

有没有一种方法可以使用python-gpg lib从gpg签名字符串中获取指纹或key_id?谢谢!

1 个答案:

答案 0 :(得分:0)

是的,有。如果您尝试验证不在您的密钥箱或指定的密钥箱或密钥环中的密钥的签名,则会出现BadSignatures错误,就像当前正确实现MUA时一样。该错误消息还将返回进行签名的密钥或子密钥的完整密钥ID(即指纹)。该功能与您通常使用的验证签名的功能相同,但是在发生任何BadSignatures错误的情况下,都会以这种方式捕获它们。

用于验证detatched signaturesnormal signatures or clearsigned messages的示例脚本都演示了如何完成此操作。如果邮件使用PGP / MIME(应使用),则应使用分离的签名验证方法,否则应使用其他方法。

分离签名验证示例中处理此错误数据的部分代码是:

import gpg

c = gpg.Context()

try:
    data, result = c.verify(open(filename), open(sig_file))
except gpg.errors.BadSignatures as e:
    print(e)

如果引发错误,则输出将是完整的密钥ID,后跟“:no public key”并且没有回溯。

documentation中也对此进行了介绍。