与M2Crypto验证签名消息的自签名证书

问题描述:

我试图复制与M2Crypto这个OpenSSL的命令与M2Crypto验证签名消息的自签名证书

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)