public void Init(byte[] x) { uint[] array = GcmUtilities.AsUints(x); if (lookupPowX2 == null || !Arrays.AreEqual(array, (uint[])lookupPowX2[0])) { lookupPowX2 = Platform.CreateArrayList(8); lookupPowX2.Add(array); } }
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[])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[])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[])M[num2 - 1][num3].Clone(); GcmUtilities.MultiplyP8(array3); M[num2][num3] = array3; } } }
public void Init(byte[] H) { this.H = GcmUtilities.AsUints(H); }
public void MultiplyH(byte[] x) { uint[] x2 = GcmUtilities.AsUints(x); GcmUtilities.Multiply(x2, H); GcmUtilities.AsBytes(x2, x); }
public void Tables8kGcmMultiplier_Init(byte[] H) { if (Tables8kGcmMultiplier_M == null) { Tables8kGcmMultiplier_M = new uint[32][][]; } else if (Arrays.AreEqual(this.Tables8kGcmMultiplier_H, H)) { return; } this.Tables8kGcmMultiplier_H = Arrays.Clone(H); Tables8kGcmMultiplier_M[0] = new uint[16][]; Tables8kGcmMultiplier_M[1] = new uint[16][]; Tables8kGcmMultiplier_M[0][0] = new uint[4]; Tables8kGcmMultiplier_M[1][0] = new uint[4]; Tables8kGcmMultiplier_M[1][8] = GcmUtilities.AsUints(H); for (int j = 4; j >= 1; j >>= 1) { uint[] tmp = (uint[])Tables8kGcmMultiplier_M[1][j + j].Clone(); GcmUtilities.MultiplyP(tmp); Tables8kGcmMultiplier_M[1][j] = tmp; } { uint[] tmp = (uint[])Tables8kGcmMultiplier_M[1][1].Clone(); GcmUtilities.MultiplyP(tmp); Tables8kGcmMultiplier_M[0][8] = tmp; } for (int j = 4; j >= 1; j >>= 1) { uint[] tmp = (uint[])Tables8kGcmMultiplier_M[0][j + j].Clone(); GcmUtilities.MultiplyP(tmp); Tables8kGcmMultiplier_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[])Tables8kGcmMultiplier_M[i][j].Clone(); GcmUtilities.Xor(tmp, Tables8kGcmMultiplier_M[i][k]); Tables8kGcmMultiplier_M[i][j + k] = tmp; } } if (++i == 32) { return; } if (i > 1) { Tables8kGcmMultiplier_M[i] = new uint[16][]; Tables8kGcmMultiplier_M[i][0] = new uint[4]; for (int j = 8; j > 0; j >>= 1) { uint[] tmp = (uint[])Tables8kGcmMultiplier_M[i - 2][j].Clone(); GcmUtilities.MultiplyP8(tmp); Tables8kGcmMultiplier_M[i][j] = tmp; } } } }
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 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; } } } }