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



我正在使用python-gpg库来解密/加密。解密邮件时的验证工作正常,但我也在尝试检查哪个密钥用于创建 PGP 签名,例如,当邮件未加密,只是签名时。

有没有办法使用 python-gpg 库从 gpg 签名字符串中获取指纹或key_id?谢谢!

是的,有。 如果尝试验证不在密钥框或指定密钥框或密钥环中的密钥的签名,则会引发BadSignatures错误,就像正确实现的 MUA 当前发生的那样。 该错误消息还将返回进行签名的密钥或子密钥的完整密钥 ID(即指纹(。 该函数与验证签名的功能相同,但以捕获任何BadSignatures错误的方式(如果引发错误(。

用于验证已删除签名和普通签名或明文签名消息的示例脚本都演示了如何完成此操作。 如果邮件使用 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,后跟":无公钥"和无回溯。

文档中也介绍了这一点。

最新更新