static private Xor ( byte block, byte val ) : void | ||
block | byte | |
val | byte | |
return | void |
public void Init(byte[] H) { M[0] = new uint[16][]; M[1] = new uint[16][]; M[0][0] = new uint[4]; M[1][0] = new uint[4]; M[1][8] = GcmUtilities.AsUints(H); for (int num = 4; num >= 1; num >>= 1) { uint[] array = (uint[])M[1][num + num].Clone(); GcmUtilities.MultiplyP(array); M[1][num] = array; } uint[] array2 = (uint[])M[1][1].Clone(); GcmUtilities.MultiplyP(array2); M[0][8] = array2; for (int num2 = 4; num2 >= 1; num2 >>= 1) { uint[] array3 = (uint[])M[0][num2 + num2].Clone(); GcmUtilities.MultiplyP(array3); M[0][num2] = array3; } int num3 = 0; while (true) { for (int i = 2; i < 16; i += i) { for (int j = 1; j < i; j++) { uint[] array4 = (uint[])M[num3][i].Clone(); GcmUtilities.Xor(array4, M[num3][j]); M[num3][i + j] = array4; } } if (++num3 == 32) { break; } if (num3 > 1) { M[num3] = new uint[16][]; M[num3][0] = new uint[4]; for (int num4 = 8; num4 > 0; num4 >>= 1) { uint[] array5 = (uint[])M[num3 - 2][num4].Clone(); GcmUtilities.MultiplyP8(array5); M[num3][num4] = array5; } } } }
public void Init(byte[] H) { this.M[0] = new uint[16][]; this.M[1] = new uint[16][]; this.M[0][0] = new uint[4]; this.M[1][0] = new uint[4]; this.M[1][8] = GcmUtilities.AsUints(H); for (int index = 4; index >= 1; index >>= 1) { uint[] x = (uint[])this.M[1][index + index].Clone(); GcmUtilities.MultiplyP(x); this.M[1][index] = x; } uint[] x1 = (uint[])this.M[1][1].Clone(); GcmUtilities.MultiplyP(x1); this.M[0][8] = x1; for (int index = 4; index >= 1; index >>= 1) { uint[] x2 = (uint[])this.M[0][index + index].Clone(); GcmUtilities.MultiplyP(x2); this.M[0][index] = x2; } int index1 = 0; label_7: do { for (int index2 = 2; index2 < 16; index2 += index2) { for (int index3 = 1; index3 < index2; ++index3) { uint[] block = (uint[])this.M[index1][index2].Clone(); GcmUtilities.Xor(block, this.M[index1][index3]); this.M[index1][index2 + index3] = block; } } if (++index1 == 32) { return; } }while (index1 <= 1); this.M[index1] = new uint[16][]; this.M[index1][0] = new uint[4]; for (int index2 = 8; index2 > 0; index2 >>= 1) { uint[] x2 = (uint[])this.M[index1 - 2][index2].Clone(); GcmUtilities.MultiplyP8(x2); this.M[index1][index2] = x2; } goto label_7; }
public void Init(byte[] H) { if (M == null) { M = new uint[16][][]; } else if (Arrays.AreEqual(this.H, H)) { return; } this.H = Arrays.Clone(H); M[0] = new uint[256][]; M[0][0] = new uint[4]; M[0][128] = GcmUtilities.AsUints(H); for (int j = 64; j >= 1; j >>= 1) { uint[] tmp = (uint[])M[0][j + j].Clone(); GcmUtilities.MultiplyP(tmp); M[0][j] = tmp; } for (int i = 0; ;) { for (int j = 2; j < 256; j += j) { for (int k = 1; k < j; ++k) { uint[] tmp = (uint[])M[i][j].Clone(); GcmUtilities.Xor(tmp, M[i][k]); M[i][j + k] = tmp; } } if (++i == 16) { return; } M[i] = new uint[256][]; M[i][0] = new uint[4]; for (int j = 128; j > 0; j >>= 1) { uint[] tmp = (uint[])M[i - 1][j].Clone(); GcmUtilities.MultiplyP8(tmp); M[i][j] = tmp; } } }
public void Init(byte[] H) { if (M == null) { M = new uint[16][][]; } else if (Arrays.AreEqual(this.H, H)) { return; } this.H = Arrays.Clone(H); M[0] = new uint[256][]; M[0][0] = new uint[4]; M[0][128] = GcmUtilities.AsUints(H); for (int num = 64; num >= 1; num >>= 1) { uint[] array = (uint[])((global::System.Array)M[0][num + num]).Clone(); GcmUtilities.MultiplyP(array); M[0][num] = array; } int num2 = 0; while (true) { for (int i = 2; i < 256; i += i) { for (int j = 1; j < i; j++) { uint[] array2 = (uint[])((global::System.Array)M[num2][i]).Clone(); GcmUtilities.Xor(array2, M[num2][j]); M[num2][i + j] = array2; } } if (++num2 == 16) { break; } M[num2] = new uint[256][]; M[num2][0] = new uint[4]; for (int num3 = 128; num3 > 0; num3 >>= 1) { uint[] array3 = (uint[])((global::System.Array)M[num2 - 1][num3]).Clone(); GcmUtilities.MultiplyP8(array3); M[num2][num3] = array3; } } }
public void Init(byte[] H) { if (this.M == null) { this.M = new uint[16][][]; } else if (Arrays.AreEqual(this.H, H)) { return; } this.H = Arrays.Clone(H); this.M[0] = new uint[256][]; this.M[0][0] = new uint[4]; this.M[0][128] = GcmUtilities.AsUints(H); for (int i = 64; i >= 1; i >>= 1) { uint[] array = (uint[])this.M[0][i + i].Clone(); GcmUtilities.MultiplyP(array); this.M[0][i] = array; } int num = 0; while (true) { for (int j = 2; j < 256; j += j) { for (int k = 1; k < j; k++) { uint[] array2 = (uint[])this.M[num][j].Clone(); GcmUtilities.Xor(array2, this.M[num][k]); this.M[num][j + k] = array2; } } if (++num == 16) { break; } this.M[num] = new uint[256][]; this.M[num][0] = new uint[4]; for (int l = 128; l > 0; l >>= 1) { uint[] array3 = (uint[])this.M[num - 1][l].Clone(); GcmUtilities.MultiplyP8(array3); this.M[num][l] = array3; } } }
public void Init(byte[] H) { if (T == null) { T = new ulong[32][]; } else if (Arrays.AreEqual(this.H, H)) { return; } this.H = Arrays.Clone(H); for (int i = 0; i < 32; ++i) { ulong[] t = T[i] = new ulong[32]; // t[0] = 0 if (i == 0) { // t[1] = H.p^3 GcmUtilities.AsUlongs(this.H, t, 2); GcmUtilities.MultiplyP3(t, 2, t, 2); } else { // t[1] = T[i-1][1].p^4 GcmUtilities.MultiplyP4(T[i - 1], 2, t, 2); } for (int n = 2; n < 16; n += 2) { // t[2.n] = t[n].p^-1 GcmUtilities.DivideP(t, n, t, n << 1); // t[2.n + 1] = t[2.n] + t[1] GcmUtilities.Xor(t, n << 1, t, 2, t, (n + 1) << 1); } } }
internal static void Multiply(byte[] block, byte[] val) { byte[] numArray = Arrays.Clone(block); byte[] block1 = new byte[16]; for (int index1 = 0; index1 < 16; ++index1) { byte num1 = val[index1]; for (int index2 = 7; index2 >= 0; --index2) { if (((int)num1 & 1 << index2) != 0) { GcmUtilities.Xor(block1, numArray); } int num2 = ((uint)numArray[15] & 1U) > 0U ? 1 : 0; GcmUtilities.ShiftRight(numArray); if (num2 != 0) { numArray[0] ^= (byte)225; } } } Array.Copy((Array)block1, 0, (Array)block, 0, 16); }
public void Init(byte[] H) { if (this.M == null) { this.M = new uint[32][][]; } else if (Arrays.AreEqual(this.H, H)) { return; } this.H = Arrays.Clone(H); this.M[0] = new uint[16][]; this.M[1] = new uint[16][]; this.M[0][0] = new uint[4]; this.M[1][0] = new uint[4]; this.M[1][8] = GcmUtilities.AsUints(H); for (int i = 4; i >= 1; i >>= 1) { uint[] array = (uint[])this.M[1][i + i].Clone(); GcmUtilities.MultiplyP(array); this.M[1][i] = array; } uint[] array2 = (uint[])this.M[1][1].Clone(); GcmUtilities.MultiplyP(array2); this.M[0][8] = array2; for (int j = 4; j >= 1; j >>= 1) { uint[] array3 = (uint[])this.M[0][j + j].Clone(); GcmUtilities.MultiplyP(array3); this.M[0][j] = array3; } int num = 0; while (true) { for (int k = 2; k < 16; k += k) { for (int l = 1; l < k; l++) { uint[] array4 = (uint[])this.M[num][k].Clone(); GcmUtilities.Xor(array4, this.M[num][l]); this.M[num][k + l] = array4; } } if (++num == 32) { break; } if (num > 1) { this.M[num] = new uint[16][]; this.M[num][0] = new uint[4]; for (int m = 8; m > 0; m >>= 1) { uint[] array5 = (uint[])this.M[num - 2][m].Clone(); GcmUtilities.MultiplyP8(array5); this.M[num][m] = array5; } } } }
public void Init(byte[] H) { if (this.M == null) { this.M = new uint[0x20][][]; } else if (Arrays.AreEqual(this.H, H)) { return; } this.H = Arrays.Clone(H); this.M[0] = new uint[0x10][]; this.M[1] = new uint[0x10][]; this.M[0][0] = new uint[4]; this.M[1][0] = new uint[4]; this.M[1][8] = GcmUtilities.AsUints(H); for (int i = 4; i >= 1; i = i >> 1) { uint[] numArray = (uint[])this.M[1][i + i].Clone(); GcmUtilities.MultiplyP(numArray); this.M[1][i] = numArray; } uint[] x = (uint[])this.M[1][1].Clone(); GcmUtilities.MultiplyP(x); this.M[0][8] = x; for (int j = 4; j >= 1; j = j >> 1) { uint[] numArray3 = (uint[])this.M[0][j + j].Clone(); GcmUtilities.MultiplyP(numArray3); this.M[0][j] = numArray3; } int index = 0; while (true) { for (int k = 2; k < 0x10; k += k) { for (int m = 1; m < k; m++) { uint[] numArray4 = (uint[])this.M[index][k].Clone(); GcmUtilities.Xor(numArray4, this.M[index][m]); this.M[index][k + m] = numArray4; } } if (++index == 0x20) { return; } if (index > 1) { this.M[index] = new uint[0x10][]; this.M[index][0] = new uint[4]; for (int m = 8; m > 0; m = m >> 1) { uint[] numArray5 = (uint[])this.M[index - 2][m].Clone(); GcmUtilities.MultiplyP8(numArray5); this.M[index][m] = numArray5; } } } }
public void Init(byte[] H) { if (M == null) { M = new uint[32][][]; } else if (Arrays.AreEqual(this.H, H)) { return; } this.H = Arrays.Clone(H); M[0] = new uint[16][]; M[1] = new uint[16][]; M[0][0] = new uint[4]; M[1][0] = new uint[4]; M[1][8] = GcmUtilities.AsUints(H); for (int num = 4; num >= 1; num >>= 1) { uint[] array = (uint[])((global::System.Array)M[1][num + num]).Clone(); GcmUtilities.MultiplyP(array); M[1][num] = array; } uint[] array2 = (uint[])((global::System.Array)M[1][1]).Clone(); GcmUtilities.MultiplyP(array2); M[0][8] = array2; for (int num2 = 4; num2 >= 1; num2 >>= 1) { uint[] array3 = (uint[])((global::System.Array)M[0][num2 + num2]).Clone(); GcmUtilities.MultiplyP(array3); M[0][num2] = array3; } int num3 = 0; while (true) { for (int i = 2; i < 16; i += i) { for (int j = 1; j < i; j++) { uint[] array4 = (uint[])((global::System.Array)M[num3][i]).Clone(); GcmUtilities.Xor(array4, M[num3][j]); M[num3][i + j] = array4; } } if (++num3 == 32) { break; } if (num3 > 1) { M[num3] = new uint[16][]; M[num3][0] = new uint[4]; for (int num4 = 8; num4 > 0; num4 >>= 1) { uint[] array5 = (uint[])((global::System.Array)M[num3 - 2][num4]).Clone(); GcmUtilities.MultiplyP8(array5); M[num3][num4] = array5; } } } }