return r @protocol def test_encrypted_random_real_shares_open_correctly(self, runtime): random = Random(3423993) modulus = 17 Zp = GF(modulus) bits_in_p = 5 u_bound = 2**(4 * bits_in_p) alpha = 15 paillier = ModifiedPaillier(runtime, Random(random.getrandbits(128))) share_random = Random(random.getrandbits(128)) gen = TestShareGenerator(Zp, runtime, share_random, paillier, u_bound, alpha) shares = gen.generate_random_shares(7) expected_result = [9,16,7,12,3,5,6] results = [] for inx, share in enumerate(shares): def check(v, expected_result): self.assertEquals(expected_result, v) r = runtime.open(share) results.append(r) runtime.schedule_callback(r, check, expected_result[inx]) return gather_shares(results) skip_if_missing_packages( TestPartialShareGeneratorTest, TestShareGeneratorTest)
self.u_bound, self.alpha) x = gen.generate_share(6) y = gen.generate_share(6) d = runtime.open_multiple_values([x, y]) d.addCallback(check) return d @protocol def test_open_two_secret_share(self, runtime): """Test sharing and open of a number.""" def check((a, b)): self.assertEquals(a, 6) self.assertEquals(b, 6) random = Random(3423993) share_random = Random(random.getrandbits(128)) paillier = ModifiedPaillier(runtime, Random(random.getrandbits(128))) gen = TestShareGenerator(self.Zp, runtime, share_random, paillier, self.u_bound, self.alpha) x = gen.generate_share(6) y = gen.generate_share(6) d = runtime.open_two_values(x, y) d.addCallback(check) return d skip_if_missing_packages(BeDOZaBasicCommandsTest)
share_zs = triple_generator._full_mul(share_as, share_bs) def check(shares): all_enc_shares = [] for share in shares: def test_enc(enc_shares, value): all_the_same, zi_enc = reduce( lambda x, y: (x[0] and x[1] == y, y), enc_shares, (True, enc_shares[0])) zi_enc = triple_generator.paillier.decrypt(zi_enc) self.assertEquals(value, Zp(zi_enc)) return True for inx, enc_share in enumerate(share.enc_shares): d = _convolute(runtime, enc_share) if runtime.id == inx + 1: d.addCallback(test_enc, share.value) all_enc_shares.append(d) return gatherResults(all_enc_shares) d = gatherResults(share_zs) d.addCallback(check) return d skip_if_missing_packages(ShareTest, ModifiedPaillierTest, PartialShareGeneratorTest, TripleTest, DataTransferTest, MulTest, FullMulTest, ShareGeneratorTest, AddMacsTest)
@protocol def test_succeeding_proof(self, runtime): seed = 2348838 k, s, prover_id = 5, 3, 1 player_random = Random(seed + runtime.id) shared_random = Random(seed) paillier = ModifiedPaillier(runtime, Random(player_random.getrandbits(128))) x, r, c = self._generate_test_ciphertexts(shared_random, runtime, k, s, prover_id) # print "Player", runtime.id, " x =", x # print "Player", runtime.id, " r =", r # print "Player", runtime.id, " c =", c if runtime.id == prover_id: zk = ZKProof(s, prover_id, k, runtime, c, paillier=paillier, random=player_random, x=x, r=r) else: zk = ZKProof(s, prover_id, k, runtime, c, paillier=paillier, random=player_random) deferred_proof = zk.start() def verify(result): self.assertTrue(result) runtime.schedule_callback(deferred_proof, verify) return deferred_proof # TODO: Test succeeding proof. # TODO: Test failing proof. skip_if_missing_packages(BeDOZaZeroKnowledgeTest)
gen = TestShareGenerator(self.Zp, runtime, share_random, paillier, self.u_bound, self.alpha) x = gen.generate_share(6) y = gen.generate_share(6) d = runtime.open_multiple_values([x, y]) d.addCallback(check) return d @protocol def test_open_two_secret_share(self, runtime): """Test sharing and open of a number.""" def check((a, b)): self.assertEquals(a, 6) self.assertEquals(b, 6) random = Random(3423993) share_random = Random(random.getrandbits(128)) paillier = ModifiedPaillier(runtime, Random(random.getrandbits(128))) gen = TestShareGenerator(self.Zp, runtime, share_random, paillier, self.u_bound, self.alpha) x = gen.generate_share(6) y = gen.generate_share(6) d = runtime.open_two_values(x, y) d.addCallback(check) return d skip_if_missing_packages(BeDOZaBasicCommandsTest)
prover_id, k, runtime, c, paillier=paillier, random=player_random, x=x, r=r) else: zk = ZKProof(s, prover_id, k, runtime, c, paillier=paillier, random=player_random) deferred_proof = zk.start() def verify(result): self.assertTrue(result) runtime.schedule_callback(deferred_proof, verify) return deferred_proof # TODO: Test succeeding proof. # TODO: Test failing proof. skip_if_missing_packages(BeDOZaZeroKnowledgeTest)
def check(shares): all_enc_shares = [] for share in shares: def test_enc(enc_shares, value): all_the_same, zi_enc = reduce(lambda x, y: (x[0] and x[1] == y, y), enc_shares, (True, enc_shares[0])) zi_enc = triple_generator.paillier.decrypt(zi_enc) self.assertEquals(value, Zp(zi_enc)) return True for inx, enc_share in enumerate(share.enc_shares): d = _convolute(runtime, enc_share) if runtime.id == inx + 1: d.addCallback(test_enc, share.value) all_enc_shares.append(d) return gatherResults(all_enc_shares) d = gatherResults(share_zs) d.addCallback(check) return d skip_if_missing_packages( ShareTest, ModifiedPaillierTest, PartialShareGeneratorTest, TripleTest, DataTransferTest, MulTest, FullMulTest, ShareGeneratorTest, AddMacsTest)
@protocol def test_encrypted_random_real_shares_open_correctly(self, runtime): random = Random(3423993) modulus = 17 Zp = GF(modulus) bits_in_p = 5 u_bound = 2**(4 * bits_in_p) alpha = 15 paillier = ModifiedPaillier(runtime, Random(random.getrandbits(128))) share_random = Random(random.getrandbits(128)) gen = TestShareGenerator(Zp, runtime, share_random, paillier, u_bound, alpha) shares = gen.generate_random_shares(7) expected_result = [9, 16, 7, 12, 3, 5, 6] results = [] for inx, share in enumerate(shares): def check(v, expected_result): self.assertEquals(expected_result, v) r = runtime.open(share) results.append(r) runtime.schedule_callback(r, check, expected_result[inx]) return gather_shares(results) skip_if_missing_packages(TestPartialShareGeneratorTest, TestShareGeneratorTest)