add message merge back with client keys
This commit is contained in:
@@ -211,7 +211,7 @@ def transceive_medium(medium_phase1: DarcKey, client_persistent_keys: ClientPers
|
||||
return medium_phase3
|
||||
|
||||
|
||||
def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]):
|
||||
def merge_message_no_client(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]):
|
||||
msg_len = len(input_sequence)
|
||||
|
||||
if msg_len < height:
|
||||
@@ -243,6 +243,59 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, m
|
||||
return message
|
||||
|
||||
|
||||
def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]):
|
||||
client_outer_key_1 = client_keys.persistent.data.outer_key_1 << client_keys.ephemeral.data.outer_key_1
|
||||
client_outer_key_2 = client_keys.persistent.data.outer_key_2 << client_keys.ephemeral.data.outer_key_2
|
||||
client_outer_key_1 = ~(client_outer_key_1 << client_outer_key_2)
|
||||
|
||||
msg_len = len(input_sequence)
|
||||
eof_arr = AlphabetKey.init_matrix(width, height, 255).matrix[0]
|
||||
|
||||
if msg_len < height:
|
||||
padded_input_sequence = OuterKey.init_matrix(height)
|
||||
padded_input_sequence.matrix = [input_sequence + padded_input_sequence.matrix[0][msg_len:]]
|
||||
else:
|
||||
padded_input_sequence = OuterKey(matrix=[input_sequence])
|
||||
|
||||
client_outer_key_1 = 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_2 = client_keys.persistent.medium.outer_key_2 << client_keys.ephemeral.medium.outer_key_2
|
||||
|
||||
client_med_outer_key_1 = client_med_outer_key_1 << client_med_outer_key_2
|
||||
|
||||
client_outer_key_1 = client_outer_key_1 << client_med_outer_key_1
|
||||
message = alphabet < client_outer_key_1
|
||||
|
||||
message_pad_key = ~client_med_outer_key_1
|
||||
|
||||
if msg_len < height:
|
||||
message.matrix[message_pad_key.matrix[0][msg_len]] = eof_arr
|
||||
|
||||
mutual_inner_key_3 = mutual_keys.persistent.medium.inner_key_3 << mutual_keys.ephemeral.medium.inner_key_3
|
||||
mutual_outer_key_6 = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6
|
||||
mutual_outer_key_4 = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4
|
||||
|
||||
outer_key_1 = mutual_outer_key_4 << mutual_outer_key_6
|
||||
|
||||
client_med_outer_key_1 = ~client_med_outer_key_1
|
||||
outer_key_1 = ~(client_med_outer_key_1 << outer_key_1)
|
||||
|
||||
mutual_inner_key_3 = mutual_inner_key_3 < outer_key_1
|
||||
|
||||
message = medium ^ (message << mutual_inner_key_3)
|
||||
|
||||
mutual_outer_key_5 = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5
|
||||
mutual_inner_key = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_4
|
||||
|
||||
mutual_outer_key_4 = client_med_outer_key_1 << mutual_outer_key_4
|
||||
outer_key_2 = mutual_outer_key_5 << outer_key_1
|
||||
|
||||
message = message << (mutual_inner_key < outer_key_2)
|
||||
message = message < mutual_outer_key_4
|
||||
return message
|
||||
|
||||
|
||||
def darc_phase_4(alphabet: AlphabetKey, darc_message: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys) -> DarcKey:
|
||||
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
|
||||
@@ -444,11 +497,13 @@ if __name__ == "__main__":
|
||||
mutual_keys.persistent.medium.alpha_key = mutual_keys.persistent.medium.alpha_key ^ client_keys.persistent.medium.alpha_key
|
||||
|
||||
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, server_keys, mutual_keys)
|
||||
phase3_medium = transceive_medium(medium_phase1, client_keys.persistent.medium, client_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
|
||||
phase3_alphabet = transceive_alphabet(alphabet_phase1, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
||||
(alphabet_phase2, medium_phase2) = darc_phase2(alphabet_phase1, medium_phase1, client_keys, mutual_keys)
|
||||
(phase3_alphabet, phase3_medium) = darc_phase3(alphabet_phase2, medium_phase2, client_keys, mutual_keys)
|
||||
#phase3_medium = transceive_medium(medium_phase1, client_keys.persistent.medium, client_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
|
||||
#phase3_alphabet = transceive_alphabet(alphabet_phase1, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
||||
original_message = OuterKey.init_matrix(height).matrix[0]
|
||||
#darc_message = merge_message_no_client(phase3_alphabet, phase3_medium, client_keys, mutual_keys, original_message)
|
||||
darc_message = merge_message(phase3_alphabet, phase3_medium,client_keys, mutual_keys, original_message)
|
||||
|
||||
message = darc_phase_4(alphabet, darc_message, server_keys, mutual_keys)
|
||||
|
||||
print(original_message)
|
||||
|
||||
Reference in New Issue
Block a user