user handling
This commit is contained in:
@@ -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}")
|
||||
Reference in New Issue
Block a user