Skip to content

Commit 4dd834c

Browse files
committed
Functionality to reveal data structure parts by party to socket.
1 parent a2ab476 commit 4dd834c

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

Compiler/types.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1996,7 +1996,12 @@ def _san(self, other):
19961996
return self._v
19971997

19981998
def _div_san(self):
1999-
return self._v.conv((library.get_player_id() == self.player)._v).if_else(self._v, 1)
1999+
return self._op_san(1)
2000+
2001+
def _op_san(self, default=0):
2002+
return self._v.conv(
2003+
(library.get_player_id() == self.player)._v).if_else(
2004+
self._v, default)
20002005

20012006
def __setitem__(self, index, value):
20022007
self._san(value)
@@ -5920,6 +5925,18 @@ def reveal_to_clients(self, clients):
59205925
"""
59215926
self.value_type.reveal_to_clients(clients, [self.get_vector()])
59225927

5928+
def reveal_to_socket_by_party(self, client_id, n_parties=None):
5929+
""" Reveal i-th part to a specific client socket on party i.
5930+
5931+
:param client_id: regint
5932+
:param n_parties: number of parties (default: first dimension length)
5933+
5934+
"""
5935+
n_parties = n_parties or len(self)
5936+
tmp = sum(self.get_part_vector(base=i, size=1).reveal_to(i)._op_san()
5937+
for i in range(n_parties))
5938+
tmp.write_to_socket(client_id, tmp)
5939+
59235940
class Array(_vectorizable):
59245941
"""
59255942
Array accessible by public index. That is, ``a[i]`` works for an

0 commit comments

Comments
 (0)