test create user

This commit is contained in:
2024-07-13 17:22:01 -05:00
parent e4268959b3
commit a080f945fa
4 changed files with 14 additions and 12 deletions

View File

@@ -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)

View File

@@ -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"

View File

@@ -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)
)