// Helper function that converts a byte array into actions and back into a byte array public byte[] conversionHelper(byte[] byteHex, List <int> hexList) { BitArray hexBits = seedToByte.byteToBits(byteHex); int[] hexActions = seedToByte.bitToActions(hexBits, hexList); byte[] finalSeed = SeedToByte.seedConverterUniversal(hexActions, hexList); return(finalSeed); }
// Test seeds with sizes of 112 bits and 108 bits public int[] testMultipleSizeSeeds() { int[] passed = new int[2]; string testHex = "FFFFAAAAFFFFAAAAFFFFDDDDFFFF"; byte[] testHexSeed = SeedToByte.HexStringToByteArray(testHex); byte[] testRunSeed = new byte[14]; //testRunSeed = OTPworker.randomSeedGenerator(testRunSeed); List <int> tempList1 = SeedToByte.customList(4, 4, 2, 4, 4); List <int> tempList2 = SeedToByte.customList(3, 4, 2, 4, 4); byte[] finalSeed1 = conversionHelper(testRunSeed, tempList1); byte[] finalSeed2 = conversionHelper(testHexSeed, tempList1); passed[1] += 1; if (seedToByte.byteToSeed(testRunSeed) == seedToByte.byteToSeed(finalSeed1)) { passed[0] += 1; } else { Debug.Log("Test 1 for converting 112 bit seed to action list and back failed"); } passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed2)) { passed[0] += 1; } else { Debug.Log("Test 2 for converting 112 bit seed to action list and back failed"); } testHexSeed = new byte[14]; byte[] finalSeed3 = conversionHelper(testHexSeed, tempList2); passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed3)) { passed[0] += 1; } else { Debug.Log("Test for converting 108 bit seed to action list and back failed"); } return(passed); }
// Helper function for the findLeadingBitValue tests public void runLeadingBits(ref int[] passed, int leadingBit, int totalBit, int value, int expected1, int expected2, int expected3, int testNumber) { passed[1] += 1; int[] leadingBits = new int[3]; leadingBits = SeedToByte.findLeadingBitValue(leadingBit, totalBit, value); if (leadingBits[0] == expected1 && leadingBits[1] == expected2 && leadingBits[2] == expected3) { passed[0] += 1; } else { Debug.Log("Leading bits test " + testNumber + " failed"); } }
// test seed converter for all possible seed sizes // Creates a byte array filled with maximum possible values for N bits, and // converts to an action list and back with seedConverterUniversal() public int[] testAllSizeSeeds() { int[] passed = new int[2]; for (int i = 10; i < 129; i++) { List <int> hexList = new List <int>(); for (int j = 0; j < i; j++) { hexList.Add(1); } byte[] byteHex = new byte[(i / 8) + 1]; if (i % 8 == 0) { byteHex = new byte[i / 8]; } for (int j = 0; j < byteHex.Length; j++) { byteHex[j] = 255; } byteHex[byteHex.Length - 1] = (byte)(Math.Pow(2, i % 8) - 1); BitArray hexBits = seedToByte.byteToBits(byteHex); int[] hexActions = seedToByte.bitToActions(hexBits, hexList); byte[] finalSeed = SeedToByte.seedConverterUniversal(hexActions, hexList); passed[1] += 1; if (seedToByte.byteToSeed(byteHex) == seedToByte.byteToSeed(finalSeed)) { passed[0] += 1; } else { Debug.Log("Test for seed size of: " + i + " failed."); } } return(passed); }
public int[] testBreakPoints() { int[] passed = new int[2]; string testHex = "FFFFAAAAFFFFAAAA"; byte[] testHexSeed = SeedToByte.HexStringToByteArray(testHex); List <int> tempList = SeedToByte.customList(4, 8, 6, 2, 2); BitArray seedBits = seedToByte.byteToBits(testHexSeed); int[] actions = seedToByte.bitToActions(seedBits, tempList); byte[] finalSeed = SeedToByte.seedConverterUniversal(actions, tempList); passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed)) { passed[0] += 1; } else { Debug.Log("Test for converting 64 bit seed to action list and back failed"); } testHex = "FFFFAAAAFFFFAAAAFFFFAAAAFFFFAAAA"; testHexSeed = SeedToByte.HexStringToByteArray(testHex); tempList = SeedToByte.customList(4, 8, 6, 2, 4); seedBits = seedToByte.byteToBits(testHexSeed); actions = seedToByte.bitToActions(seedBits, tempList); finalSeed = SeedToByte.seedConverterUniversal(actions, tempList); passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed)) { passed[0] += 1; } else { Debug.Log("Test for converting 128 bit seed to action list and back failed"); } return(passed); }
// Test smaller sized seeds of 16 bits and 24 bits public int[] testSmallSeeds() { int[] passed = new int[2]; string testHex = "FFFF"; byte[] testHexSeed = SeedToByte.HexStringToByteArray(testHex); List <int> tempList = SeedToByte.customList(6, 6, 4, 1, 1); byte[] finalSeed = conversionHelper(testHexSeed, tempList); passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed)) { passed[0] += 1; } else { Debug.Log("Test for converting 16 bit seed to action list and back failed"); } testHex = "FFFFFF"; testHexSeed = SeedToByte.HexStringToByteArray(testHex); tempList = SeedToByte.customList(2, 3, 2, 2, 2); finalSeed = finalSeed = conversionHelper(testHexSeed, tempList); passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed)) { passed[0] += 1; } else { Debug.Log("Test for converting 24 bit seed to action list and back failed"); } return(passed); }
public int[] testMultipleSizeSeeds() { int[] passed = new int[2]; string testHex = "FFFFAAAAFFFFAAAAFFFFDDDDFFFF"; byte[] testHexSeed = SeedToByte.HexStringToByteArray(testHex); byte[] testRunSeed = new byte[14]; //testRunSeed = OTPworker.randomSeedGenerator(testRunSeed); List <int> tempList1 = SeedToByte.customList(4, 4, 2, 4, 4); List <int> tempList2 = SeedToByte.customList(3, 4, 2, 4, 4); BitArray seedBits1 = seedToByte.byteToBits(testRunSeed); BitArray seedBits2 = seedToByte.byteToBits(testHexSeed); int[] actions1 = seedToByte.bitToActions(seedBits1, tempList1); int[] actions2 = seedToByte.bitToActions(seedBits2, tempList1); byte[] finalSeed1 = SeedToByte.seedConverterUniversal(actions1, tempList1); byte[] finalSeed2 = SeedToByte.seedConverterUniversal(actions2, tempList1); passed[1] += 1; if (seedToByte.byteToSeed(testRunSeed) == seedToByte.byteToSeed(finalSeed1)) { passed[0] += 1; } else { Debug.Log("Test 1 for converting 112 bit seed to action list and back failed"); } passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed2)) { passed[0] += 1; } else { Debug.Log("Test 2 for converting 112 bit seed to action list and back failed"); } testHexSeed = new byte[14]; //testRunSeed = OTPworker.randomSeedGenerator(testRunSeed); if (testRunSeed[13] > 7) { testRunSeed[13] = (byte)((int)testRunSeed[13] % 7); } BitArray seedBits = seedToByte.byteToBits(testHexSeed); int[] actions3 = seedToByte.bitToActions(seedBits, tempList2); byte[] finalSeed3 = SeedToByte.seedConverterUniversal(actions3, tempList2); passed[1] += 1; if (seedToByte.byteToSeed(testHexSeed) == seedToByte.byteToSeed(finalSeed3)) { passed[0] += 1; } else { Debug.Log("Test for converting 108 bit seed to action list and back failed"); } return(passed); }