diff --git a/passbook/providers/saml/processors/base.py b/passbook/providers/saml/processors/base.py index b3361234d..cacef4c5b 100644 --- a/passbook/providers/saml/processors/base.py +++ b/passbook/providers/saml/processors/base.py @@ -144,7 +144,7 @@ class Processor: def _decode_and_parse_request(self): """Parses various parameters from _request_xml into _request_params.""" - decoded_xml = decode_base64_and_inflate(self._saml_request).decode("utf-8") + decoded_xml = decode_base64_and_inflate(self._saml_request) root = ElementTree.fromstring(decoded_xml) diff --git a/passbook/providers/saml/utils/encoding.py b/passbook/providers/saml/utils/encoding.py index 9fe6b662a..9aac5246a 100644 --- a/passbook/providers/saml/utils/encoding.py +++ b/passbook/providers/saml/utils/encoding.py @@ -3,20 +3,20 @@ import base64 import zlib -def decode_base64_and_inflate(b64string): +def decode_base64_and_inflate(encoded: str, encoding="utf-8") -> str: """Base64 decode and ZLib decompress b64string""" - decoded_data = base64.b64decode(b64string) + decoded_data = base64.b64decode(encoded) try: - return zlib.decompress(decoded_data, -15) + return zlib.decompress(decoded_data, -15).decode(encoding) except zlib.error: - return decoded_data + return decoded_data.decode(encoding) -def deflate_and_base64_encode(string_val): +def deflate_and_base64_encode(inflated: bytes, encoding="utf-8"): """Base64 and ZLib Compress b64string""" - zlibbed_str = zlib.compress(string_val) + zlibbed_str = zlib.compress(inflated) compressed_string = zlibbed_str[2:-4] - return base64.b64encode(compressed_string) + return base64.b64encode(compressed_string).decode(encoding) def nice64(src):