aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2016-03-09 07:07:52 -0500
committerAlex Gaynor <alex.gaynor@gmail.com>2016-03-09 07:07:52 -0500
commit9e753d4bfd187568c99dce5de6c2bc034aae717e (patch)
tree82825f95746f1ebf5e7c545ec4a6c5442d4bb588 /src
parent7830dd2111ac968f039660dd077e9c43a0f32c56 (diff)
parent1783335b8fb5dc7be3a1214ff4825eaec318b12a (diff)
downloadcryptography-9e753d4bfd187568c99dce5de6c2bc034aae717e.tar.gz
cryptography-9e753d4bfd187568c99dce5de6c2bc034aae717e.tar.bz2
cryptography-9e753d4bfd187568c99dce5de6c2bc034aae717e.zip
Merge pull request #2774 from reaperhulk/improve-unknown-error
improve the messages from openssl InternalError
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/bindings/openssl/binding.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/cryptography/hazmat/bindings/openssl/binding.py b/src/cryptography/hazmat/bindings/openssl/binding.py
index b2215de3..5d7466f9 100644
--- a/src/cryptography/hazmat/bindings/openssl/binding.py
+++ b/src/cryptography/hazmat/bindings/openssl/binding.py
@@ -17,6 +17,9 @@ from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES
_OpenSSLError = collections.namedtuple("_OpenSSLError",
["code", "lib", "func", "reason"])
+_OpenSSLErrorWithText = collections.namedtuple(
+ "_OpenSSLErrorWithText", ["code", "lib", "func", "reason", "reason_text"]
+)
def _consume_errors(lib):
@@ -31,17 +34,33 @@ def _consume_errors(lib):
err_reason = lib.ERR_GET_REASON(code)
errors.append(_OpenSSLError(code, err_lib, err_func, err_reason))
+
return errors
def _openssl_assert(lib, ok):
if not ok:
errors = _consume_errors(lib)
+ errors_with_text = []
+ for err in errors:
+ err_text_reason = ffi.string(
+ lib.ERR_error_string(err.code, ffi.NULL)
+ )
+ errors_with_text.append(
+ _OpenSSLErrorWithText(
+ err.code, err.lib, err.func, err.reason, err_text_reason
+ )
+ )
+
raise InternalError(
- "Unknown OpenSSL error. Please file an issue at https://github.com"
- "/pyca/cryptography/issues with information on how to reproduce "
- "this. ({0!r})".format(errors),
- errors
+ "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 library that uses "
+ "OpenSSL try disabling it before reporting a bug. Otherwise "
+ "please file an issue at https://github.com/pyca/cryptography/"
+ "issues with information on how to reproduce "
+ "this. ({0!r})".format(errors_with_text),
+ errors_with_text
)