예제 #1
0
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
예제 #2
0
    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
예제 #3
0
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.
예제 #4
0
def test_encrypt():
    '''Test and see if encryption works'''
    key = utils.key

    for r in crypto.generate_encodings(52):
        key.encrypt(r)
예제 #5
0
def test_reset_key():
    key = utils.key
    key.reset_key()
    for r in crypto.generate_encodings(5):
        assert r == key.decrypt(key.encrypt(r))
예제 #6
0
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))