Class Utils
- java.lang.Object
-
- com.amazonaws.encryptionsdk.internal.Utils
-
public final class Utils extends Object
Internal utility methods.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Utils.ComparingByteArrays
Comparator that performs a lexicographical comparison of byte arrays, treating them as unsigned.static class
Utils.ComparingByteBuffers
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static boolean
arrayPrefixEquals(byte[] a, byte[] b, int length)
Returns true if the prefix of the given length for the input arrays are equal.static <T> T
assertNonNull(T object, String paramName)
static byte[]
bigIntegerToByteArray(BigInteger bigInteger, int length)
Removes the leading zero sign byte from the byte array representation of a BigInteger (if present) and left pads with zeroes to produce a byte array of the given length.static ByteBuffer
clear(ByteBuffer buff)
Equivalent to callingByteBuffer.clear()
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.static int
compareObjectIdentity(Object a, Object b)
Provides an arbitrary but consistent total ordering over all objects.static byte[]
decodeBase64String(String encoded)
Takes a Base64-encoded String, decodes it, and returns contents as a byte array.static String
encodeBase64String(byte[] data)
Takes data in a byte array, encodes them in Base64, and returns the result as a String.static ByteBuffer
flip(ByteBuffer buff)
Equivalent to callingByteBuffer.flip()
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.static SecureRandom
getSecureRandom()
static ByteBuffer
limit(ByteBuffer buff, int newLimit)
Equivalent to callingByteBuffer.limit(int)
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.static ByteBuffer
position(ByteBuffer buff, int newPosition)
Equivalent to callingByteBuffer.position(int)
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.static long
saturatingAdd(long a, long b)
static byte[]
truncate(byte[] arr, int len)
Returns a possibly truncated version ofarr
which is guaranteed to be exactlylen
elements long.
-
-
-
Method Detail
-
compareObjectIdentity
public static int compareObjectIdentity(Object a, Object b)
Provides an arbitrary but consistent total ordering over all objects. This comparison function will return 0 if and only if a == b, and otherwise will return arbitrarily either -1 or 1, but will do so in a way that results in a consistent total order.- Parameters:
a
-b
-- Returns:
- -1 or 1 (consistently) if a != b; 0 if a == b.
-
saturatingAdd
public static long saturatingAdd(long a, long b)
-
assertNonNull
public static <T> T assertNonNull(T object, String paramName) throws NullPointerException
- Parameters:
object
- value to be null-checkedparamName
- message for the potentialNullPointerException
- Returns:
object
- Throws:
NullPointerException
- ifobject
is null
-
truncate
public static byte[] truncate(byte[] arr, int len) throws IllegalArgumentException
Returns a possibly truncated version ofarr
which is guaranteed to be exactlylen
elements long. Ifarr
is already exactlylen
elements long, thenarr
is returned without copy or modification. Ifarr
is longer thanlen
, then a truncated copy is returned. Ifarr
is shorter thanlen
then this throws anIllegalArgumentException
.- Throws:
IllegalArgumentException
-
getSecureRandom
public static SecureRandom getSecureRandom()
-
flip
public static ByteBuffer flip(ByteBuffer buff)
Equivalent to callingByteBuffer.flip()
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.
-
clear
public static ByteBuffer clear(ByteBuffer buff)
Equivalent to callingByteBuffer.clear()
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.
-
position
public static ByteBuffer position(ByteBuffer buff, int newPosition)
Equivalent to callingByteBuffer.position(int)
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.
-
limit
public static ByteBuffer limit(ByteBuffer buff, int newLimit)
Equivalent to callingByteBuffer.limit(int)
but in a manner which is safe when compiled on Java 9 or newer but used on Java 8 or older.
-
decodeBase64String
public static byte[] decodeBase64String(String encoded)
Takes a Base64-encoded String, decodes it, and returns contents as a byte array.- Parameters:
encoded
- Base64 encoded String- Returns:
- decoded data as a byte array
-
encodeBase64String
public static String encodeBase64String(byte[] data)
Takes data in a byte array, encodes them in Base64, and returns the result as a String.- Parameters:
data
- The data to encode.- Returns:
- Base64 string that encodes the
data
.
-
bigIntegerToByteArray
public static byte[] bigIntegerToByteArray(BigInteger bigInteger, int length)
Removes the leading zero sign byte from the byte array representation of a BigInteger (if present) and left pads with zeroes to produce a byte array of the given length.- Parameters:
bigInteger
- The BigInteger to convert to a byte arraylength
- The length of the byte array, must be at least as long as the BigInteger byte array without the sign byte- Returns:
- The byte array
-
arrayPrefixEquals
public static boolean arrayPrefixEquals(byte[] a, byte[] b, int length)
Returns true if the prefix of the given length for the input arrays are equal. This method will return as soon as the first difference is found, and is thus not constant-time.- Parameters:
a
- The first array.b
- The second array.length
- The length of the prefix to compare.- Returns:
- True if the prefixes are equal, false otherwise.
-
-