我认为自从这个 问题 后,pyOpenSSL已经开始支持签名验证(截至pyOpenSSL 0.11)。
我正在处理一个由其他人使用M2Crypto开始的项目。 M2Crypto很难包含在诸如Heroku之类的平台上,因为它需要使用SWIG。因此,我试图删除对M2Crypto的依赖,并使用可以通过Pip轻松安装的pyOpenSSL来替换它,而且也不需要像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功能的能力,并且我是否正在正确地处理它?