clean medium receive and most of transmit

This commit is contained in:
2024-05-26 17:04:00 -05:00
parent 495158274d
commit 9636991e96

View File

@@ -71,7 +71,7 @@ def darc_phase2(alphabet: AlphabetKey, medium: AlphabetKey, client_keys: ClientK
def receive_alphabet(alphabet_phase1: AlphabetKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys): 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 mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
mi1_mo2: InnerKey = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2 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 mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
mutual_func_1 = outer_inner(mo1, mi1_mo2) mutual_func_1 = outer_inner(mo1, mi1_mo2)
@@ -97,30 +97,28 @@ def receive_alphabet(alphabet_phase1: AlphabetKey, client_persistent_keys: Clien
alphabet_phase2 = client_func_1(result) alphabet_phase2 = client_func_1(result)
return alphabet_phase2 return alphabet_phase2
def receive_medium(medium: AlphabetKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys): def receive_medium(medium: AlphabetKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
mutual_inner_key = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1 mi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
mutual_outer_key_1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1 mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
mutual_outer_key_2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2 mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
mutual_outer_key_3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3 mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
mutual_inner_key = mutual_inner_key < mutual_outer_key_2 mi1_mo2 = mi1 < mo2
operand1 = client_ephemeral_keys.alpha_key < mutual_outer_key_1 substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_persistent_keys.alpha_key
operand2 = client_persistent_keys.alpha_key < mutual_outer_key_1 sub_mo1_mi1_mo2 = (substitution < mo1) << mi1_mo2
operand3 = mutual_persistent_keys.alpha_key < mutual_outer_key_1 result = medium ^ sub_mo1_mi1_mo2
result = medium ^ (operand1 << mutual_inner_key) ^ (operand2 << mutual_inner_key) ^ (operand3 << mutual_inner_key) ci1 = client_persistent_keys.inner_key_1 << client_ephemeral_keys.inner_key_1
ci1_mo3 = ci1 < mo3
result = result << ci1_mo3
client_inner_key = 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
client_inner_key = client_inner_key < mutual_outer_key_3 co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
result = result << client_inner_key medium_phase2 = result < (co1 << co2)
client_outer_key_1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1 return medium_phase2
client_outer_key2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
client_outer_key_1 = client_outer_key_1 << client_outer_key2
result = result < client_outer_key_1
return result
def darc_phase3(alphabet_phase2: AlphabetKey, medium_phase2: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys): def darc_phase3(alphabet_phase2: AlphabetKey, medium_phase2: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys):
@@ -153,38 +151,35 @@ def transmit_alphabet(alphabet_phase2: DarcKey, client_persistent_keys: ClientPe
return alphabet_phase3 return alphabet_phase3
def transmit_medium(medium: DarcKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys): def transmit_medium(medium_phase2: DarcKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
client_inner_key_1 = ~client_ephemeral_keys.inner_key_1 mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
mutual_outer_key_3 = 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
client_outer_key_1 = 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
client_outer_key_2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2 co1_co2 = co1 << co2
outer_key_1 = client_outer_key_1 << client_outer_key_2 mo3_co1_co2 = mo3 << co1_co2
outer_key_2 = mutual_outer_key_3 << outer_key_1
mutual_outer_key_2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2 mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
outer_key_3 = mutual_outer_key_2 << outer_key_1 mi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
mutual_inner_key_1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1 mi1_mo2 = mi1 < mo2
mutual_inner_key_1 = mutual_inner_key_1 < outer_key_3 mpi1_mo3 = mutual_persistent_keys.inner_key_2 < mo3
mi1_mo2_mpi1_mo3__co1_co2 = (mi1_mo2 << mpi1_mo3) < co1_co2
mutual_inner_key_2 = mutual_persistent_keys.inner_key_2 < outer_key_2 ncei1_ncpi2 = ~(client_persistent_keys.inner_key_1 << client_ephemeral_keys.inner_key_1) << mutual_persistent_keys.inner_key_2
ncei1_ncpi2__mo3_co1_co2 = ncei1_ncpi2 < mo3_co1_co2
inner_key_1 = mutual_inner_key_1 << mutual_inner_key_2 result = medium_phase2 << ncei1_ncpi2__mo3_co1_co2
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
mo1_co1_co2 = mo1 << co1_co2
inner_key_2 = (~client_persistent_keys.inner_key_1) << mutual_persistent_keys.inner_key_2 sub = client_persistent_keys.alpha_key ^ client_ephemeral_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key
inner_key_3 = client_inner_key_1 << inner_key_2 sub_mo1_co1_co2 = sub < mo1_co1_co2
inner_key_3 = inner_key_3 < outer_key_2 sub_mo1_co1_co2_mi1_mo2_mpi1_mo3_co1_co2 = sub_mo1_co1_co2 << mi1_mo2_mpi1_mo3__co1_co2
result = (result ^ sub_mo1_co1_co2_mi1_mo2_mpi1_mo3_co1_co2)
medium = medium << inner_key_3 #result = result ^ (operand1 << mi1_mo2_mpi1_mo3__co1_co2) ^ (operand2 << mi1_mo2_mpi1_mo3__co1_co2) ^ (operand3 << mi1_mo2_mpi1_mo3__co1_co2)
mutual_outer_key_1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
outer_key_3 = mutual_outer_key_1 << outer_key_1
operand1 = client_ephemeral_keys.alpha_key < outer_key_3
operand2 = client_persistent_keys.alpha_key < outer_key_3
operand3 = mutual_ephemeral_keys.alpha_key < outer_key_3
result = medium ^ (operand1 << inner_key_1) ^ (operand2 << inner_key_1) ^ (operand3 << inner_key_1)
return result return result
@@ -192,25 +187,31 @@ def transceive_alphabet(alphabet_phase1: DarcKey, client_persistent_keys: Client
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2 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 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
co1_co2 = co1 << co2
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1 mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
ma = mutual_persistent_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key ma = mutual_persistent_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key
mi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
mi1_mo2 = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2 ma_mo1_mi1_mo2 = (ma < mo1) << (mi1 < mo2)
mpa_mea_mo1_mi1_mo2 = (ma < mo1) << mi1_mo2 alphabet_phase3 = (alphabet_phase1 ^ ma_mo1_mi1_mo2) << (mutual_persistent_keys.inner_key_2 < mo3)
result = (alphabet_phase1 ^ mpa_mea_mo1_mi1_mo2) << (mutual_persistent_keys.inner_key_2 < mo3)
alphabet_phase3 = result < co1_co2
return alphabet_phase3 return alphabet_phase3
def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]): def transceive_medium(medium_phase1: DarcKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
client_outer_key_1 = client_keys.persistent.data.outer_key_1 << client_keys.ephemeral.data.outer_key_1 mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
client_outer_key_2 = client_keys.persistent.data.outer_key_2 << client_keys.ephemeral.data.outer_key_2 mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
client_outer_key_1 = ~(client_outer_key_1 << client_outer_key_2)
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
ma = mutual_persistent_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key
mi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
ma_mo1_mi1_mo2 = (ma < mo1) << (mi1 < mo2)
medium_phase3 = (medium_phase1 ^ ma_mo1_mi1_mo2) << (mutual_persistent_keys.inner_key_2 < mo3)
return medium_phase3
def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]):
msg_len = len(input_sequence) msg_len = len(input_sequence)
eof_arr = AlphabetKey.init_matrix(width, height, 255).matrix[0] eof_arr = AlphabetKey.init_matrix(width, height, 255).matrix[0]
@@ -220,7 +221,7 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, m
else: else:
padded_input_sequence = OuterKey(matrix=[input_sequence]) padded_input_sequence = OuterKey(matrix=[input_sequence])
client_outer_key_1 = client_outer_key_1 << padded_input_sequence client_outer_key_1 = padded_input_sequence
client_med_outer_key_1 = client_keys.persistent.medium.outer_key_1 << client_keys.ephemeral.medium.outer_key_1 client_med_outer_key_1 = client_keys.persistent.medium.outer_key_1 << client_keys.ephemeral.medium.outer_key_1
client_med_outer_key_2 = client_keys.persistent.medium.outer_key_2 << client_keys.ephemeral.medium.outer_key_2 client_med_outer_key_2 = client_keys.persistent.medium.outer_key_2 << client_keys.ephemeral.medium.outer_key_2