После некоторых таращение глаза я нашел некоторые обычные ответы для этого вопроса, как:
Как загрузить ключ RSA из файла PEM и использовать его в python-crypto
некоторый код:
x509 = X509.load_cert_string(certificate)
pubkey = x509.get_pubkey()
pubkey.reset_context(md=sha1)
pubkey.verify_init()
pubkey.verify_update(content)
decoded_signature = signature.decode('base64')
if pubkey.verify_final(decoded_signature)==0:
print 'error'
sys.exit(1)
и код, представленный выше, хорошо работает в M2Crypto 0.20. Но я должен сделать точно, то же думает с помощью M2Crypto 0.16 (официальный пакет в RHEL5), и у меня есть проблемы с помощью pubkey.verify_final метода, потому что в этой конкретной версии параметр подписи не существует. Таким образом, как я могу сделать это? использование M2Crypto 0.16 Спасибо.
К счастью для вас, нужная вам функция OpenSSL доступна в M2Crypto 0.16, это просто метод Python, который не предоставляет дополнительный аргумент, который вам нужен. Это легко обойти. Там, где вы должны вызвать pubkey.verify_final (decoded_signature)
, вызовите pubkey_verify_final (pubkey, decoded_signature)
, который вы определите в своем коде как:
from M2Crypto import m2
def pubkey_verify_final(pubkey, decoded_signature):
return m2.verify_final(pubkey.ctx, decoded_signature, pubkey.pkey)
(обратите внимание, на самом деле я не делал проверьте это, просто сравнив источник между 0,16 и 0,20.)