PreSSCOT.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package protocols.precomputation;
  2. import communication.Communication;
  3. import crypto.Crypto;
  4. import crypto.PRF;
  5. import oram.Forest;
  6. import oram.Metadata;
  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. public class PreSSCOT extends Protocol {
  14. private int pid = P.COT;
  15. public PreSSCOT(Communication con1, Communication con2) {
  16. super(con1, con2);
  17. }
  18. public void runE(PreData predata, int n, Timer timer) {
  19. timer.start(pid, M.offline_comp);
  20. predata.sscot_k = PRF.generateKey(Crypto.sr);
  21. predata.sscot_kprime = PRF.generateKey(Crypto.sr);
  22. predata.sscot_r = new byte[n][];
  23. for (int i = 0; i < n; i++) {
  24. predata.sscot_r[i] = new byte[Crypto.secParamBytes];
  25. Crypto.sr.nextBytes(predata.sscot_r[i]);
  26. }
  27. timer.start(pid, M.offline_write);
  28. con1.write(predata.sscot_k);
  29. con1.write(predata.sscot_kprime);
  30. con1.write(predata.sscot_r);
  31. timer.stop(pid, M.offline_write);
  32. predata.sscot_F_k = new PRF(Crypto.secParam);
  33. predata.sscot_F_k.init(predata.sscot_k);
  34. predata.sscot_F_kprime = new PRF(Crypto.secParam);
  35. predata.sscot_F_kprime.init(predata.sscot_kprime);
  36. timer.stop(pid, M.offline_comp);
  37. }
  38. public void runD(PreData predata, Timer timer) {
  39. timer.start(pid, M.offline_comp);
  40. timer.start(pid, M.offline_read);
  41. predata.sscot_k = con1.read();
  42. predata.sscot_kprime = con1.read();
  43. predata.sscot_r = con1.readDoubleByteArray();
  44. timer.stop(pid, M.offline_read);
  45. predata.sscot_F_k = new PRF(Crypto.secParam);
  46. predata.sscot_F_k.init(predata.sscot_k);
  47. predata.sscot_F_kprime = new PRF(Crypto.secParam);
  48. predata.sscot_F_kprime.init(predata.sscot_kprime);
  49. timer.stop(pid, M.offline_comp);
  50. }
  51. public void runC() {
  52. }
  53. @Override
  54. public void run(Party party, Metadata md, Forest forest) {
  55. }
  56. }