working version of darc
This commit is contained in:
@@ -237,7 +237,6 @@ 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 = client_peristent_keys.OuterPositionShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterPositionShuffleFunctionMediumEphemeralKey
|
||||||
position_shuffle_key_applied = client_peristent_keys.PositionShuffleMediumKey << mutual_ephemeral_keys.PositionShuffleMediumEphemeralKey
|
position_shuffle_key_applied = client_peristent_keys.PositionShuffleMediumKey << mutual_ephemeral_keys.PositionShuffleMediumEphemeralKey
|
||||||
|
|
||||||
@@ -288,26 +287,6 @@ def darc_phase_4(darc_message: DarcKey, server_persistent_keys: ServerPersistent
|
|||||||
|
|
||||||
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)
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
FunctionTranslation PositionFunctionKey = ServerPersistentKeys.PositionFunctionMediumKey;
|
|
||||||
FunctionTranslation PositionFunctionEphemeralKey = MutualEphemeralKeys.PositionFunctionMediumEphemeralKey;
|
|
||||||
FunctionTranslation PositionFunctionEphemeralKeyApplied = new FunctionTranslation { Data = Transform.TransformationCompliment(Transform.PermuteInnerTransformation(PositionFunctionKey.Data, PositionFunctionEphemeralKey.Data)) };
|
|
||||||
|
|
||||||
|
|
||||||
#region Inner Shuffle
|
|
||||||
|
|
||||||
RxData = Transform.PermuteInnerTransformation(
|
|
||||||
RxData.Convert<int>(),
|
|
||||||
Transform.PermuteInnerTransformation(
|
|
||||||
Transform.TransformationCompliment(
|
|
||||||
PositionShuffleEphemeralKeyApplied.Data
|
|
||||||
),
|
|
||||||
Transform.PermuteOuterTransformation(
|
|
||||||
PositionFunctionEphemeralKeyApplied.Data.Convert<byte>(),
|
|
||||||
OuterPositionFunctionEphemeralKeyApplied.Data).Convert<int>())).Convert<byte>();
|
|
||||||
"""
|
|
||||||
position_function_ephemeral_key_applied = server_persistent_keys.PositionFunctionMediumKey << mutual_ephemeral_keys.PositionFunctionMediumEphemeralKey
|
position_function_ephemeral_key_applied = server_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))
|
||||||
|
|
||||||
@@ -370,20 +349,52 @@ if __name__ == "__main__":
|
|||||||
server_ephemeral_keys = {k: {"matrix": v} for k, v in server_ephemeral_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()}
|
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)
|
||||||
server_persistent_keys = ServerPersistentKeys(**server_persistent_keys)
|
# server_persistent_keys = ServerPersistentKeys(**server_persistent_keys)
|
||||||
server_ephemeral_keys = ServerEphemeralKeys(**server_ephemeral_keys)
|
# server_ephemeral_keys = ServerEphemeralKeys(**server_ephemeral_keys)
|
||||||
mutual_ephemeral_keys = MutualEphemeralKeys(**mutual_ephemeral_keys)
|
# mutual_ephemeral_keys = MutualEphemeralKeys(**mutual_ephemeral_keys)
|
||||||
|
|
||||||
|
client_persistent_keys = ClientPersistentKeys.random_init(height, width)
|
||||||
|
client_ephemeral_keys = ClientEphemeralKeys.random_init(height, width)
|
||||||
|
server_persistent_keys = ServerPersistentKeys.random_init(height, width)
|
||||||
|
server_ephemeral_keys = ServerEphemeralKeys.random_init(height, width)
|
||||||
|
mutual_ephemeral_keys = MutualEphemeralKeys.random_init(height, width)
|
||||||
|
|
||||||
|
server_persistent_keys.ServerKey = server_persistent_keys.ServerKey ^ client_persistent_keys.MutualKey
|
||||||
|
server_persistent_keys.ServerMediumKey = server_persistent_keys.ServerMediumKey ^ client_persistent_keys.MutualMediumKey
|
||||||
|
|
||||||
|
client_persistent_keys.MutualKey = client_persistent_keys.MutualKey ^ client_persistent_keys.ClientKey
|
||||||
|
client_persistent_keys.MutualMediumKey = client_persistent_keys.MutualMediumKey ^ client_persistent_keys.ClientMediumKey
|
||||||
|
|
||||||
|
server_persistent_keys.MutualKey = client_persistent_keys.MutualKey
|
||||||
|
server_persistent_keys.MutualMediumKey = client_persistent_keys.MutualMediumKey
|
||||||
|
|
||||||
|
server_persistent_keys.OuterFunctionKey = client_persistent_keys.OuterFunctionKey
|
||||||
|
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)
|
(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)
|
(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)
|
(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, 0, 5, 9, 9, 1, 7]
|
|
||||||
|
|
||||||
original_message = [0, 2, 4, 6]
|
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_ephemeral_keys, original_message)
|
||||||
|
|
||||||
message = darc_phase_4(darc_message, server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
message = darc_phase_4(darc_message, server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
||||||
|
|
||||||
print(original_message)
|
print(original_message)
|
||||||
print(message)
|
print(message)
|
||||||
|
|||||||
131
src/models.py
131
src/models.py
@@ -111,9 +111,9 @@ class OuterShuffleKey(DarcKey):
|
|||||||
key_type = DarcKeyTypes.outer_shuffle
|
key_type = DarcKeyTypes.outer_shuffle
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def init_matrix(cls, row_length: int):
|
def init_matrix(cls, height: int):
|
||||||
""" originally buildRandom """
|
""" originally buildRandom """
|
||||||
matrix = [cls._random_shuffle(list(range(row_length)))]
|
matrix = [cls._random_shuffle(list(range(height)))]
|
||||||
return OuterShuffleKey(
|
return OuterShuffleKey(
|
||||||
matrix=matrix,
|
matrix=matrix,
|
||||||
)
|
)
|
||||||
@@ -123,9 +123,9 @@ class InnerShuffleKey(DarcKey):
|
|||||||
key_type = DarcKeyTypes.inner_shuffle
|
key_type = DarcKeyTypes.inner_shuffle
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def init_matrix(cls, row_length: int, column_length: int):
|
def init_matrix(cls, width: int, height: int):
|
||||||
""" originally buildRandom """
|
""" originally buildRandom """
|
||||||
matrix = [cls._random_shuffle(list(range(row_length))) for _ in range(column_length)]
|
matrix = [cls._random_shuffle(list(range(width))) for _ in range(height)]
|
||||||
return InnerShuffleKey(
|
return InnerShuffleKey(
|
||||||
matrix=matrix,
|
matrix=matrix,
|
||||||
)
|
)
|
||||||
@@ -136,9 +136,9 @@ class AlphabetKey(DarcKey):
|
|||||||
max_value: int = 255
|
max_value: int = 255
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def init_matrix(cls, row_length: int, column_length: int, max_value: int):
|
def init_matrix(cls, width: int, height: int, max_value: int):
|
||||||
""" originally buildScramble """
|
""" originally buildScramble """
|
||||||
matrix = [cls._random_mask(row_length, max_value) for _ in range(column_length)]
|
matrix = [cls._random_mask(width, max_value) for _ in range(height)]
|
||||||
return AlphabetKey(
|
return AlphabetKey(
|
||||||
matrix=matrix,
|
matrix=matrix,
|
||||||
max_value=max_value
|
max_value=max_value
|
||||||
@@ -152,6 +152,9 @@ class ServerPersistentKeys(BaseModel):
|
|||||||
MutualKey: AlphabetKey
|
MutualKey: AlphabetKey
|
||||||
FunctionKey: InnerShuffleKey
|
FunctionKey: InnerShuffleKey
|
||||||
ClientShuffleKeyX: InnerShuffleKey
|
ClientShuffleKeyX: InnerShuffleKey
|
||||||
|
OuterServerShuffleKey: OuterShuffleKey
|
||||||
|
ServerKey: AlphabetKey
|
||||||
|
ServerShuffleKey: InnerShuffleKey
|
||||||
|
|
||||||
MutualMediumKey: AlphabetKey
|
MutualMediumKey: AlphabetKey
|
||||||
OuterFunctionMediumKey: OuterShuffleKey
|
OuterFunctionMediumKey: OuterShuffleKey
|
||||||
@@ -164,13 +167,34 @@ class ServerPersistentKeys(BaseModel):
|
|||||||
OuterPositionFunctionMediumKey: OuterShuffleKey
|
OuterPositionFunctionMediumKey: OuterShuffleKey
|
||||||
PositionFunctionMediumKey: InnerShuffleKey
|
PositionFunctionMediumKey: InnerShuffleKey
|
||||||
PositionShuffleMediumKey: InnerShuffleKey
|
PositionShuffleMediumKey: InnerShuffleKey
|
||||||
|
|
||||||
OuterServerShuffleKey: OuterShuffleKey
|
|
||||||
ServerKey: AlphabetKey
|
|
||||||
ServerShuffleKey: InnerShuffleKey
|
|
||||||
|
|
||||||
ServerMediumKey: AlphabetKey
|
ServerMediumKey: AlphabetKey
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def random_init(cls, height: int, width: int):
|
||||||
|
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),
|
||||||
|
ServerKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
|
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)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ClientPersistentKeys(BaseModel):
|
class ClientPersistentKeys(BaseModel):
|
||||||
OuterFunctionKey: OuterShuffleKey
|
OuterFunctionKey: OuterShuffleKey
|
||||||
@@ -179,6 +203,10 @@ class ClientPersistentKeys(BaseModel):
|
|||||||
MutualKey: AlphabetKey
|
MutualKey: AlphabetKey
|
||||||
FunctionKey: InnerShuffleKey
|
FunctionKey: InnerShuffleKey
|
||||||
ClientShuffleKeyX: InnerShuffleKey
|
ClientShuffleKeyX: InnerShuffleKey
|
||||||
|
ClientKey: AlphabetKey
|
||||||
|
ClientShuffleKeyA: InnerShuffleKey
|
||||||
|
OuterClientShuffleKey: OuterShuffleKey
|
||||||
|
OuterClientShuffleFunctionKey: OuterShuffleKey
|
||||||
|
|
||||||
MutualMediumKey: AlphabetKey
|
MutualMediumKey: AlphabetKey
|
||||||
OuterFunctionMediumKey: OuterShuffleKey
|
OuterFunctionMediumKey: OuterShuffleKey
|
||||||
@@ -191,25 +219,59 @@ class ClientPersistentKeys(BaseModel):
|
|||||||
OuterPositionFunctionMediumKey: OuterShuffleKey
|
OuterPositionFunctionMediumKey: OuterShuffleKey
|
||||||
PositionFunctionMediumKey: InnerShuffleKey
|
PositionFunctionMediumKey: InnerShuffleKey
|
||||||
PositionShuffleMediumKey: InnerShuffleKey
|
PositionShuffleMediumKey: InnerShuffleKey
|
||||||
|
|
||||||
ClientKey: AlphabetKey
|
|
||||||
ClientShuffleKeyA: InnerShuffleKey
|
|
||||||
OuterClientShuffleKey: OuterShuffleKey
|
|
||||||
OuterClientShuffleFunctionKey: OuterShuffleKey
|
|
||||||
|
|
||||||
OuterClientShuffleMediumKey: OuterShuffleKey
|
OuterClientShuffleMediumKey: OuterShuffleKey
|
||||||
OuterClientShuffleFunctionMediumKey: OuterShuffleKey
|
OuterClientShuffleFunctionMediumKey: OuterShuffleKey
|
||||||
ClientShuffleMediumKeyA: InnerShuffleKey
|
ClientShuffleMediumKeyA: InnerShuffleKey
|
||||||
ClientMediumKey: AlphabetKey
|
ClientMediumKey: AlphabetKey
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def random_init(cls, height: int, width: int):
|
||||||
|
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),
|
||||||
|
ClientShuffleKeyA=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
OuterClientShuffleKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterClientShuffleFunctionKey=OuterShuffleKey.init_matrix(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),
|
||||||
|
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
|
Alphabet: AlphabetKey
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def random_init(cls, height: int, width: int):
|
||||||
|
return ServerEphemeralKeys(
|
||||||
|
OuterServerShuffleEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
ServerEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
|
ServerShuffleEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
ServerMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
|
Alphabet=AlphabetKey.init_matrix(width, height, 255)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class MutualEphemeralKeys(BaseModel):
|
class MutualEphemeralKeys(BaseModel):
|
||||||
MutualEphemeralKey: AlphabetKey
|
MutualEphemeralKey: AlphabetKey
|
||||||
@@ -217,6 +279,7 @@ class MutualEphemeralKeys(BaseModel):
|
|||||||
OuterFunctionEphemeralKey: OuterShuffleKey
|
OuterFunctionEphemeralKey: OuterShuffleKey
|
||||||
OuterFunctionFunctionEphemeralKey: OuterShuffleKey
|
OuterFunctionFunctionEphemeralKey: OuterShuffleKey
|
||||||
OuterServerShuffleFunctionEphemeralKey: OuterShuffleKey
|
OuterServerShuffleFunctionEphemeralKey: OuterShuffleKey
|
||||||
|
|
||||||
MutualMediumEphemeralKey: AlphabetKey
|
MutualMediumEphemeralKey: AlphabetKey
|
||||||
FunctionMediumEphemeralKey: InnerShuffleKey
|
FunctionMediumEphemeralKey: InnerShuffleKey
|
||||||
PositionFunctionMediumEphemeralKey: InnerShuffleKey
|
PositionFunctionMediumEphemeralKey: InnerShuffleKey
|
||||||
@@ -228,13 +291,47 @@ class MutualEphemeralKeys(BaseModel):
|
|||||||
PositionShuffleMediumEphemeralKey: InnerShuffleKey
|
PositionShuffleMediumEphemeralKey: InnerShuffleKey
|
||||||
OuterPositionShuffleMediumEphemeralKey: OuterShuffleKey
|
OuterPositionShuffleMediumEphemeralKey: OuterShuffleKey
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def random_init(cls, height: int, width: int):
|
||||||
|
return MutualEphemeralKeys(
|
||||||
|
MutualEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
|
FunctionEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
OuterFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterFunctionFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterServerShuffleFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
MutualMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
|
FunctionMediumEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
PositionFunctionMediumEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
OuterFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterFunctionFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterPositionFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterServerShuffleFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterPositionShuffleFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
PositionShuffleMediumEphemeralKey=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
OuterPositionShuffleMediumEphemeralKey=OuterShuffleKey.init_matrix(height)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ClientEphemeralKeys(BaseModel):
|
class ClientEphemeralKeys(BaseModel):
|
||||||
OuterClientShuffleEphemeralKey: OuterShuffleKey
|
OuterClientShuffleEphemeralKey: OuterShuffleKey
|
||||||
OuterClientShuffleFunctionEphemeralKey: OuterShuffleKey
|
OuterClientShuffleFunctionEphemeralKey: OuterShuffleKey
|
||||||
ClientEphemeralKey: AlphabetKey
|
ClientEphemeralKey: AlphabetKey
|
||||||
ClientShuffleEphemeralKeyA: InnerShuffleKey
|
ClientShuffleEphemeralKeyA: InnerShuffleKey
|
||||||
|
|
||||||
OuterClientShuffleMediumEphemeralKey: OuterShuffleKey
|
OuterClientShuffleMediumEphemeralKey: OuterShuffleKey
|
||||||
OuterClientShuffleFunctionMediumEphemeralKey: OuterShuffleKey
|
OuterClientShuffleFunctionMediumEphemeralKey: OuterShuffleKey
|
||||||
ClientShuffleMediumEphemeralKeyA: InnerShuffleKey
|
ClientShuffleMediumEphemeralKeyA: InnerShuffleKey
|
||||||
ClientMediumEphemeralKey: AlphabetKey
|
ClientMediumEphemeralKey: AlphabetKey
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def random_init(cls, height: int, width: int):
|
||||||
|
return ClientEphemeralKeys(
|
||||||
|
OuterClientShuffleEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterClientShuffleFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
ClientEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
|
||||||
|
ClientShuffleEphemeralKeyA=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
OuterClientShuffleMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
OuterClientShuffleFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
|
||||||
|
ClientShuffleMediumEphemeralKeyA=InnerShuffleKey.init_matrix(width, height),
|
||||||
|
ClientMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255)
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user