authentik.providers.saml.utils.encoding
Wrappers to de/encode and de/inflate strings
1"""Wrappers to de/encode and de/inflate strings""" 2 3import base64 4import zlib 5from ssl import PEM_FOOTER, PEM_HEADER 6 7 8def decode_base64_and_inflate(encoded: str, encoding="utf-8") -> str: 9 """Base64 decode and ZLib decompress b64string""" 10 decoded_data = base64.b64decode(encoded) 11 try: 12 return zlib.decompress(decoded_data, -15).decode(encoding) 13 except zlib.error: 14 return decoded_data.decode(encoding) 15 16 17def deflate_and_base64_encode(inflated: str, encoding="utf-8"): 18 """Base64 and ZLib Compress b64string""" 19 zlibbed_str = zlib.compress(inflated.encode()) 20 compressed_string = zlibbed_str[2:-4] 21 return base64.b64encode(compressed_string).decode(encoding) 22 23 24def nice64(src: str) -> str: 25 """Returns src base64-encoded and formatted nicely for our XML.""" 26 return base64.b64encode(src.encode()).decode("utf-8").replace("\n", "") 27 28 29def strip_pem_header(cert: str) -> str: 30 """Remove PEM Headers""" 31 return cert.replace(PEM_HEADER, "").replace(PEM_FOOTER, "").replace("\n", "")
def
decode_base64_and_inflate(encoded: str, encoding='utf-8') -> str:
9def decode_base64_and_inflate(encoded: str, encoding="utf-8") -> str: 10 """Base64 decode and ZLib decompress b64string""" 11 decoded_data = base64.b64decode(encoded) 12 try: 13 return zlib.decompress(decoded_data, -15).decode(encoding) 14 except zlib.error: 15 return decoded_data.decode(encoding)
Base64 decode and ZLib decompress b64string
def
deflate_and_base64_encode(inflated: str, encoding='utf-8'):
18def deflate_and_base64_encode(inflated: str, encoding="utf-8"): 19 """Base64 and ZLib Compress b64string""" 20 zlibbed_str = zlib.compress(inflated.encode()) 21 compressed_string = zlibbed_str[2:-4] 22 return base64.b64encode(compressed_string).decode(encoding)
Base64 and ZLib Compress b64string
def
nice64(src: str) -> str:
25def nice64(src: str) -> str: 26 """Returns src base64-encoded and formatted nicely for our XML.""" 27 return base64.b64encode(src.encode()).decode("utf-8").replace("\n", "")
Returns src base64-encoded and formatted nicely for our XML.
def
strip_pem_header(cert: str) -> str:
30def strip_pem_header(cert: str) -> str: 31 """Remove PEM Headers""" 32 return cert.replace(PEM_HEADER, "").replace(PEM_FOOTER, "").replace("\n", "")
Remove PEM Headers