@Override public DRes<Boolean> open(DRes<SBool> toOpen) { return this.delegate.open(toOpen); }
@Override public DRes<Boolean> open(DRes<SBool> toOpen, int towardsPartyId) { return this.delegate.open(toOpen, towardsPartyId); }
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { Binary builder = seq.binary(); DRes<SBool> falseBool = builder.known(false); DRes<SBool> trueBool = builder.known(true); List<DRes<Boolean>> xors = new ArrayList<>(); xors.add(builder.open(builder.xor(falseBool, falseBool))); xors.add(builder.open(builder.xor(trueBool, falseBool))); xors.add(builder.open(builder.xor(falseBool, trueBool))); xors.add(builder.open(builder.xor(trueBool, trueBool))); return () -> xors; }).seq((seq, list) -> { return () -> list.stream().map(DRes::out).collect(Collectors.toList()); }); List<Boolean> outs = runApplication(app); if (doAsserts) { Assert.assertEquals(false, outs.get(0)); Assert.assertEquals(true, outs.get(1)); Assert.assertEquals(true, outs.get(2)); Assert.assertEquals(false, outs.get(3)); } } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { Binary builder = seq.binary(); DRes<SBool> falseBool = builder.known(false); DRes<SBool> trueBool = builder.known(true); List<DRes<Boolean>> list = new ArrayList<>(); list.add(builder.open(builder.and(falseBool, falseBool))); list.add(builder.open(builder.and(trueBool, falseBool))); list.add(builder.open(builder.and(falseBool, trueBool))); list.add(builder.open(builder.and(trueBool, trueBool))); return () -> list; }).seq((seq, list) -> { return () -> list.stream().map(DRes::out).collect(Collectors.toList()); }); List<Boolean> outs = runApplication(app); if (doAsserts) { Assert.assertEquals(false, outs.get(0)); Assert.assertEquals(false, outs.get(1)); Assert.assertEquals(false, outs.get(2)); Assert.assertEquals(true, outs.get(3)); } } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { AdvancedBinary prov = seq.advancedBinary(); DRes<SBool> increment = seq.binary().known(true); List<DRes<SBool>> large = rawLarge.stream().map(seq.binary()::known).collect(Collectors.toList()); DRes<List<DRes<SBool>>> adder = prov.bitIncrement(large, increment); return adder; }).seq((seq, dat) -> { List<DRes<Boolean>> out = new ArrayList<>(); for (DRes<SBool> o : dat) { out.add(seq.binary().open(o)); } return () -> out.stream().map(DRes::out).collect(Collectors.toList()); }); List<Boolean> outputs = runApplication(app); Assert.assertThat(ByteAndBitConverter.toHex(outputs), Is.is(expected)); Assert.assertThat(outputs.size(), Is.is(rawLarge.size() + 1)); } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> { ProtocolBuilderBinary builder = (ProtocolBuilderBinary) producer; return builder.seq(seq -> { AdvancedBinary prov = seq.advancedBinary(); List<DRes<SBool>> first = rawFirst.stream().map(seq.binary()::known).collect(Collectors.toList()); DRes<List<DRes<SBool>>> log = prov.logProtocol(first); return log::out; }).seq((seq, dat) -> { List<DRes<Boolean>> out = new ArrayList<DRes<Boolean>>(); for (DRes<SBool> o : dat) { out.add(seq.binary().open(o)); } return () -> out.stream().map(DRes::out).collect(Collectors.toList()); }); }; List<Boolean> outputs = runApplication(app); Assert.assertThat(ByteAndBitConverter.toHex(outputs), Is.is(expected)); } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { Binary builder = seq.binary(); DRes<SBool> falseBool = builder.known(false); DRes<SBool> trueBool = builder.known(true); List<DRes<Boolean>> list = new ArrayList<>(); list.add(builder.open(builder.not(falseBool))); list.add(builder.open(builder.not(trueBool))); return () -> list; }).seq((seq, list) -> { return () -> list.stream().map(DRes::out).collect(Collectors.toList()); }); List<Boolean> outs = runApplication(app); if (doAsserts) { Assert.assertEquals(true, outs.get(0)); Assert.assertEquals(false, outs.get(1)); } } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(builder -> { DRes<SBool> inp1 = builder.binary().input(false, 1); DRes<SBool> inp2 = builder.binary().input(true, 1); DRes<Boolean> open1 = builder.binary().open(inp1); DRes<Boolean> open2 = builder.binary().open(inp2); DRes<Boolean> open12 = builder.binary().open(inp1, 2); DRes<Boolean> open21 = builder.binary().open(inp2, 1); return () -> Arrays.asList(open1, open2, open12, open21); }).seq( (seq, results) -> () -> results.stream().map(DRes::out) .collect(Collectors.toList())); List<Boolean> res = runApplication(app); Assert.assertEquals(false, res.get(0)); Assert.assertEquals(true, res.get(1)); Assert.assertEquals(conf.getMyId() == 2 ? false : null, res.get(2)); Assert.assertEquals(conf.getMyId() == 1 ? true : null, res.get(3)); } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { List<DRes<SBool>> input1 = BooleanHelper.known(toBoolean(in1), seq.binary()); List<List<DRes<SBool>>> inputs = new ArrayList<>(); inputs.add(input1); return () -> inputs; }).seq((seq, inputs) -> { DRes<List<SBool>> list = seq.bristol().SHA256(inputs.get(0)); return list; }).seq((seq, res) -> { List<DRes<Boolean>> outputs = new ArrayList<>(); for (SBool boo : res) { outputs.add(seq.binary().open(boo)); } return () -> outputs; }).seq( (seq, output) -> () -> output.stream().map(DRes::out).collect(Collectors.toList())); List<Boolean> res = runApplication(app); Boolean[] expected = toBoolean(out1); Boolean[] actual = new Boolean[res.size()]; for (int i = 0; i < res.size(); i++) { actual[i] = res.get(i); } if (doAsserts) { Assert.assertArrayEquals(expected, actual); } } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { Binary builder = seq.binary(); DRes<SBool> falseBool = builder.known(false); DRes<SBool> trueBool = builder.known(true); List<DRes<Boolean>> list = new ArrayList<>(); list.add(builder .open(builder.not(builder.and(builder.xor(falseBool, falseBool), falseBool)))); list.add(builder .open(builder.not(builder.and(builder.xor(falseBool, trueBool), falseBool)))); list.add( builder.open(builder.not(builder.and(builder.xor(trueBool, falseBool), trueBool)))); list.add( builder.open(builder.not(builder.and(builder.xor(trueBool, trueBool), trueBool)))); return () -> list; }).seq((seq, list) -> { return () -> list.stream().map(DRes::out).collect(Collectors.toList()); }); List<Boolean> outs = runApplication(app); if (doAsserts) { Assert.assertEquals(true, outs.get(0)); Assert.assertEquals(true, outs.get(1)); Assert.assertEquals(false, outs.get(2)); Assert.assertEquals(true, outs.get(3)); } } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(builder -> { AdvancedBinary prov = builder.advancedBinary(); List<DRes<Boolean>> results = new ArrayList<>(); DRes<SBool> inp100 = builder.binary().known(false); results.add(builder.binary().open(prov.and(inp100, false))); DRes<SBool> inp110 = builder.binary().known(true); results.add(builder.binary().open(prov.and(inp110, false))); DRes<SBool> inp101 = builder.binary().known(false); results.add(builder.binary().open(prov.and(inp101, true))); DRes<SBool> inp111 = builder.binary().known(true); results.add(builder.binary().open(prov.and(inp111, true))); return () -> results; }).seq( (seq, results) -> () -> results.stream().map(DRes::out) .collect(Collectors.toList())); List<Boolean> res = runApplication(app); Assert.assertEquals(false, res.get(0)); Assert.assertEquals(false, res.get(1)); Assert.assertEquals(false, res.get(2)); Assert.assertEquals(true, res.get(3)); } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(builder -> { AdvancedBinary prov = builder.advancedBinary(); List<DRes<Boolean>> results = new ArrayList<>(); DRes<SBool> inp100 = builder.binary().known(false); results.add(builder.binary().open(prov.or(inp100, false))); DRes<SBool> inp110 = builder.binary().known(true); results.add(builder.binary().open(prov.or(inp110, false))); DRes<SBool> inp101 = builder.binary().known(false); results.add(builder.binary().open(prov.or(inp101, true))); DRes<SBool> inp111 = builder.binary().known(true); results.add(builder.binary().open(prov.or(inp111, true))); return () -> results; }).seq( (seq, results) -> () -> results.stream().map(DRes::out) .collect(Collectors.toList())); List<Boolean> res = runApplication(app); Assert.assertEquals(false, res.get(0)); Assert.assertEquals(true, res.get(1)); Assert.assertEquals(true, res.get(2)); Assert.assertEquals(true, res.get(3)); } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(builder -> { AdvancedBinary prov = builder.advancedBinary(); List<DRes<Boolean>> results = new ArrayList<>(); DRes<SBool> inp100 = builder.binary().known(false); results.add(builder.binary().open(prov.xnor(inp100, false))); DRes<SBool> inp110 = builder.binary().known(true); results.add(builder.binary().open(prov.xnor(inp110, false))); DRes<SBool> inp101 = builder.binary().known(false); results.add(builder.binary().open(prov.xnor(inp101, true))); DRes<SBool> inp111 = builder.binary().known(true); results.add(builder.binary().open(prov.xnor(inp111, true))); return () -> results; }).seq( (seq, results) -> () -> results.stream().map(DRes::out) .collect(Collectors.toList())); List<Boolean> res = runApplication(app); Assert.assertEquals(true, res.get(0)); Assert.assertEquals(false, res.get(1)); Assert.assertEquals(false, res.get(2)); Assert.assertEquals(true, res.get(3)); } };
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(builder -> { AdvancedBinary prov = builder.advancedBinary(); List<DRes<Boolean>> results = new ArrayList<>(); DRes<SBool> inp100 = builder.binary().known(false); results.add(builder.binary().open(prov.nand(inp100, false))); DRes<SBool> inp110 = builder.binary().known(true); results.add(builder.binary().open(prov.nand(inp110, false))); DRes<SBool> inp101 = builder.binary().known(false); results.add(builder.binary().open(prov.nand(inp101, true))); DRes<SBool> inp111 = builder.binary().known(true); results.add(builder.binary().open(prov.nand(inp111, true))); return () -> results; }).seq( (seq, results) -> () -> results.stream().map(DRes::out) .collect(Collectors.toList())); List<Boolean> res = runApplication(app); Assert.assertEquals(true, res.get(0)); Assert.assertEquals(true, res.get(1)); Assert.assertEquals(true, res.get(2)); Assert.assertEquals(false, res.get(3)); } };
@Override public void test() throws Exception { Boolean[] comp1 = new Boolean[] {false, true, false, true, false}; Boolean[] comp2 = new Boolean[] {false, true, true}; Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { List<DRes<SBool>> in1 = BooleanHelper.known(comp1, seq.binary()); List<DRes<SBool>> in2 = BooleanHelper.known(comp2, seq.binary()); DRes<SBool> res1 = seq.comparison().greaterThan(in1, in2); DRes<Boolean> open1 = seq.binary().open(res1); return () -> Collections.singletonList(open1); }).seq( (seq, opened) -> () -> opened.stream().map(DRes::out).collect(Collectors.toList())); try { runApplication(app); } catch (Exception e) { if (!(e.getCause() instanceof IllegalArgumentException)) { throw e; } } } };
@Override public void test() throws Exception { Boolean[] comp1 = new Boolean[] {false, true, false, true, false}; Boolean[] comp2 = new Boolean[] {false, true, true, true, false}; Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { List<DRes<SBool>> in1 = BooleanHelper.known(comp1, seq.binary()); List<DRes<SBool>> in2 = BooleanHelper.known(comp2, seq.binary()); DRes<SBool> res1 = seq.comparison().greaterThan(in1, in2); DRes<SBool> res2 = seq.comparison().greaterThan(in2, in1); DRes<Boolean> open1 = seq.binary().open(res1); DRes<Boolean> open2 = seq.binary().open(res2); return () -> Arrays.asList(open1, open2); }).seq( (seq, opened) -> () -> opened.stream().map(DRes::out).collect(Collectors.toList())); List<Boolean> res = runApplication(app); if (doAsserts) { Assert.assertEquals(false, res.get(0)); Assert.assertEquals(true, res.get(1)); } } };
@Override public void test() throws Exception { Boolean[] comp1 = new Boolean[] {false, true, false, true, false}; Boolean[] comp2 = new Boolean[] {false, true, true, true, false}; Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { List<DRes<SBool>> in1 = BooleanHelper.known(comp1, seq.binary()); List<DRes<SBool>> in2 = BooleanHelper.known(comp2, seq.binary()); DRes<SBool> res1 = seq.comparison().equal(in1, in2); DRes<SBool> res2 = seq.comparison().equal(in1, in1); DRes<Boolean> open1 = seq.binary().open(res1); DRes<Boolean> open2 = seq.binary().open(res2); return () -> Arrays.asList(open1, open2); }).seq( (seq, opened) -> () -> opened.stream().map(DRes::out).collect(Collectors.toList())); List<Boolean> res = runApplication(app); if (doAsserts) { Assert.assertEquals(false, res.get(0)); Assert.assertEquals(true, res.get(1)); } } };
@Override public void test() throws Exception { Application<Boolean, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { DRes<SBool> in = seq.binary().input(true, 2); DRes<Boolean> open = seq.binary().open(in); return open; }).seq((seq, out) -> { return () -> out; }); boolean output = runApplication(app); if (doAsserts) { Assert.assertEquals(true, output); } } };
@Override public void test() throws Exception { Application<Boolean, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { DRes<SBool> in = seq.binary().input(true, 1); DRes<Boolean> open = seq.binary().open(in); return open; }).seq((seq, out) -> { return () -> out; }); boolean output = runApplication(app); if (doAsserts) { Assert.assertEquals(true, output); } } };
@Override public void test() throws Exception { Application<Boolean, ProtocolBuilderBinary> app = producer -> producer.seq(seq -> { DRes<SBool> in = seq.binary().randomBit(); DRes<Boolean> open = seq.binary().open(in); return open; }).seq((seq, out) -> { return () -> out; }); boolean output = runApplication(app); if (doAsserts) { Assert.assertEquals(true, output); } } };