diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-10-01 16:17:03 +0400 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-10-01 16:17:03 +0400 |
commit | 929a1a3803304f71122b2893b19c07a3a38c7678 (patch) | |
tree | da75127576c6d1768960e19cca1a294d36d7ea88 /core/src | |
parent | 3f14ee7574c470800c01a0b799c870bfbee0c91a (diff) |
GCM exponentiators work with int[] instead of byte[] internally
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/main/java/org/bouncycastle/crypto/modes/gcm/BasicGCMExponentiator.java | 10 | ||||
-rw-r--r-- | core/src/main/java/org/bouncycastle/crypto/modes/gcm/Tables1kGCMExponentiator.java | 13 |
2 files changed, 12 insertions, 11 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/modes/gcm/BasicGCMExponentiator.java b/core/src/main/java/org/bouncycastle/crypto/modes/gcm/BasicGCMExponentiator.java index f2be2fc4..fc25810d 100644 --- a/core/src/main/java/org/bouncycastle/crypto/modes/gcm/BasicGCMExponentiator.java +++ b/core/src/main/java/org/bouncycastle/crypto/modes/gcm/BasicGCMExponentiator.java @@ -4,21 +4,21 @@ import org.bouncycastle.util.Arrays; public class BasicGCMExponentiator implements GCMExponentiator { - private byte[] x; + private int[] x; public void init(byte[] x) { - this.x = Arrays.clone(x); + this.x = GCMUtil.asInts(x); } public void exponentiateX(long pow, byte[] output) { // Initial value is little-endian 1 - byte[] y = GCMUtil.oneAsBytes(); + int[] y = GCMUtil.oneAsInts(); if (pow > 0) { - byte[] powX = Arrays.clone(x); + int[] powX = Arrays.clone(x); do { if ((pow & 1L) != 0) @@ -31,6 +31,6 @@ public class BasicGCMExponentiator implements GCMExponentiator while (pow > 0); } - System.arraycopy(y, 0, output, 0, 16); + GCMUtil.asBytes(y, output); } } diff --git a/core/src/main/java/org/bouncycastle/crypto/modes/gcm/Tables1kGCMExponentiator.java b/core/src/main/java/org/bouncycastle/crypto/modes/gcm/Tables1kGCMExponentiator.java index a0512086..6eff4e3f 100644 --- a/core/src/main/java/org/bouncycastle/crypto/modes/gcm/Tables1kGCMExponentiator.java +++ b/core/src/main/java/org/bouncycastle/crypto/modes/gcm/Tables1kGCMExponentiator.java @@ -12,31 +12,32 @@ public class Tables1kGCMExponentiator implements GCMExponentiator public void init(byte[] x) { - if (lookupPowX2 != null && Arrays.areEqual(x, (byte[])lookupPowX2.elementAt(0))) + int[] y = GCMUtil.asInts(x); + if (lookupPowX2 != null && Arrays.areEqual(y, (int[])lookupPowX2.elementAt(0))) { return; } lookupPowX2 = new Vector(8); - lookupPowX2.addElement(Arrays.clone(x)); + lookupPowX2.addElement(y); } public void exponentiateX(long pow, byte[] output) { - byte[] y = GCMUtil.oneAsBytes(); + int[] y = GCMUtil.oneAsInts(); int bit = 0; while (pow > 0) { if ((pow & 1L) != 0) { ensureAvailable(bit); - GCMUtil.multiply(y, (byte[])lookupPowX2.elementAt(bit)); + GCMUtil.multiply(y, (int[])lookupPowX2.elementAt(bit)); } ++bit; pow >>>= 1; } - System.arraycopy(y, 0, output, 0, 16); + GCMUtil.asBytes(y, output); } private void ensureAvailable(int bit) @@ -44,7 +45,7 @@ public class Tables1kGCMExponentiator implements GCMExponentiator int count = lookupPowX2.size(); if (count <= bit) { - byte[] tmp = (byte[])lookupPowX2.elementAt(count - 1); + int[] tmp = (int[])lookupPowX2.elementAt(count - 1); do { tmp = Arrays.clone(tmp); |