17 lines
789 B
Python
17 lines
789 B
Python
|
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)
|