Я использую библиотеку python-gpg для расшифровки / шифрования. Проверка при дешифровании почты работает нормально, но я также пытаюсь проверить, какой ключ использовался для создания подписи PGP, например, когда письмо не было зашифровано, а только подписано.
Есть ли способ получить отпечаток пальца или key_id из строки подписи gpg с помощью библиотеки python-gpg? Спасибо !






Да, есть. Если вы попытаетесь проверить подпись для ключа, которого нет в вашем ящике для ключей, в указанном ящике для ключей или связке ключей, возникнет ошибка BadSignatures, как и в настоящее время с правильно реализованными MUA. Это сообщение об ошибке также вернет полный идентификатор ключа (т. Е. Отпечаток пальца) ключа или подключа, на котором была сделана подпись. Эта функция такая же, как и для проверки подписи, как и обычно, но таким же образом, чтобы улавливать любые ошибки 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)
Если возникает ошибка, выводом будет полный идентификатор ключа, за которым следует «: нет открытого ключа» и без трассировки.
Это также рассматривается в документация.