refactor set_key -> position_key

This commit is contained in:
2025-03-19 09:34:02 -05:00
parent cfef58613c
commit 7b92a6b40b
10 changed files with 511 additions and 407 deletions

View File

@@ -64,8 +64,8 @@ if __name__ == "__main__":
customer_id = api.create_new_customer(keypad_size, policy)
customer = api.customers[customer_id]
set_vals = customer.cipher.set_key
prop_vals = customer.cipher.prop_key
set_vals = customer.cipher.position_key
prop_vals = customer.cipher.property_key
customer_prop_view = prop_vals.reshape(-1, keypad_size.props_per_key)
prop_keypad_view = prop_vals.reshape(-1, keypad_size.props_per_key)
@@ -79,7 +79,7 @@ if __name__ == "__main__":
passcode_len = 4
user_passcode = signup_interface[:passcode_len].tolist()
selected_keys_set = select_keys_with_passcode_values(user_passcode, signup_interface, keypad_size.numb_of_keys)
server_side_prop = [customer.cipher.prop_key[idx] for idx in user_passcode]
server_side_prop = [customer.cipher.property_key[idx] for idx in user_passcode]
confirm_interface = api.set_nkode(username, customer_id, selected_keys_set, session_id)
@@ -89,25 +89,24 @@ if __name__ == "__main__":
success = api.confirm_nkode(username, customer_id, selected_keys_confirm, session_id)
assert success
passcode_server_prop = [customer.cipher.prop_key[idx] for idx in user_passcode]
passcode_server_set = [customer.cipher.get_prop_set_val(prop) for prop in passcode_server_prop]
passcode_server_prop = [customer.cipher.property_key[idx] for idx in user_passcode]
passcode_server_set = customer.cipher.get_props_position_vals(user_passcode)
user_keys = customer.users[username].cipher
padded_passcode_server_set = user_keys.pad_user_mask(np.array(passcode_server_set), customer.cipher.set_key)
padded_passcode_server_set = user_keys.pad_user_mask(np.array(passcode_server_set), customer.cipher.position_key)
set_idx = [customer.cipher.get_set_index(set_val) for set_val in padded_passcode_server_set]
set_idx = [customer.cipher.get_position_index(set_val) for set_val in padded_passcode_server_set]
mask_set_keys = [user_keys.combined_set_key[idx] for idx in set_idx]
ciphered_mask = mask_set_keys ^ padded_passcode_server_set ^ user_keys.mask_key
mask = user_keys.encode_base64_str(ciphered_mask)
ciphered_customer_props = customer.cipher.prop_key ^ user_keys.prop_key
ciphered_customer_props = customer.cipher.property_key ^ user_keys.prop_key
passcode_ciphered_props = [ciphered_customer_props[idx] for idx in user_passcode]
pad_len = customer.nkode_policy.max_nkode_len - passcode_len
passcode_ciphered_props.extend([0 for _ in range(pad_len)])
ciphered_code = np.bitwise_xor(passcode_ciphered_props, user_keys.pass_key)
passcode_bytes = ciphered_code.tobytes()
passcode_digest = base64.b64encode(hashlib.sha256(passcode_bytes).digest())
hashed_data = bcrypt.hashpw(passcode_digest, user_keys.salt)
hashed_data = bcrypt.hashpw(passcode_digest, bcrypt.gensalt(rounds=12))
code = hashed_data.decode("utf-8")
enciphered_nkode = EncipheredNKode(
@@ -129,7 +128,7 @@ if __name__ == "__main__":
"""
user = customer.users[username]
set_vals = customer.cipher.set_key
set_vals = customer.cipher.position_key
user_keys = user.cipher
user_mask = user.enciphered_passcode.mask
decoded_mask = user_keys.decode_base64_str(user_mask)
@@ -144,17 +143,17 @@ if __name__ == "__main__":
GET PRESUMED properties
"""
set_vals_idx = [customer.cipher.get_set_index(set_val) for set_val in login_passcode_sets]
set_vals_idx = [customer.cipher.get_position_index(set_val) for set_val in login_passcode_sets]
presumed_selected_properties_idx = customer.users[username].user_keypad.get_prop_idxs_by_keynumb_setidx(selected_keys_login, set_vals_idx)
"""
RENEW KEYS
"""
old_props = customer.cipher.prop_key.copy()
old_sets = customer.cipher.set_key.copy()
old_props = customer.cipher.property_key.copy()
old_sets = customer.cipher.position_key.copy()
customer.cipher.renew()
new_props = customer.cipher.prop_key
new_sets = customer.cipher.set_key
new_props = customer.cipher.property_key
new_sets = customer.cipher.position_key
customer_new_prop_view = new_props.reshape(-1, keypad_size.props_per_key)
"""
RENEW USER
@@ -171,7 +170,7 @@ if __name__ == "__main__":
"""
user.cipher = UserCipher.create(
customer.cipher.keypad_size,
customer.cipher.set_key,
customer.cipher.position_key,
user.cipher.max_nkode_len
)
user.enciphered_passcode = user.cipher.encipher_nkode(presumed_selected_properties_idx, customer.cipher)
@@ -183,9 +182,9 @@ if __name__ == "__main__":
'customer_set_vals': set_vals,
'customer_prop_view': customer_prop_view,
'set_property_dict': set_property_dict,
'signup_keypad': signup_keypad,
'set_signup_keypad': signup_keypad,
'username': 'test_user',
'user_passcode': user_passcode,
'user_passcode_indices': user_passcode,
'selected_keys_set': selected_keys_set,
'server_side_prop': server_side_prop,
'confirm_keypad': confirm_keypad,