PreAccess.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package protocols;
  2. import java.util.Arrays;
  3. import communication.Communication;
  4. import crypto.Crypto;
  5. import oram.Bucket;
  6. import oram.Forest;
  7. import oram.Metadata;
  8. import oram.Tree;
  9. import util.Util;
  10. public class PreAccess extends Protocol {
  11. public PreAccess(Communication con1, Communication con2) {
  12. super(con1, con2);
  13. }
  14. public void runE(PreData predata, Tree OT, int numBuckets) {
  15. int numTuples = OT.getStashSize() + (numBuckets - 1) * OT.getW();
  16. PreSSCOT presscot = new PreSSCOT(con1, con2);
  17. presscot.runE(predata, numTuples);
  18. predata.access_sigma = Util.randomPermutation(numBuckets, Crypto.sr);
  19. int[] tupleParam = new int[] { OT.getFBytes(), OT.getNBytes(), OT.getLBytes(), OT.getABytes() };
  20. predata.access_p = new Bucket[numBuckets];
  21. predata.access_p[0] = new Bucket(OT.getStashSize(), tupleParam, Crypto.sr);
  22. for (int i = 1; i < numBuckets; i++)
  23. predata.access_p[i] = new Bucket(OT.getW(), tupleParam, Crypto.sr);
  24. con1.write(predata.access_sigma);
  25. con1.write(predata.access_p);
  26. }
  27. public void runD(PreData predata) {
  28. PreSSCOT presscot = new PreSSCOT(con1, con2);
  29. presscot.runD(predata);
  30. predata.access_sigma = con1.readIntArray();
  31. Object[] objArray = con1.readObjectArray();
  32. predata.access_p = Arrays.copyOf(objArray, objArray.length, Bucket[].class);
  33. }
  34. public void runC() {
  35. PreSSCOT presscot = new PreSSCOT(con1, con2);
  36. presscot.runC();
  37. }
  38. @Override
  39. public void run(Party party, Metadata md, Forest forest) {
  40. }
  41. }