2012-08-05 32 views
4

這可以在命令行中完美工作,我想在Python代碼中使用M2Crypto。如何在Python中使用M2Crypto重新創建以下籤署的cmd行OpenSSL調用?

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

你的意思是在Python中調用這個命令? – rcovre 2012-08-05 19:04:29

+1

也許這個網站應該可以幫助你http://svn.osafoundation.org/m2crypto/trunk/doc/howto.smime.html – rcovre 2012-08-05 19:10:11

+0

我的意思是做同樣的事情,這個cmd行可以通過程序使用M2Crypto。 (我知道我可以在Python中使用「call()」,但這不是我想要做的。 – 2012-08-05 19:43:40

回答

1

這就是我一直在使用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 

這對我很好。如果您的簽名不完全符合您的要求,您可能需要在signer.sign中玩弄旗幟。

相關問題