package com.oblivm.backend.example; import com.oblivm.backend.circuits.arithmetic.IntegerLib; import com.oblivm.backend.flexsc.CompEnv; import com.oblivm.backend.gc.BadLabelException; import com.oblivm.backend.util.EvaRunnable; import com.oblivm.backend.util.GenRunnable; import com.oblivm.backend.util.Utils; public class Millionaire { static public T compute(CompEnv gen, T[] inputA, T[] inputB) { return new IntegerLib(gen).geq(inputA, inputB); } public static class Generator extends GenRunnable { T[] inputA; T[] inputB; T scResult; @Override public void prepareInput(CompEnv gen) { inputA = gen.inputOfAlice(Utils.fromInt(new Integer(args[0]), 32)); gen.flush(); inputB = gen.inputOfBob(new boolean[32]); } @Override public void secureCompute(CompEnv gen) { scResult = compute(gen, inputA, inputB); } @Override public void prepareOutput(CompEnv gen) throws BadLabelException { System.out.println(gen.outputToAlice(scResult)); } } public static class Evaluator extends EvaRunnable { T[] inputA; T[] inputB; T scResult; @Override public void prepareInput(CompEnv gen) { inputA = gen.inputOfAlice(new boolean[32]); gen.flush(); inputB = gen.inputOfBob(Utils.fromInt(new Integer(args[0]), 32)); } @Override public void secureCompute(CompEnv gen) { scResult = compute(gen, inputA, inputB); } @Override public void prepareOutput(CompEnv gen) throws BadLabelException { gen.outputToAlice(scResult); } } }