我正在开发一个项目来实现传出消息的数字签名,并决定为此使用 M2Crypto。
我有一个证书(DER 格式),我可以从中提取 key 来签署消息。由于某种原因,当我调用“sign_update”方法时,我不断收到丑陋的段错误错误。
鉴于我之前在这里阅读过的示例,我显然遗漏了一些东西。
这是我正在处理的示例:
from M2Crypto.X509 import *
cert = load_cert( 'certificate.cer', format=1 )
Pub_key = cert.get_pubkey()
Pub_key.reset_context(md='sha1')
Pub_key.sign_init()
Pub_key.sign_update( "This should be good." )
print Pub_key.sign_final()
预先感谢您的帮助,
巴勃罗
最佳答案
一个明显的事情让我震惊:你说你的证书是 DER 格式,但你将 format=0
传递给 load_cert()
这意味着 PEM。请参阅X509 module variables 。不过,也许不是导致您问题的原因(我希望如果您混合证书类型,您会得到一个异常(exception))。
更新 经过更多思考,我认为您试图在这里做错误的事情,这就是它崩溃的原因(尽管它当然不应该崩溃但会引发异常)。您无法使用证书中的公钥对消息进行签名。这就像进行数字伪造一样。
这样想吧。您会收到我的证书,其中包含我的公钥。您可以使用公钥来加密发给我的消息。只有我才能使用我的私钥解密。您可以使用您的私钥对消息进行签名,我可以使用您的公钥来验证您的签名。
关于python - 如何使用 DER 格式证书中的 key 通过 M2Crypto 对消息进行数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2401397/