user handling

This commit is contained in:
2025-12-15 23:07:19 +01:00
parent f6f2d20eb8
commit b0f19eb72e
15 changed files with 573 additions and 127 deletions

View File

@@ -1,6 +1,6 @@
from os import urandom
from typing import Tuple, Optional
from cryptography.fernet import Fernet
from cryptography.fernet import Fernet, InvalidToken
from cryptography.hazmat.primitives.kdf.scrypt import Scrypt
import base64
@@ -25,17 +25,21 @@ def new_password(password: bytes) -> Tuple[bytes, bytes]:
out = f.encrypt(password)
return salt, out
def verify_password(stored_salt: bytes, stored_key: bytes, provided_password: bytes) -> bytes:
def verify_password(stored_salt: bytes, stored_key: bytes, provided_password: bytes) -> bool:
key = base64.urlsafe_b64encode(__scrypt__(stored_salt).derive(provided_password))
f = Fernet(key)
return f.decrypt(stored_key)
try:
f.decrypt(stored_key)
return True
except InvalidToken:
return False
if __name__ == "__main__":
# helper script for inserting new users
# helper script for inserting a new admin
import db_connect
username = input("Enter new username: ")
password = input("Enter new password: ").encode()
db = db_connect.DatabaseConnect()
salt, key = new_password(password)
db.create_user(username, salt, key)
db.create_user(username, salt, key, True)
print(f"Created user {username}")