如何在Python中使用M2Crypto重新创建以下签名命令行OpenSSL调用?

如何在Python中使用M2Crypto重新创建以下签名命令行OpenSSL调用?,python,openssl,x509,m2crypto,Python,Openssl,X509,M2crypto,这在命令行中非常有效,我希望在Python代码中使用M2Crypto也能做到这一点 openssl smime -binary -sign -signer certificate.pem -inkey key.pem \ -in some_file.txt -out signed_file -outform DER \ -passin pass:somepassword 这就是我使用M2Crypto对文件进行签名的

这在命令行中非常有效,我希望在Python代码中使用M2Crypto也能做到这一点

openssl smime -binary -sign -signer certificate.pem -inkey key.pem \
                    -in some_file.txt -out signed_file -outform DER \
                    -passin pass:somepassword

这就是我使用M2Crypto对文件进行签名的方式

text = open('/path/to/some_file.txt').read()
passphrase = 'somepassword'
buffer = M2Crypto.BIO.MemoryBuffer(text)
signer = M2Crypto.SMIME.SMIME()
signer.load_key('/path/to/key.pem', '/path/to/certificate.pem', lambda x: passphrase)
p7 = signer.sign(buffer, flags=M2Crypto.SMIME.PKCS7_DETACHED)
out = M2Crypto.BIO.MemoryBuffer()
p7.write_der(out)
signature = out.getvalue()
print signature

这对我很有效。如果您的签名不符合您的要求,您可能需要在签名者中使用标志。如果您的签名不符合您的要求,请签名。

您的意思是在python中调用此命令?也许此站点应该帮助您,我的意思是使用M2Crypto以编程方式执行与此cmd行相同的操作。(我知道我可以在Python中使用“call()”,但这不是我想要做的。此链接非常有用,谢谢,但是不清楚如何以DER格式保存输出文件(仅适用于PEM格式的SMIME消息示例)