Push current state to Gitea

This commit is contained in:
Martin Asprusten
2025-04-17 19:25:23 +02:00
commit 889b6546ff
16 changed files with 746 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
import base64
from classes.Message import Message
class AnnouncementMessage(Message):
def __init__(self, name: str, announcement: bytes):
super().__init__()
self.message_fields['type'] = 'announcement'
self.message_fields['name'] = name
self.message_fields['announcement'] = announcement
def set_name(self, name: str):
self.message_fields['name'] = name
def get_name(self) -> str:
return self.message_fields['name']
def set_announcement(self, announcement: bytes):
self.message_fields['announcement'] = base64.b64encode(announcement).decode('utf-8')
def get_announcement(self) -> bytes:
return base64.b64decode(self.message_fields['announcement'])
+33
View File
@@ -0,0 +1,33 @@
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()
+41
View File
@@ -0,0 +1,41 @@
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'])
+35
View File
@@ -0,0 +1,35 @@
import base64
from classes.Message import Message
class ShuffleMessage(Message):
def __init__(self, name: str, cards: list[bytes], stage: str):
super().__init__()
self.message_fields['type'] = 'shuffle'
self.set_name(name)
self.set_cards(cards)
self.set_stage(stage)
def set_name(self, name: str):
self.message_fields['name'] = name
def get_name(self) -> str:
return self.message_fields['name']
def set_cards(self, cards: list[bytes]):
self.message_fields['cards'] = []
for card in cards:
self.message_fields['cards'].append(base64.b64encode(card).decode('utf-8'))
def get_cards(self) -> list[bytes]:
cards = []
for card in self.message_fields['cards']:
cards.append(base64.b64decode(card))
return cards
def set_stage(self, stage: str):
self.message_fields['stage'] = stage
def get_stage(self) -> str:
return self.message_fields['stage']
View File