Source code for aeat.adapters.persistence.storage._kdf_salt
"""Shared salt codec helpers for storage KDF parameter records."""from__future__importannotationsimportbase64KDF_SALT_BYTES=16
[docs]defrequire_kdf_salt_length(value:bytes,*,error_type:type[Exception]=ValueError)->bytes:"""Return ``value`` when it has the storage KDF salt length."""iflen(value)!=KDF_SALT_BYTES:raiseerror_type(f"salt must be exactly {KDF_SALT_BYTES} bytes")returnvalue
[docs]defencode_kdf_salt(value:bytes)->str:"""Encode KDF salt bytes for JSON/TOML serialization."""returnbase64.b64encode(value).decode("ascii")
[docs]defdecode_kdf_salt(value:object,*,error_type:type[Exception]=ValueError)->bytes:"""Decode a KDF salt from bytes or its base64 string representation."""ifisinstance(value,bytes):returnvalueifisinstance(value,str):returnbase64.b64decode(value.encode("ascii"),validate=True)raiseerror_type("salt must be bytes or base64 string")