python如何在不创建文件的情况下使用openssl验证?

How to use openssl to verify without creating files in python?

我正在使用 OpenSSL 进行验证。

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

我需要做的是,如果我知道sign_file和origin_file的内容,我如何在不创建文件的情况下进行python中的验证工作?

你试过了吗pyopenssl

OpenSSL.crypto.verify(certificate, signature, data, digest)

我找到了问题的解决方案:How do you verify an RSA SHA1 signature in 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