split mutual persistent into own class
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
from src.models import ServerEphemeralKeys, ServerPersistentKeys, ClientEphemeralKeys, ClientPersistentKeys, \
|
from src.models import ServerEphemeralKeys, ServerPersistentKeys, ClientEphemeralKeys, ClientPersistentKeys, \
|
||||||
MutualEphemeralKeys, AlphabetKey, DarcKey, OuterShuffleKey
|
MutualEphemeralKeys, AlphabetKey, DarcKey, OuterShuffleKey, MutualPersistentKeys
|
||||||
import json
|
import json
|
||||||
|
|
||||||
height = 10
|
height = 10
|
||||||
@@ -7,13 +7,18 @@ width = 7
|
|||||||
block_size = 10
|
block_size = 10
|
||||||
|
|
||||||
|
|
||||||
def translate_data(server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
def darc_phase1(alphabet: DarcKey, server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
function_ephemeral_key_applied = server_persistent_keys.FunctionKey << mutual_ephemeral_keys.FunctionEphemeralKey
|
alphabet_phase1 = translate_data(alphabet, server_persistent_keys, server_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
outer_function_ephemeral_key_applied = server_persistent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionEphemeralKey
|
medium = translate_medium(server_persistent_keys, server_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
outer_function_function_ephemeral_key_applied = server_persistent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionEphemeralKey
|
return alphabet_phase1, medium
|
||||||
|
|
||||||
|
def translate_data(alphabet: DarcKey, server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
|
function_ephemeral_key_applied = mutual_persistent_keys.Inner1 << mutual_ephemeral_keys.Inner1
|
||||||
|
outer_function_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionKey
|
||||||
|
outer_function_function_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionKey
|
||||||
outer_server_shuffle_ephemeral_key_applied = server_persistent_keys.OuterServerShuffleKey << server_ephemeral_keys.OuterServerShuffleEphemeralKey
|
outer_server_shuffle_ephemeral_key_applied = server_persistent_keys.OuterServerShuffleKey << server_ephemeral_keys.OuterServerShuffleEphemeralKey
|
||||||
outer_server_shuffle_function_ephemeral_key_applied = server_persistent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionEphemeralKey
|
outer_server_shuffle_function_ephemeral_key_applied = mutual_persistent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionKey
|
||||||
input_data = server_ephemeral_keys.Alphabet < outer_server_shuffle_ephemeral_key_applied
|
input_data = alphabet < outer_server_shuffle_ephemeral_key_applied
|
||||||
server_shuffle_ephemeral_key_applied = server_ephemeral_keys.ServerShuffleEphemeralKey << server_persistent_keys.ServerShuffleKey # TODO: should this be the other way around?
|
server_shuffle_ephemeral_key_applied = server_ephemeral_keys.ServerShuffleEphemeralKey << server_persistent_keys.ServerShuffleKey # TODO: should this be the other way around?
|
||||||
server_shuffle_ephemeral_key_applied = server_shuffle_ephemeral_key_applied < outer_server_shuffle_function_ephemeral_key_applied
|
server_shuffle_ephemeral_key_applied = server_shuffle_ephemeral_key_applied < outer_server_shuffle_function_ephemeral_key_applied
|
||||||
input_data = input_data << server_shuffle_ephemeral_key_applied
|
input_data = input_data << server_shuffle_ephemeral_key_applied
|
||||||
@@ -30,11 +35,11 @@ def translate_data(server_persistent_keys: ServerPersistentKeys, server_ephemera
|
|||||||
operand = operand ^ (operand1 << inner_function_shuffled) ^ (operand2 << inner_function_shuffled)
|
operand = operand ^ (operand1 << inner_function_shuffled) ^ (operand2 << inner_function_shuffled)
|
||||||
return operand
|
return operand
|
||||||
|
|
||||||
def translate_medium(server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
def translate_medium(server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
|
|
||||||
function_ephemeral_key_applied = server_persistent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumEphemeralKey
|
function_ephemeral_key_applied = mutual_persistent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumKey
|
||||||
outer_function_ephemeral_key_applied = server_persistent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
outer_function_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
||||||
outer_function_function_ephemeral_key_applied = server_persistent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
outer_function_function_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
||||||
|
|
||||||
input_data = AlphabetKey(matrix=[[0 for _ in range(width)] for _ in range(height)])
|
input_data = AlphabetKey(matrix=[[0 for _ in range(width)] for _ in range(height)])
|
||||||
|
|
||||||
@@ -51,26 +56,21 @@ def translate_medium(server_persistent_keys: ServerPersistentKeys, server_epheme
|
|||||||
return operand
|
return operand
|
||||||
|
|
||||||
|
|
||||||
def darc_phase1(server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
|
||||||
alphabet = translate_data(server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
|
||||||
medium = translate_medium(server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
|
||||||
return alphabet, medium
|
|
||||||
|
|
||||||
|
def receive_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
def receive_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
function_key_applied = mutual_persistent_keys.Inner1 << mutual_ephemeral_keys.Inner1
|
||||||
function_key_applied = client_persistent_keys.FunctionKey << mutual_ephemeral_keys.FunctionEphemeralKey
|
outer_function_key_applied = mutual_persistent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionKey
|
||||||
outer_function_key_applied = client_persistent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionEphemeralKey
|
outer_function_function_key_applied = mutual_persistent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionKey
|
||||||
outer_function_function_key_applied = client_persistent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionEphemeralKey
|
|
||||||
|
|
||||||
inner_function_key_applied = function_key_applied < outer_function_function_key_applied
|
inner_function_key_applied = function_key_applied < outer_function_function_key_applied
|
||||||
operand = alphabet
|
operand = alphabet
|
||||||
operand1 = client_ephemeral_keys.ClientEphemeralKey < outer_function_key_applied
|
operand1 = client_ephemeral_keys.ClientEphemeralKey < outer_function_key_applied
|
||||||
operand2 = client_persistent_keys.ClientKey < outer_function_key_applied
|
operand2 = client_persistent_keys.ClientKey < outer_function_key_applied
|
||||||
operand3 = client_persistent_keys.MutualKey < outer_function_key_applied
|
operand3 = mutual_persistent_keys.MutualKey < outer_function_key_applied
|
||||||
|
|
||||||
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
||||||
|
|
||||||
outer_server_shuffle_function_key_applied = client_persistent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionEphemeralKey
|
outer_server_shuffle_function_key_applied = mutual_persistent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionKey
|
||||||
client_shuffle_key_a_applied = client_persistent_keys.ClientShuffleKeyA << client_ephemeral_keys.ClientShuffleEphemeralKeyA
|
client_shuffle_key_a_applied = client_persistent_keys.ClientShuffleKeyA << client_ephemeral_keys.ClientShuffleEphemeralKeyA
|
||||||
|
|
||||||
result = result << (client_shuffle_key_a_applied < outer_server_shuffle_function_key_applied)
|
result = result << (client_shuffle_key_a_applied < outer_server_shuffle_function_key_applied)
|
||||||
@@ -82,119 +82,118 @@ def receive_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersistent
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def receive_medium(medium: DarcKey, client_peristent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
def receive_medium(medium: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
function_key_applied = client_peristent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumEphemeralKey
|
function_key_applied = mutual_persistent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumKey
|
||||||
outer_function_key_applied = client_peristent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
outer_function_key_applied = mutual_persistent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
||||||
outer_function_function_key_applied = client_peristent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
outer_function_function_key_applied = mutual_persistent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
||||||
|
|
||||||
inner_function_key_applied = function_key_applied < outer_function_function_key_applied
|
inner_function_key_applied = function_key_applied < outer_function_function_key_applied
|
||||||
operand = medium
|
operand = medium
|
||||||
operand1 = client_ephemeral_keys.ClientMediumEphemeralKey < outer_function_key_applied
|
operand1 = client_ephemeral_keys.ClientMediumEphemeralKey < outer_function_key_applied
|
||||||
operand2 = client_peristent_keys.ClientMediumKey < outer_function_key_applied
|
operand2 = client_persistent_keys.ClientMediumKey < outer_function_key_applied
|
||||||
operand3 = client_peristent_keys.MutualMediumKey < outer_function_key_applied
|
operand3 = mutual_persistent_keys.MutualMediumKey < outer_function_key_applied
|
||||||
|
|
||||||
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
||||||
|
|
||||||
client_shuffle_key_a_applied = client_peristent_keys.ClientShuffleMediumKeyA << client_ephemeral_keys.ClientShuffleMediumEphemeralKeyA
|
client_shuffle_key_a_applied = client_persistent_keys.ClientShuffleMediumKeyA << client_ephemeral_keys.ClientShuffleMediumEphemeralKeyA
|
||||||
outer_server_shuffle_function_key_applied = client_peristent_keys.OuterServerShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterServerShuffleFunctionMediumEphemeralKey
|
outer_server_shuffle_function_key_applied = mutual_persistent_keys.OuterServerShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterServerShuffleFunctionMediumEphemeralKey
|
||||||
client_shuffle_key_a_applied = client_shuffle_key_a_applied < outer_server_shuffle_function_key_applied
|
client_shuffle_key_a_applied = client_shuffle_key_a_applied < outer_server_shuffle_function_key_applied
|
||||||
result = result << client_shuffle_key_a_applied
|
result = result << client_shuffle_key_a_applied
|
||||||
|
|
||||||
outer_client_shuffle_key_applied = client_peristent_keys.OuterClientShuffleMediumKey << client_ephemeral_keys.OuterClientShuffleMediumEphemeralKey
|
outer_client_shuffle_key_applied = client_persistent_keys.OuterClientShuffleMediumKey << client_ephemeral_keys.OuterClientShuffleMediumEphemeralKey
|
||||||
outer_client_shuffle_function_key_applied = client_peristent_keys.OuterClientShuffleFunctionMediumKey << client_ephemeral_keys.OuterClientShuffleFunctionMediumEphemeralKey
|
outer_client_shuffle_function_key_applied = client_persistent_keys.OuterClientShuffleFunctionMediumKey << client_ephemeral_keys.OuterClientShuffleFunctionMediumEphemeralKey
|
||||||
outer_client_shuffle_key_applied = outer_client_shuffle_key_applied << outer_client_shuffle_function_key_applied
|
outer_client_shuffle_key_applied = outer_client_shuffle_key_applied << outer_client_shuffle_function_key_applied
|
||||||
result = result < outer_client_shuffle_key_applied
|
result = result < outer_client_shuffle_key_applied
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def darc_phase2(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
def darc_phase2(alphabet: DarcKey, medium: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
alphabet = receive_alphabet(alphabet, client_peristent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
alphabet_phase2 = receive_alphabet(alphabet, client_persistent_keys, client_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
medium = receive_medium(medium, client_peristent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
medium = receive_medium(medium, client_persistent_keys, client_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
return alphabet, medium
|
return alphabet_phase2, medium
|
||||||
|
|
||||||
|
|
||||||
|
def transmit_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
def transmit_alphabet(alphabet: DarcKey, client_peristent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
outer_server_shuffle_function_key_applied = mutual_persistent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionKey
|
||||||
outer_server_shuffle_function_key_applied = client_peristent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionEphemeralKey
|
outer_client_shuffle_key_applied = client_persistent_keys.OuterClientShuffleKey << client_ephemeral_keys.OuterClientShuffleEphemeralKey
|
||||||
outer_client_shuffle_key_applied = client_peristent_keys.OuterClientShuffleKey << client_ephemeral_keys.OuterClientShuffleEphemeralKey
|
outer_client_shuffle_function_key_applied = client_persistent_keys.OuterClientShuffleFunctionKey << client_ephemeral_keys.OuterClientShuffleFunctionEphemeralKey
|
||||||
outer_client_shuffle_function_key_applied = client_peristent_keys.OuterClientShuffleFunctionKey << client_ephemeral_keys.OuterClientShuffleFunctionEphemeralKey
|
|
||||||
|
|
||||||
input_outer_client_shuffle_key = outer_client_shuffle_key_applied << outer_client_shuffle_function_key_applied
|
input_outer_client_shuffle_key = outer_client_shuffle_key_applied << outer_client_shuffle_function_key_applied
|
||||||
input_outer_server_shuffle_function_key = outer_server_shuffle_function_key_applied << input_outer_client_shuffle_key
|
input_outer_server_shuffle_function_key = outer_server_shuffle_function_key_applied << input_outer_client_shuffle_key
|
||||||
outer_function_function_key_applied = client_peristent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionEphemeralKey
|
outer_function_function_key_applied = mutual_persistent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionKey
|
||||||
outer_function_function_key_applied = outer_function_function_key_applied << input_outer_client_shuffle_key
|
outer_function_function_key_applied = outer_function_function_key_applied << input_outer_client_shuffle_key
|
||||||
|
|
||||||
function_key_applied = client_peristent_keys.FunctionKey << mutual_ephemeral_keys.FunctionEphemeralKey
|
function_key_applied = mutual_persistent_keys.Inner1 << mutual_ephemeral_keys.Inner1
|
||||||
function_key_applied = function_key_applied < outer_function_function_key_applied
|
function_key_applied = function_key_applied < outer_function_function_key_applied
|
||||||
|
|
||||||
reordered_shuffle_key_x = client_peristent_keys.ClientShuffleKeyX < input_outer_server_shuffle_function_key
|
reordered_shuffle_key_x = mutual_persistent_keys.ClientShuffleKeyX < input_outer_server_shuffle_function_key
|
||||||
|
|
||||||
function_ephemeral_key_applied = function_key_applied << reordered_shuffle_key_x
|
function_ephemeral_key_applied = function_key_applied << reordered_shuffle_key_x
|
||||||
|
|
||||||
client_shuffle_key_b = (~client_persistent_keys.ClientShuffleKeyA) << client_peristent_keys.ClientShuffleKeyX
|
client_shuffle_key_b = (~client_persistent_keys.ClientShuffleKeyA) << mutual_persistent_keys.ClientShuffleKeyX
|
||||||
client_shuffle_ephemeral_key_b = ~client_ephemeral_keys.ClientShuffleEphemeralKeyA
|
client_shuffle_ephemeral_key_b = ~client_ephemeral_keys.ClientShuffleEphemeralKeyA
|
||||||
input_client_shuffle_key_b = client_shuffle_ephemeral_key_b << client_shuffle_key_b
|
input_client_shuffle_key_b = client_shuffle_ephemeral_key_b << client_shuffle_key_b
|
||||||
input_client_shuffle_key_b = input_client_shuffle_key_b < input_outer_server_shuffle_function_key
|
input_client_shuffle_key_b = input_client_shuffle_key_b < input_outer_server_shuffle_function_key
|
||||||
shuffled_items = alphabet << input_client_shuffle_key_b
|
shuffled_items = alphabet << input_client_shuffle_key_b
|
||||||
|
|
||||||
outer_function_key_applied = client_peristent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionEphemeralKey
|
outer_function_key_applied = mutual_persistent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionKey
|
||||||
input_outer_function_key = outer_function_key_applied << input_outer_client_shuffle_key
|
input_outer_function_key = outer_function_key_applied << input_outer_client_shuffle_key
|
||||||
|
|
||||||
inner_function_key_applied = function_ephemeral_key_applied
|
inner_function_key_applied = function_ephemeral_key_applied
|
||||||
operand = shuffled_items
|
operand = shuffled_items
|
||||||
operand1 = client_ephemeral_keys.ClientEphemeralKey < input_outer_function_key
|
operand1 = client_ephemeral_keys.ClientEphemeralKey < input_outer_function_key
|
||||||
operand2 = client_peristent_keys.ClientKey < input_outer_function_key
|
operand2 = client_persistent_keys.ClientKey < input_outer_function_key
|
||||||
operand3 = mutual_ephemeral_keys.MutualEphemeralKey < input_outer_function_key
|
operand3 = mutual_ephemeral_keys.MutualKey < input_outer_function_key
|
||||||
|
|
||||||
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def transmit_medium(medium: DarcKey, client_peristent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
def transmit_medium(medium: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
client_shuffle_ephemeral_key_b = ~client_ephemeral_keys.ClientShuffleMediumEphemeralKeyA
|
client_shuffle_ephemeral_key_b = ~client_ephemeral_keys.ClientShuffleMediumEphemeralKeyA
|
||||||
outer_server_shuffle_function_key_applied = client_peristent_keys.OuterServerShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterServerShuffleFunctionMediumEphemeralKey
|
outer_server_shuffle_function_key_applied = mutual_persistent_keys.OuterServerShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterServerShuffleFunctionMediumEphemeralKey
|
||||||
outer_client_shuffle_key_applied = client_peristent_keys.OuterClientShuffleMediumKey << client_ephemeral_keys.OuterClientShuffleMediumEphemeralKey
|
outer_client_shuffle_key_applied = client_persistent_keys.OuterClientShuffleMediumKey << client_ephemeral_keys.OuterClientShuffleMediumEphemeralKey
|
||||||
|
|
||||||
outer_client_suffle_function_key_applied = client_peristent_keys.OuterClientShuffleFunctionMediumKey << client_ephemeral_keys.OuterClientShuffleFunctionMediumEphemeralKey
|
outer_client_suffle_function_key_applied = client_persistent_keys.OuterClientShuffleFunctionMediumKey << client_ephemeral_keys.OuterClientShuffleFunctionMediumEphemeralKey
|
||||||
input_outer_client_shuffle_key = outer_client_shuffle_key_applied << outer_client_suffle_function_key_applied
|
input_outer_client_shuffle_key = outer_client_shuffle_key_applied << outer_client_suffle_function_key_applied
|
||||||
input_outer_server_shuffle_function_key = outer_server_shuffle_function_key_applied << input_outer_client_shuffle_key
|
input_outer_server_shuffle_function_key = outer_server_shuffle_function_key_applied << input_outer_client_shuffle_key
|
||||||
|
|
||||||
outer_function_function_key_applied = client_peristent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
outer_function_function_key_applied = mutual_persistent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
||||||
outer_function_function_key_applied = outer_function_function_key_applied << input_outer_client_shuffle_key
|
outer_function_function_key_applied = outer_function_function_key_applied << input_outer_client_shuffle_key
|
||||||
|
|
||||||
function_key_applied = client_peristent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumEphemeralKey
|
function_key_applied = mutual_persistent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumKey
|
||||||
function_key_applied = function_key_applied < outer_function_function_key_applied
|
function_key_applied = function_key_applied < outer_function_function_key_applied
|
||||||
|
|
||||||
reordered_shuffle_key_x = client_peristent_keys.ClientShuffleMediumKeyX < input_outer_server_shuffle_function_key
|
reordered_shuffle_key_x = mutual_persistent_keys.ClientShuffleMediumKeyX < input_outer_server_shuffle_function_key
|
||||||
|
|
||||||
function_ephemeral_key_applied = function_key_applied << reordered_shuffle_key_x
|
function_ephemeral_key_applied = function_key_applied << reordered_shuffle_key_x
|
||||||
|
|
||||||
client_shuffle_key_b = (~client_peristent_keys.ClientShuffleMediumKeyA) << client_peristent_keys.ClientShuffleMediumKeyX
|
client_shuffle_key_b = (~client_persistent_keys.ClientShuffleMediumKeyA) << mutual_persistent_keys.ClientShuffleMediumKeyX
|
||||||
input_client_shuffle_key_b = client_shuffle_ephemeral_key_b << client_shuffle_key_b
|
input_client_shuffle_key_b = client_shuffle_ephemeral_key_b << client_shuffle_key_b
|
||||||
input_client_shuffle_key_b = input_client_shuffle_key_b < input_outer_server_shuffle_function_key
|
input_client_shuffle_key_b = input_client_shuffle_key_b < input_outer_server_shuffle_function_key
|
||||||
shuffled_items = medium << input_client_shuffle_key_b
|
shuffled_items = medium << input_client_shuffle_key_b
|
||||||
outer_function_key_applied = client_peristent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
outer_function_key_applied = mutual_persistent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
||||||
input_outer_function_key = outer_function_key_applied << input_outer_client_shuffle_key
|
input_outer_function_key = outer_function_key_applied << input_outer_client_shuffle_key
|
||||||
|
|
||||||
inner_function_key_applied = function_ephemeral_key_applied
|
inner_function_key_applied = function_ephemeral_key_applied
|
||||||
operand = shuffled_items
|
operand = shuffled_items
|
||||||
operand1 = client_ephemeral_keys.ClientMediumEphemeralKey < input_outer_function_key
|
operand1 = client_ephemeral_keys.ClientMediumEphemeralKey < input_outer_function_key
|
||||||
operand2 = client_peristent_keys.ClientMediumKey < input_outer_function_key
|
operand2 = client_persistent_keys.ClientMediumKey < input_outer_function_key
|
||||||
operand3 = mutual_ephemeral_keys.MutualMediumEphemeralKey < input_outer_function_key
|
operand3 = mutual_ephemeral_keys.MutualMediumKey < input_outer_function_key
|
||||||
|
|
||||||
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def darc_phase3(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
def darc_phase3(alphabet: DarcKey, medium: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
alphabet = transmit_alphabet(alphabet, client_peristent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
alphabet_phase3 = transmit_alphabet(alphabet, client_persistent_keys, client_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
medium = transmit_medium(medium, client_peristent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
medium = transmit_medium(medium, client_persistent_keys, client_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
return alphabet, medium
|
return alphabet_phase3, medium
|
||||||
|
|
||||||
def merge_message(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys, input_sequence: list[int]):
|
def merge_message(alphabet: DarcKey, medium: DarcKey, client_persistent_keys: ClientPersistentKeys, client_ephemeral_keys: ClientEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys, input_sequence: list[int]):
|
||||||
outer_client_shuffle_alphabet_key_applied = client_peristent_keys.OuterClientShuffleKey << client_ephemeral_keys.OuterClientShuffleEphemeralKey
|
outer_client_shuffle_alphabet_key_applied = client_persistent_keys.OuterClientShuffleKey << client_ephemeral_keys.OuterClientShuffleEphemeralKey
|
||||||
outer_client_shuffle_function_alphabet_key_applied = client_peristent_keys.OuterClientShuffleFunctionKey << client_ephemeral_keys.OuterClientShuffleFunctionEphemeralKey
|
outer_client_shuffle_function_alphabet_key_applied = client_persistent_keys.OuterClientShuffleFunctionKey << client_ephemeral_keys.OuterClientShuffleFunctionEphemeralKey
|
||||||
outer_client_shuffle_alphabet_key_applied = ~(outer_client_shuffle_alphabet_key_applied << outer_client_shuffle_function_alphabet_key_applied)
|
outer_client_shuffle_alphabet_key_applied = ~(outer_client_shuffle_alphabet_key_applied << outer_client_shuffle_function_alphabet_key_applied)
|
||||||
|
|
||||||
msg_len = len(input_sequence)
|
msg_len = len(input_sequence)
|
||||||
@@ -208,8 +207,8 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: Cli
|
|||||||
|
|
||||||
input_sequence_applied = outer_client_shuffle_alphabet_key_applied << padded_input_sequence
|
input_sequence_applied = outer_client_shuffle_alphabet_key_applied << padded_input_sequence
|
||||||
|
|
||||||
outer_client_shuffle_medium_key_applied = client_peristent_keys.OuterClientShuffleMediumKey << client_ephemeral_keys.OuterClientShuffleMediumEphemeralKey
|
outer_client_shuffle_medium_key_applied = client_persistent_keys.OuterClientShuffleMediumKey << client_ephemeral_keys.OuterClientShuffleMediumEphemeralKey
|
||||||
outer_client_shuffle_function_medium_key_applied = client_peristent_keys.OuterClientShuffleFunctionMediumKey << client_ephemeral_keys.OuterClientShuffleFunctionMediumEphemeralKey
|
outer_client_shuffle_function_medium_key_applied = client_persistent_keys.OuterClientShuffleFunctionMediumKey << client_ephemeral_keys.OuterClientShuffleFunctionMediumEphemeralKey
|
||||||
|
|
||||||
outer_client_shuffle_medium_key_applied = outer_client_shuffle_medium_key_applied << outer_client_shuffle_function_medium_key_applied
|
outer_client_shuffle_medium_key_applied = outer_client_shuffle_medium_key_applied << outer_client_shuffle_function_medium_key_applied
|
||||||
|
|
||||||
@@ -221,9 +220,9 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: Cli
|
|||||||
if msg_len < height:
|
if msg_len < height:
|
||||||
message.matrix[message_pad_key.matrix[0][msg_len]] = eof_arr
|
message.matrix[message_pad_key.matrix[0][msg_len]] = eof_arr
|
||||||
|
|
||||||
position_function_key_applied = client_peristent_keys.PositionFunctionMediumKey << mutual_ephemeral_keys.PositionFunctionMediumEphemeralKey
|
position_function_key_applied = mutual_persistent_keys.PositionFunctionMediumKey << mutual_ephemeral_keys.PositionFunctionMediumEphemeralKey
|
||||||
outer_position_function_key_applied = client_peristent_keys.OuterPositionFunctionMediumKey << mutual_ephemeral_keys.OuterPositionFunctionMediumEphemeralKey
|
outer_position_function_key_applied = mutual_persistent_keys.OuterPositionFunctionMediumKey << mutual_ephemeral_keys.OuterPositionFunctionMediumEphemeralKey
|
||||||
outer_position_shuffle_key_applied = client_peristent_keys.OuterPositionShuffleMediumKey << mutual_ephemeral_keys.OuterPositionShuffleMediumEphemeralKey
|
outer_position_shuffle_key_applied = mutual_persistent_keys.OuterPositionShuffleMediumKey << mutual_ephemeral_keys.OuterPositionShuffleMediumEphemeralKey
|
||||||
|
|
||||||
outer_position_function_key_applied = outer_position_shuffle_key_applied << outer_position_function_key_applied
|
outer_position_function_key_applied = outer_position_shuffle_key_applied << outer_position_function_key_applied
|
||||||
|
|
||||||
@@ -237,8 +236,8 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: Cli
|
|||||||
|
|
||||||
message = operand ^ (operand1 << inner_function_key_applied)
|
message = operand ^ (operand1 << inner_function_key_applied)
|
||||||
|
|
||||||
outer_position_shuffle_function_key_applied = client_peristent_keys.OuterPositionShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterPositionShuffleFunctionMediumEphemeralKey
|
outer_position_shuffle_function_key_applied = mutual_persistent_keys.OuterPositionShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterPositionShuffleFunctionMediumEphemeralKey
|
||||||
position_shuffle_key_applied = client_peristent_keys.PositionShuffleMediumKey << mutual_ephemeral_keys.PositionShuffleMediumEphemeralKey
|
position_shuffle_key_applied = mutual_persistent_keys.PositionShuffleMediumKey << mutual_ephemeral_keys.PositionShuffleMediumEphemeralKey
|
||||||
|
|
||||||
outer_position_shuffle_key_applied = outer_client_shuffle_medium_key_applied << outer_position_shuffle_key_applied
|
outer_position_shuffle_key_applied = outer_client_shuffle_medium_key_applied << outer_position_shuffle_key_applied
|
||||||
outer_position_shuffle_function_key_applied = outer_position_shuffle_function_key_applied << outer_position_function_key_applied
|
outer_position_shuffle_function_key_applied = outer_position_shuffle_function_key_applied << outer_position_function_key_applied
|
||||||
@@ -248,33 +247,33 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: Cli
|
|||||||
return message
|
return message
|
||||||
|
|
||||||
|
|
||||||
def darc_phase_4(darc_message: DarcKey, server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
def darc_phase_4(alphabet: DarcKey, darc_message: DarcKey, server_persistent_keys: ServerPersistentKeys, server_ephemeral_keys: ServerEphemeralKeys, mutual_persistent_keys: MutualPersistentKeys, mutual_ephemeral_keys: MutualEphemeralKeys):
|
||||||
outer_position_function_ephemeral_key_applied = server_persistent_keys.OuterPositionFunctionMediumKey << mutual_ephemeral_keys.OuterPositionFunctionMediumEphemeralKey
|
outer_position_function_ephemeral_key_applied = mutual_persistent_keys.OuterPositionFunctionMediumKey << mutual_ephemeral_keys.OuterPositionFunctionMediumEphemeralKey
|
||||||
outer_position_shuffle_ephemeral_key_applied = server_persistent_keys.OuterPositionShuffleMediumKey << mutual_ephemeral_keys.OuterPositionShuffleMediumEphemeralKey
|
outer_position_shuffle_ephemeral_key_applied = mutual_persistent_keys.OuterPositionShuffleMediumKey << mutual_ephemeral_keys.OuterPositionShuffleMediumEphemeralKey
|
||||||
|
|
||||||
outer_position_function_ephemeral_key_applied = ~(outer_position_shuffle_ephemeral_key_applied << outer_position_function_ephemeral_key_applied)
|
outer_position_function_ephemeral_key_applied = ~(outer_position_shuffle_ephemeral_key_applied << outer_position_function_ephemeral_key_applied)
|
||||||
outer_position_shuffle_ephemeral_key_applied = ~outer_position_shuffle_ephemeral_key_applied
|
outer_position_shuffle_ephemeral_key_applied = ~outer_position_shuffle_ephemeral_key_applied
|
||||||
|
|
||||||
outer_position_shuffle_function_ephemeral_key_applied = server_persistent_keys.OuterPositionShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterPositionShuffleFunctionMediumEphemeralKey
|
outer_position_shuffle_function_ephemeral_key_applied = mutual_persistent_keys.OuterPositionShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterPositionShuffleFunctionMediumEphemeralKey
|
||||||
outer_position_shuffle_function_ephemeral_key_applied = outer_position_shuffle_function_ephemeral_key_applied << outer_position_function_ephemeral_key_applied
|
outer_position_shuffle_function_ephemeral_key_applied = outer_position_shuffle_function_ephemeral_key_applied << outer_position_function_ephemeral_key_applied
|
||||||
|
|
||||||
outer_function_function_medium_ephemeral_key_applied = server_persistent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
outer_function_function_medium_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionFunctionMediumEphemeralKey
|
||||||
outer_server_shuffle_function_ephemeral_key_applied = server_persistent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionEphemeralKey
|
outer_server_shuffle_function_ephemeral_key_applied = mutual_persistent_keys.OuterServerShuffleFunctionKey << mutual_ephemeral_keys.OuterServerShuffleFunctionKey
|
||||||
|
|
||||||
outer_server_shuffle_function_medium_ephemeral_key_applied = server_persistent_keys.OuterServerShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterServerShuffleFunctionMediumEphemeralKey
|
outer_server_shuffle_function_medium_ephemeral_key_applied = mutual_persistent_keys.OuterServerShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterServerShuffleFunctionMediumEphemeralKey
|
||||||
|
|
||||||
function_medium_ephemeral_key_applied = server_persistent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumEphemeralKey
|
function_medium_ephemeral_key_applied = mutual_persistent_keys.FunctionMediumKey << mutual_ephemeral_keys.FunctionMediumKey
|
||||||
|
|
||||||
client_shuffle_medium_key_x = server_persistent_keys.ClientShuffleMediumKeyX < outer_server_shuffle_function_medium_ephemeral_key_applied
|
client_shuffle_medium_key_x = mutual_persistent_keys.ClientShuffleMediumKeyX < outer_server_shuffle_function_medium_ephemeral_key_applied
|
||||||
client_shuffle_medium_key_x = (function_medium_ephemeral_key_applied < outer_function_function_medium_ephemeral_key_applied) << client_shuffle_medium_key_x
|
client_shuffle_medium_key_x = (function_medium_ephemeral_key_applied < outer_function_function_medium_ephemeral_key_applied) << client_shuffle_medium_key_x
|
||||||
|
|
||||||
position_shuffle_ephemeral_key_applied = server_persistent_keys.PositionShuffleMediumKey << mutual_ephemeral_keys.PositionShuffleMediumEphemeralKey
|
position_shuffle_ephemeral_key_applied = mutual_persistent_keys.PositionShuffleMediumKey << mutual_ephemeral_keys.PositionShuffleMediumEphemeralKey
|
||||||
|
|
||||||
position_shuffle_ephemeral_key_applied = position_shuffle_ephemeral_key_applied < outer_position_shuffle_function_ephemeral_key_applied
|
position_shuffle_ephemeral_key_applied = position_shuffle_ephemeral_key_applied < outer_position_shuffle_function_ephemeral_key_applied
|
||||||
client_shuffle_medium_key_x = client_shuffle_medium_key_x << position_shuffle_ephemeral_key_applied
|
client_shuffle_medium_key_x = client_shuffle_medium_key_x << position_shuffle_ephemeral_key_applied
|
||||||
|
|
||||||
|
|
||||||
outer_function_medium_ephemeral_key_applied = server_persistent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
outer_function_medium_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionMediumKey << mutual_ephemeral_keys.OuterFunctionMediumEphemeralKey
|
||||||
|
|
||||||
rx_data = darc_message < outer_position_shuffle_ephemeral_key_applied
|
rx_data = darc_message < outer_position_shuffle_ephemeral_key_applied
|
||||||
|
|
||||||
@@ -282,34 +281,33 @@ def darc_phase_4(darc_message: DarcKey, server_persistent_keys: ServerPersistent
|
|||||||
operand = rx_data
|
operand = rx_data
|
||||||
operand1 = server_persistent_keys.ServerMediumKey < outer_function_medium_ephemeral_key_applied
|
operand1 = server_persistent_keys.ServerMediumKey < outer_function_medium_ephemeral_key_applied
|
||||||
operand2 = server_ephemeral_keys.ServerMediumEphemeralKey < outer_function_medium_ephemeral_key_applied
|
operand2 = server_ephemeral_keys.ServerMediumEphemeralKey < outer_function_medium_ephemeral_key_applied
|
||||||
operand3 = server_persistent_keys.MutualMediumKey < outer_function_medium_ephemeral_key_applied
|
operand3 = mutual_persistent_keys.MutualMediumKey < outer_function_medium_ephemeral_key_applied
|
||||||
operand4 = mutual_ephemeral_keys.MutualMediumEphemeralKey < outer_function_medium_ephemeral_key_applied
|
operand4 = mutual_ephemeral_keys.MutualMediumKey < outer_function_medium_ephemeral_key_applied
|
||||||
|
|
||||||
rx_data = operand ^ (operand1 << inner_key) ^ (operand2 << inner_key) ^ (operand3 << inner_key) ^ (operand4 << inner_key)
|
rx_data = operand ^ (operand1 << inner_key) ^ (operand2 << inner_key) ^ (operand3 << inner_key) ^ (operand4 << inner_key)
|
||||||
|
|
||||||
position_function_ephemeral_key_applied = server_persistent_keys.PositionFunctionMediumKey << mutual_ephemeral_keys.PositionFunctionMediumEphemeralKey
|
position_function_ephemeral_key_applied = mutual_persistent_keys.PositionFunctionMediumKey << mutual_ephemeral_keys.PositionFunctionMediumEphemeralKey
|
||||||
rx_data = rx_data << (~(position_shuffle_ephemeral_key_applied) << (~position_function_ephemeral_key_applied < outer_position_function_ephemeral_key_applied))
|
rx_data = rx_data << (~(position_shuffle_ephemeral_key_applied) << (~position_function_ephemeral_key_applied < outer_position_function_ephemeral_key_applied))
|
||||||
|
|
||||||
client_shuffle_key_x = server_persistent_keys.ClientShuffleKeyX < outer_server_shuffle_function_ephemeral_key_applied
|
client_shuffle_key_x = mutual_persistent_keys.ClientShuffleKeyX < outer_server_shuffle_function_ephemeral_key_applied
|
||||||
outer_function_function_ephemeral_key_applied = server_persistent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionEphemeralKey
|
outer_function_function_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionFunctionKey << mutual_ephemeral_keys.OuterFunctionFunctionKey
|
||||||
|
|
||||||
function_ephemeral_key_applied = server_persistent_keys.FunctionKey << mutual_ephemeral_keys.FunctionEphemeralKey
|
function_ephemeral_key_applied = mutual_persistent_keys.Inner1 << mutual_ephemeral_keys.Inner1
|
||||||
function_ephemeral_key_applied = (function_ephemeral_key_applied < outer_function_function_ephemeral_key_applied) << client_shuffle_key_x
|
function_ephemeral_key_applied = (function_ephemeral_key_applied < outer_function_function_ephemeral_key_applied) << client_shuffle_key_x
|
||||||
server_shuffle_ephemeral_key_applied = ~(server_persistent_keys.ServerShuffleKey << server_persistent_keys.ClientShuffleKeyX) << ~(server_ephemeral_keys.ServerShuffleEphemeralKey)
|
server_shuffle_ephemeral_key_applied = ~(server_persistent_keys.ServerShuffleKey << mutual_persistent_keys.ClientShuffleKeyX) << ~(server_ephemeral_keys.ServerShuffleEphemeralKey)
|
||||||
server_shuffle_ephemeral_key_applied = ~(server_shuffle_ephemeral_key_applied < outer_server_shuffle_function_ephemeral_key_applied)
|
server_shuffle_ephemeral_key_applied = ~(server_shuffle_ephemeral_key_applied < outer_server_shuffle_function_ephemeral_key_applied)
|
||||||
|
|
||||||
outer_server_shuffle_ephemeral_key_applied = server_persistent_keys.OuterServerShuffleKey << server_ephemeral_keys.OuterServerShuffleEphemeralKey
|
outer_server_shuffle_ephemeral_key_applied = server_persistent_keys.OuterServerShuffleKey << server_ephemeral_keys.OuterServerShuffleEphemeralKey
|
||||||
alphabet = server_ephemeral_keys.Alphabet
|
|
||||||
alpha_prep = (alphabet < outer_server_shuffle_ephemeral_key_applied) << server_shuffle_ephemeral_key_applied
|
alpha_prep = (alphabet < outer_server_shuffle_ephemeral_key_applied) << server_shuffle_ephemeral_key_applied
|
||||||
|
|
||||||
outer_function_ephemeral_key_applied = server_persistent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionEphemeralKey
|
outer_function_ephemeral_key_applied = mutual_persistent_keys.OuterFunctionKey << mutual_ephemeral_keys.OuterFunctionKey
|
||||||
|
|
||||||
inner_key = function_ephemeral_key_applied
|
inner_key = function_ephemeral_key_applied
|
||||||
operand = alpha_prep
|
operand = alpha_prep
|
||||||
operand1 = server_persistent_keys.ServerKey < outer_function_ephemeral_key_applied
|
operand1 = server_persistent_keys.ServerKey < outer_function_ephemeral_key_applied
|
||||||
operand2 = server_ephemeral_keys.ServerEphemeralKey < outer_function_ephemeral_key_applied
|
operand2 = server_ephemeral_keys.ServerEphemeralKey < outer_function_ephemeral_key_applied
|
||||||
operand3 = server_persistent_keys.MutualKey < outer_function_ephemeral_key_applied
|
operand3 = mutual_persistent_keys.MutualKey < outer_function_ephemeral_key_applied
|
||||||
operand4 = mutual_ephemeral_keys.MutualEphemeralKey < outer_function_ephemeral_key_applied
|
operand4 = mutual_ephemeral_keys.MutualKey < outer_function_ephemeral_key_applied
|
||||||
alpha_prep = operand ^ (operand1 << inner_key) ^ (operand2 << inner_key) ^ (operand3 << inner_key) ^ (operand4 << inner_key)
|
alpha_prep = operand ^ (operand1 << inner_key) ^ (operand2 << inner_key) ^ (operand3 << inner_key) ^ (operand4 << inner_key)
|
||||||
|
|
||||||
return resolve_message(alpha_prep.matrix, rx_data.matrix)
|
return resolve_message(alpha_prep.matrix, rx_data.matrix)
|
||||||
@@ -328,26 +326,26 @@ def resolve_message(translated_alphabet, translated_messasge):
|
|||||||
return message
|
return message
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
with open("../darc_key_json/client_persistent_keys.json") as fp:
|
# with open("../darc_key_json/client_persistent_keys.json") as fp:
|
||||||
client_persistent_keys = json.load(fp)
|
# client_persistent_keys = json.load(fp)
|
||||||
|
#
|
||||||
|
# with open("../darc_key_json/client_ephemeral_keys.json") as fp:
|
||||||
|
# client_ephemeral_keys = json.load(fp)
|
||||||
|
#
|
||||||
|
# with open("../darc_key_json/server_persistent_keys.json") as fp:
|
||||||
|
# server_persistent_keys = json.load(fp)
|
||||||
|
#
|
||||||
|
# with open("../darc_key_json/server_ephemeral_keys.json") as fp:
|
||||||
|
# server_ephemeral_keys = json.load(fp)
|
||||||
|
#
|
||||||
|
# with open("../darc_key_json/mutual_ephemeral_keys.json") as fp:
|
||||||
|
# mutual_ephemeral_keys = json.load(fp)
|
||||||
|
|
||||||
with open("../darc_key_json/client_ephemeral_keys.json") as fp:
|
# client_persistent_keys = {k: {"matrix": v} for k, v in client_persistent_keys.items()}
|
||||||
client_ephemeral_keys = json.load(fp)
|
# client_ephemeral_keys = {k: {"matrix": v} for k, v in client_ephemeral_keys.items()}
|
||||||
|
# server_persistent_keys = {k: {"matrix": v} for k, v in server_persistent_keys.items()}
|
||||||
with open("../darc_key_json/server_persistent_keys.json") as fp:
|
# server_ephemeral_keys = {k: {"matrix": v} for k, v in server_ephemeral_keys.items()}
|
||||||
server_persistent_keys = json.load(fp)
|
# mutual_ephemeral_keys = {k: {"matrix": v} for k, v in mutual_ephemeral_keys.items()}
|
||||||
|
|
||||||
with open("../darc_key_json/server_ephemeral_keys.json") as fp:
|
|
||||||
server_ephemeral_keys = json.load(fp)
|
|
||||||
|
|
||||||
with open("../darc_key_json/mutual_ephemeral_keys.json") as fp:
|
|
||||||
mutual_ephemeral_keys = json.load(fp)
|
|
||||||
|
|
||||||
client_persistent_keys = {k: {"matrix": v} for k, v in client_persistent_keys.items()}
|
|
||||||
client_ephemeral_keys = {k: {"matrix": v} for k, v in client_ephemeral_keys.items()}
|
|
||||||
server_persistent_keys = {k: {"matrix": v} for k, v in server_persistent_keys.items()}
|
|
||||||
server_ephemeral_keys = {k: {"matrix": v} for k, v in server_ephemeral_keys.items()}
|
|
||||||
mutual_ephemeral_keys = {k: {"matrix": v} for k, v in mutual_ephemeral_keys.items()}
|
|
||||||
|
|
||||||
# client_persistent_keys = ClientPersistentKeys(**client_persistent_keys)
|
# client_persistent_keys = ClientPersistentKeys(**client_persistent_keys)
|
||||||
# client_ephemeral_keys = ClientEphemeralKeys(**client_ephemeral_keys)
|
# client_ephemeral_keys = ClientEphemeralKeys(**client_ephemeral_keys)
|
||||||
@@ -360,41 +358,23 @@ if __name__ == "__main__":
|
|||||||
server_persistent_keys = ServerPersistentKeys.random_init(height, width)
|
server_persistent_keys = ServerPersistentKeys.random_init(height, width)
|
||||||
server_ephemeral_keys = ServerEphemeralKeys.random_init(height, width)
|
server_ephemeral_keys = ServerEphemeralKeys.random_init(height, width)
|
||||||
mutual_ephemeral_keys = MutualEphemeralKeys.random_init(height, width)
|
mutual_ephemeral_keys = MutualEphemeralKeys.random_init(height, width)
|
||||||
|
mutual_persistent_keys = MutualPersistentKeys.random_init(height, width)
|
||||||
|
|
||||||
server_persistent_keys.ServerKey = server_persistent_keys.ServerKey ^ client_persistent_keys.MutualKey
|
server_persistent_keys.ServerKey = server_persistent_keys.ServerKey ^ mutual_persistent_keys.MutualKey
|
||||||
server_persistent_keys.ServerMediumKey = server_persistent_keys.ServerMediumKey ^ client_persistent_keys.MutualMediumKey
|
server_persistent_keys.ServerMediumKey = server_persistent_keys.ServerMediumKey ^ mutual_persistent_keys.MutualMediumKey
|
||||||
|
|
||||||
client_persistent_keys.MutualKey = client_persistent_keys.MutualKey ^ client_persistent_keys.ClientKey
|
mutual_persistent_keys.MutualKey = mutual_persistent_keys.MutualKey ^ client_persistent_keys.ClientKey
|
||||||
client_persistent_keys.MutualMediumKey = client_persistent_keys.MutualMediumKey ^ client_persistent_keys.ClientMediumKey
|
mutual_persistent_keys.MutualMediumKey = mutual_persistent_keys.MutualMediumKey ^ client_persistent_keys.ClientMediumKey
|
||||||
|
|
||||||
server_persistent_keys.MutualKey = client_persistent_keys.MutualKey
|
alphabet = AlphabetKey.init_matrix(width, height, 255)
|
||||||
server_persistent_keys.MutualMediumKey = client_persistent_keys.MutualMediumKey
|
(phase1_alphabet, phase1_medium) = darc_phase1(alphabet, server_persistent_keys, server_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
|
(phase2_alphabet, phase2_medium) = darc_phase2(phase1_alphabet, phase1_medium, client_persistent_keys, client_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
server_persistent_keys.OuterFunctionKey = client_persistent_keys.OuterFunctionKey
|
(phase3_alphabet, phase3_medium) = darc_phase3(phase2_alphabet, phase2_medium, client_persistent_keys, client_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
server_persistent_keys.OuterFunctionFunctionKey = client_persistent_keys.OuterFunctionFunctionKey
|
|
||||||
server_persistent_keys.OuterServerShuffleFunctionKey = client_persistent_keys.OuterServerShuffleFunctionKey
|
|
||||||
server_persistent_keys.FunctionKey = client_persistent_keys.FunctionKey
|
|
||||||
server_persistent_keys.ClientShuffleKeyX = client_persistent_keys.ClientShuffleKeyX
|
|
||||||
server_persistent_keys.OuterFunctionMediumKey = client_persistent_keys.OuterFunctionMediumKey
|
|
||||||
server_persistent_keys.OuterFunctionFunctionMediumKey = client_persistent_keys.OuterFunctionFunctionMediumKey
|
|
||||||
server_persistent_keys.OuterServerShuffleFunctionMediumKey = client_persistent_keys.OuterServerShuffleFunctionMediumKey
|
|
||||||
server_persistent_keys.FunctionMediumKey = client_persistent_keys.FunctionMediumKey
|
|
||||||
server_persistent_keys.ClientShuffleMediumKeyX = client_persistent_keys.ClientShuffleMediumKeyX
|
|
||||||
server_persistent_keys.OuterPositionShuffleMediumKey = client_persistent_keys.OuterPositionShuffleMediumKey
|
|
||||||
server_persistent_keys.OuterPositionShuffleFunctionMediumKey = client_persistent_keys.OuterPositionShuffleFunctionMediumKey
|
|
||||||
server_persistent_keys.OuterPositionFunctionMediumKey = client_persistent_keys.OuterPositionFunctionMediumKey
|
|
||||||
server_persistent_keys.PositionFunctionMediumKey = client_persistent_keys.PositionFunctionMediumKey
|
|
||||||
server_persistent_keys.PositionShuffleMediumKey = client_persistent_keys.PositionShuffleMediumKey
|
|
||||||
|
|
||||||
|
|
||||||
(phase1_alphabet, phase1_medium) = darc_phase1(server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
|
||||||
(phase2_alphabet, phase2_medium) = darc_phase2(phase1_alphabet, phase1_medium, client_persistent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
|
||||||
(phase3_alphabet, phase3_medium) = darc_phase3(phase2_alphabet, phase2_medium, client_persistent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
|
||||||
|
|
||||||
original_message = [0, 2, 4, 6, 7, 8, 9]
|
original_message = [0, 2, 4, 6, 7, 8, 9]
|
||||||
darc_message = merge_message(phase3_alphabet, phase3_medium, client_persistent_keys, client_ephemeral_keys, mutual_ephemeral_keys, original_message)
|
darc_message = merge_message(phase3_alphabet, phase3_medium, client_persistent_keys, client_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys, original_message)
|
||||||
|
|
||||||
message = darc_phase_4(darc_message, server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
message = darc_phase_4(alphabet, darc_message, server_persistent_keys, server_ephemeral_keys, mutual_persistent_keys, mutual_ephemeral_keys)
|
||||||
|
|
||||||
print(original_message)
|
print(original_message)
|
||||||
print(message)
|
print(message)
|
||||||
|
|||||||
128
src/models.py
128
src/models.py
@@ -146,79 +146,28 @@ class AlphabetKey(DarcKey):
|
|||||||
|
|
||||||
|
|
||||||
class ServerPersistentKeys(BaseModel):
|
class ServerPersistentKeys(BaseModel):
|
||||||
OuterFunctionKey: OuterShuffleKey
|
|
||||||
OuterFunctionFunctionKey: OuterShuffleKey
|
|
||||||
OuterServerShuffleFunctionKey: OuterShuffleKey
|
|
||||||
MutualKey: AlphabetKey
|
|
||||||
FunctionKey: InnerShuffleKey
|
|
||||||
ClientShuffleKeyX: InnerShuffleKey
|
|
||||||
OuterServerShuffleKey: OuterShuffleKey
|
OuterServerShuffleKey: OuterShuffleKey
|
||||||
ServerKey: AlphabetKey
|
ServerKey: AlphabetKey
|
||||||
ServerShuffleKey: InnerShuffleKey
|
ServerShuffleKey: InnerShuffleKey
|
||||||
|
|
||||||
MutualMediumKey: AlphabetKey
|
|
||||||
OuterFunctionMediumKey: OuterShuffleKey
|
|
||||||
OuterFunctionFunctionMediumKey: OuterShuffleKey
|
|
||||||
OuterServerShuffleFunctionMediumKey: OuterShuffleKey
|
|
||||||
FunctionMediumKey: InnerShuffleKey
|
|
||||||
ClientShuffleMediumKeyX: InnerShuffleKey
|
|
||||||
OuterPositionShuffleMediumKey: OuterShuffleKey
|
|
||||||
OuterPositionShuffleFunctionMediumKey: OuterShuffleKey
|
|
||||||
OuterPositionFunctionMediumKey: OuterShuffleKey
|
|
||||||
PositionFunctionMediumKey: InnerShuffleKey
|
|
||||||
PositionShuffleMediumKey: InnerShuffleKey
|
|
||||||
ServerMediumKey: AlphabetKey
|
ServerMediumKey: AlphabetKey
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def random_init(cls, height: int, width: int):
|
def random_init(cls, height: int, width: int):
|
||||||
return ServerPersistentKeys(
|
return ServerPersistentKeys(
|
||||||
OuterFunctionKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterFunctionFunctionKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterServerShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
MutualKey=AlphabetKey.init_matrix(width, height, 255),
|
|
||||||
FunctionKey=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
ClientShuffleKeyX=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
OuterServerShuffleKey=OuterShuffleKey.init_matrix(height),
|
OuterServerShuffleKey=OuterShuffleKey.init_matrix(height),
|
||||||
ServerKey=AlphabetKey.init_matrix(width, height, 255),
|
ServerKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
ServerShuffleKey=InnerShuffleKey.init_matrix(width, height),
|
ServerShuffleKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
MutualMediumKey=AlphabetKey.init_matrix(width, height, 255),
|
|
||||||
OuterFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterFunctionFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterServerShuffleFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
FunctionMediumKey=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
ClientShuffleMediumKeyX=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
OuterPositionShuffleMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterPositionShuffleFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterPositionFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
PositionFunctionMediumKey=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
PositionShuffleMediumKey=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
ServerMediumKey=AlphabetKey.init_matrix(width, height, 255)
|
ServerMediumKey=AlphabetKey.init_matrix(width, height, 255)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ClientPersistentKeys(BaseModel):
|
class ClientPersistentKeys(BaseModel):
|
||||||
OuterFunctionKey: OuterShuffleKey
|
|
||||||
OuterFunctionFunctionKey: OuterShuffleKey
|
|
||||||
OuterServerShuffleFunctionKey: OuterShuffleKey
|
|
||||||
MutualKey: AlphabetKey
|
|
||||||
FunctionKey: InnerShuffleKey
|
|
||||||
ClientShuffleKeyX: InnerShuffleKey
|
|
||||||
ClientKey: AlphabetKey
|
ClientKey: AlphabetKey
|
||||||
ClientShuffleKeyA: InnerShuffleKey
|
ClientShuffleKeyA: InnerShuffleKey
|
||||||
OuterClientShuffleKey: OuterShuffleKey
|
OuterClientShuffleKey: OuterShuffleKey
|
||||||
OuterClientShuffleFunctionKey: OuterShuffleKey
|
OuterClientShuffleFunctionKey: OuterShuffleKey
|
||||||
|
|
||||||
MutualMediumKey: AlphabetKey
|
|
||||||
OuterFunctionMediumKey: OuterShuffleKey
|
|
||||||
OuterFunctionFunctionMediumKey: OuterShuffleKey
|
|
||||||
OuterServerShuffleFunctionMediumKey: OuterShuffleKey
|
|
||||||
FunctionMediumKey: InnerShuffleKey
|
|
||||||
ClientShuffleMediumKeyX: InnerShuffleKey
|
|
||||||
OuterPositionShuffleMediumKey: OuterShuffleKey
|
|
||||||
OuterPositionShuffleFunctionMediumKey: OuterShuffleKey
|
|
||||||
OuterPositionFunctionMediumKey: OuterShuffleKey
|
|
||||||
PositionFunctionMediumKey: InnerShuffleKey
|
|
||||||
PositionShuffleMediumKey: InnerShuffleKey
|
|
||||||
OuterClientShuffleMediumKey: OuterShuffleKey
|
OuterClientShuffleMediumKey: OuterShuffleKey
|
||||||
OuterClientShuffleFunctionMediumKey: OuterShuffleKey
|
OuterClientShuffleFunctionMediumKey: OuterShuffleKey
|
||||||
ClientShuffleMediumKeyA: InnerShuffleKey
|
ClientShuffleMediumKeyA: InnerShuffleKey
|
||||||
@@ -227,16 +176,46 @@ class ClientPersistentKeys(BaseModel):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def random_init(cls, height: int, width: int):
|
def random_init(cls, height: int, width: int):
|
||||||
return ClientPersistentKeys(
|
return ClientPersistentKeys(
|
||||||
OuterFunctionKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterFunctionFunctionKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterServerShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
MutualKey=AlphabetKey.init_matrix(width, height, 255),
|
|
||||||
FunctionKey=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
ClientShuffleKeyX=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
ClientKey=AlphabetKey.init_matrix(width, height, 255),
|
ClientKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
ClientShuffleKeyA=InnerShuffleKey.init_matrix(width, height),
|
ClientShuffleKeyA=InnerShuffleKey.init_matrix(width, height),
|
||||||
OuterClientShuffleKey=OuterShuffleKey.init_matrix(height),
|
OuterClientShuffleKey=OuterShuffleKey.init_matrix(height),
|
||||||
OuterClientShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
|
OuterClientShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterClientShuffleMediumKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterClientShuffleFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
ClientShuffleMediumKeyA=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
ClientMediumKey=AlphabetKey.init_matrix(width, height, 255)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MutualPersistentKeys(BaseModel):
|
||||||
|
OuterFunctionKey: OuterShuffleKey
|
||||||
|
OuterFunctionFunctionKey: OuterShuffleKey
|
||||||
|
OuterServerShuffleFunctionKey: OuterShuffleKey
|
||||||
|
MutualKey: AlphabetKey
|
||||||
|
Inner1: InnerShuffleKey
|
||||||
|
ClientShuffleKeyX: InnerShuffleKey
|
||||||
|
|
||||||
|
MutualMediumKey: AlphabetKey
|
||||||
|
OuterFunctionMediumKey: OuterShuffleKey
|
||||||
|
OuterFunctionFunctionMediumKey: OuterShuffleKey
|
||||||
|
OuterServerShuffleFunctionMediumKey: OuterShuffleKey
|
||||||
|
FunctionMediumKey: InnerShuffleKey
|
||||||
|
ClientShuffleMediumKeyX: InnerShuffleKey
|
||||||
|
OuterPositionShuffleMediumKey: OuterShuffleKey
|
||||||
|
OuterPositionShuffleFunctionMediumKey: OuterShuffleKey
|
||||||
|
OuterPositionFunctionMediumKey: OuterShuffleKey
|
||||||
|
PositionFunctionMediumKey: InnerShuffleKey
|
||||||
|
PositionShuffleMediumKey: InnerShuffleKey
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def random_init(cls, height: int, width: int):
|
||||||
|
return MutualPersistentKeys(
|
||||||
|
OuterFunctionKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterFunctionFunctionKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterServerShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
MutualKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
|
Inner1=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
ClientShuffleKeyX=InnerShuffleKey.init_matrix(width, height),
|
||||||
MutualMediumKey=AlphabetKey.init_matrix(width, height, 255),
|
MutualMediumKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
OuterFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
OuterFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
||||||
OuterFunctionFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
OuterFunctionFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
||||||
@@ -248,19 +227,15 @@ class ClientPersistentKeys(BaseModel):
|
|||||||
OuterPositionFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
OuterPositionFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
||||||
PositionFunctionMediumKey=InnerShuffleKey.init_matrix(width, height),
|
PositionFunctionMediumKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
PositionShuffleMediumKey=InnerShuffleKey.init_matrix(width, height),
|
PositionShuffleMediumKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
OuterClientShuffleMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
OuterClientShuffleFunctionMediumKey=OuterShuffleKey.init_matrix(height),
|
|
||||||
ClientShuffleMediumKeyA=InnerShuffleKey.init_matrix(width, height),
|
|
||||||
ClientMediumKey=AlphabetKey.init_matrix(width, height, 255)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ServerEphemeralKeys(BaseModel):
|
class ServerEphemeralKeys(BaseModel):
|
||||||
OuterServerShuffleEphemeralKey: OuterShuffleKey
|
OuterServerShuffleEphemeralKey: OuterShuffleKey
|
||||||
ServerEphemeralKey: AlphabetKey
|
ServerEphemeralKey: AlphabetKey
|
||||||
ServerShuffleEphemeralKey: InnerShuffleKey
|
ServerShuffleEphemeralKey: InnerShuffleKey
|
||||||
|
|
||||||
ServerMediumEphemeralKey: AlphabetKey
|
ServerMediumEphemeralKey: AlphabetKey
|
||||||
Alphabet: AlphabetKey
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def random_init(cls, height: int, width: int):
|
def random_init(cls, height: int, width: int):
|
||||||
@@ -269,19 +244,18 @@ class ServerEphemeralKeys(BaseModel):
|
|||||||
ServerEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
ServerEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
ServerShuffleEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
ServerShuffleEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
ServerMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
ServerMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
Alphabet=AlphabetKey.init_matrix(width, height, 255)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class MutualEphemeralKeys(BaseModel):
|
class MutualEphemeralKeys(BaseModel):
|
||||||
MutualEphemeralKey: AlphabetKey
|
MutualKey: AlphabetKey
|
||||||
FunctionEphemeralKey: InnerShuffleKey
|
Inner1: InnerShuffleKey
|
||||||
OuterFunctionEphemeralKey: OuterShuffleKey
|
OuterFunctionKey: OuterShuffleKey
|
||||||
OuterFunctionFunctionEphemeralKey: OuterShuffleKey
|
OuterFunctionFunctionKey: OuterShuffleKey
|
||||||
OuterServerShuffleFunctionEphemeralKey: OuterShuffleKey
|
OuterServerShuffleFunctionKey: OuterShuffleKey
|
||||||
|
|
||||||
MutualMediumEphemeralKey: AlphabetKey
|
MutualMediumKey: AlphabetKey
|
||||||
FunctionMediumEphemeralKey: InnerShuffleKey
|
FunctionMediumKey: InnerShuffleKey
|
||||||
PositionFunctionMediumEphemeralKey: InnerShuffleKey
|
PositionFunctionMediumEphemeralKey: InnerShuffleKey
|
||||||
OuterFunctionMediumEphemeralKey: OuterShuffleKey
|
OuterFunctionMediumEphemeralKey: OuterShuffleKey
|
||||||
OuterFunctionFunctionMediumEphemeralKey: OuterShuffleKey
|
OuterFunctionFunctionMediumEphemeralKey: OuterShuffleKey
|
||||||
@@ -294,13 +268,13 @@ class MutualEphemeralKeys(BaseModel):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def random_init(cls, height: int, width: int):
|
def random_init(cls, height: int, width: int):
|
||||||
return MutualEphemeralKeys(
|
return MutualEphemeralKeys(
|
||||||
MutualEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
MutualKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
FunctionEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
Inner1=InnerShuffleKey.init_matrix(width, height),
|
||||||
OuterFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
|
OuterFunctionKey=OuterShuffleKey.init_matrix(height),
|
||||||
OuterFunctionFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
|
OuterFunctionFunctionKey=OuterShuffleKey.init_matrix(height),
|
||||||
OuterServerShuffleFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
|
OuterServerShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
|
||||||
MutualMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
MutualMediumKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
FunctionMediumEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
FunctionMediumKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
PositionFunctionMediumEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
PositionFunctionMediumEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
OuterFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
OuterFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
OuterFunctionFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
OuterFunctionFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
|||||||
Reference in New Issue
Block a user