Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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
Exemplo n.º 13
0
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
Exemplo n.º 14
0
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
Exemplo n.º 15
0
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
Exemplo n.º 16
0
class bitdecint(base.Instruction):
    __slots__ = []
    code = base.opcodes['BITDECINT']
    arg_format = tools.chain(['ci'], itertools.repeat('ciw'))