def _openssl_assert(lib, ok): if not ok: errors = _consume_errors(lib) errors_with_text = [] for err in errors: buf = ffi.new("char[]", 256) lib.ERR_error_string_n(err.code, buf, len(buf)) err_text_reason = ffi.string(buf) errors_with_text.append( _OpenSSLErrorWithText( err.code, err.lib, err.func, err.reason, err_text_reason ) ) raise InternalError( "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 )
def _errors_with_text(errors): errors_with_text = [] for err in errors: buf = ffi.new("char[]", 256) lib.ERR_error_string_n(err.code, buf, len(buf)) err_text_reason = ffi.string(buf) errors_with_text.append( _OpenSSLErrorWithText(err.code, err.lib, err.func, err.reason, err_text_reason)) return errors_with_text
def _errors_with_text( errors: typing.List[_OpenSSLError], ) -> typing.List[_OpenSSLErrorWithText]: errors_with_text = [] for err in errors: buf = ffi.new("char[]", 256) lib.ERR_error_string_n(err.code, buf, len(buf)) err_text_reason: bytes = ffi.string(buf) errors_with_text.append( _OpenSSLErrorWithText(err.code, err.lib, err.reason, err_text_reason)) return errors_with_text
def _consume_errors(lib): if not ok: errors = _consume_errors(lib) errors_with_text = [] for err in errors: buf = ffi.new("char[]", 256) lib.ERR_error_string_n(err.code, buf, len(buf)) err_text_reason = ffi.string(buf) err_text_reason = ffi.string(buf) errors_with_text.append( _OpenSSLErrorWithText(err.code, err.lib, err.func, err.reason, err_text_reason)) raise InternalError( "xxx" "xxx" "this. ({0!r})".format(errors_with_text), errors_with_text)