refactor code and implement unit tests

This commit is contained in:
2024-05-29 07:18:30 -05:00
parent 4f3b37642f
commit 4fd3e6cc5a
16 changed files with 540 additions and 601 deletions

55
test/test_darc.py Normal file
View File

@@ -0,0 +1,55 @@
from src.client_darc_noclient import merge_message_no_client, darc_phase_2_3
from src.client_darc import merge_message, darc_phase2, darc_phase3
from src.models import (AlphabetKey, OuterKey, ClientKeys, ServerKeys,
MutualKeys)
from src.server_darc import darc_phase1, darc_phase_4
import pytest
@pytest.mark.parametrize("height, width", [(256, 10), (100, 70), (40, 50)])
def test_darc(height, width):
server_keys = ServerKeys.random_init(height, width)
mutual_keys = MutualKeys.random_init(height, width)
client_keys = ClientKeys.random_init(height, width)
alphabet = AlphabetKey.init_matrix(width, height, 255)
server_keys.persistent.data.alpha_key = server_keys.persistent.data.alpha_key ^ mutual_keys.persistent.data.alpha_key
server_keys.persistent.medium.alpha_key = server_keys.persistent.medium.alpha_key ^ mutual_keys.persistent.medium.alpha_key
mutual_keys.persistent.data.alpha_key = mutual_keys.persistent.data.alpha_key ^ client_keys.persistent.data.alpha_key
mutual_keys.persistent.medium.alpha_key = mutual_keys.persistent.medium.alpha_key ^ client_keys.persistent.medium.alpha_key
original_message = OuterKey.init_matrix(height).matrix[0]
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, server_keys, mutual_keys)
(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)
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)
assert original_message == message
@pytest.mark.parametrize("height, width", [(256, 10), (100, 70), (40, 50)])
def test_darc_no_client(height, width):
server_keys = ServerKeys.random_init(height, width)
mutual_keys = MutualKeys.random_init(height, width)
client_keys = ClientKeys.random_init(height, width)
alphabet = AlphabetKey.init_matrix(width, height, 255)
server_keys.persistent.data.alpha_key = server_keys.persistent.data.alpha_key ^ mutual_keys.persistent.data.alpha_key
server_keys.persistent.medium.alpha_key = server_keys.persistent.medium.alpha_key ^ mutual_keys.persistent.medium.alpha_key
mutual_keys.persistent.data.alpha_key = mutual_keys.persistent.data.alpha_key ^ client_keys.persistent.data.alpha_key
mutual_keys.persistent.medium.alpha_key = mutual_keys.persistent.medium.alpha_key ^ client_keys.persistent.medium.alpha_key
original_message = OuterKey.init_matrix(height).matrix[0]
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, server_keys, mutual_keys)
(phase3_alphabet, phase3_medium) = darc_phase_2_3(alphabet_phase1, medium_phase1, mutual_keys)
darc_message = merge_message_no_client(phase3_alphabet, phase3_medium, mutual_keys, original_message)
message = darc_phase_4(alphabet, darc_message, server_keys, mutual_keys)
assert original_message == message