Как получить отпечаток пальца или key_id из подписи gpg в python? - PullRequest
0 голосов
/ 24 июня 2018

Я использую библиотеку phyton-gpg для расшифровки / шифрования. Проверка правильности при расшифровке почты работает нормально, но я также пытаюсь проверить, какой ключ использовался для создания подписи PGP, например, когда почта не была зашифрована, только подписана.

Есть ли способ получить отпечаток пальца или key_id из строки подписи gpg, используя библиотеку python-gpg? Спасибо!

1 Ответ

0 голосов
/ 13 августа 2018

Да, есть.Если вы попытаетесь проверить подпись для ключа, которого нет в вашем ящике для ключей или указанном ящике для ключей или связке ключей, возникнет ошибка 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)

Если возникла ошибка, выводом будет полный идентификатор ключа, за которым следует «: нет открытого ключа» и обратного отслеживания.

Это также рассматривается в документация .

...