1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package protocols.precomputation;
- import communication.Communication;
- import crypto.Crypto;
- import oram.Forest;
- import oram.Metadata;
- 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 PrePostProcessT extends Protocol {
- private int pid = P.PPT;
- public PrePostProcessT(Communication con1, Communication con2) {
- super(con1, con2);
- }
- public void runE(PreData predata, Timer timer) {
- timer.start(pid, M.offline_read);
- predata.ppt_Li = con1.read();
- predata.ppt_Lip1 = con1.read();
- predata.ppt_s = con1.readDoubleByteArray();
- timer.stop(pid, M.offline_read);
- }
- public void runD(PreData predata, PreData prev, int LiBytes, int Lip1Bytes, int tau, Timer timer) {
- timer.start(pid, M.offline_comp);
- if (prev != null)
- predata.ppt_Li = prev.ppt_Lip1;
- else
- predata.ppt_Li = Util.nextBytes(LiBytes, Crypto.sr);
- predata.ppt_Lip1 = Util.nextBytes(Lip1Bytes, Crypto.sr);
- int twoTauPow = (int) Math.pow(2, tau);
- predata.ppt_alpha = Crypto.sr.nextInt(tau);
- predata.ppt_r = new byte[twoTauPow][];
- predata.ppt_s = new byte[twoTauPow][];
- for (int i = 0; i < twoTauPow; i++) {
- predata.ppt_r[i] = Util.nextBytes(Lip1Bytes, Crypto.sr);
- predata.ppt_s[i] = predata.ppt_r[i];
- }
- predata.ppt_s[predata.ppt_alpha] = Util.xor(predata.ppt_r[predata.ppt_alpha], predata.ppt_Lip1);
- timer.start(pid, M.offline_write);
- con1.write(predata.ppt_Li);
- con1.write(predata.ppt_Lip1);
- con2.write(predata.ppt_alpha);
- con2.write(predata.ppt_r);
- con1.write(predata.ppt_s);
- timer.stop(pid, M.offline_write);
- timer.stop(pid, M.offline_comp);
- }
- public void runC(PreData predata, PreData prev, int LiBytes, int Lip1Bytes, Timer timer) {
- timer.start(pid, M.offline_comp);
- if (prev != null)
- predata.ppt_Li = prev.ppt_Lip1;
- else
- predata.ppt_Li = Util.nextBytes(LiBytes, Crypto.sr);
- predata.ppt_Lip1 = Util.nextBytes(Lip1Bytes, Crypto.sr);
- timer.start(pid, M.offline_read);
- predata.ppt_alpha = con2.readInt();
- predata.ppt_r = con2.readDoubleByteArray();
- timer.stop(pid, M.offline_read);
- timer.stop(pid, M.offline_comp);
- }
- @Override
- public void run(Party party, Metadata md, Forest forest) {
- }
- }
|