public void init(byte[] x) { this.x = GCMUtil.asLongs(x); }
public void init(byte[] H) { this.H = GCMUtil.asLongs(H); }
public void init(byte[] x) { long[] y = GCMUtil.asLongs(x); if (lookupPowX2 != null && Arrays.areEqual(y, (long[])lookupPowX2.elementAt(0))) { return; } lookupPowX2 = new Vector(8); lookupPowX2.addElement(y); }
public void multiplyH(byte[] x) { long[] t = GCMUtil.asLongs(x); GCMUtil.multiply(t, H); GCMUtil.asBytes(t, x); } }
public void init(byte[] H) { if (T == null) { T = new long[256][2]; } else if (Arrays.areEqual(this.H, H)) { return; } this.H = Arrays.clone(H); // T[0] = 0 // T[1] = H.p^7 GCMUtil.asLongs(this.H, T[1]); GCMUtil.multiplyP7(T[1], T[1]); for (int n = 2; n < 256; n += 2) { // T[2.n] = T[n].p^-1 GCMUtil.divideP(T[n >> 1], T[n]); // T[2.n + 1] = T[2.n] + T[1] GCMUtil.xor(T[n], T[1], T[n + 1]); } }
GCMUtil.asLongs(this.H, t[1]); GCMUtil.multiplyP3(t[1], t[1]);
GCMUtil.asLongs(this.H, t[1]); GCMUtil.multiplyP7(t[1], t[1]);