我正在研究一个项目,以实施传出消息的数字签名,并决定使用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()

在此先感谢您的帮助,

巴勃罗

有帮助吗?

解决方案

一件明显的事情向我跳下来:您说您的证书是Der格式,但您正在通过 format=0load_cert() 这意味着PEM。看 X509模块变量. 。不过,也许不是造成您的问题的原因(我希望您将证书类型混合使用)。

更新 经过一些想法,我认为您正在尝试在这里做错事,这就是为什么它崩溃的原因(尽管当然不应该崩溃,而是会引起例外)。您无法使用证书中的公共密钥签署消息。这就像进行数字伪造一样。

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

其他提示

没有私钥文件,那就是为什么它崩溃了,我无法签名。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top