def test_encrypt_commutative(): '''Test the commutativity of the cipher''' k1 = crypto.KeyPair.new_key_pair() k2 = k1.generate_twin_pair() for r in crypto.generate_encodings(52): c1 = k1.encrypt(k2.encrypt(r)) c2 = k2.encrypt(k1.encrypt(r)) assert c1 == c2 m1 = k1.decrypt(k2.decrypt(c1)) m2 = k2.decrypt(k1.decrypt(c1)) assert m1 == m2
def __init__(self, n_players: int, loop: asyncio.AbstractEventLoop): self.key_pair = crypto.KeyPair.new_key_pair() self.deck: [int] = generate_encodings(N_CARDS) self.key_pair = crypto.KeyPair.new_key_pair() self.n_players = n_players self.players: [Player] = [] self.cur_player_i = 0 self.stage = Stage.Waiting self.loop = loop
N_PLAYERS = 2 class NotAllowedException(BaseException): def __init__(self): super().__init__('Not Allowed') class NewGameException(BaseException): def __init__(self, last_decision): super().__init__('New Game') self.last_decision = last_decision encoding_idx_mapping = dict() for i, encoding in enumerate(crypto.generate_encodings(N_CARDS)): encoding_idx_mapping[encoding] = i class Card: """ A card with suit and rank (int of 1-13), and an encoding (its representation) """ def __init__(self, encoding: int): self.encoding = encoding self.seen_decrypting_key = set() def decrypt(self, key: crypto.KeyPair) -> bool: """ Decrypt with key with check for duplication. Return True if this card has been fully decrypted.
def test_encrypt(): '''Test and see if encryption works''' key = utils.key for r in crypto.generate_encodings(52): key.encrypt(r)
def test_reset_key(): key = utils.key key.reset_key() for r in crypto.generate_encodings(5): assert r == key.decrypt(key.encrypt(r))
def test_encrypt_decrypt(): '''Test encrypt and then decrypt''' key = utils.key for r in crypto.generate_encodings(52): assert r == key.decrypt(key.encrypt(r))