cleanup to read as equation
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user