@Override public DRes<SBool> input(boolean in, int inputter) { return this.delegate.input(in, inputter); }
@Override public DRes<List<Boolean>> buildComputation(ProtocolBuilderBinary producer) { return producer.seq(seq -> { Binary bin = seq.binary(); List<DRes<SBool>> keyInputs = new ArrayList<>(); List<DRes<SBool>> plainInputs = new ArrayList<>(); if (this.id == 1) { for (boolean b : in) { keyInputs.add(bin.input(b, 1)); plainInputs.add(bin.input(false, 2)); } } else { // Receive inputs for (boolean b : in) { keyInputs.add(bin.input(false, 1)); plainInputs.add(bin.input(b, 2)); } } DRes<List<SBool>> res = seq.bristol().AES(plainInputs, keyInputs); return res; }).seq((seq, aesRes) -> { List<DRes<Boolean>> outs = new ArrayList<>(); for (SBool toOpen : aesRes) { outs.add(seq.binary().open(toOpen)); } return () -> outs; }).seq((seq, opened) -> () -> opened.stream().map(DRes::out).collect(Collectors.toList())); }
if (this.id == 1) { for (boolean b : inKey) { key1Inputs.add(bin.input(b, 1)); key2Inputs.add(bin.input(false, 2)); key1Inputs.add(bin.input(false, 1)); key2Inputs.add(bin.input(b, 2)); for (int j = 0; j < BLOCK_SIZE; j++) { if (this.id == 1) { set1.get(i).add(bin.input(bits.get(BLOCK_SIZE - 1 - j), 1)); set2.get(i).add(bin.input(false, 2)); } else { set1.get(i).add(bin.input(false, 1)); set2.get(i).add(bin.input(bits.get(BLOCK_SIZE - 1 - j), 2));
@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<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); } } };