diff --git a/src/main/java/com/pusher/client/crypto/nacl/SecretBoxOpener.java b/src/main/java/com/pusher/client/crypto/nacl/SecretBoxOpener.java index fb2ecb04..dd5f8a8b 100644 --- a/src/main/java/com/pusher/client/crypto/nacl/SecretBoxOpener.java +++ b/src/main/java/com/pusher/client/crypto/nacl/SecretBoxOpener.java @@ -24,6 +24,9 @@ a copy of this software and associated documentation files (the "Software"), package com.pusher.client.crypto.nacl; +import static com.pusher.client.util.internal.Preconditions.checkArgument; +import static com.pusher.client.util.internal.Preconditions.checkNotNull; + import java.util.Arrays; public class SecretBoxOpener { @@ -33,19 +36,15 @@ public class SecretBoxOpener { private byte[] key; public SecretBoxOpener(byte[] key) { - // TODO: add a a little preconditions lib/class for that - if (key == null) throw new IllegalArgumentException("null key passed"); - if (key.length != 32) { - throw new IllegalArgumentException("key should be 32B, is: " + key.length + "B"); - } + checkNotNull(key, "null key passed"); + checkArgument(key.length == 32, "key length must be 32 bytes, but is " + + key.length + " bytes"); this.key = key; } public byte[] open(byte box[], byte nonce[]) throws AuthenticityException { - if (key == null) { - throw new IllegalStateException("key has been cleared, create new instance"); - } + checkNotNull(key, "key has been cleared, create new instance"); byte subKey[] = new byte[32]; byte counter[] = new byte[16]; diff --git a/src/main/java/com/pusher/client/util/internal/Preconditions.java b/src/main/java/com/pusher/client/util/internal/Preconditions.java new file mode 100644 index 00000000..9841efe4 --- /dev/null +++ b/src/main/java/com/pusher/client/util/internal/Preconditions.java @@ -0,0 +1,23 @@ +package com.pusher.client.util.internal; + +public class Preconditions { + + public static void checkArgument(boolean expression, Object errorMessage) { + if (!expression) { + throw new IllegalArgumentException(String.valueOf(errorMessage)); + } + } + + public static void checkState(boolean expression, Object errorMessage) { + if (!expression) { + throw new IllegalStateException(String.valueOf(errorMessage)); + } + } + + public static T checkNotNull(T reference, Object errorMessage) { + if (reference == null) { + throw new NullPointerException(String.valueOf(errorMessage)); + } + return reference; + } +}