Raiff1982 commited on
Commit
5c9ac41
·
verified ·
1 Parent(s): 674e685

Update modules/secure_memory.py

Browse files
Files changed (1) hide show
  1. modules/secure_memory.py +28 -36
modules/secure_memory.py CHANGED
@@ -1,41 +1,33 @@
1
- from pathlib import Path
2
-
3
- # Encrypted memory session handler template
4
- memory_isolation_code = """
5
- # secure_memory.py
6
- from cryptography.fernet import Fernet
7
- import numpy as np
8
  import base64
 
 
 
9
  class SecureMemorySession:
10
- def __init__(self, encryption_key: bytes = None):
11
- self.key = encryption_key or Fernet.generate_key()
 
 
12
  self.fernet = Fernet(self.key)
13
- self.sessions = {}
14
- def encrypt_vector(self, user_id: int, vector: np.ndarray) -> str:
15
- vector_bytes = vector.tobytes()
16
- encrypted = self.fernet.encrypt(vector_bytes)
17
- encoded = base64.b64encode(encrypted).decode('utf-8')
18
- if user_id not in self.sessions:
19
- self.sessions[user_id] = []
20
- self.sessions[user_id].append(encoded)
21
- return encoded
22
- def decrypt_vectors(self, user_id: int) -> list:
23
- if user_id not in self.sessions:
24
- return []
25
- decrypted_vectors = []
26
- for encoded in self.sessions[user_id]:
27
- encrypted = base64.b64decode(encoded)
28
- decrypted = self.fernet.decrypt(encrypted)
29
- vector = np.frombuffer(decrypted, dtype=np.int64) # adjust dtype if needed
30
- decrypted_vectors.append(vector)
31
- return decrypted_vectors
32
- def get_encryption_key(self) -> bytes:
33
- return self.key
34
- """
35
 
36
- # Save it as a Python file
37
- memory_path = Path("/mnt/data/secure_memory.py")
38
- memory_path.parent.mkdir(parents=True, exist_ok=True)
39
- memory_path.write_text(memory_isolation_code)
 
 
 
40
 
41
- memory_path
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import base64
2
+ import json
3
+ from cryptography.fernet import Fernet
4
+
5
  class SecureMemorySession:
6
+ """Handles encryption/decryption for user vectors"""
7
+
8
+ def __init__(self, key: bytes):
9
+ self.key = base64.urlsafe_b64encode(key[:32].ljust(32, b'0')) # Fernet key must be 32 bytes
10
  self.fernet = Fernet(self.key)
11
+ self.memory_store = {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ def encrypt_vector(self, user_id, vector):
14
+ """Encrypts and stores vector under user ID"""
15
+ if user_id not in self.memory_store:
16
+ self.memory_store[user_id] = []
17
+ serialized = json.dumps(vector.tolist()).encode()
18
+ encrypted = self.fernet.encrypt(serialized)
19
+ self.memory_store[user_id].append(encrypted)
20
 
21
+ def decrypt_vectors(self, user_id):
22
+ """Decrypts and returns all stored vectors for a user"""
23
+ if user_id not in self.memory_store:
24
+ return []
25
+ decrypted = []
26
+ for enc in self.memory_store[user_id]:
27
+ try:
28
+ raw = self.fernet.decrypt(enc)
29
+ array = json.loads(raw.decode())
30
+ decrypted.append(array)
31
+ except Exception:
32
+ continue
33
+ return decrypted