使用Python 3进行pyOpenSSL签名验证

时间:2015-02-26 18:00:02

标签: digital-signature python-3.4 verify pyopenssl

我正在尝试使用Python 3.4.2的pyOpenSSL来验证签名。这是我的代码。

from OpenSSL import crypto

some_byte_string = b'This is a byte string.'
crt = crypto.load_certificate(crypto.FILETYPE_PEM, pem)

# self.signature is a base64 encoded string
crypto.verify(crt, self.signature, some_byte_string, 'sha1')

这会产生以下异常:

verify_result = _lib.EVP_VerifyFinal(md_ctx, signature, len(signature), pkey)
TypeError: initializer for ctype 'unsigned char *' must be a bytes or list or tuple, not str

我也尝试过为'some_byte_string'使用常规字符串,但是当我尝试使用时会出现以下异常:

_lib.EVP_VerifyUpdate(md_ctx, data, len(data))
TypeError: initializer for ctype 'void *' must be a cdata pointer, not str

我看到之前的SO问题引用了unittest for pyOpenSSL verify,这似乎就是我正在做的事情,虽然显然出现了问题。

编辑: 忘了提到我使用的pyOpenSSL版本是pyOpenSSL-0.14-py3.4。

1 个答案:

答案 0 :(得分:1)

显然它是一个0.14的错误,将被修复为0.15。

https://github.com/pyca/pyopenssl/issues/15