from hashlib import pbkdf2_hmac from os import chmod, path, urandom from typing import Union from modules.utils import configGet from fastapi.openapi.models import APIKey def saltRead(): if not path.exists(path.join(configGet("data", "locations"), "salt")): with open(path.join(configGet("data", "locations"), "salt"), "wb") as file: file.write(urandom(32)) chmod(path.join(configGet("data", "locations"), "salt"), mode=0o600) with open(path.join(configGet("data", "locations"), "salt"), "rb") as file: contents = file.read() return contents def passEncode(password: Union[str, APIKey, None]) -> Union[bytes, None]: return None if password is None else pbkdf2_hmac("sha256", str(password).encode("utf-8"), saltRead(), 96800, dklen=128)