initial commit
This commit is contained in:
44
wallet_api/utils.py
Normal file
44
wallet_api/utils.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import bcrypt
|
||||
import base64
|
||||
import hashlib
|
||||
import json
|
||||
from cryptography.fernet import Fernet
|
||||
from .models import MasterHash
|
||||
from django.http import JsonResponse
|
||||
|
||||
# Salva l'hash della master password
|
||||
def save_master_hash(hash):
|
||||
MasterHash.objects.create(
|
||||
hash=hash,
|
||||
)
|
||||
|
||||
# Carica l'hash della master password
|
||||
def load_master_hash():
|
||||
try:
|
||||
entry = MasterHash.objects.get(id="1")
|
||||
return entry.hash
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
# Autenticazione della master password
|
||||
def authenticate(master_password):
|
||||
master_hash = load_master_hash()
|
||||
if master_hash is None:
|
||||
hashed_password = bcrypt.hashpw(master_password.encode(), bcrypt.gensalt())
|
||||
save_master_hash(hashed_password)
|
||||
return True
|
||||
|
||||
auth_success = bcrypt.checkpw(master_password.encode(), master_hash.tobytes())
|
||||
return auth_success
|
||||
|
||||
def derive_key(master_password):
|
||||
hash = hashlib.sha256(master_password.encode()).digest()
|
||||
return base64.urlsafe_b64encode(hash)
|
||||
|
||||
def encrypt_password(password, key):
|
||||
cipher = Fernet(key)
|
||||
return cipher.encrypt(password.encode()).decode()
|
||||
|
||||
def decrypt_password(encrypted_password, key):
|
||||
cipher = Fernet(key)
|
||||
return cipher.decrypt(encrypted_password.encode()).decode()
|
||||
Reference in New Issue
Block a user