У меня проблема с проверкой подписи с помощью модуля Python gnupg
.С помощью этого модуля я могу зашифровать и подписать файл:
gpg.encrypt_file(stream, encrypt_for, sign=sign_by, passphrase=key_passwd, output=file_out)
Такой зашифрованный файл можно расшифровать с помощью командной строки gpg
, вывод:
gpg: encrypted with 2048-bit ELG-E key, ID 518CD1AD, created 2011-04-14
"client"
gpg: Signature made 04/14/11 13:36:14 using DSA key ID C7C006DD
gpg: Good signature from "server"
Может быть расшифрован Python *Модуль 1009 * тоже, выходной файл имеет расшифрованный контент, но я не могу проверить подпись.Код, который расшифровывает и проверяет:
def decrypt_file(file_in, file_out, key_passwd):
gpg = gnupg.GPG()
f = open(file_in, "rb")
data = f.read()
f.close()
gpg.decrypt(data, passphrase=key_passwd, output=file_out)
verified = gpg.verify(data)
if not verified:
raise ValueError("Signature could not be verified!")
Исключение, которое я получил:
decrypting file...
Exception in thread Thread-12:
Traceback (most recent call last):
File "c:\Python26\lib\threading.py", line 534, in __bootstrap_inner
self.run()
File "c:\Python26\lib\threading.py", line 486, in run
self.__target(*self.__args, **self.__kwargs)
File "c:\Python26\lib\site-packages\gnupg.py", line 202, in _read_response
result.handle_status(keyword, value)
File "c:\Python26\lib\site-packages\gnupg.py", line 731, in handle_status
raise ValueError("Unknown status message: %r" % key)
ValueError: Unknown status message: u'UNEXPECTED'
Traceback (most recent call last):
File "ht_gnupg.py", line 32, in <module>
test()
File "ht_gnupg.py", line 27, in test
decrypt_file('test_p.enc', 'test_p.txt', 'client')
File "ht_gnupg.py", line 18, in decrypt_file
raise ValueError("Signature could not be verified!")
ValueError: Signature could not be verified!
Я использую gnupg-0.2.7
из python-gnupg-0.2.7.win32.exe
с ActiveStatus Python 2.6.
Я такжепробовал gpg.verify_file()
но я получил ту же ошибку.Файл защищен ASCII и выглядит так:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.9 (MingW32)
hQIOA0EAndRRjNGtEAf/YxMQaFMnBwT3Per6ypoMYaO1AKQikRgJJMJ90a/EoZ44
...
=G6Ai
-----END PGP MESSAGE-----
Как проверить подпись, как в командной строке gpg
?