codriao / modules /secure_memory.py
Raiff1982's picture
Update modules/secure_memory.py
5c9ac41 verified
raw
history blame
1.19 kB
import base64
import json
from cryptography.fernet import Fernet
class SecureMemorySession:
"""Handles encryption/decryption for user vectors"""
def __init__(self, key: bytes):
self.key = base64.urlsafe_b64encode(key[:32].ljust(32, b'0')) # Fernet key must be 32 bytes
self.fernet = Fernet(self.key)
self.memory_store = {}
def encrypt_vector(self, user_id, vector):
"""Encrypts and stores vector under user ID"""
if user_id not in self.memory_store:
self.memory_store[user_id] = []
serialized = json.dumps(vector.tolist()).encode()
encrypted = self.fernet.encrypt(serialized)
self.memory_store[user_id].append(encrypted)
def decrypt_vectors(self, user_id):
"""Decrypts and returns all stored vectors for a user"""
if user_id not in self.memory_store:
return []
decrypted = []
for enc in self.memory_store[user_id]:
try:
raw = self.fernet.decrypt(enc)
array = json.loads(raw.decode())
decrypted.append(array)
except Exception:
continue
return decrypted