implement login tutorial

This commit is contained in:
2024-08-01 12:36:15 -05:00
parent 772c93c8a8
commit 610c4b31af
8 changed files with 744 additions and 401 deletions

View File

@@ -28,18 +28,14 @@ class Customer(BaseModel):
user.enciphered_passcode.mask, self.attributes.set_vals, len(selected_keys))
set_vals_idx = [self.attributes.get_set_index(set_val) for set_val in passcode_set_vals]
presumed_selected_attributes = []
presumed_selected_attributes_idx = []
for idx in range(passcode_len):
key_numb = selected_keys[idx]
key_attribute_idxs = user.user_interface.get_key_attr_idxs(key_numb)
set_idx = set_vals_idx[idx]
selected_attr_idx = key_attribute_idxs[set_idx]
selected_attr_idx = user.user_interface.get_attr_idx_by_keynumb_setidx(key_numb, set_idx)
presumed_selected_attributes_idx.append(selected_attr_idx)
presumed_selected_attributes.append(selected_attr_idx)
enciphered_attr = user.user_keys.encipher_salt_hash_code(presumed_selected_attributes, self.attributes)
enciphered_attr = user.user_keys.encipher_salt_hash_code(presumed_selected_attributes_idx, self.attributes)
if enciphered_attr != user.enciphered_passcode.code:
return False

View File

@@ -68,8 +68,8 @@ class UserCipherKeys(BaseModel):
passcode_attrs = [customer_interface.attr_vals[idx] for idx in passcode_attr_idx]
passcode_sets = [customer_interface.get_attr_set_val(attr) for attr in passcode_attrs]
code = self.encipher_salt_hash_code(passcode_attr_idx, customer_interface)
mask = self.encipher_mask(passcode_sets, customer_interface)
code = self.encipher_salt_hash_code(passcode_attr_idx, customer_interface)
return EncipheredNKode(
code=code,
mask=mask
@@ -99,8 +99,8 @@ class UserCipherKeys(BaseModel):
) -> str:
padded_passcode_sets = self.pad_user_mask(passcode_sets, customer_interface.set_vals)
set_idx = [customer_interface.get_set_index(set_val) for set_val in padded_passcode_sets]
sorted_set_key = [self.set_key[idx] for idx in set_idx]
ciphered_mask = xor_lists(sorted_set_key, padded_passcode_sets)
mask_set_keys = [self.set_key[idx] for idx in set_idx]
ciphered_mask = xor_lists(mask_set_keys, padded_passcode_sets)
ciphered_mask = xor_lists(ciphered_mask, self.mask_key)
mask = self.encode_base64_str(ciphered_mask)
return mask
@@ -108,9 +108,9 @@ class UserCipherKeys(BaseModel):
def decipher_mask(self, mask: str, set_vals: list, passcode_len: int) -> list[int]:
decoded_mask = self.decode_base64_str(mask)
deciphered_mask = xor_lists(decoded_mask, self.mask_key)
set_key_ciphers = xor_lists(set_vals, self.set_key)
set_key_rand_component = xor_lists(set_vals, self.set_key)
passcode_sets = []
for set_cipher in deciphered_mask[:passcode_len]:
set_idx = set_key_ciphers.index(set_cipher)
set_idx = set_key_rand_component.index(set_cipher)
passcode_sets.append(set_vals[set_idx])
return passcode_sets

View File

@@ -96,7 +96,8 @@ class UserInterface(BaseModel):
return graph
def get_key_attr_idxs(self, key_numb: int) -> list[int]:
def get_attr_idx_by_keynumb_setidx(self, key_numb: int, set_idx: int) -> int:
assert (0 <= key_numb < self.keypad_size.numb_of_keys)
keypad_attr_idx = self.interface_keypad_matrix()
return keypad_attr_idx[key_numb]
return keypad_attr_idx[key_numb][set_idx]