refactor key structure

This commit is contained in:
2024-05-22 11:20:17 -05:00
parent 67d51c43ae
commit 6d2472f099
2 changed files with 424 additions and 178 deletions

View File

@@ -145,29 +145,53 @@ class AlphabetKey(DarcKey):
)
class ServerPersistentKeys(BaseModel):
OuterServerShuffleKey: OuterShuffleKey
ServerKey: AlphabetKey
ServerShuffleKey: InnerShuffleKey
ServerMediumKey: AlphabetKey
class ClientEphemeralDataKeys(BaseModel):
OuterClientShuffleEphemeralKey: OuterShuffleKey
OuterClientShuffleFunctionEphemeralKey: OuterShuffleKey
ClientEphemeralKey: AlphabetKey
ClientShuffleEphemeralKeyA: InnerShuffleKey
@classmethod
def random_init(cls, height: int, width: int):
return ServerPersistentKeys(
OuterServerShuffleKey=OuterShuffleKey.init_matrix(height),
ServerKey=AlphabetKey.init_matrix(width, height, 255),
ServerShuffleKey=InnerShuffleKey.init_matrix(width, height),
ServerMediumKey=AlphabetKey.init_matrix(width, height, 255)
return ClientEphemeralDataKeys(
OuterClientShuffleEphemeralKey=OuterShuffleKey.init_matrix(height),
OuterClientShuffleFunctionEphemeralKey=OuterShuffleKey.init_matrix(height),
ClientEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
ClientShuffleEphemeralKeyA=InnerShuffleKey.init_matrix(width, height),
)
class ClientPersistentKeys(BaseModel):
class ClientEphemeralMediumKeys(BaseModel):
OuterClientShuffleMediumEphemeralKey: OuterShuffleKey
OuterClientShuffleFunctionMediumEphemeralKey: OuterShuffleKey
ClientShuffleMediumEphemeralKeyA: InnerShuffleKey
ClientMediumEphemeralKey: AlphabetKey
@classmethod
def random_init(cls, height: int, width: int):
return ClientEphemeralMediumKeys(
OuterClientShuffleMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
OuterClientShuffleFunctionMediumEphemeralKey=OuterShuffleKey.init_matrix(height),
ClientShuffleMediumEphemeralKeyA=InnerShuffleKey.init_matrix(width, height),
ClientMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255)
)
class ClientPersistentDataKeys(BaseModel):
ClientKey: AlphabetKey
ClientShuffleKeyA: InnerShuffleKey
OuterClientShuffleKey: OuterShuffleKey
OuterClientShuffleFunctionKey: OuterShuffleKey
@classmethod
def random_init(cls, height: int, width: int):
return ClientPersistentDataKeys(
ClientKey=AlphabetKey.init_matrix(width, height, 255),
ClientShuffleKeyA=InnerShuffleKey.init_matrix(width, height),
OuterClientShuffleKey=OuterShuffleKey.init_matrix(height),
OuterClientShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
)
class ClientPersistentMediumKeys(BaseModel):
OuterClientShuffleMediumKey: OuterShuffleKey
OuterClientShuffleFunctionMediumKey: OuterShuffleKey
ClientShuffleMediumKeyA: InnerShuffleKey
@@ -175,19 +199,102 @@ class ClientPersistentKeys(BaseModel):
@classmethod
def random_init(cls, height: int, width: int):
return ClientPersistentKeys(
ClientKey=AlphabetKey.init_matrix(width, height, 255),
ClientShuffleKeyA=InnerShuffleKey.init_matrix(width, height),
OuterClientShuffleKey=OuterShuffleKey.init_matrix(height),
OuterClientShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
return ClientPersistentMediumKeys(
OuterClientShuffleMediumKey=OuterShuffleKey.init_matrix(height),
OuterClientShuffleFunctionMediumKey=OuterShuffleKey.init_matrix(height),
ClientShuffleMediumKeyA=InnerShuffleKey.init_matrix(width, height),
ClientMediumKey=AlphabetKey.init_matrix(width, height, 255)
)
class ServerEphemeralDataKeys(BaseModel):
OuterServerShuffleEphemeralKey: OuterShuffleKey
ServerEphemeralKey: AlphabetKey
ServerShuffleEphemeralKey: InnerShuffleKey
class MutualPersistentKeys(BaseModel):
@classmethod
def random_init(cls, height: int, width: int):
return ServerEphemeralDataKeys(
OuterServerShuffleEphemeralKey=OuterShuffleKey.init_matrix(height),
ServerEphemeralKey=AlphabetKey.init_matrix(width, height, 255),
ServerShuffleEphemeralKey=InnerShuffleKey.init_matrix(width, height),
)
class ServerEphemeralMediumKeys(BaseModel):
ServerMediumEphemeralKey: AlphabetKey
@classmethod
def random_init(cls, height: int, width: int):
return ServerEphemeralMediumKeys(
ServerMediumEphemeralKey=AlphabetKey.init_matrix(width, height, 255)
)
class ServerPersistentDataKeys(BaseModel):
OuterServerShuffleKey: OuterShuffleKey
ServerKey: AlphabetKey
ServerShuffleKey: InnerShuffleKey
@classmethod
def random_init(cls, height: int, width: int):
return ServerPersistentDataKeys(
OuterServerShuffleKey=OuterShuffleKey.init_matrix(height),
ServerKey=AlphabetKey.init_matrix(width, height, 255),
ServerShuffleKey=InnerShuffleKey.init_matrix(width, height),
)
class ServerPersistentMediumKeys(BaseModel):
ServerMediumKey: AlphabetKey
@classmethod
def random_init(cls, height: int, width: int):
return ServerPersistentMediumKeys(
ServerMediumKey=AlphabetKey.init_matrix(width, height, 255)
)
class MutualEphemeralDataKeys(BaseModel):
MutualKey: AlphabetKey
Inner1: InnerShuffleKey
OuterFunctionKey: OuterShuffleKey
OuterFunctionFunctionKey: OuterShuffleKey
OuterServerShuffleFunctionKey: OuterShuffleKey
@classmethod
def random_init(cls, height: int, width: int):
return MutualEphemeralDataKeys(
MutualKey=AlphabetKey.init_matrix(width, height, 255),
Inner1=InnerShuffleKey.init_matrix(width, height),
OuterFunctionKey=OuterShuffleKey.init_matrix(height),
OuterFunctionFunctionKey=OuterShuffleKey.init_matrix(height),
OuterServerShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
)
class MutualEphemeralMediumKeys(BaseModel):
MutualMediumKey: AlphabetKey
FunctionMediumKey: InnerShuffleKey
PositionFunctionMediumEphemeralKey: InnerShuffleKey
OuterFunctionMediumEphemeralKey: OuterShuffleKey
OuterFunctionFunctionMediumEphemeralKey: OuterShuffleKey
OuterPositionFunctionMediumEphemeralKey: OuterShuffleKey
OuterServerShuffleFunctionMediumEphemeralKey: OuterShuffleKey
OuterPositionShuffleFunctionMediumEphemeralKey: OuterShuffleKey
PositionShuffleMediumEphemeralKey: InnerShuffleKey
OuterPositionShuffleMediumEphemeralKey: OuterShuffleKey
@classmethod
def random_init(cls, height: int, width: int):
return MutualEphemeralMediumKeys(
MutualMediumKey=AlphabetKey.init_matrix(width, height, 255),
FunctionMediumKey=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 MutualPersistentDataKeys(BaseModel):
OuterFunctionKey: OuterShuffleKey
OuterFunctionFunctionKey: OuterShuffleKey
OuterServerShuffleFunctionKey: OuterShuffleKey
@@ -195,6 +302,19 @@ class MutualPersistentKeys(BaseModel):
Inner1: InnerShuffleKey
ClientShuffleKeyX: InnerShuffleKey
@classmethod
def random_init(cls, height: int, width: int):
return MutualPersistentDataKeys(
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),
)
class MutualPersistentMediumKeys(BaseModel):
MutualMediumKey: AlphabetKey
OuterFunctionMediumKey: OuterShuffleKey
OuterFunctionFunctionMediumKey: OuterShuffleKey
@@ -209,13 +329,7 @@ class MutualPersistentKeys(BaseModel):
@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),
return MutualPersistentMediumKeys(
MutualMediumKey=AlphabetKey.init_matrix(width, height, 255),
OuterFunctionMediumKey=OuterShuffleKey.init_matrix(height),
OuterFunctionFunctionMediumKey=OuterShuffleKey.init_matrix(height),
@@ -229,83 +343,109 @@ class MutualPersistentKeys(BaseModel):
PositionShuffleMediumKey=InnerShuffleKey.init_matrix(width, height),
)
class ServerPersistentKeys(BaseModel):
Data: ServerPersistentDataKeys
Medium: ServerPersistentMediumKeys
@classmethod
def random_init(cls, height: int, width: int):
return ServerPersistentKeys(
Data=ServerPersistentDataKeys.random_init(height, width),
Medium=ServerPersistentMediumKeys.random_init(height, width)
)
class ClientPersistentKeys(BaseModel):
Data: ClientPersistentDataKeys
Medium: ClientPersistentMediumKeys
@classmethod
def random_init(cls, height: int, width: int):
return ClientPersistentKeys(
Data=ClientPersistentDataKeys.random_init(height, width),
Medium=ClientPersistentMediumKeys.random_init(height, width)
)
class MutualPersistentKeys(BaseModel):
Data: MutualPersistentDataKeys
Medium: MutualPersistentMediumKeys
@classmethod
def random_init(cls, height: int, width: int):
return MutualPersistentKeys(
Data=MutualPersistentDataKeys.random_init(height, width),
Medium=MutualPersistentMediumKeys.random_init(height, width)
)
class ServerEphemeralKeys(BaseModel):
OuterServerShuffleEphemeralKey: OuterShuffleKey
ServerEphemeralKey: AlphabetKey
ServerShuffleEphemeralKey: InnerShuffleKey
ServerMediumEphemeralKey: AlphabetKey
Data: ServerEphemeralDataKeys
Medium: ServerEphemeralMediumKeys
@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),
Data=ServerEphemeralDataKeys.random_init(height, width),
Medium=ServerEphemeralMediumKeys.random_init(height, width)
)
class MutualEphemeralKeys(BaseModel):
MutualKey: AlphabetKey
Inner1: InnerShuffleKey
OuterFunctionKey: OuterShuffleKey
OuterFunctionFunctionKey: OuterShuffleKey
OuterServerShuffleFunctionKey: OuterShuffleKey
MutualMediumKey: AlphabetKey
FunctionMediumKey: InnerShuffleKey
PositionFunctionMediumEphemeralKey: InnerShuffleKey
OuterFunctionMediumEphemeralKey: OuterShuffleKey
OuterFunctionFunctionMediumEphemeralKey: OuterShuffleKey
OuterPositionFunctionMediumEphemeralKey: OuterShuffleKey
OuterServerShuffleFunctionMediumEphemeralKey: OuterShuffleKey
OuterPositionShuffleFunctionMediumEphemeralKey: OuterShuffleKey
PositionShuffleMediumEphemeralKey: InnerShuffleKey
OuterPositionShuffleMediumEphemeralKey: OuterShuffleKey
Data: MutualEphemeralDataKeys
Medium: MutualEphemeralMediumKeys
@classmethod
def random_init(cls, height: int, width: int):
return MutualEphemeralKeys(
MutualKey=AlphabetKey.init_matrix(width, height, 255),
Inner1=InnerShuffleKey.init_matrix(width, height),
OuterFunctionKey=OuterShuffleKey.init_matrix(height),
OuterFunctionFunctionKey=OuterShuffleKey.init_matrix(height),
OuterServerShuffleFunctionKey=OuterShuffleKey.init_matrix(height),
MutualMediumKey=AlphabetKey.init_matrix(width, height, 255),
FunctionMediumKey=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)
Data=MutualEphemeralDataKeys.random_init(height, width),
Medium=MutualEphemeralMediumKeys.random_init(height, width)
)
class ClientEphemeralKeys(BaseModel):
OuterClientShuffleEphemeralKey: OuterShuffleKey
OuterClientShuffleFunctionEphemeralKey: OuterShuffleKey
ClientEphemeralKey: AlphabetKey
ClientShuffleEphemeralKeyA: InnerShuffleKey
OuterClientShuffleMediumEphemeralKey: OuterShuffleKey
OuterClientShuffleFunctionMediumEphemeralKey: OuterShuffleKey
ClientShuffleMediumEphemeralKeyA: InnerShuffleKey
ClientMediumEphemeralKey: AlphabetKey
Data: ClientEphemeralDataKeys
Medium: ClientEphemeralMediumKeys
@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)
Data=ClientEphemeralDataKeys.random_init(height, width),
Medium=ClientEphemeralMediumKeys.random_init(height, width)
)
class ServerKeys(BaseModel):
Persistent: ServerPersistentKeys
Ephemeral: ServerEphemeralKeys
@classmethod
def random_init(cls, height: int, width: int):
return ServerKeys(
Persistent=ServerPersistentKeys.random_init(height, width),
Ephemeral=ServerEphemeralKeys.random_init(height, width)
)
class MutualKeys(BaseModel):
Persistent: MutualPersistentKeys
Ephemeral: MutualEphemeralKeys
@classmethod
def random_init(cls, height: int, width: int):
return MutualKeys(
Persistent=MutualPersistentKeys.random_init(height, width),
Ephemeral=MutualEphemeralKeys.random_init(height, width)
)
class ClientKeys(BaseModel):
Persistent: ClientPersistentKeys
Ephemeral: ClientEphemeralKeys
@classmethod
def random_init(cls, height: int, width: int):
return ClientKeys(
Persistent=ClientPersistentKeys.random_init(height, width),
Ephemeral=ClientEphemeralKeys.random_init(height, width)
)