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