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'])