class prep(base.Instruction): r""" Custom preprocessed data """ __slots__ = [] code = base.opcodes['PREP'] arg_format = tools.chain(['str'], itertools.repeat('sw')) gf2n_arg_format = tools.chain(['str'], itertools.repeat('sgw')) field_type = 'modp' def add_usage(self, req_node): req_node.increment((self.field_type, self.args[0]), 1) def has_var_args(self): return True
class gstopinput(base.RawInputInstruction): r""" Receive inputs from player $p$ and put in registers. """ __slots__ = [] code = 0x100 + base.opcodes['STOPINPUT'] arg_format = tools.chain(['p'], itertools.repeat('sgw')) def has_var_args(self): return True
class readsocketint(base.IOInstruction): """Read variable number of 32-bit int from socket for a client id and store in registers""" __slots__ = [] code = base.opcodes['READSOCKETINT'] arg_format = tools.chain(['ci'], itertools.repeat('ciw')) def has_var_args(self): return True
class readclientpublickey(base.IOInstruction): """Read a client public key as 8 32-bit ints for a specified client id""" __slots__ = [] code = base.opcodes['READCLIENTPUBLICKEY'] arg_format = tools.chain(['ci'], itertools.repeat('ci')) def has_var_args(self): return True
class readsockets(base.IOInstruction): """Read a variable number of secret shares + MACs from socket for a client id and store in registers""" __slots__ = [] code = base.opcodes['READSOCKETS'] arg_format = tools.chain(['ci'], itertools.repeat('sw')) def has_var_args(self): return True
class readsocketc(base.IOInstruction): """Read a variable number of clear GF(p) values from socket for a specified client id and store in registers""" __slots__ = [] code = base.opcodes['READSOCKETC'] arg_format = tools.chain(['ci'], itertools.repeat('cw')) def has_var_args(self): return True
class respsecuresocket(base.IOInstruction): """Read a client public key as 8 32-bit ints for a specified client id, negotiate a shared key via STS and use it for replay resistant comms""" __slots__ = [] code = base.opcodes['RESPSECURESOCKET'] arg_format = tools.chain(['ci'], itertools.repeat('ci')) def has_var_args(self): return True
class stop_private_input(base.RawInputInstruction): r""" Receive inputs from player p and put in the corresponding registers. Can only be executed in thread zero. """ __slots__ = [] code = base.opcodes['STOP_PRIVATE_INPUT'] arg_format = tools.chain(['p'], itertools.repeat('sw')) def has_var_args(self): return True
class gbitcom(base.Instruction): r""" Store the bits $cg_j, \dots$ as every $n$-th bit of $cg_i$. """ __slots__ = [] code = base.opcodes['GBITCOM'] arg_format = tools.chain(['cgw', 'int'], itertools.repeat('cg')) def is_g2fn(self): return True def has_var_args(self): return True
class writesocketint(base.IOInstruction): """ Write a variable number of 32-bit ints from registers into socket for a specified client id, message_type """ __slots__ = [] code = base.opcodes['WRITESOCKETINT'] arg_format = tools.chain(['ci', 'int'], itertools.repeat('ci')) def has_var_args(self): return True
class writesocketshare(base.IOInstruction): """ Write a variable number of secret shares (without MACs) from registers into socket for a specified client id, message_type """ __slots__ = [] code = base.opcodes['WRITESOCKETSHARE'] arg_format = tools.chain(['ci', 'int'], itertools.repeat('s')) def has_var_args(self): return True
class input_shares(base.IOInstruction): r""" Read shares from the IO class. Examples: inp = [sint(1), sint(2), sint(3), sint(4)] input_shares(*inp) """ __slots__ = [] code = base.opcodes['INPUT_SHARE'] arg_format = tools.chain(['i'], itertools.repeat('sw')) def has_var_args(self): return True
class output_shares(base.IOInstruction): r""" Write shares to the IO class channel n. This can be called from our meta-lenguage (python-like). Example: inp = [sint(1), sint(2), sint(3), sint(4)] output_shares(*inp,n) """ __slots__ = [] code = base.opcodes['OUTPUT_SHARE'] arg_format = tools.chain(['i'], itertools.repeat('s')) def has_var_args(self): return True
class input_shares(base.IOInstruction): r""" INPUT_SHARE (n+1) ch i1 i2 ... in Read shares s_{i_j} to the IO class channel ch. This can be called from our MAMBA language using inp = [sint(1), sint(2), sint(3), sint(4)] input_shares(ch,*inp) Can only be executed in thread zero. """ __slots__ = [] code = base.opcodes['INPUT_SHARE'] arg_format = tools.chain(['i'], itertools.repeat('sw')) def has_var_args(self): return True
class readsharesfromfile(base.IOInstruction): """ Read shares from a file. Pass in start posn, return finish posn, shares. Finish posn will return: -2 file not found -1 eof reached position in file after read finished """ __slots__ = [] code = base.opcodes['READFILESHARE'] arg_format = tools.chain(['ci', 'ciw'], itertools.repeat('sw')) def has_var_args(self): return True
class bitdecint(base.Instruction): __slots__ = [] code = base.opcodes['BITDECINT'] arg_format = tools.chain(['ci'], itertools.repeat('ciw'))