PreAccess.java 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package protocols;
  2. import communication.Communication;
  3. import crypto.Crypto;
  4. import oram.Forest;
  5. import oram.Metadata;
  6. import oram.Tree;
  7. import oram.Tuple;
  8. import util.Util;
  9. public class PreAccess extends Protocol {
  10. public PreAccess(Communication con1, Communication con2) {
  11. super(con1, con2);
  12. }
  13. public void runE(PreData predata, Tree OT, int numTuples) {
  14. // SSCOT
  15. PreSSCOT presscot = new PreSSCOT(con1, con2);
  16. presscot.runE(predata, numTuples);
  17. // SSIOT
  18. PreSSIOT pressiot = new PreSSIOT(con1, con2);
  19. pressiot.runE(predata, OT.getTwoTauPow());
  20. // Access
  21. predata.access_sigma = Util.randomPermutation(numTuples, Crypto.sr);
  22. predata.access_p = new Tuple[numTuples];
  23. for (int i = 0; i < numTuples; i++)
  24. predata.access_p[i] = new Tuple(OT.getFBytes(), OT.getNBytes(), OT.getLBytes(), OT.getABytes(), Crypto.sr);
  25. con1.write(predata.access_sigma);
  26. con1.write(predata.access_p);
  27. }
  28. public void runD(PreData predata) {
  29. // SSCOT
  30. PreSSCOT presscot = new PreSSCOT(con1, con2);
  31. presscot.runD(predata);
  32. // SSIOT
  33. PreSSIOT pressiot = new PreSSIOT(con1, con2);
  34. pressiot.runD(predata);
  35. // Access
  36. predata.access_sigma = con1.readObject();
  37. predata.access_p = con1.readObject();
  38. }
  39. public void runC() {
  40. // SSCOT
  41. PreSSCOT presscot = new PreSSCOT(con1, con2);
  42. presscot.runC();
  43. // SSIOT
  44. PreSSIOT pressiot = new PreSSIOT(con1, con2);
  45. pressiot.runC();
  46. }
  47. @Override
  48. public void run(Party party, Metadata md, Forest forest) {
  49. }
  50. }