41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import base64
|
|
|
|
from Crypto.PublicKey import ECC
|
|
from Crypto.PublicKey.ECC import EccKey
|
|
|
|
from classes.Message import Message
|
|
|
|
|
|
class ReadyMessage(Message):
|
|
def __init__(self, name: str, participants: list[tuple[str, EccKey]], random_seed: bytes):
|
|
super().__init__()
|
|
self.message_fields['type'] = 'ready'
|
|
self.set_name(name)
|
|
self.set_participants(participants)
|
|
self.set_random_seed(random_seed)
|
|
|
|
def set_name(self, name: str):
|
|
self.message_fields['name'] = name
|
|
|
|
def get_name(self) -> str:
|
|
return self.message_fields['name']
|
|
|
|
def set_participants(self, participants: list[tuple[str, EccKey]]):
|
|
self.message_fields['participants'] = []
|
|
for name, key in participants:
|
|
key = key.public_key().export_key(format='OpenSSH')
|
|
self.message_fields['participants'].append((name, key))
|
|
|
|
def get_participants(self) -> list[tuple[str, EccKey]]:
|
|
participant_list = []
|
|
for name, key in self.message_fields['participants']:
|
|
key = ECC.import_key(key)
|
|
participant_list.append((name, key))
|
|
|
|
return participant_list
|
|
|
|
def set_random_seed(self, random_seed: bytes):
|
|
self.message_fields['random_seed'] = base64.b64encode(random_seed).decode('utf-8')
|
|
|
|
def get_random_seed(self) -> bytes:
|
|
return base64.b64decode(self.message_fields['random_seed']) |