refactor substitution and server_darc.py
This commit is contained in:
@@ -44,18 +44,15 @@ def receive_alphabet(
|
|||||||
cdo1 = client_persistent_data_keys.outer_key_1 << client_ephemeral_data_keys.outer_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
|
cdo2 = client_persistent_data_keys.outer_key_2 << client_ephemeral_data_keys.outer_key_2
|
||||||
|
|
||||||
cdo1_cdo2 = cdo1 << cdo2
|
ceda = client_ephemeral_data_keys.alpha_key
|
||||||
|
cpda = client_persistent_data_keys.alpha_key
|
||||||
substitution = (
|
mpda = mutual_persistent_data_keys.alpha_key
|
||||||
client_ephemeral_data_keys.alpha_key ^
|
|
||||||
client_persistent_data_keys.alpha_key ^
|
|
||||||
mutual_persistent_data_keys.alpha_key
|
|
||||||
)
|
|
||||||
|
|
||||||
alphabet_phase2 = ((((
|
alphabet_phase2 = ((((
|
||||||
alphabet_phase1 ^
|
alphabet_phase1 ^
|
||||||
((substitution < mdo1) << (mdi1 < mdo2))
|
(((ceda ^ cpda ^ mpda) < mdo1) << (mdi1 < mdo2))
|
||||||
) < ~mdo3)) << cdi1) < (mdo3 << cdo1_cdo2)
|
) < ~mdo3)) << cdi1) < (mdo3 << cdo1 << cdo2)
|
||||||
|
|
||||||
return alphabet_phase2
|
return alphabet_phase2
|
||||||
|
|
||||||
|
|
||||||
@@ -75,16 +72,14 @@ def receive_medium(
|
|||||||
cmo1 = client_persistent_medium_keys.outer_key_1 << client_ephemeral_medium_keys.outer_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
|
cmo2 = client_persistent_medium_keys.outer_key_2 << client_ephemeral_medium_keys.outer_key_2
|
||||||
|
|
||||||
substitution = (
|
cema = client_ephemeral_medium_keys.alpha_key
|
||||||
client_ephemeral_medium_keys.alpha_key ^
|
cpma = client_persistent_medium_keys.alpha_key
|
||||||
client_persistent_medium_keys.alpha_key ^
|
mpma = mutual_persistent_medium_keys.alpha_key
|
||||||
mutual_persistent_medium_keys.alpha_key
|
|
||||||
)
|
|
||||||
|
|
||||||
medium_phase2 = (
|
medium_phase2 = (
|
||||||
(
|
(
|
||||||
medium_phase1 ^
|
medium_phase1 ^
|
||||||
((substitution < mmo1) << (mmi1 < mmo2))
|
(((cema ^ cpma ^ mpma) < mmo1) << (mmi1 < mmo2))
|
||||||
) << (cmi1 < mmo3)
|
) << (cmi1 < mmo3)
|
||||||
) < (cmo1 << cmo2)
|
) < (cmo1 << cmo2)
|
||||||
|
|
||||||
@@ -110,15 +105,13 @@ def transmit_alphabet(
|
|||||||
|
|
||||||
cdo1_cdo2 = cdo1 << cdo2
|
cdo1_cdo2 = cdo1 << cdo2
|
||||||
|
|
||||||
substitution = (
|
ceda = client_ephemeral_data_keys.alpha_key
|
||||||
client_ephemeral_data_keys.alpha_key ^
|
cpda = client_persistent_data_keys.alpha_key
|
||||||
client_persistent_data_keys.alpha_key ^
|
meda = mutual_ephemeral_data_keys.alpha_key
|
||||||
mutual_ephemeral_data_keys.alpha_key
|
|
||||||
)
|
|
||||||
|
|
||||||
alphabet_phase3 = (
|
alphabet_phase3 = (
|
||||||
(alphabet_phase2 << ((~cdi1 << mdpi2) < (mdo3 << cdo1_cdo2))) ^
|
(alphabet_phase2 << ((~cdi1 << mdpi2) < (mdo3 << cdo1_cdo2))) ^
|
||||||
(((substitution < mdo1) << ((mdi1 < mdo2) << (mdpi2 < mdo3))) < cdo1_cdo2)
|
((((ceda ^ cpda ^ meda) < mdo1) << ((mdi1 < mdo2) << (mdpi2 < mdo3))) < cdo1_cdo2)
|
||||||
)
|
)
|
||||||
return alphabet_phase3
|
return alphabet_phase3
|
||||||
|
|
||||||
@@ -142,15 +135,13 @@ def transmit_medium(
|
|||||||
|
|
||||||
cmo1_cmo2 = cmo1 << cmo2
|
cmo1_cmo2 = cmo1 << cmo2
|
||||||
|
|
||||||
substitution = (
|
cpma = client_persistent_medium_keys.alpha_key
|
||||||
client_persistent_medium_keys.alpha_key ^
|
cema = client_ephemeral_medium_keys.alpha_key
|
||||||
client_ephemeral_medium_keys.alpha_key ^
|
mema = mutual_ephemeral_medium_keys.alpha_key
|
||||||
mutual_ephemeral_medium_keys.alpha_key
|
|
||||||
)
|
|
||||||
|
|
||||||
medium_phase3 = (
|
medium_phase3 = (
|
||||||
((medium_phase2 < ~cmo1_cmo2) << ((~cmi1 << mmpi1) < mmo3)) ^
|
((medium_phase2 < ~cmo1_cmo2) << ((~cmi1 << mmpi1) < mmo3)) ^
|
||||||
((substitution < mmo1) << ((mmi1 < mmo2) << (mmpi1 < mmo3)))
|
(((cpma ^ cema ^ mema) < mmo1) << ((mmi1 < mmo2) << (mmpi1 < mmo3)))
|
||||||
) < cmo1_cmo2
|
) < cmo1_cmo2
|
||||||
|
|
||||||
return medium_phase3
|
return medium_phase3
|
||||||
|
|||||||
@@ -5,9 +5,21 @@ from src.models import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def darc_phase1(alphabet: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys):
|
def darc_phase1(alphabet: AlphabetKey, medium: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys):
|
||||||
alphabet_phase1 = translate_data(alphabet, server_keys.persistent.data, server_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
alphabet_phase1 = translate_data(
|
||||||
medium_phase1 = translate_medium(server_keys.persistent.medium, server_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
|
alphabet,
|
||||||
|
server_keys.persistent.data,
|
||||||
|
server_keys.ephemeral.data,
|
||||||
|
mutual_keys.persistent.data,
|
||||||
|
mutual_keys.ephemeral.data
|
||||||
|
)
|
||||||
|
medium_phase1 = translate_medium(
|
||||||
|
medium,
|
||||||
|
server_keys.persistent.medium,
|
||||||
|
server_keys.ephemeral.medium,
|
||||||
|
mutual_keys.persistent.medium,
|
||||||
|
mutual_keys.ephemeral.medium
|
||||||
|
)
|
||||||
return alphabet_phase1, medium_phase1
|
return alphabet_phase1, medium_phase1
|
||||||
|
|
||||||
|
|
||||||
@@ -26,80 +38,109 @@ def translate_data(
|
|||||||
mdo2 = mutual_persistent_data_keys.outer_key_2 << mutual_ephemeral_data_keys.outer_key_2
|
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
|
mdo3 = mutual_persistent_data_keys.outer_key_3 << mutual_ephemeral_data_keys.outer_key_3
|
||||||
|
|
||||||
substitution = server_persistent_data_keys.alpha_key ^ server_ephemeral_data_keys.alpha_key
|
spda = server_persistent_data_keys.alpha_key
|
||||||
|
seda = server_ephemeral_data_keys.alpha_key
|
||||||
alpha_phase1 = (
|
alpha_phase1 = (
|
||||||
((alphabet < sdo1) << (sdi1 < mdo3)) ^
|
((alphabet < sdo1) << (sdi1 < mdo3)) ^
|
||||||
((substitution < mdo1) << (mdi1 < mdo2))
|
(((spda ^ seda) < mdo1) << (mdi1 < mdo2))
|
||||||
)
|
)
|
||||||
|
|
||||||
return alpha_phase1
|
return alpha_phase1
|
||||||
|
|
||||||
|
|
||||||
def translate_medium(server_persistent_keys: ServerPersistentMediumKeys, server_ephemeral_keys: ServerEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
|
def translate_medium(
|
||||||
mutual_inner_key = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
|
medium: AlphabetKey,
|
||||||
mutual_outer_key_1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
server_persistent_medium_keys: ServerPersistentMediumKeys,
|
||||||
mutual_outer_key_2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
server_ephemeral_medium_keys: ServerEphemeralMediumKeys,
|
||||||
|
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
|
||||||
|
spma = server_persistent_medium_keys.alpha_key
|
||||||
|
sema = server_ephemeral_medium_keys.alpha_key
|
||||||
|
|
||||||
height = len(mutual_inner_key.matrix)
|
operand = medium ^ (((spma ^ sema) < mmo1) << (mmi1 < mmo2))
|
||||||
width = len(mutual_inner_key.matrix[0])
|
|
||||||
medium = AlphabetKey(matrix=[[0 for _ in range(width)] for _ in range(height)])
|
|
||||||
|
|
||||||
operand1 = server_persistent_keys.alpha_key < mutual_outer_key_1
|
|
||||||
operand2 = server_ephemeral_keys.alpha_key < mutual_outer_key_1
|
|
||||||
|
|
||||||
mutual_inner_key = mutual_inner_key < mutual_outer_key_2
|
|
||||||
operand = medium ^ (operand1 << mutual_inner_key) ^ (operand2 << mutual_inner_key)
|
|
||||||
return operand
|
return operand
|
||||||
|
|
||||||
|
|
||||||
def darc_phase_4(alphabet: AlphabetKey, darc_message: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys):
|
def darc_phase_4(alphabet: AlphabetKey, darc_message: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys):
|
||||||
medium_unwrapped = phase4_unwrap_medium(darc_message, server_keys.persistent.medium, server_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
|
medium_unwrapped = phase4_unwrap_medium(
|
||||||
translated_alpha = phase4_translate_alphabet(alphabet, server_keys.persistent.data, server_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
darc_message,
|
||||||
|
server_keys.persistent.medium,
|
||||||
|
server_keys.ephemeral.medium,
|
||||||
|
mutual_keys.persistent.medium,
|
||||||
|
mutual_keys.ephemeral.medium
|
||||||
|
)
|
||||||
|
translated_alpha = phase4_translate_alphabet(
|
||||||
|
alphabet,
|
||||||
|
server_keys.persistent.data,
|
||||||
|
server_keys.ephemeral.data,
|
||||||
|
mutual_keys.persistent.data,
|
||||||
|
mutual_keys.ephemeral.data
|
||||||
|
)
|
||||||
return translated_alpha, medium_unwrapped
|
return translated_alpha, medium_unwrapped
|
||||||
|
|
||||||
|
|
||||||
def phase4_translate_alphabet(alphabet: AlphabetKey, server_persistent_keys: ServerPersistentDataKeys, server_ephemeral_keys: ServerEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
|
def phase4_translate_alphabet(
|
||||||
mdo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
|
alphabet: AlphabetKey,
|
||||||
mpi2_mdo3 = mutual_persistent_keys.inner_key_2 < mdo3
|
server_persistent_data_keys: ServerPersistentDataKeys,
|
||||||
mdo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
server_ephemeral_data_keys: ServerEphemeralDataKeys,
|
||||||
|
mutual_persistent_data_keys: MutualPersistentDataKeys,
|
||||||
|
mutual_ephemeral_data_keys: MutualEphemeralDataKeys
|
||||||
|
):
|
||||||
|
|
||||||
mdi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
|
mdi1 = mutual_persistent_data_keys.inner_key_1 << mutual_ephemeral_data_keys.inner_key_1
|
||||||
mdi1_mdo2_mpi2_mdo3 = (mdi1 < mdo2) << mpi2_mdo3
|
mdo1 = mutual_persistent_data_keys.outer_key_1 << mutual_ephemeral_data_keys.outer_key_1
|
||||||
sdi1_mpdi2__mdo3 = (server_persistent_keys.inner_key_1 << server_ephemeral_keys.inner_key_1 << mutual_persistent_keys.inner_key_2) < mdo3
|
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
|
||||||
|
mpdi2 = mutual_persistent_data_keys.inner_key_2
|
||||||
|
|
||||||
sdo1 = server_persistent_keys.outer_key_1 << server_ephemeral_keys.outer_key_1
|
sdi1 = server_persistent_data_keys.inner_key_1 << server_ephemeral_data_keys.inner_key_1
|
||||||
mdo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
sdo1 = server_persistent_data_keys.outer_key_1 << server_ephemeral_data_keys.outer_key_1
|
||||||
|
|
||||||
sub_mdo1 = (server_persistent_keys.alpha_key ^ server_ephemeral_keys.alpha_key ^ mutual_persistent_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key) < mdo1
|
spda = server_persistent_data_keys.alpha_key
|
||||||
translated_alpha = ((alphabet < sdo1) << sdi1_mpdi2__mdo3) ^ (sub_mdo1 << mdi1_mdo2_mpi2_mdo3)
|
seda = server_ephemeral_data_keys.alpha_key
|
||||||
|
mpda = mutual_persistent_data_keys.alpha_key
|
||||||
|
meda = mutual_ephemeral_data_keys.alpha_key
|
||||||
|
|
||||||
|
translated_alpha = (
|
||||||
|
((alphabet < sdo1) << ((sdi1 << mpdi2) < mdo3)) ^
|
||||||
|
(((spda ^ seda ^ mpda ^ meda) < mdo1) << ((mdi1 < mdo2) << (mpdi2 < mdo3)))
|
||||||
|
)
|
||||||
return translated_alpha
|
return translated_alpha
|
||||||
|
|
||||||
|
|
||||||
def phase4_unwrap_medium(darc_message: AlphabetKey, server_persistent_keys: ServerPersistentMediumKeys, server_ephemeral_keys: ServerEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
|
def phase4_unwrap_medium(
|
||||||
mmo6 = mutual_persistent_keys.outer_key_6 << mutual_ephemeral_keys.outer_key_6
|
darc_message: AlphabetKey,
|
||||||
mmo4 = mutual_persistent_keys.outer_key_4 << mutual_ephemeral_keys.outer_key_4
|
server_persistent_medium_keys: ServerPersistentMediumKeys,
|
||||||
|
server_ephemeral_medium_keys: ServerEphemeralMediumKeys,
|
||||||
|
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
|
||||||
|
mmi3 = mutual_persistent_medium_keys.inner_key_3 << mutual_ephemeral_medium_keys.inner_key_3
|
||||||
|
mmi4 = mutual_persistent_medium_keys.inner_key_4 << mutual_ephemeral_medium_keys.inner_key_4
|
||||||
|
mpmi2 = mutual_persistent_medium_keys.inner_key_2
|
||||||
|
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
|
||||||
|
mmo4 = mutual_persistent_medium_keys.outer_key_4 << mutual_ephemeral_medium_keys.outer_key_4
|
||||||
|
mmo5 = mutual_persistent_medium_keys.outer_key_5 << mutual_ephemeral_medium_keys.outer_key_5
|
||||||
|
mmo6 = mutual_persistent_medium_keys.outer_key_6 << mutual_ephemeral_medium_keys.outer_key_6
|
||||||
|
|
||||||
nmmo6_nmmo4 = ~(mmo4 << mmo6)
|
nmmo6_nmmo4 = ~(mmo4 << mmo6)
|
||||||
|
|
||||||
mmo5 = mutual_persistent_keys.outer_key_5 << mutual_ephemeral_keys.outer_key_5
|
spma = server_persistent_medium_keys.alpha_key
|
||||||
mmo5_nmmo6_nmmo4 = mmo5 << nmmo6_nmmo4
|
sema = server_ephemeral_medium_keys.alpha_key
|
||||||
|
mpma = mutual_persistent_medium_keys.alpha_key
|
||||||
|
mema = mutual_ephemeral_medium_keys.alpha_key
|
||||||
|
|
||||||
mmo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
medium_unwrapped = (
|
||||||
|
((darc_message < ~mmo4) << ~(mmi4 < (mmo5 << nmmo6_nmmo4))) ^
|
||||||
mmo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
|
(((spma ^ sema ^ mpma ^ mema) < mmo1) << ((mmi1 < mmo2) << (mpmi2 < mmo3)))
|
||||||
|
) << (~mmi3 < nmmo6_nmmo4)
|
||||||
mmi3 = mutual_persistent_keys.inner_key_3 << mutual_ephemeral_keys.inner_key_3
|
|
||||||
mmi1 = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
|
|
||||||
|
|
||||||
mpmi2 = mutual_persistent_keys.inner_key_2 < mmo3
|
|
||||||
|
|
||||||
mmi4 = mutual_persistent_keys.inner_key_4 << mutual_ephemeral_keys.inner_key_4
|
|
||||||
|
|
||||||
mmo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
|
||||||
|
|
||||||
sub_med_mmo1 = (server_persistent_keys.alpha_key ^ server_ephemeral_keys.alpha_key ^ mutual_persistent_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key) < mmo1
|
|
||||||
|
|
||||||
medium_unwrapped = (((darc_message < ~mmo4) << ~(mmi4 < mmo5_nmmo6_nmmo4)) ^ (sub_med_mmo1 << ((mmi1 < mmo2) << mpmi2))) << (~mmi3 < nmmo6_nmmo4)
|
|
||||||
return medium_unwrapped
|
return medium_unwrapped
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,12 +12,13 @@ import pytest
|
|||||||
)
|
)
|
||||||
def test_darc(height, width, message_len):
|
def test_darc(height, width, message_len):
|
||||||
alphabet = AlphabetKey.init_matrix(width, height, 255)
|
alphabet = AlphabetKey.init_matrix(width, height, 255)
|
||||||
|
medium = AlphabetKey(matrix=[[0 for _ in range(width)] for _ in range(height)])
|
||||||
|
|
||||||
server_keys, mutual_keys, client_keys = generate_keys(height, width)
|
server_keys, mutual_keys, client_keys = generate_keys(height, width)
|
||||||
original_message = OuterKey.init_matrix(height).matrix[0]
|
original_message = OuterKey.init_matrix(height).matrix[0]
|
||||||
original_message = original_message[:message_len]
|
original_message = original_message[:message_len]
|
||||||
|
|
||||||
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, server_keys, mutual_keys)
|
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, medium, server_keys, mutual_keys)
|
||||||
|
|
||||||
(alphabet_phase2, medium_phase2) = darc_phase2(alphabet_phase1, medium_phase1, client_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)
|
(phase3_alphabet, phase3_medium) = darc_phase3(alphabet_phase2, medium_phase2, client_keys, mutual_keys)
|
||||||
@@ -35,11 +36,13 @@ def test_darc(height, width, message_len):
|
|||||||
)
|
)
|
||||||
def test_darc_no_client(height, width, message_len):
|
def test_darc_no_client(height, width, message_len):
|
||||||
alphabet = AlphabetKey.init_matrix(width, height, 255)
|
alphabet = AlphabetKey.init_matrix(width, height, 255)
|
||||||
|
medium = AlphabetKey(matrix=[[0 for _ in range(width)] for _ in range(height)])
|
||||||
|
|
||||||
server_keys, mutual_keys, client_keys = generate_keys(height, width)
|
server_keys, mutual_keys, client_keys = generate_keys(height, width)
|
||||||
|
|
||||||
original_message = OuterKey.init_matrix(height).matrix[0]
|
original_message = OuterKey.init_matrix(height).matrix[0]
|
||||||
original_message = original_message[:message_len]
|
original_message = original_message[:message_len]
|
||||||
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, server_keys, mutual_keys)
|
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, medium, server_keys, mutual_keys)
|
||||||
|
|
||||||
(phase3_alphabet, phase3_medium) = darc_phase_2_3(alphabet_phase1, medium_phase1, 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)
|
darc_message = merge_message_no_client(phase3_alphabet, phase3_medium, mutual_keys, original_message)
|
||||||
|
|||||||
Reference in New Issue
Block a user