1

我正在开发一个项目来实现传出消息的数字签名,并决定为此使用 M2Crypto。

我有一个证书(DER 格式),我从中提取密钥来签署消息。出于某种原因,当我调用“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()

在此先感谢您的帮助,

巴勃罗

4

2 回答 2

2

一件明显的事情让我感到震惊:您说您的证书是 DER 格式,但您传递format=0load_cert()是 PEM 格式。请参阅X509 模块变量。不过,也许不是导致您的问题的原因(如果您混合使用证书类型,我希望您会得到一个例外)。

更新经过深思熟虑,我认为您在这里尝试做错事,这就是它崩溃的原因(尽管它当然不应该崩溃而是引发异常)。您不能使用证书中的公钥对消息进行签名。这就像进行数字伪造一样。

这样想吧。您收到我的证书,其中包含我的公钥。您可以使用公钥加密给我的消息。只有我能够使用我的私钥解密。您可以使用您的私钥对消息进行签名,我可以使用您的公钥来验证您的签名。

于 2010-03-08T23:48:39.880 回答
0

没有私钥文件,这就是它崩溃的原因,我无法对其进行签名。

于 2010-03-10T16:23:07.483 回答