PreAccess.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package protocols.precomputation;
  2. import communication.Communication;
  3. import crypto.Crypto;
  4. import oram.Forest;
  5. import oram.Metadata;
  6. import oram.Tuple;
  7. import protocols.Protocol;
  8. import protocols.struct.Party;
  9. import protocols.struct.PreData;
  10. import util.M;
  11. import util.P;
  12. import util.Timer;
  13. import util.Util;
  14. public class PreAccess extends Protocol {
  15. private int pid = P.ACC;
  16. public PreAccess(Communication con1, Communication con2) {
  17. super(con1, con2);
  18. }
  19. public void runE(PreData predata, int twotaupow, int numTuples, int[] tupleParam, Timer timer) {
  20. timer.start(pid, M.offline_comp);
  21. // SSCOT
  22. PreSSCOT presscot = new PreSSCOT(con1, con2);
  23. presscot.runE(predata, numTuples, timer);
  24. // SSIOT
  25. PreSSIOT pressiot = new PreSSIOT(con1, con2);
  26. pressiot.runE(predata, twotaupow, timer);
  27. // Access
  28. predata.access_sigma = Util.randomPermutation(numTuples, Crypto.sr);
  29. predata.access_p = new Tuple[numTuples];
  30. for (int i = 0; i < numTuples; i++)
  31. predata.access_p[i] = new Tuple(tupleParam[0], tupleParam[1], tupleParam[2], tupleParam[3], Crypto.sr);
  32. timer.start(pid, M.offline_write);
  33. con1.write(predata.access_sigma);
  34. con1.write(predata.access_p);
  35. timer.stop(pid, M.offline_write);
  36. timer.stop(pid, M.offline_comp);
  37. }
  38. public void runD(PreData predata, Timer timer) {
  39. timer.start(pid, M.offline_comp);
  40. // SSCOT
  41. PreSSCOT presscot = new PreSSCOT(con1, con2);
  42. presscot.runD(predata, timer);
  43. // SSIOT
  44. PreSSIOT pressiot = new PreSSIOT(con1, con2);
  45. pressiot.runD(predata, timer);
  46. // Access
  47. timer.start(pid, M.offline_read);
  48. predata.access_sigma = con1.readIntArray();
  49. predata.access_p = con1.readTupleArray();
  50. timer.stop(pid, M.offline_read);
  51. timer.stop(pid, M.offline_comp);
  52. }
  53. public void runC(Timer timer) {
  54. timer.start(pid, M.offline_comp);
  55. // SSCOT
  56. PreSSCOT presscot = new PreSSCOT(con1, con2);
  57. presscot.runC();
  58. // SSIOT
  59. PreSSIOT pressiot = new PreSSIOT(con1, con2);
  60. pressiot.runC();
  61. timer.stop(pid, M.offline_comp);
  62. }
  63. @Override
  64. public void run(Party party, Metadata md, Forest forest) {
  65. }
  66. }