import base64 from Crypto.PublicKey import ECC from Crypto.PublicKey.ECC import EccKey from classes.Message import Message class IntroductionMessage(Message): def __init__(self, name: str, public_key: EccKey, random_seed_commit: bytes): super().__init__() self.message_fields['type'] = 'introduction' self.set_name(name) self.set_seed_commit(random_seed_commit) self.set_key(public_key) def get_name(self) -> str: return self.message_fields['name'] def set_name(self, name: str): self.message_fields['name'] = name def get_seed_commit(self) -> bytes: return base64.b64decode(self.message_fields['seed_commit']) def set_seed_commit(self, seed_commit: bytes): self.message_fields['seed_commit'] = base64.b64encode(seed_commit).decode('utf-8') def get_key(self) -> EccKey: return ECC.import_key(self.message_fields['key']) def set_key(self, key: EccKey): self.message_fields['key'] = key.public_key().export_key(format="OpenSSH").strip()