public void ExponentiateX(long pow, byte[] output) { // Initial value is little-endian 1 byte[] y = GcmUtilities.OneAsBytes(); if (pow > 0) { byte[] powX = Arrays.Clone(x); do { if ((pow & 1L) != 0) { GcmUtilities.Multiply(y, powX); } GcmUtilities.Multiply(powX, powX); pow >>= 1; }while (pow > 0); } Array.Copy(y, 0, output, 0, 16); }
public void ExponentiateX(long pow, byte[] output) { // Initial value is little-endian 1 ulong[] y = GcmUtilities.OneAsUlongs(); if (pow > 0) { ulong[] powX = Arrays.Clone(x); do { if ((pow & 1L) != 0) { GcmUtilities.Multiply(y, powX); } GcmUtilities.Square(powX, powX); pow >>= 1; }while (pow > 0); } GcmUtilities.AsBytes(y, output); }
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 MultiplyH(byte[] x) { uint[] t = GcmUtilities.AsUints(x); GcmUtilities.Multiply(t, H); GcmUtilities.AsBytes(t, x); }
public void MultiplyH(byte[] x) { ulong[] t = GcmUtilities.AsUlongs(x); GcmUtilities.Multiply(t, H); GcmUtilities.AsBytes(t, x); }