1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package protocols.precomputation;
- import communication.Communication;
- import crypto.Crypto;
- import oram.Forest;
- import oram.Metadata;
- import oram.Tuple;
- import protocols.Protocol;
- import protocols.struct.Party;
- import protocols.struct.PreData;
- import util.M;
- import util.P;
- import util.Timer;
- import util.Util;
- public class PreSSXOT extends Protocol {
- private int id;
- private int pid;
- public PreSSXOT(Communication con1, Communication con2, int id) {
- super(con1, con2);
- this.id = id;
- pid = id == 0 ? P.URXOT : P.XOT;
- }
- public void runE(PreData predata, Timer timer) {
- timer.start(pid, M.offline_read);
- predata.ssxot_E_pi[id] = con1.readIntArray();
- predata.ssxot_E_r[id] = con1.readTupleArray();
- timer.stop(pid, M.offline_read);
- }
- public void runD(PreData predata, int n, int k, int[] tupleParam, Timer timer) {
- timer.start(pid, M.offline_comp);
- predata.ssxot_delta[id] = new Tuple[k];
- for (int i = 0; i < k; i++)
- predata.ssxot_delta[id][i] = new Tuple(tupleParam[0], tupleParam[1], tupleParam[2], tupleParam[3],
- Crypto.sr);
- predata.ssxot_E_pi[id] = Util.randomPermutation(n, Crypto.sr);
- predata.ssxot_C_pi[id] = Util.randomPermutation(n, Crypto.sr);
- predata.ssxot_E_pi_ivs[id] = Util.inversePermutation(predata.ssxot_E_pi[id]);
- predata.ssxot_C_pi_ivs[id] = Util.inversePermutation(predata.ssxot_C_pi[id]);
- predata.ssxot_E_r[id] = new Tuple[n];
- predata.ssxot_C_r[id] = new Tuple[n];
- for (int i = 0; i < n; i++) {
- predata.ssxot_E_r[id][i] = new Tuple(tupleParam[0], tupleParam[1], tupleParam[2], tupleParam[3], Crypto.sr);
- predata.ssxot_C_r[id][i] = new Tuple(tupleParam[0], tupleParam[1], tupleParam[2], tupleParam[3], Crypto.sr);
- }
- timer.start(pid, M.offline_write);
- con1.write(predata.ssxot_E_pi[id]);
- con1.write(predata.ssxot_E_r[id]);
- con2.write(predata.ssxot_C_pi[id]);
- con2.write(predata.ssxot_C_r[id]);
- timer.stop(pid, M.offline_write);
- timer.stop(pid, M.offline_comp);
- }
- public void runC(PreData predata, Timer timer) {
- timer.start(pid, M.offline_read);
- predata.ssxot_C_pi[id] = con2.readIntArray();
- predata.ssxot_C_r[id] = con2.readTupleArray();
- timer.stop(pid, M.offline_read);
- }
- @Override
- public void run(Party party, Metadata md, Forest forest) {
- }
- }
|