Util.java 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package com.oblivm.backend.lang.inter;
  2. import java.lang.reflect.Array;
  3. import java.util.Arrays;
  4. import com.oblivm.backend.circuits.arithmetic.IntegerLib;
  5. import com.oblivm.backend.flexsc.CompEnv;
  6. import com.oblivm.backend.oram.SecureArray;
  7. import com.oblivm.backend.util.Utils;
  8. public class Util {
  9. public static <T> T[][] intToArray(T[] intInput, int bitSize, int arraySize) {
  10. @SuppressWarnings("unchecked")
  11. T[][] ret = (T[][]) Array.newInstance((Class<T>) intInput[0].getClass(), arraySize, bitSize);
  12. for (int i = 0; i < arraySize; ++i) {
  13. for (int j = 0; j < bitSize; ++j) {
  14. ret[i][j] = intInput[i * bitSize + j];
  15. }
  16. }
  17. return ret;
  18. }
  19. public static <T> SecureArray<T> intToSecArray(CompEnv<T> env, T[] intInput, int bitSize, int arraySize)
  20. throws Exception {
  21. SecureArray<T> secArray = new SecureArray<T>(env, arraySize, bitSize);
  22. IntegerLib<T> intLib = new IntegerLib<T>(env);
  23. for (int i = 0; i < arraySize; ++i) {
  24. secArray.write(intLib.toSignals(i), Arrays.copyOfRange(intInput, i * bitSize, (i + 1) * bitSize));
  25. }
  26. // for(int i=0; i<arraySize; ++i) {
  27. // System.out.println("Input["+i+"] =
  28. // "+Utils.toInt(env.outputToAlice(secArray.read(intLib.toSignals(i)))));
  29. // }
  30. return secArray;
  31. }
  32. }