CVCompEnv.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // Copyright (C) 2014 by Xiao Shaun Wang <wangxiao@cs.umd.edu>
  2. package com.oblivm.backend.flexsc;
  3. import com.oblivm.backend.network.Network;
  4. import com.oblivm.backend.util.Utils;
  5. public class CVCompEnv extends BooleanCompEnv {
  6. public CVCompEnv(Network channel, Party p) {
  7. super(channel, p, Mode.VERIFY);
  8. this.party = p;
  9. }
  10. @Override
  11. public Boolean inputOfAlice(boolean in) {
  12. Boolean res = null;
  13. res = in;
  14. if (party == Party.Alice)
  15. channel.writeInt(in ? 1 : 0);
  16. else {
  17. int re = channel.readInt();
  18. res = re == 1;
  19. }
  20. channel.flush();
  21. return res;
  22. }
  23. @Override
  24. public Boolean inputOfBob(boolean in) {
  25. Boolean res = null;
  26. channel.flush();
  27. res = in;
  28. if (party == Party.Bob)
  29. channel.writeInt(in ? 1 : 0);
  30. else {
  31. int re = channel.readInt();
  32. res = re == 1;
  33. }
  34. channel.flush();
  35. return res;
  36. }
  37. @Override
  38. public boolean outputToAlice(Boolean out) {
  39. return out;
  40. }
  41. public boolean outputToBob(Boolean out) {
  42. return out;
  43. }
  44. @Override
  45. public Boolean and(Boolean a, Boolean b) {
  46. ++Flag.sw.ands;
  47. ++numOfAnds;
  48. return a && b;
  49. }
  50. @Override
  51. public Boolean xor(Boolean a, Boolean b) {
  52. return a ^ b;
  53. }
  54. @Override
  55. public Boolean not(Boolean a) {
  56. return !a;
  57. }
  58. public Boolean[] inputOfAlice(boolean[] in) {
  59. Boolean[] res = new Boolean[in.length];
  60. for (int i = 0; i < res.length; ++i)
  61. res[i] = inputOfAlice(in[i]);
  62. return res;
  63. }
  64. @Override
  65. public Boolean[] inputOfBob(boolean[] in) {
  66. Boolean[] res = new Boolean[in.length];
  67. for (int i = 0; i < res.length; ++i)
  68. res[i] = inputOfBob(in[i]);
  69. return res;
  70. }
  71. @Override
  72. public boolean[] outputToAlice(Boolean[] out) {
  73. return Utils.tobooleanArray(out);
  74. }
  75. @Override
  76. public boolean[] outputToBob(Boolean[] out) {
  77. return Utils.tobooleanArray(out);
  78. }
  79. @Override
  80. public void setEvaluate() {
  81. // TODO Auto-generated method stub
  82. }
  83. }