# HG changeset patch # User Janus Dam Nielsen <janus.niel...@alexandra.dk> # Date 1245395107 -7200 # Node ID 57f6d76d82e375b77293bcc6d54eeb6242686079 # Parent 4c46e8eeb719682da1a91b7ad96e7e902363e204 importeret rettelse triple_test.patch
diff --git a/viff/orlandi.py b/viff/orlandi.py --- a/viff/orlandi.py +++ b/viff/orlandi.py @@ -932,7 +932,39 @@ self.schedule_callback(result, step2ab, ai, (r1, r2)) result.addErrback(self.error_handler) return result - + + def triple_test(self, field): + triple1 = self.triple_gen(field) + triple2 = self.triple_gen(field) + r = self.open(self.random_share(field)) + + def check((v, oa, ob, oc, ox, oy, oz), a, b, c): + if v is 0: + return None + return (a, b, c) + + def compute_value(((a, b, c), (x, y, z), r)): + oa = self.open(a) + ob = self.open(b) + oc = self.open(c) + ox = self.open(x) + oy = self.open(y) + oz = self.open(z) + l = self._cmul(r, x, field) + m = self._cmul(r, y, field) + n = self._cmul(r*r, z, field) + d = c - self._basic_multiplication(a, b, l, m, n) + r = gather_shares([d, oa, ob, oc, ox, oy, oz]) + r.addCallbacks(check, self.error_handler, callbackArgs=(a, b, c)) + return r + + result = gatherResults([triple1, triple2, r]) + result.addCallbacks(compute_value, self.error_handler) + + # do actual communication + self.activate_reactor() + + return result def error_handler(self, ex): print "Error: ", ex diff --git a/viff/test/test_orlandi_runtime.py b/viff/test/test_orlandi_runtime.py --- a/viff/test/test_orlandi_runtime.py +++ b/viff/test/test_orlandi_runtime.py @@ -494,4 +494,21 @@ d = gatherResults([t1, t2]) d.addCallbacks(open, runtime.error_handler) return d - + + @protocol + def test_tripleTest(self, runtime): + """Test the triple_test command.""" + + def check((a, b, c)): + self.assertEquals(c, a * b) + + def open((a, b, c)): + d1 = runtime.open(a) + d2 = runtime.open(b) + d3 = runtime.open(c) + d = gatherResults([d1, d2, d3]) + d.addCallback(check) + return d + d = runtime.triple_test(self.Zp) + d.addCallbacks(open, runtime.error_handler) + return d _______________________________________________ viff-devel mailing list (http://viff.dk/) viff-devel@viff.dk http://lists.viff.dk/listinfo.cgi/viff-devel-viff.dk