update documentation
This commit is contained in:
69
docs/scripts/render_encipher_decipher_diagrams_v2.py
Normal file
69
docs/scripts/render_encipher_decipher_diagrams_v2.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from pathlib import Path
|
||||
import numpy as np
|
||||
from docs.scripts.utils import render_markdown_template
|
||||
from src.models import NKodePolicy, KeypadSize
|
||||
from src.user_keypad import UserKeypad
|
||||
from src.nkode_cipher_v2.nkode_cipher import NKodeCipher
|
||||
from src.utils import select_keys_with_passcode_values
|
||||
|
||||
|
||||
def display_keypad(icons_array: np.ndarray, props_per_key: int) -> str:
|
||||
icons = ""
|
||||
for idx, row in enumerate(icons_array.reshape(-1, props_per_key)):
|
||||
icons += f"Key {idx}: "
|
||||
icons += str(row)
|
||||
icons += "\n"
|
||||
return icons
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
policy = NKodePolicy(
|
||||
max_nkode_len=10,
|
||||
min_nkode_len=4,
|
||||
distinct_positions=0,
|
||||
distinct_properties=4,
|
||||
)
|
||||
keypad_size = KeypadSize(
|
||||
numb_of_keys=6,
|
||||
props_per_key=9
|
||||
)
|
||||
user_keys = NKodeCipher.create(keypad_size=keypad_size, max_nkode_len=policy.max_nkode_len)
|
||||
passcode_len = 4
|
||||
|
||||
passcode_property_indices = np.random.choice([i for i in range(keypad_size.total_props)], size=passcode_len,
|
||||
replace=False)
|
||||
user_passcode = user_keys.property_key[passcode_property_indices]
|
||||
pad_len = policy.max_nkode_len - passcode_len
|
||||
padded_passcode = np.concatenate((user_passcode, np.zeros(pad_len, dtype=user_passcode.dtype)))
|
||||
ciphered_passcode = padded_passcode ^ user_keys.pass_key
|
||||
cipher = user_keys.encipher_nkode(passcode_property_indices.tolist())
|
||||
padded_passcode_position_indices = user_keys.get_passcode_position_indices_padded(
|
||||
passcode_property_indices.tolist())
|
||||
|
||||
ordered_user_position_key = user_keys.position_key[padded_passcode_position_indices]
|
||||
login_keypad = UserKeypad.create(keypad_size)
|
||||
selected_keys_login = select_keys_with_passcode_values(passcode_property_indices, login_keypad.keypad,
|
||||
keypad_size.props_per_key)
|
||||
context = {
|
||||
"max_nkode_len": policy.max_nkode_len,
|
||||
"numb_of_keys": keypad_size.numb_of_keys,
|
||||
"props_per_key": keypad_size.props_per_key,
|
||||
"user_property_key": user_keys.property_key,
|
||||
"pass_key": user_keys.pass_key,
|
||||
"user_position_key": user_keys.position_key,
|
||||
"mask_key": user_keys.mask_key,
|
||||
"user_passcode_idxs": passcode_property_indices,
|
||||
"user_passcode_props": user_passcode,
|
||||
"padded_passcode": padded_passcode,
|
||||
"ciphered_passcode": ciphered_passcode,
|
||||
"code": cipher.code,
|
||||
"passcode_position_idxs": padded_passcode_position_indices[:passcode_len],
|
||||
"pad_user_passcode_idxs": padded_passcode_position_indices,
|
||||
"ordered_user_position_key": ordered_user_position_key,
|
||||
"mask": cipher.mask,
|
||||
"login_keypad": display_keypad(login_keypad.keypad, keypad_size.props_per_key),
|
||||
"selected_keys": selected_keys_login,
|
||||
"ordered_keys": login_keypad.keypad.reshape(-1, keypad_size.props_per_key)[selected_keys_login],
|
||||
}
|
||||
render_markdown_template(Path("../templates/encipher_decipher_renew_nkode_v2.template.md"),
|
||||
Path("../encipher_decipher_renew_nkode_v2.md"), context)
|
||||
70
docs/scripts/render_zero_trust_nkode.py
Normal file
70
docs/scripts/render_zero_trust_nkode.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from pathlib import Path
|
||||
import numpy as np
|
||||
from docs.scripts.utils import render_markdown_template
|
||||
from src.models import NKodePolicy, KeypadSize
|
||||
from src.user_keypad import UserKeypad
|
||||
from src.nkode_cipher_v2.nkode_cipher import NKodeCipher
|
||||
from src.utils import select_keys_with_passcode_values
|
||||
|
||||
|
||||
def display_keypad(icons_array: np.ndarray, props_per_key: int) -> str:
|
||||
icons = ""
|
||||
for idx, row in enumerate(icons_array.reshape(-1, props_per_key)):
|
||||
icons += f"Key {idx}: "
|
||||
icons += str(row)
|
||||
icons += "\n"
|
||||
return icons
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
policy = NKodePolicy(
|
||||
max_nkode_len=10,
|
||||
min_nkode_len=4,
|
||||
distinct_positions=0,
|
||||
distinct_properties=4,
|
||||
)
|
||||
keypad_size = KeypadSize(
|
||||
numb_of_keys=6,
|
||||
props_per_key=9
|
||||
)
|
||||
user_keys = NKodeCipher.create(keypad_size=keypad_size, max_nkode_len=policy.max_nkode_len)
|
||||
passcode_len = 4
|
||||
|
||||
passcode_property_indices = np.random.choice([i for i in range(keypad_size.total_props)], size=passcode_len,
|
||||
replace=False)
|
||||
user_passcode = user_keys.property_key[passcode_property_indices]
|
||||
pad_len = policy.max_nkode_len - passcode_len
|
||||
padded_passcode = np.concatenate((user_passcode, np.zeros(pad_len, dtype=user_passcode.dtype)))
|
||||
ciphered_passcode = padded_passcode ^ user_keys.pass_key
|
||||
cipher = user_keys.encipher_nkode(passcode_property_indices.tolist())
|
||||
padded_passcode_position_indices = user_keys.get_passcode_position_indices_padded(
|
||||
passcode_property_indices.tolist())
|
||||
|
||||
ordered_user_position_key = user_keys.position_key[padded_passcode_position_indices]
|
||||
login_keypad = UserKeypad.create(keypad_size)
|
||||
selected_keys_login = select_keys_with_passcode_values(passcode_property_indices, login_keypad.keypad,
|
||||
keypad_size.props_per_key)
|
||||
context = {
|
||||
"max_nkode_len": policy.max_nkode_len,
|
||||
"numb_of_keys": keypad_size.numb_of_keys,
|
||||
"props_per_key": keypad_size.props_per_key,
|
||||
"user_property_key": user_keys.property_key,
|
||||
"pass_key": user_keys.pass_key,
|
||||
"user_position_key": user_keys.position_key,
|
||||
"mask_key": user_keys.mask_key,
|
||||
"user_passcode_idxs": passcode_property_indices,
|
||||
"user_passcode_props": user_passcode,
|
||||
"padded_passcode": padded_passcode,
|
||||
"ciphered_passcode": ciphered_passcode,
|
||||
"code": cipher.code,
|
||||
"passcode_position_idxs": padded_passcode_position_indices[:passcode_len],
|
||||
"pad_user_passcode_idxs": padded_passcode_position_indices,
|
||||
"ordered_user_position_key": ordered_user_position_key,
|
||||
"mask": cipher.mask,
|
||||
"login_keypad": display_keypad(login_keypad.keypad, keypad_size.props_per_key),
|
||||
"selected_keys": selected_keys_login,
|
||||
"ordered_keys": login_keypad.keypad.reshape(-1, keypad_size.props_per_key)[selected_keys_login],
|
||||
}
|
||||
|
||||
render_markdown_template(Path("../templates/zero_trust_nkode.template.md"),
|
||||
Path("../zero_trust_nkode.md"), context)
|
||||
Reference in New Issue
Block a user