Как использовать openssl для проверки без создания файлов в Python?

Я использую OpenSSL для проверки.

openssl dgst -sha256 -verify public.pem -signature sign_file origin_file

Что мне нужно сделать, так это то, что если я знаю содержимое sign_file и origin_file, как я могу выполнить проверку в python без создания файлов?


person sting_roc    schedule 06.12.2016    source источник


Ответы (2)


Вы пробовали pyopenssl?

OpenSSL.crypto.verify(certificate, signature, data, digest)
person Alexey Smirnov    schedule 06.12.2016
comment
Сертификат первого параметра - это экземпляр X509, соответствующий закрытому ключу, сгенерировавшему подпись. Как я могу сгенерировать экземпляр X509, если у меня есть только открытый ключ? - person sting_roc; 07.12.2016

Я нахожу решение по вопросу: Как вы проверяете подпись RSA SHA1 в Python?

Ниже приведена демонстрация для выполнения работы по проверке:

import base64

from M2Crypto import BIO, RSA, EVP

ori = "content of origin string"
sig = "content of signature string"

with open("./public.pem") as f:
    pem = f.read()
    bio = BIO.MemoryBuffer(pem)
    rsa = RSA.load_pub_key_bio(bio)

    pubkey = EVP.PKey()
    pubkey.assign_rsa(rsa)
    pubkey.reset_context(md="sha256")
    pubkey.verify_init()
    pubkey.verify_update(ori)
    print pubkey.verify_final(base64.b64decode(sig))  # 1 means verify OK
person sting_roc    schedule 09.12.2016