python - 使用 M2Crypto 验证签名消息以获得自签名证书

标签 python openssl m2crypto

我正在尝试使用 M2Crypto 复制此 openssl 命令

openssl smime -verify -in local_files/auth_data.pem.pk7 -inform PEM -certfile certificate.crt -noverify

我的代码如下所示:

smime = M2Crypto.SMIME.SMIME()

x509_store = M2Crypto.X509.X509_Store()
x509_store.load_info(ca_file)
smime.set_x509_store(x509_store)

x509_stack = M2Crypto.X509.X509_Stack()
x509_cert = M2Crypto.X509.load_cert(cert_file)
x509_stack.push(x509_cert)
smime.set_x509_stack(x509_stack)

p7 = M2Crypto.SMIME.load_pkcs7_bio(M2Crypto.BIO.MemoryBuffer(cipher_text))

decrypted_data = smime.verify(p7)

但我在最后一行收到此错误:

PKCS7_Error: certificate verify error

我无法让 M2Crypto 表现得像带有“-noverify”标志的 openssl。

我尝试在 X509_Store 中加载相同的证书,但结果相同。

最佳答案

我花了一段时间,但我在这个源代码中找到了答案https://pythonhosted.org/pysmime/pysmime.core-pysrc.html#verify

这是允许自签名证书的代码:

decrypted_data = smime.verify(p7, flags=M2Crypto.SMIME.PKCS7_NOVERIFY)

关于python - 使用 M2Crypto 验证签名消息以获得自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35661851/

相关文章:

python - pylint 解析器 - Jenkins 违规插件的独立替代方案

openssl - PEM例程:PEM_read_bio:错误的结束行

python - 使用 M2Crypto 创建任意 X509 扩展

python - 如何使用 DER 格式证书中的 key 通过 M2Crypto 对消息进行数字签名

python - 在 docker 容器中安装 m2crypto

python - 在 SCRAPY 中形成 XPATH 选择器

python - Scipy - 使用球面贝塞尔函数时出错

python - 如何在 CNTK Sequential 中添加两层

python - reload如何处理库文件为 `so`

node.js - 如何在 NodeJS 中使用 openssl-wrapper 生成 RSA key ?