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
|
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)
|
msg_len = len(input_sequence)
|
||||||
|
|
||||||
if msg_len < height:
|
if msg_len < height:
|
||||||
@@ -243,6 +243,59 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, m
|
|||||||
return message
|
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:
|
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
|
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
|
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
|
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)
|
(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)
|
(alphabet_phase2, medium_phase2) = darc_phase2(alphabet_phase1, medium_phase1, client_keys, mutual_keys)
|
||||||
phase3_alphabet = transceive_alphabet(alphabet_phase1, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
(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]
|
original_message = OuterKey.init_matrix(height).matrix[0]
|
||||||
darc_message = merge_message(phase3_alphabet, phase3_medium, client_keys, mutual_keys, original_message)
|
#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)
|
message = darc_phase_4(alphabet, darc_message, server_keys, mutual_keys)
|
||||||
|
|
||||||
print(original_message)
|
print(original_message)
|
||||||
|
|||||||
Reference in New Issue
Block a user