cleanup to read as equation

This commit is contained in:
2024-06-26 17:23:31 -05:00
parent dc4caf14a6
commit 395c7887fe
6 changed files with 209 additions and 1648 deletions

View File

@@ -1,125 +1,196 @@
from src.models import AlphabetKey, ClientKeys, MutualKeys, ClientPersistentDataKeys, ClientEphemeralDataKeys, \
MutualPersistentDataKeys, MutualEphemeralDataKeys, ClientPersistentMediumKeys, ClientEphemeralMediumKeys, \
MutualPersistentMediumKeys, MutualEphemeralMediumKeys, DarcKey, OuterKey
from src.models import (
AlphabetKey, ClientKeys, MutualKeys, ClientPersistentDataKeys, ClientEphemeralDataKeys,
MutualPersistentDataKeys, MutualEphemeralDataKeys, ClientPersistentMediumKeys, ClientEphemeralMediumKeys,
MutualPersistentMediumKeys, MutualEphemeralMediumKeys, DarcKey, OuterKey, Mask
)
def darc_phase2(alphabet: AlphabetKey, medium: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys):
alphabet_phase2 = receive_alphabet(alphabet, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
medium = receive_medium(medium, client_keys.persistent.medium, client_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
return alphabet_phase2, medium
def darc_phase2(
alphabet_phase1: AlphabetKey,
medium_phase1: AlphabetKey,
client_keys: ClientKeys,
mutual_keys: MutualKeys
):
alphabet_phase2 = receive_alphabet(
alphabet_phase1,
client_keys.persistent.data,
client_keys.ephemeral.data,
mutual_keys.persistent.data,
mutual_keys.ephemeral.data
)
medium_phase2 = receive_medium(
medium_phase1,
client_keys.persistent.medium,
client_keys.ephemeral.medium,
mutual_keys.persistent.medium,
mutual_keys.ephemeral.medium
)
return alphabet_phase2, medium_phase2
def receive_alphabet(alphabet_phase1: AlphabetKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
mi1_mo2 = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
def receive_alphabet(
alphabet_phase1: AlphabetKey,
client_persistent_data_keys: ClientPersistentDataKeys,
client_ephemeral_data_keys: ClientEphemeralDataKeys,
mutual_persistent_data_keys: MutualPersistentDataKeys,
mutual_ephemeral_data_keys: MutualEphemeralDataKeys
):
mdi1 = mutual_persistent_data_keys.inner_key_1 << mutual_ephemeral_data_keys.inner_key_1
mdo1 = mutual_persistent_data_keys.outer_key_1 << mutual_ephemeral_data_keys.outer_key_1
mdo2 = mutual_persistent_data_keys.outer_key_2 << mutual_ephemeral_data_keys.outer_key_2
mdo3 = mutual_persistent_data_keys.outer_key_3 << mutual_ephemeral_data_keys.outer_key_3
cdi1 = client_persistent_data_keys.inner_key_1 << client_ephemeral_data_keys.inner_key_1
cdo1 = client_persistent_data_keys.outer_key_1 << client_ephemeral_data_keys.outer_key_1
cdo2 = client_persistent_data_keys.outer_key_2 << client_ephemeral_data_keys.outer_key_2
substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_persistent_keys.alpha_key
result = (
alphabet_phase1 ^
((substitution < mo1) << mi1_mo2)
cdo1_cdo2 = cdo1 << cdo2
substitution = (
client_ephemeral_data_keys.alpha_key ^
client_persistent_data_keys.alpha_key ^
mutual_persistent_data_keys.alpha_key
)
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
result = result < ~mo3
ci1 = client_persistent_keys.inner_key_1 << client_ephemeral_keys.inner_key_1
co1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1
co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
mo3_co1_co2 = mo3 << co1 << co2
alphabet_phase2 = (result << ci1) < mo3_co1_co2
alphabet_phase2 = ((((
alphabet_phase1 ^
((substitution < mdo1) << (mdi1 < mdo2))
) < ~mdo3)) << cdi1) < (mdo3 << cdo1_cdo2)
return alphabet_phase2
def receive_medium(medium_phase1: AlphabetKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
mi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
def receive_medium(
medium_phase1: AlphabetKey,
client_persistent_medium_keys: ClientPersistentMediumKeys,
client_ephemeral_medium_keys: ClientEphemeralMediumKeys,
mutual_persistent_medium_keys: MutualPersistentMediumKeys,
mutual_ephemeral_medium_keys: MutualEphemeralMediumKeys
):
mmi1 = mutual_persistent_medium_keys.inner_key_1 << mutual_ephemeral_medium_keys.inner_key_1
mmo1 = mutual_persistent_medium_keys.outer_key_1 << mutual_ephemeral_medium_keys.outer_key_1
mmo2 = mutual_persistent_medium_keys.outer_key_2 << mutual_ephemeral_medium_keys.outer_key_2
mmo3 = mutual_persistent_medium_keys.outer_key_3 << mutual_ephemeral_medium_keys.outer_key_3
mi1_mo2 = mi1 < mo2
cmi1 = client_persistent_medium_keys.inner_key_1 << client_ephemeral_medium_keys.inner_key_1
cmo1 = client_persistent_medium_keys.outer_key_1 << client_ephemeral_medium_keys.outer_key_1
cmo2 = client_persistent_medium_keys.outer_key_2 << client_ephemeral_medium_keys.outer_key_2
substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_persistent_keys.alpha_key
sub_mo1_mi1_mo2 = (substitution < mo1) << mi1_mo2
result = medium_phase1 ^ sub_mo1_mi1_mo2
substitution = (
client_ephemeral_medium_keys.alpha_key ^
client_persistent_medium_keys.alpha_key ^
mutual_persistent_medium_keys.alpha_key
)
ci1 = client_persistent_keys.inner_key_1 << client_ephemeral_keys.inner_key_1
ci1_mo3 = ci1 < mo3
result = result << ci1_mo3
co1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1
co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
medium_phase2 = result < (co1 << co2)
medium_phase2 = (
(
medium_phase1 ^
((substitution < mmo1) << (mmi1 < mmo2))
) << (cmi1 < mmo3)
) < (cmo1 << cmo2)
return medium_phase2
def transmit_alphabet(alphabet_phase2: DarcKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
def transmit_alphabet(
alphabet_phase2: DarcKey,
client_persistent_data_keys: ClientPersistentDataKeys,
client_ephemeral_data_keys: ClientEphemeralDataKeys,
mutual_persistent_data_keys: MutualPersistentDataKeys,
mutual_ephemeral_data_keys: MutualEphemeralDataKeys
):
mdpi2 = mutual_persistent_data_keys.inner_key_2
mdi1 = mutual_persistent_data_keys.inner_key_1 << mutual_ephemeral_data_keys.inner_key_1
mdo1 = mutual_persistent_data_keys.outer_key_1 << mutual_ephemeral_data_keys.outer_key_1
mdo2 = mutual_persistent_data_keys.outer_key_2 << mutual_ephemeral_data_keys.outer_key_2
mdo3 = mutual_persistent_data_keys.outer_key_3 << mutual_ephemeral_data_keys.outer_key_3
co1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1
co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
cdi1 = client_persistent_data_keys.inner_key_1 << client_ephemeral_data_keys.inner_key_1
cdo1 = client_persistent_data_keys.outer_key_1 << client_ephemeral_data_keys.outer_key_1
cdo2 = client_persistent_data_keys.outer_key_2 << client_ephemeral_data_keys.outer_key_2
co1_co2 = co1 << co2
mo3_co1_co2 = mo3 << co1 << co2
cdo1_cdo2 = cdo1 << cdo2
ncei1_ncpi1_mpi2 = ~client_ephemeral_keys.inner_key_1 << ~client_persistent_keys.inner_key_1 << mutual_persistent_keys.inner_key_2
ncei1_ncpi1_mpi2__mo3_co1_co2 = ncei1_ncpi1_mpi2 < mo3_co1_co2
result = alphabet_phase2 << ncei1_ncpi1_mpi2__mo3_co1_co2
substitution = (
client_ephemeral_data_keys.alpha_key ^
client_persistent_data_keys.alpha_key ^
mutual_ephemeral_data_keys.alpha_key
)
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key
mi1_mo2_mpi2_mo3 = (((mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2) << (mutual_persistent_keys.inner_key_2 < mo3)) #< co1_co2
alphabet_phase3 = result ^ (((substitution < mo1) << mi1_mo2_mpi2_mo3 ) < co1_co2)
alphabet_phase3 = (
(alphabet_phase2 << ((~cdi1 << mdpi2) < (mdo3 << cdo1_cdo2))) ^
(((substitution < mdo1) << ((mdi1 < mdo2) << (mdpi2 < mdo3))) < cdo1_cdo2)
)
return alphabet_phase3
def transmit_medium(medium_phase2: DarcKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
co1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1
co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
def transmit_medium(
medium_phase2: DarcKey,
client_persistent_medium_keys: ClientPersistentMediumKeys,
client_ephemeral_medium_keys: ClientEphemeralMediumKeys,
mutual_persistent_medium_keys: MutualPersistentMediumKeys,
mutual_ephemeral_medium_keys: MutualEphemeralMediumKeys
):
mmpi1 = mutual_persistent_medium_keys.inner_key_2
mmi1 = mutual_persistent_medium_keys.inner_key_1 << mutual_ephemeral_medium_keys.inner_key_1
mmo1 = mutual_persistent_medium_keys.outer_key_1 << mutual_ephemeral_medium_keys.outer_key_1
mmo2 = mutual_persistent_medium_keys.outer_key_2 << mutual_ephemeral_medium_keys.outer_key_2
mmo3 = mutual_persistent_medium_keys.outer_key_3 << mutual_ephemeral_medium_keys.outer_key_3
co1_co2 = co1 << co2
cmi1 = client_persistent_medium_keys.inner_key_1 << client_ephemeral_medium_keys.inner_key_1
cmo1 = client_persistent_medium_keys.outer_key_1 << client_ephemeral_medium_keys.outer_key_1
cmo2 = client_persistent_medium_keys.outer_key_2 << client_ephemeral_medium_keys.outer_key_2
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
mi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
cmo1_cmo2 = cmo1 << cmo2
mi1_mo2 = mi1 < mo2
mpi1_mo3 = mutual_persistent_keys.inner_key_2 < mo3
mi1_mo2_mpi1_mo3 = mi1_mo2 << mpi1_mo3
substitution = (
client_persistent_medium_keys.alpha_key ^
client_ephemeral_medium_keys.alpha_key ^
mutual_ephemeral_medium_keys.alpha_key
)
ncei1_ncpi2 = ~(client_persistent_keys.inner_key_1 << client_ephemeral_keys.inner_key_1) << mutual_persistent_keys.inner_key_2
ncei1_ncpi2__mo3 = ncei1_ncpi2 < mo3
result = ((medium_phase2 < ~co1_co2) << ncei1_ncpi2__mo3)
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
sub = client_persistent_keys.alpha_key ^ client_ephemeral_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key
sub_mo1 = sub < mo1
medium_phase3 = (result ^ (sub_mo1 << mi1_mo2_mpi1_mo3)) < co1_co2
medium_phase3 = (
((medium_phase2 < ~cmo1_cmo2) << ((~cmi1 << mmpi1) < mmo3)) ^
((substitution < mmo1) << ((mmi1 < mmo2) << (mmpi1 < mmo3)))
) < cmo1_cmo2
return medium_phase3
def darc_phase3(alphabet_phase2: AlphabetKey, medium_phase2: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys):
alphabet_phase3 = transmit_alphabet(alphabet_phase2, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
medium_phase3 = transmit_medium(medium_phase2, client_keys.persistent.medium, client_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
def darc_phase3(
alphabet_phase2: AlphabetKey,
medium_phase2: AlphabetKey,
client_keys: ClientKeys,
mutual_keys: MutualKeys
):
alphabet_phase3 = transmit_alphabet(
alphabet_phase2,
client_keys.persistent.data,
client_keys.ephemeral.data,
mutual_keys.persistent.data,
mutual_keys.ephemeral.data
)
medium_phase3 = transmit_medium(
medium_phase2,
client_keys.persistent.medium,
client_keys.ephemeral.medium,
mutual_keys.persistent.medium,
mutual_keys.ephemeral.medium
)
return alphabet_phase3, medium_phase3
def merge_message(alphabet_phase3: AlphabetKey, medium_phase3: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]):
def merge_message(
alphabet_phase3: AlphabetKey,
medium_phase3: AlphabetKey,
client_keys: ClientKeys,
mutual_keys: MutualKeys,
input_sequence: list[int]
):
height = len(alphabet_phase3.matrix)
width = len(alphabet_phase3.matrix[0])
msg_len = len(input_sequence)
eof_arr = AlphabetKey.init_matrix(width, height, 255).matrix[0]
#eof_msg_mask = Mask.init_matrix(width, height, msg_len)
if msg_len < height:
padded_input_sequence = OuterKey.init_matrix(height)
@@ -129,27 +200,24 @@ def merge_message(alphabet_phase3: AlphabetKey, medium_phase3: AlphabetKey, clie
cdo1 = client_keys.persistent.data.outer_key_1 << client_keys.ephemeral.data.outer_key_1
cdo2 = client_keys.persistent.data.outer_key_2 << client_keys.ephemeral.data.outer_key_2
ncdo1_ncdo2 = ~(cdo1 << cdo2)
ncdo1_ncdo2_inp = ncdo1_ncdo2 << padded_input_sequence
cmo1 = client_keys.persistent.medium.outer_key_1 << client_keys.ephemeral.medium.outer_key_1
cmo2 = client_keys.persistent.medium.outer_key_2 << client_keys.ephemeral.medium.outer_key_2
alpha_ncdo1_ncdo2_inp = alphabet_phase3 < ncdo1_ncdo2_inp
ncmo2_ncmo1 = ~(cmo1 << cmo2)
alpha_ncdo1_ncdo2_inp = (alphabet_phase3 < (~(cdo1 << cdo2) << padded_input_sequence))
if msg_len < height:
alpha_ncdo1_ncdo2_inp.matrix[msg_len] = eof_arr
mmi3 = mutual_keys.persistent.medium.inner_key_3 << mutual_keys.ephemeral.medium.inner_key_3
mmo6 = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6
mmo4 = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4
mmi3_nmmo6_nmmo4 = mmi3 < ~(mmo4 << mmo6)
mmo5 = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5
mmi4 = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_4
darc_message = (((medium_phase3 < ncmo2_ncmo1) ^ (alpha_ncdo1_ncdo2_inp << mmi3_nmmo6_nmmo4)) < mmo4) << (mmi4 < (mmo5 << ~mmo6))
mmo4 = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4
mmo5 = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5
mmo6 = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6
cmo1 = client_keys.persistent.medium.outer_key_1 << client_keys.ephemeral.medium.outer_key_1
cmo2 = client_keys.persistent.medium.outer_key_2 << client_keys.ephemeral.medium.outer_key_2
darc_message = (
(
(medium_phase3 < ~(cmo1 << cmo2)) ^
(alpha_ncdo1_ncdo2_inp << (mmi3 < ~(mmo4 << mmo6)))
) < mmo4
) << (mmi4 < (mmo5 << ~mmo6))
return darc_message