def test_modified_paillier_can_decrypt_encrypted_min_val(self, runtime): paillier = ModifiedPaillier(runtime, Random(554424)) n = runtime.players[runtime.id].pubkey['n'] val = -(n - 1) / 2 encrypted_val = paillier.encrypt(val) decrypted_val = paillier.decrypt(encrypted_val) self.assertEquals(val, decrypted_val)
def test_modified_paillier_with_different_randomness_are_not_equal(self, runtime): random = Random(3423434) n = runtime.players[runtime.id].pubkey['n'] paillier = ModifiedPaillier(runtime, Random(random.getrandbits(128))) val = 47 random_elm = random.randint(1, long(n)) encrypted_val_1 = paillier.encrypt(val, random_elm=random_elm) encrypted_val_2 = paillier.encrypt(val, random_elm=random_elm) self.assertEquals(encrypted_val_1, encrypted_val_2)
def test_modified_paillier_with_same_randomness_are_equal(self, runtime): random = Random(234333) paillier = ModifiedPaillier(runtime, Random(random.getrandbits(128))) n = runtime.players[runtime.id].pubkey['n'] val = 46 random_elm_1 = random.randint(1, long(n)) random_elm_2 = (random_elm_1 + 1) % n encrypted_val_1 = paillier.encrypt(val, random_elm=random_elm_1) encrypted_val_2 = paillier.encrypt(val, random_elm=random_elm_1) self.assertEquals(encrypted_val_1, encrypted_val_2)
def test_modified_paillier_with_different_randomness_are_not_equal( self, runtime): random = Random(3423434) n = runtime.players[runtime.id].pubkey['n'] paillier = ModifiedPaillier(runtime, Random(random.getrandbits(128))) val = 47 random_elm = random.randint(1, long(n)) encrypted_val_1 = paillier.encrypt(val, random_elm=random_elm) encrypted_val_2 = paillier.encrypt(val, random_elm=random_elm) self.assertEquals(encrypted_val_1, encrypted_val_2)
def test_modified_paillier_can_encrypt_to_other(self, runtime): paillier = ModifiedPaillier(runtime, Random(57503)) msg = [] for p in runtime.players: msg.append(paillier.encrypt(runtime.id, player_id=p)) received = _send(runtime, msg) def verify(enc): plain = [paillier.decrypt(e) for e in enc] self.assertEquals(range(1, self.num_players + 1), plain) runtime.schedule_callback(received, verify) return received
def test_modified_paillier_can_decrypt_encrypted_one(self, runtime): paillier = ModifiedPaillier(runtime, Random(234838)) val = 1 encrypted_val = paillier.encrypt(val) decrypted_val = paillier.decrypt(encrypted_val) self.assertEquals(val, decrypted_val)
def test_modified_paillier_can_decrypt_encrypted_positive(self, runtime): paillier = ModifiedPaillier(runtime, Random(777737)) val = 73423 encrypted_val = paillier.encrypt(val) decrypted_val = paillier.decrypt(encrypted_val) self.assertEquals(val, decrypted_val)
def test_modified_paillier_can_decrypt_encrypted_zero(self, runtime): paillier = ModifiedPaillier(runtime, Random(338301)) val = 0 encrypted_val = paillier.encrypt(val) decrypted_val = paillier.decrypt(encrypted_val) self.assertEquals(val, decrypted_val)