@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())); }
return () -> inputs; }).seq((seq, inputs) -> { DRes<List<SBool>> l = seq.bristol().AES(inputs.get(0), inputs.get(1)); return l; }).seq((seq, res) -> {