implement customer interface
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
import secrets
|
||||
|
||||
from pydantic import BaseModel
|
||||
from src.utils import (
|
||||
generate_random_list, generate_random_matrix, xor_lists,
|
||||
random_number_in_range
|
||||
)
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class UserEncipherKeys(BaseModel):
|
||||
@@ -14,11 +12,11 @@ class UserEncipherKeys(BaseModel):
|
||||
mask_key: list[int]
|
||||
|
||||
@staticmethod
|
||||
def new_user_encipher_keys(height: int, width: int, nkode_set_values: list[int]):
|
||||
assert len(nkode_set_values) == width
|
||||
def new_user_encipher_keys(height: int, width: int, set_values: list[int]):
|
||||
assert len(set_values) == width
|
||||
|
||||
set_key = generate_random_list(width)
|
||||
set_key = xor_lists(set_key, nkode_set_values)
|
||||
set_key = xor_lists(set_key, set_values)
|
||||
|
||||
return UserEncipherKeys(
|
||||
alpha_key=generate_random_matrix(width, height),
|
||||
@@ -33,14 +31,19 @@ class CustomerAttribute(BaseModel):
|
||||
set_val: int
|
||||
|
||||
|
||||
class Customer(BaseModel):
|
||||
base_interface: dict[
|
||||
list[CustomerAttribute]] # { set0: [(val0, set0) ... (valN, set0)], ... setM: [(val0, setM) ... (valN, setM)]}
|
||||
class CustomerInterface(BaseModel):
|
||||
# base_interface: { set0: [attr0 ... attrN], ... setM: [(val0, setM) ... (valN, setM)]}
|
||||
base_interface: dict[int, CustomerAttribute]
|
||||
|
||||
def __init__(self, **data):
|
||||
super().__init__(**data)
|
||||
self._set_index_lookup: dict[int, int] = {}
|
||||
self._attr_index_lookup: dict[CustomerAttribute: (int, int)] = {}
|
||||
|
||||
@staticmethod
|
||||
def new_interface(height: int, width: int):
|
||||
assert(height <= 256)
|
||||
assert(width <= 256)
|
||||
assert (height <= 256)
|
||||
assert (width <= 256)
|
||||
|
||||
base_interface = {}
|
||||
possible_set_vals = list(range(256))
|
||||
@@ -54,6 +57,14 @@ class Customer(BaseModel):
|
||||
possible_attr_values.remove(cur_attr)
|
||||
possible_set_vals.remove(cur_set)
|
||||
|
||||
return Customer(
|
||||
return CustomerInterface(
|
||||
base_interface=base_interface
|
||||
)
|
||||
|
||||
def get_set_values(self) -> list[int]:
|
||||
return list(self.base_interface.keys())
|
||||
|
||||
|
||||
class EncipheredNKode(BaseModel):
|
||||
code: str
|
||||
mask: str
|
||||
|
||||
Reference in New Issue
Block a user