12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package protocols.precomputation;
- import communication.Communication;
- import crypto.Crypto;
- import oram.Forest;
- import oram.Metadata;
- import oram.Tuple;
- 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 PreReshuffle extends Protocol {
- private int pid = P.RSF;
- public PreReshuffle(Communication con1, Communication con2) {
- super(con1, con2);
- }
- public void runE(PreData predata, Timer timer) {
- timer.start(pid, M.offline_comp);
- predata.reshuffle_pi = Util.inversePermutation(predata.access_sigma);
- timer.start(pid, M.offline_read);
- predata.reshuffle_r = con1.readTupleArray();
- timer.stop(pid, M.offline_read);
- timer.stop(pid, M.offline_comp);
- }
- public void runD(PreData predata, int[] tupleParam, Timer timer) {
- timer.start(pid, M.offline_comp);
- predata.reshuffle_pi = Util.inversePermutation(predata.access_sigma);
- int numTuples = predata.reshuffle_pi.length;
- predata.reshuffle_p = new Tuple[numTuples];
- predata.reshuffle_r = new Tuple[numTuples];
- Tuple[] a = new Tuple[numTuples];
- for (int i = 0; i < numTuples; i++) {
- predata.reshuffle_p[i] = new Tuple(tupleParam[0], tupleParam[1], tupleParam[2], tupleParam[3], Crypto.sr);
- predata.reshuffle_r[i] = new Tuple(tupleParam[0], tupleParam[1], tupleParam[2], tupleParam[3], Crypto.sr);
- a[i] = predata.reshuffle_p[i].xor(predata.reshuffle_r[i]);
- }
- predata.reshuffle_a_prime = Util.permute(a, predata.reshuffle_pi);
- timer.start(pid, M.offline_write);
- con2.write(predata.reshuffle_p);
- con2.write(predata.reshuffle_a_prime);
- con1.write(predata.reshuffle_r);
- timer.stop(pid, M.offline_write);
- timer.stop(pid, M.offline_comp);
- }
- public void runC(PreData predata, Timer timer) {
- timer.start(pid, M.offline_read);
- predata.reshuffle_p = con2.readTupleArray();
- predata.reshuffle_a_prime = con2.readTupleArray();
- timer.stop(pid, M.offline_read);
- }
- @Override
- public void run(Party party, Metadata md, Forest forest) {
- }
- }
|