test create user
This commit is contained in:
@@ -37,12 +37,12 @@ class CustomerInterface(BaseModel):
|
||||
return secure_fisher_yates_shuffle(list(range(len(self.interface))))
|
||||
|
||||
def get_attr_set_val(self, attr: int) -> int:
|
||||
assert(attr in self.interface)
|
||||
attr_idx = self.interface.index(attr)
|
||||
set_idx = attr_idx % self.numb_of_sets
|
||||
assert(attr in self.customer_interface)
|
||||
attr_idx = self.customer_interface.index(attr)
|
||||
set_idx = attr_idx % self.attrs_per_key
|
||||
return self.set_vals[set_idx]
|
||||
|
||||
def get_set_index(self, set_val: int) -> int:
|
||||
assert(set_val in self.get_set_values())
|
||||
assert(set_val in self.set_vals)
|
||||
return self.set_vals.index(set_val)
|
||||
|
||||
|
||||
@@ -84,7 +84,6 @@ class PseudoNKodeAPI(BaseModel):
|
||||
attrs_per_key = customer.interface.attrs_per_key
|
||||
assert(all(0 <= key <= numb_of_keys for key in confirm_key_entry))
|
||||
passcode = self._deduce_passcode(session_id, numb_of_keys, attrs_per_key, confirm_key_entry)
|
||||
attrs_per_key = customer.interface.numb_of_sets
|
||||
set_values = customer.interface.set_vals
|
||||
new_user_keys = UserCipherKeys.new_user_encipher_keys(numb_of_keys, attrs_per_key, set_values)
|
||||
enciphered_passcode = new_user_keys.encipher_nkode(passcode, customer.interface)
|
||||
@@ -92,7 +91,11 @@ class PseudoNKodeAPI(BaseModel):
|
||||
username=username,
|
||||
enciphered_passcode=enciphered_passcode,
|
||||
user_keys=new_user_keys,
|
||||
user_interface=self.sessions[session_id].confirm_interface
|
||||
user_interface=UserInterface(
|
||||
interface_index=self.sessions[session_id].confirm_interface,
|
||||
numb_sets=attrs_per_key,
|
||||
numb_keys=numb_of_keys
|
||||
)
|
||||
)
|
||||
self.customers[customer_id].users.append(new_user)
|
||||
return "success"
|
||||
|
||||
@@ -47,14 +47,14 @@ class UserCipherKeys(BaseModel):
|
||||
|
||||
@staticmethod
|
||||
def encode_base64_str(data: list[int]) -> str:
|
||||
return base64.b64encode(data).decode("utf-8")
|
||||
return base64.b64encode(bytes(data)).decode("utf-8")
|
||||
|
||||
@staticmethod
|
||||
def decode_base64_str(data: str) -> list[int]:
|
||||
return list(base64.b64decode(data))
|
||||
|
||||
def _hash_passcode(self, passcode: list[int]) -> str:
|
||||
passcode_digest = base64.b64encode(hashlib.sha256(passcode).digest())
|
||||
passcode_digest = base64.b64encode(hashlib.sha256(bytes(passcode)).digest())
|
||||
hashed_data = bcrypt.hashpw(passcode_digest, self.salt)
|
||||
return hashed_data.decode("utf-8")
|
||||
|
||||
@@ -65,7 +65,7 @@ class UserCipherKeys(BaseModel):
|
||||
) -> EncipheredNKode:
|
||||
max_nkode_len = 10
|
||||
passcode_len = len(nkode_attr_index)
|
||||
user_nkode_attrs = [customer_interface.interface[idx] for idx in nkode_attr_index]
|
||||
user_nkode_attrs = [customer_interface.customer_interface[idx] for idx in nkode_attr_index]
|
||||
user_nkode_mask = [customer_interface.get_attr_set_val(attr) for attr in user_nkode_attrs]
|
||||
mask_cipher = self.pad_user_mask(user_nkode_mask, customer_interface, max_nkode_len)
|
||||
passcode_cipher = self.pass_key
|
||||
@@ -76,11 +76,10 @@ class UserCipherKeys(BaseModel):
|
||||
attr_val = user_nkode_attrs[idx]
|
||||
passcode_cipher[idx] ^= alpha ^ attr_val
|
||||
|
||||
for idx in range(max_nkode_len):
|
||||
set_idx = customer_interface.get_set_index(user_nkode_mask[idx])
|
||||
mask_cipher[idx] ^= self.set_key[set_idx] ^ self.mask_key[idx]
|
||||
|
||||
return EncipheredNKode(
|
||||
code=self._hash_passcode(passcode_cipher),
|
||||
mask=self.base64.b64encode(mask_cipher).decode("utf-8")
|
||||
mask=self.encode_base64_str(mask_cipher)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user