3

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

pyOpenSSL 検証のユニットテストを参照した以前の SO の質問を見ました。

編集:私が使用しているpyOpenSSLのバージョンがpyOpenSSL-0.14-py3.4であることを忘れていました。

4

1 に答える 1

1

どうやらこれは 0.14 のバグで、0.15 で修正される予定です。

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

于 2015-03-02T19:41:36.317 に答える