aboutsummaryrefslogtreecommitdiffstats
path: root/src/cryptography/hazmat/bindings/openssl/binding.py
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2016-03-07 21:41:34 -0400
committerPaul Kehrer <paul.l.kehrer@gmail.com>2016-03-07 21:41:34 -0400
commit290272717c6d5fbdf074e72b9a444f7862c75f76 (patch)
treec50ef7bf2f85de89cf8ae3e15fd7159cc651cd36 /src/cryptography/hazmat/bindings/openssl/binding.py
parentb6e1f6f23f02dd9534688c5ca88b511894b90faa (diff)
downloadcryptography-290272717c6d5fbdf074e72b9a444f7862c75f76.tar.gz
cryptography-290272717c6d5fbdf074e72b9a444f7862c75f76.tar.bz2
cryptography-290272717c6d5fbdf074e72b9a444f7862c75f76.zip
improve the messages from openssl InternalError
Diffstat (limited to 'src/cryptography/hazmat/bindings/openssl/binding.py')
-rw-r--r--src/cryptography/hazmat/bindings/openssl/binding.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/cryptography/hazmat/bindings/openssl/binding.py b/src/cryptography/hazmat/bindings/openssl/binding.py
index b2215de3..d8fd74db 100644
--- a/src/cryptography/hazmat/bindings/openssl/binding.py
+++ b/src/cryptography/hazmat/bindings/openssl/binding.py
@@ -15,8 +15,9 @@ from cryptography.exceptions import InternalError
from cryptography.hazmat.bindings._openssl import ffi, lib
from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES
-_OpenSSLError = collections.namedtuple("_OpenSSLError",
- ["code", "lib", "func", "reason"])
+_OpenSSLError = collections.namedtuple(
+ "_OpenSSLError", ["code", "lib", "func", "reason", "reason_text"]
+)
def _consume_errors(lib):
@@ -29,8 +30,12 @@ def _consume_errors(lib):
err_lib = lib.ERR_GET_LIB(code)
err_func = lib.ERR_GET_FUNC(code)
err_reason = lib.ERR_GET_REASON(code)
+ err_text_reason = ffi.string(lib.ERR_error_string(code, ffi.NULL))
+
+ errors.append(
+ _OpenSSLError(code, err_lib, err_func, err_reason, err_text_reason)
+ )
- errors.append(_OpenSSLError(code, err_lib, err_func, err_reason))
return errors
@@ -38,8 +43,12 @@ def _openssl_assert(lib, ok):
if not ok:
errors = _consume_errors(lib)
raise InternalError(
- "Unknown OpenSSL error. Please file an issue at https://github.com"
- "/pyca/cryptography/issues with information on how to reproduce "
+ "Unknown OpenSSL error. This error is commonly encountered when "
+ "another library is not cleaning up the OpenSSL error stack. If "
+ "you are using cryptography with another Python library that "
+ "uses OpenSSL try disabling it before reporting a bug. Otherwise "
+ "iplease file an issue at https://github.com/pyca/cryptography/"
+ "issues with information on how to reproduce "
"this. ({0!r})".format(errors),
errors
)