SFE.PF
Class UC

java.lang.Object
  extended by SFE.BOAL.Circuit
      extended by SFE.PF.UC
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
UCsel, UCvaliant

public abstract class UC
extends Circuit

A Universal Circuit (UC) is a circuit that can be programmed to simulate any circuit.

Author:
Thomas Schneider
See Also:
Serialized Form

Field Summary
static int Ggates
          number of gates to implement a gate simulation block
static int Xgates
          number of gates to implement a X switching block
static int Ygates
          number of gates to implement a Y switching block
 
Constructor Summary
UC()
           
 
Method Summary
abstract  int countGates()
          Count number of gates of UC.
abstract  int estimateGates(int u, int v, int k)
          Estimate number of gates of UC.
abstract  Gate[] extractCircuit(Gate[] outputs)
          Extract circuit representation of UC.
abstract  void generate(int u, int v, int k)
          Generate UC for circuit of given shape.
 void generateEncCircuit()
          Turn all gates in a circuit to encrypted gates
static UC generateUC(int u, int v, int k, java.lang.String type)
          generate UC for given circuit parameters
abstract  void program(int[] ins, int[] outs, SFE.PF.ParseGate[] gates)
          Program UC with given circuit.
 int translateIO(int linenum, boolean isAlice, boolean isInput)
          Translate inputs and outputs.
 
Methods inherited from class SFE.BOAL.Circuit
addGate, cextractEncPayload, cextractSecPayload, cinjectEncPayload, cinjectSecPayload, cmeasureEncPayload, cmeasureSecPayload, evalCircuit, evalGarbledCircuit, getGate, isCorrect, printCircuit
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

Ygates

public static final int Ygates
number of gates to implement a Y switching block

See Also:
Constant Field Values

Xgates

public static final int Xgates
number of gates to implement a X switching block

See Also:
Constant Field Values

Ggates

public static final int Ggates
number of gates to implement a gate simulation block

See Also:
Constant Field Values
Constructor Detail

UC

public UC()
Method Detail

program

public abstract void program(int[] ins,
                             int[] outs,
                             SFE.PF.ParseGate[] gates)
Program UC with given circuit.

Parameters:
ins - inputs
outs - outputs
gates - gates of circuit

generate

public abstract void generate(int u,
                              int v,
                              int k)
Generate UC for circuit of given shape.

Parameters:
u - #inputs
v - #outputs
k - #gates

extractCircuit

public abstract Gate[] extractCircuit(Gate[] outputs)
Extract circuit representation of UC.

Returns:
output gates

countGates

public abstract int countGates()
Count number of gates of UC.

Returns:
#gates of UC

estimateGates

public abstract int estimateGates(int u,
                                  int v,
                                  int k)
Estimate number of gates of UC.

Parameters:
u - #inputs
v - #outputs
k - #gates of circuit
Returns:
estimated #gates of UC

generateEncCircuit

public void generateEncCircuit()
Description copied from class: Circuit
Turn all gates in a circuit to encrypted gates

Overrides:
generateEncCircuit in class Circuit

translateIO

public int translateIO(int linenum,
                       boolean isAlice,
                       boolean isInput)
Translate inputs and outputs.

Inputs and outputs (IO) are rearranged to contain Alice's first and then Bob's in reversed order. Otherwise Alice could infer information about Bob's IO from the UC.

Parameters:
linenum - original index of IO
isAlice - IO of Alice?
isInput - Input?
Returns:
translated IO index

generateUC

public static UC generateUC(int u,
                            int v,
                            int k,
                            java.lang.String type)
generate UC for given circuit parameters

Parameters:
u - #inputs
v - #outputs
k - #gates
type - type of UC, choose smallest UC if type=null