Как получить отпечаток пальца или key_id из подписи gpg в Python?

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
807
1

Ответы 1

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

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

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

Другие вопросы по теме