我相信自从这个问题以来,pyOpenSSL 已经开始支持签名验证(从pyOpenSSL 0.11开始。
我正在开发一个由其他人使用M2Crypto启动的项目。M2Crypto 包含在Heroku等平台上真的很痛苦,因为它需要使用SWIG。因此,我试图删除对 M2Crypto 的依赖并替换为易于通过 Pip 安装的 pyOpenSSL,并且不需要自定义 buildpack 以及更多与 SWIG 相关的东西。
我遇到的问题是替换一些代码:
key = cert.get_pubkey() # Cert is an M2Crypto X509 object
key = key.get_rsa()
ret = key.verify(hashed, self.sig)
if ret != 1:
# Cert invalid ... etc.
理想情况下,我想通过 pyOpenSSL 实现相同的功能,但我觉得我可能搞错了——我尝试过使用:
crypto.verify(cert, self.sig, hashed, 'sha1')
但这失败了-
[('rsa routines', 'RSA_verify', 'bad signature')]
我无法确定它是否失败是因为签名实际上很糟糕,还是因为我提供的 crypto.verify 值实际上不是它应该用于的!
我一直在玩的原始代码在这里,需要大量的工作来整理,但试图在完全重构之前一次替换功能。任何指针将不胜感激!pyOpenSSL 是否有能力在这里替换 M2Crypto 功能,我是否以正确的方式进行?