Esempio n. 1
0
        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)
Esempio n. 2
0
                                 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)
Esempio n. 3
0
        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)
Esempio n. 4
0
    @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)
Esempio n. 5
0
        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)
Esempio n. 6
0
                         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)
Esempio n. 7
0
        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)
Esempio n. 8
0
    @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)