cvm-attestation/src/Encoder.py (30 lines of code) (raw):

# Encoder.py # # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. from base64 import urlsafe_b64encode, b64decode, b64encode class Encoder: @staticmethod def base64url_encode(data): """ Encode data bytes to base64url Parameters: data (bytes): The data to encode. Returns: str: The base64url encoded string. """ return str(urlsafe_b64encode(data).rstrip(b'='), "utf-8") @staticmethod def base64url_encode_string(data): """ Encode string to base64url Parameters: data (str): The data to encode. Returns: str: The base64url encoded string. """ bytes_to_encode = data.encode('utf-8') base64_bytes = b64encode(bytes_to_encode) base64url_bytes = base64_bytes.replace(b'+', b'-').replace(b'/', b'_') return base64url_bytes.decode('utf-8').rstrip('=') @staticmethod def base64_encode(data): """ Encode data bytes to base64 Parameters: data (bytes): The data to encode. Returns: str: The base64 encoded string. """ return str(b64encode(data), "utf-8") @staticmethod def base64_encode_string(data): """ Encode string to base64url Parameters: data (str): The data to encode. Returns: str: The base64 encoded string. """ bytes_to_encode = data.encode('utf-8') base64_bytes = b64encode(bytes_to_encode) return base64_bytes.decode('utf-8') @staticmethod def base64decode(data): """ Decode base64 encoded data string to decoded string Parameters: data (str): The base64 encoded data to be decoded. Returns: str: The data decoded string. """ data_bytes = bytes(data, 'utf-8') base64_bytes = b64decode(data_bytes) return base64_bytes @staticmethod def base64url_decode(data): """ Decode base64url encoded data string to bytes Parameters: data (str): The base64url encoded data to be decoded. Returns: bytes: The decoded data bytes. """ data = data.replace('-', '+').replace('_', '/') padding = 4 - (len(data) % 4) if (len(data) % 4) else 0 data += "=" * padding return b64decode(data)