Source code for dfvfs.encoding.base32_decoder

"""The base32 decoder implementation."""

import base64
import binascii

from dfvfs.encoding import decoder
from dfvfs.encoding import manager
from dfvfs.lib import definitions
from dfvfs.lib import errors


[docs] class Base32Decoder(decoder.Decoder): """Base32 decoder using base64.""" ENCODING_METHOD = definitions.ENCODING_METHOD_BASE32
[docs] def Decode(self, encoded_data): """Decode the encoded data. Args: encoded_data (byte): encoded data. Returns: tuple(bytes, bytes): decoded data and remaining encoded data. Raises: BackEndError: if the base32 stream cannot be decoded. """ try: decoded_data = base64.b32decode(encoded_data, casefold=False) except (TypeError, binascii.Error) as exception: raise errors.BackEndError( f"Unable to decode base32 stream with error: {exception!s}." ) return decoded_data, b""
manager.EncodingManager.RegisterDecoder(Base32Decoder)