public void Init(byte[] x) { this.x = GcmUtilities.AsUints(x); }
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 j = 4; j >= 1; j >>= 1) { uint[] tmp = (uint[])M[1][j + j].Clone(); GcmUtilities.MultiplyP(tmp); M[1][j] = tmp; } { uint[] tmp = (uint[])M[1][1].Clone(); GcmUtilities.MultiplyP(tmp); M[0][8] = tmp; } for (int j = 4; 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 < 16; 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 == 32) { return; } if (i > 1) { M[i] = new uint[16][]; M[i][0] = new uint[4]; for (int j = 8; j > 0; j >>= 1) { uint[] tmp = (uint[])M[i - 2][j].Clone(); GcmUtilities.MultiplyP8(tmp); M[i][j] = tmp; } } } }
public void MultiplyH(byte[] x) { GcmUtilities.Multiply(x, H); }
public void MultiplyH(byte[] x) { uint[] x2 = GcmUtilities.AsUints(x); GcmUtilities.Multiply(x2, this.H); GcmUtilities.AsBytes(x2, x); }
public void Init(byte[] H) { this.H = GcmUtilities.AsUints(H); }
public void MultiplyH(byte[] x) { uint[] t = GcmUtilities.AsUints(x); GcmUtilities.Multiply(t, H); GcmUtilities.AsBytes(t, x); }
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; } } } }
// Token: 0x0600010E RID: 270 RVA: 0x00008DC8 File Offset: 0x00006FC8 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; for (;;) { 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; } } } }
// Token: 0x060000FA RID: 250 RVA: 0x00008A08 File Offset: 0x00006C08 internal static void MultiplyP(uint[] x) { uint num = (uint)((int)GcmUtilities.ShiftRight(x) >> 8); x[0] ^= (num & 3774873600U); }
// Token: 0x060000FB RID: 251 RVA: 0x00008A30 File Offset: 0x00006C30 internal static void MultiplyP8(uint[] x) { uint num = GcmUtilities.ShiftRightN(x, 8); x[0] ^= GcmUtilities.LOOKUP[(int)(num >> 24)]; }
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[])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 MultiplyH(byte[] x) { ulong[] t = GcmUtilities.AsUlongs(x); GcmUtilities.Multiply(t, H); GcmUtilities.AsBytes(t, x); }