首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyopenssl验证文件签名

Pyopenssl验证文件签名
EN

Stack Overflow用户
提问于 2016-06-30 20:28:28
回答 1查看 3.5K关注 0票数 2

我想使用pyopenssl验证下载文件的签名和证书,但文档不清楚,Google也无能为力。

我在用户的机器上有一个根CA证书,现在当用户下载文件时,我将发送证书和签名。首先我需要在机器上用rootCA验证证书,然后我需要用文件验证签名

在openssl中,我可以使用以下命令来验证ca证书

代码语言:javascript
复制
openssl verify -CAfile <root_pem> <cert_pem>

并按照以下步骤验证文件

代码语言:javascript
复制
openssl dgst <algo> -verify <cert_pub_key> -signature <signature> <file>

我正在寻找使用python的等效方法,最好是pyopenssl

EN

回答 1

Stack Overflow用户

发布于 2016-12-08 23:46:16

我还在学习OpenSSL的一般知识,更不用说PyOpenSSL了。话虽如此,我还是能够用以下命令验证PyOpenSSL中的一个文件(您的第二个命令):

代码语言:javascript
复制
from OpenSSL.crypto import load_publickey, FILETYPE_PEM, verify, X509

with open(file_to_verify, 'rb') as f:
    file_data = f.read()

with open(signature_filename, 'rb') as f:
    signature = f.read()

with open(public_key_filename) as f:
    public_key_data = f.read()

# load in the publickey file, in my case, I had a .pem file.
# If the file starts with
#     "-----BEGIN PUBLIC KEY-----"
# then it is of the PEM type. The only other FILETYPE is
# "FILETYPE_ASN1".
pkey = load_publickey(FILETYPE_PEM, public_key_data)

# the verify() function expects that the public key is
# wrapped in an X.509 certificate
x509 = X509()
x509.set_pubkey(pkey)

# perform the actual verification. We need the X509 object,
# the signature to verify, the file to verify, and the
# algorithm used when signing.
verify(x509, signature, file_data, 'sha256')

如果验证成功(即,它什么也不做),verify()函数将返回None,或者如果出现问题,它将引发异常。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38123106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档