Added libs

This commit is contained in:
Lucas
2026-01-25 13:55:46 +10:00
parent 575c682afc
commit f70af3c4ea
229 changed files with 26983 additions and 0 deletions

89
lockbox/utils.py Normal file
View File

@@ -0,0 +1,89 @@
import os, sys
import keyring
import json
import base64
from libs.fspn.utils import sha256_util, aes_util, ecdh_util, ecdsa_util
from libs.app.common.paths import ROOT_DIR
def encrypt_secret(secret: dict, user_password: str) -> str:
secret = json.dumps(secret)
key = ecdh_util.generate_derived_key(user_password.encode())
nonce, ciphertext, mac = aes_util.encrypt(secret.encode(), key)
payload = {
"nonce": base64.b64encode(nonce).decode(),
"ciphertext": base64.b64encode(ciphertext).decode(),
"mac": base64.b64encode(mac).decode()
}
return json.dumps(payload)
def decrypt_secret(payload_json: str, user_password: str) -> str | None:
payload = json.loads(payload_json)
nonce = base64.b64decode(payload["nonce"])
ciphertext = base64.b64decode(payload["ciphertext"])
mac = base64.b64decode(payload["mac"])
key = ecdh_util.generate_derived_key(user_password.encode())
plaintext = aes_util.decrypt_and_verify(nonce, ciphertext, mac, key)
return json.loads(plaintext.decode())
SERVICE_NAME = "NoSys"
def save_credential_data(data, verifying_key_b64, user_password):
credential_name = get_credential_name(verifying_key_b64)
payload = encrypt_secret(data, user_password)
keyring.set_password(credential_name, verifying_key_b64, payload)
def delete_credential(verifying_key_b64):
credential_name = get_credential_name(verifying_key_b64)
keyring.delete_password(credential_name, verifying_key_b64)
def get_credential_data(verifying_key_b64, user_password):
credential_name = get_credential_name(verifying_key_b64)
payload = keyring.get_password(credential_name, verifying_key_b64)
if payload:
data = decrypt_secret(payload, user_password)
return data
return None
def credential_exists(verifying_key_b64):
credential_name = get_credential_name(verifying_key_b64)
payload = keyring.get_password(credential_name, verifying_key_b64)
if payload:
return True
return False
def get_credential_name(verifying_key_b64):
return f"{SERVICE_NAME}|{verifying_key_b64}"
import json
import os
HISTORY_FILE = os.path.join(ROOT_DIR, "libs/lockbox", "userHistory.json")
def load_history():
if os.path.exists(HISTORY_FILE):
with open(HISTORY_FILE, "r") as f:
return json.load(f)
return []
def save_history(history):
with open(HISTORY_FILE, "w") as f:
json.dump(history, f, indent=2)
def add_to_history(item):
history = load_history()
if item not in history:
history.append(item)
save_history(history)
def delete_from_history(item):
history = load_history()
if item in history:
history.remove(item)
save_history(history)
return True
return False