Files
pynkode/src/session_cache.py

32 lines
1.2 KiB
Python

from uuid import UUID
from pydantic import BaseModel
class SessionCache(BaseModel):
session_id: UUID
set_interface: list[int] | None = None
confirm_interface: list[int] | None = None
set_key_entry: list[int] | None = None
confirm_key_entry: list[int] | None = None
username: str | None = None
customer_id: UUID
def deduce_passcode(self, attrs_per_key, confirm_key_entry: list[int]) -> list[int]:
set_key_entry = self.set_key_entry
assert (len(set_key_entry) == len(confirm_key_entry))
set_interface = self.set_interface
confirm_interface = self.confirm_interface
set_key_vals = [set_interface[key * attrs_per_key:(key + 1) * attrs_per_key] for key in set_key_entry]
confirm_key_vals = [confirm_interface[key * attrs_per_key:(key + 1) * attrs_per_key] for key in
confirm_key_entry]
passcode = []
for idx in range(len(set_key_entry)):
set_key = set(set_key_vals[idx])
confirm_key = set(confirm_key_vals[idx])
intersection = list(set_key.intersection(confirm_key))
assert (len(intersection) == 1)
passcode.append(intersection[0])
return passcode