private void ensureAvailable(int bit) { int count = lookupPowX2.size(); if (count <= bit) { int[] tmp = (int[])lookupPowX2.elementAt(count - 1); do { tmp = Arrays.clone(tmp); GCMUtil.multiply(tmp, tmp); lookupPowX2.addElement(tmp); } while (++count <= bit); } } }
public void multiplyH(byte[] x) { int[] t = GCMUtil.asInts(x); GCMUtil.multiply(t, H); GCMUtil.asBytes(t, x); } }
public void multiplyH(byte[] x) { long[] t = GCMUtil.asLongs(x); GCMUtil.multiply(t, H); GCMUtil.asBytes(t, x); } }
public void exponentiateX(long pow, byte[] output) { // Initial value is little-endian 1 int[] y = GCMUtil.oneAsInts(); if (pow > 0) { int[] powX = Arrays.clone(x); do { if ((pow & 1L) != 0) { GCMUtil.multiply(y, powX); } GCMUtil.multiply(powX, powX); pow >>>= 1; } while (pow > 0); } GCMUtil.asBytes(y, output); } }
public void exponentiateX(long pow, byte[] output) { int[] y = GCMUtil.oneAsInts(); int bit = 0; while (pow > 0) { if ((pow & 1L) != 0) { ensureAvailable(bit); GCMUtil.multiply(y, (int[])lookupPowX2.elementAt(bit)); } ++bit; pow >>>= 1; } GCMUtil.asBytes(y, output); }
public static void multiply(byte[] x, byte[] y) { long[] t1 = GCMUtil.asLongs(x); long[] t2 = GCMUtil.asLongs(y); GCMUtil.multiply(t1, t2); GCMUtil.asBytes(t1, x); }
public void exponentiateX(long pow, byte[] output) { long[] y = GCMUtil.oneAsLongs(); int bit = 0; while (pow > 0) { if ((pow & 1L) != 0) { ensureAvailable(bit); GCMUtil.multiply(y, (long[])lookupPowX2.elementAt(bit)); } ++bit; pow >>>= 1; } GCMUtil.asBytes(y, output); }
public static void multiply(byte[] x, byte[] y) { int[] t1 = GCMUtil.asInts(x); int[] t2 = GCMUtil.asInts(y); GCMUtil.multiply(t1, t2); GCMUtil.asBytes(t1, x); }
public void exponentiateX(long pow, byte[] output) { // Initial value is little-endian 1 long[] y = GCMUtil.oneAsLongs(); if (pow > 0) { long[] powX = Arrays.clone(x); do { if ((pow & 1L) != 0) { GCMUtil.multiply(y, powX); } GCMUtil.square(powX, powX); pow >>>= 1; } while (pow > 0); } GCMUtil.asBytes(y, output); } }
GCMUtil.multiply(S_at, H_c);
GCMUtil.multiply(S_at, H_c);