def test_mul_computes_correct_result(self, runtime):
        p = 17

        random = Random(283883)
        triple_generator = TripleGenerator(runtime, 32, p, random)

        Zp = GF(p)

        ais = [Zp(6), Zp(6), Zp(6), Zp(6)]
        b2 = Zp(7)
        cs = []
        for ai in ais:
            cs.append(triple_generator.paillier.encrypt(b2.value, 2))

        n = len(ais)

        if runtime.id == 1:
            r1 = triple_generator._mul(1, 2, n, ais, cs)

            def check1(shares):
                for share in shares:
                    pc = tuple(runtime.program_counter)
                    runtime.protocols[2].sendData(pc, TEXT, str(share.value))
                return True

            r1.addCallback(check1)
            return r1
        else:
            r1 = triple_generator._mul(1, 2, n)

            def check(shares):
                deferreds = []
                for share in shares:
                    if runtime.id == 2:

                        def check_additivity(zi, zj):
                            self.assertEquals((Zp(long(zi)) + zj).value, 8)
                            return None

                        d = Deferred()
                        d.addCallback(check_additivity, share.value)
                        runtime._expect_data(1, TEXT, d)
                        deferreds.append(d)
                    else:
                        self.assertEquals(share.value, 0)
                return gatherResults(deferreds)

            r1.addCallback(check)
            return r1
    def test_mul_same_player_inputs_and_receives(self, runtime):
        p = 17

        random = Random(283883)
        triple_generator = TripleGenerator(runtime, self.security_parameter, p,
                                           random)

        Zp = GF(p)

        ais = [Zp(6), Zp(6), Zp(6), Zp(6)]
        b2 = Zp(7)
        cs = []
        for ai in ais:
            cs.append(triple_generator.paillier.encrypt(b2.value, 2))

        n = len(ais)

        r1 = triple_generator._mul(2, 2, n, ais, cs)

        def check(shares):
            for share in shares:
                if runtime.id == 2:
                    self.assertEquals(share.value, 8)
            return True

        r1.addCallback(check)
        return r1
Example #3
0
    def test_mul_same_player_inputs_and_receives(self, runtime):
        p = 17
      
        random = Random(283883)        
        triple_generator = TripleGenerator(runtime, self.security_parameter, p, random)

        Zp = GF(p)

        ais = [Zp(6), Zp(6), Zp(6), Zp(6)]
        b2 = Zp(7)
        cs = []
        for ai in ais:
            cs.append(triple_generator.paillier.encrypt(b2.value, 2))

        n = len(ais)
        
        r1 = triple_generator._mul(2, 2, n, ais, cs)
        def check(shares):
            for share in shares:
                if runtime.id == 2:
                    self.assertEquals(share.value, 8)
            return True
            
        r1.addCallback(check)
        return r1
Example #4
0
    def test_mul_computes_correct_result(self, runtime):
        p = 17
       
        random = Random(283883)        
        triple_generator = TripleGenerator(runtime, 32, p, random)

        Zp = GF(p)

        ais = [Zp(6), Zp(6), Zp(6), Zp(6)]
        b2 = Zp(7)
        cs = []
        for ai in ais:
            cs.append(triple_generator.paillier.encrypt(b2.value, 2))      

        n = len(ais)
        
        if runtime.id == 1:
            r1 = triple_generator._mul(1, 2, n, ais, cs)
            def check1(shares):
                for share in shares:
                    pc = tuple(runtime.program_counter)
                    runtime.protocols[2].sendData(pc, TEXT, str(share.value))
                return True
            r1.addCallback(check1)
            return r1
        else:
            r1 = triple_generator._mul(1, 2, n)
            def check(shares):
                deferreds = []
                for share in shares:
                    if runtime.id == 2:
                        def check_additivity(zi, zj):
                            self.assertEquals((Zp(long(zi)) + zj).value, 8)
                            return None
                        d = Deferred()
                        d.addCallback(check_additivity, share.value)
                        runtime._expect_data(1, TEXT, d)
                        deferreds.append(d)
                    else:
                        self.assertEquals(share.value, 0)
                return gatherResults(deferreds)
            r1.addCallback(check)
            return r1