rename attribute to property

This commit is contained in:
2025-03-14 09:27:57 -05:00
parent c6bf401bc5
commit 1e2dfa9c9c
3 changed files with 122 additions and 124 deletions

View File

@@ -15,9 +15,9 @@ def random_username() -> str:
return "test_username" + "".join([choice(ascii_lowercase) for _ in range(6)])
def select_keys_with_passcode_values(user_passcode: list[int], keypad: np.ndarray, attrs_per_key: int) -> list[int]:
indices = [np.where(keypad == attr)[0][0] for attr in user_passcode]
return [int(index // attrs_per_key) for index in indices]
def select_keys_with_passcode_values(user_passcode: list[int], keypad: np.ndarray, props_per_key: int) -> list[int]:
indices = [np.where(keypad == prop)[0][0] for prop in user_passcode]
return [int(index // props_per_key) for index in indices]
def visualize_keypad(keypad_list: np.ndarray, props_per_key: int):
@@ -64,12 +64,12 @@ if __name__ == "__main__":
customer = api.customers[customer_id]
set_vals = customer.cipher.set_key
attr_vals = customer.cipher.prop_key
customer_attr_view = attr_vals.reshape(-1, keypad_size.props_per_key)
prop_vals = customer.cipher.prop_key
customer_prop_view = prop_vals.reshape(-1, keypad_size.props_per_key)
attr_keypad_view = attr_vals.reshape(-1, keypad_size.props_per_key)
attr_set_view = attr_keypad_view.T
set_attribute_dict = dict(zip(set_vals, attr_set_view))
prop_keypad_view = prop_vals.reshape(-1, keypad_size.props_per_key)
prop_set_view = prop_keypad_view.T
set_property_dict = dict(zip(set_vals, prop_set_view))
session_id, signup_interface = api.generate_signup_keypad(customer_id)
signup_keypad = signup_interface.reshape(-1, keypad_size.numb_of_keys)
@@ -78,7 +78,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_attr = [customer.cipher.prop_key[idx] for idx in user_passcode]
server_side_prop = [customer.cipher.prop_key[idx] for idx in user_passcode]
confirm_interface = api.set_nkode(username, customer_id, selected_keys_set, session_id)
@@ -88,8 +88,8 @@ if __name__ == "__main__":
success = api.confirm_nkode(username, customer_id, selected_keys_confirm, session_id)
assert success
passcode_server_attr = [customer.cipher.prop_key[idx] for idx in user_passcode]
passcode_server_set = [customer.cipher.get_prop_set_val(attr) for attr in passcode_server_attr]
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]
user_keys = customer.users[username].cipher
@@ -100,14 +100,12 @@ if __name__ == "__main__":
ciphered_mask = np.bitwise_xor(mask_set_keys, padded_passcode_server_set)
ciphered_mask = np.bitwise_xor(ciphered_mask, user_keys.mask_key)
mask = user_keys.encode_base64_str(ciphered_mask)
#ciphered_customer_attrs = xor_lists(customer.cipher.prop_key, user_keys.prop_key)
ciphered_customer_attrs = np.bitwise_xor(customer.cipher.prop_key, user_keys.prop_key)
passcode_ciphered_attrs = [ciphered_customer_attrs[idx] for idx in user_passcode]
#ciphered_customer_props = xor_lists(customer.cipher.prop_key, user_keys.prop_key)
ciphered_customer_props = np.bitwise_xor(customer.cipher.prop_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_attrs.extend([0 for _ in range(pad_len)])
#ciphered_code = xor_lists(passcode_ciphered_attrs, user_keys.pass_key)
ciphered_code = np.bitwise_xor(passcode_ciphered_attrs, user_keys.pass_key)
#passcode_bytes = int_array_to_bytes(ciphered_code)
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)
@@ -144,37 +142,37 @@ if __name__ == "__main__":
login_passcode_sets.append(int(set_vals[set_idx]))
"""
GET PRESUMED ATTRIBUTES
GET PRESUMED properties
"""
set_vals_idx = [customer.cipher.get_set_index(set_val) for set_val in login_passcode_sets]
presumed_selected_attributes_idx = []
presumed_selected_properties_idx = []
for idx in range(passcode_len):
key_numb = selected_keys_login[idx]
set_idx = set_vals_idx[idx]
selected_attr_idx = customer.users[username].user_keypad.get_prop_idx_by_keynumb_setidx(key_numb, set_idx)
presumed_selected_attributes_idx.append(selected_attr_idx)
selected_prop_idx = customer.users[username].user_keypad.get_prop_idx_by_keynumb_setidx(key_numb, set_idx)
presumed_selected_properties_idx.append(selected_prop_idx)
"""
RENEW KEYS
"""
old_attrs = customer.cipher.prop_key.copy()
old_props = customer.cipher.prop_key.copy()
old_sets = customer.cipher.set_key.copy()
customer.cipher.renew()
new_attrs = customer.cipher.prop_key
new_props = customer.cipher.prop_key
new_sets = customer.cipher.set_key
customer_new_attr_view = new_attrs.reshape(-1, keypad_size.props_per_key)
customer_new_prop_view = new_props.reshape(-1, keypad_size.props_per_key)
"""
RENEW USER
"""
attrs_xor = np.bitwise_xor(new_attrs, old_attrs)
props_xor = np.bitwise_xor(new_props, old_props)
sets_xor = np.bitwise_xor(new_sets, old_sets)
for user in customer.users.values():
user.renew = True
user.cipher.set_key = np.bitwise_xor(user.cipher.set_key, sets_xor)
user.cipher.prop_key = np.bitwise_xor(user.cipher.prop_key, attrs_xor)
user.cipher.prop_key = np.bitwise_xor(user.cipher.prop_key, props_xor)
"""
REFRESH USER KEYS
@@ -184,31 +182,31 @@ if __name__ == "__main__":
customer.cipher.set_key,
user.cipher.max_nkode_len
)
user.enciphered_passcode = user.cipher.encipher_nkode(presumed_selected_attributes_idx, customer.cipher)
user.enciphered_passcode = user.cipher.encipher_nkode(presumed_selected_properties_idx, customer.cipher)
user.renew = False
# Define some data to pass to the template
data = {
'keypad_size': keypad_size,
'customer_set_vals': set_vals,
'customer_attr_view': customer_attr_view,
'set_attribute_dict': set_attribute_dict,
'customer_prop_view': customer_prop_view,
'set_property_dict': set_property_dict,
'signup_keypad': signup_keypad,
'username': 'test_user',
'user_passcode': user_passcode,
'selected_keys_set': selected_keys_set,
'server_side_attr': server_side_attr,
'server_side_prop': server_side_prop,
'confirm_keypad': confirm_keypad,
'selected_keys_confirm': selected_keys_confirm,
'user_cipher': user_keys,
'passcode_server_attr': passcode_server_attr,
'passcode_server_prop': passcode_server_prop,
'passcode_server_set': passcode_server_set,
'enciphered_nkode': enciphered_nkode,
'login_keypad': login_keypad,
'selected_login_keys': selected_keys_login,
'login_passcode_sets': login_passcode_sets,
'presumed_selected_attributes_idx': presumed_selected_attributes_idx,
'customer_new_attr_view': customer_new_attr_view,
'presumed_selected_properties_idx': presumed_selected_properties_idx,
'customer_new_prop_view': customer_new_prop_view,
'customer_new_set_vals': new_sets,
}