diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/util/Pack.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/util/Pack.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/util/Pack.java b/bcprov/src/main/java/org/bouncycastle/util/Pack.java index 94ba17b1..82b02ea5 100644 --- a/bcprov/src/main/java/org/bouncycastle/util/Pack.java +++ b/bcprov/src/main/java/org/bouncycastle/util/Pack.java @@ -5,6 +5,13 @@ package org.bouncycastle.util; */ public abstract class Pack { + public static short bigEndianToShort(byte[] bs, int off) + { + int n = (bs[ off] & 0xff) << 8; + n |= (bs[++off] & 0xff); + return (short)n; + } + public static int bigEndianToInt(byte[] bs, int off) { int n = bs[ off] << 24; @@ -99,6 +106,13 @@ public abstract class Pack } } + public static short littleEndianToShort(byte[] bs, int off) + { + int n = bs[ off] & 0xff; + n |= (bs[++off] & 0xff) << 8; + return (short)n; + } + public static int littleEndianToInt(byte[] bs, int off) { int n = bs[ off] & 0xff; @@ -126,6 +140,30 @@ public abstract class Pack } } + public static int[] littleEndianToInt(byte[] bs, int off, int count) + { + int[] ns = new int[count]; + for (int i = 0; i < ns.length; ++i) + { + ns[i] = littleEndianToInt(bs, off); + off += 4; + } + return ns; + } + + public static byte[] shortToLittleEndian(short n) + { + byte[] bs = new byte[2]; + shortToLittleEndian(n, bs, 0); + return bs; + } + + public static void shortToLittleEndian(short n, byte[] bs, int off) + { + bs[ off] = (byte)(n ); + bs[++off] = (byte)(n >>> 8); + } + public static byte[] intToLittleEndian(int n) { byte[] bs = new byte[4]; |