python - 如何使用 DER 格式证书中的 key 通过 M2Crypto 对消息进行数字签名

标签 python digital-signature digital-certificate m2crypto

我正在开发一个项目来实现传出消息的数字签名,并决定为此使用 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/

相关文章:

c# - iTextSharp 签署在 MemoryStream 中创建的 PDF

android - Android P 上的 ECDSA 数字签名验证

python - Pygame 按钮单击

android - 签名在自定义 ListView 中不起作用

python - 如何使用 sudo 运行 jupyterhub。错误: commad not found

internet-explorer - 如何强制ie要求数字证书

java - Spring Framework/Spring Security 中基于表单和基于证书的身份验证

java - 将证书链保存在 pkcs12 keystore 中

python - 在 OS-X Mavericks 上安装了 OpenCV 但未链接错误消息

python - 将 sklearn 管道和交叉验证与二进制列相结合