diff --git a/nostr-java-util/src/main/java/nostr/util/NostrUtil.java b/nostr-java-util/src/main/java/nostr/util/NostrUtil.java index 5a7d28bb3..6dfa9f5cf 100644 --- a/nostr-java-util/src/main/java/nostr/util/NostrUtil.java +++ b/nostr-java-util/src/main/java/nostr/util/NostrUtil.java @@ -17,6 +17,7 @@ public class NostrUtil { private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray(); + private static final SecureRandom RANDOM = new SecureRandom(); public static String bytesToHex(byte[] b) { char[] hexChars = new char[b.length * 2]; @@ -98,7 +99,7 @@ public static byte[] xor(byte[] b0, byte[] b1) { public static byte[] createRandomByteArray(int len) { byte[] b = new byte[len]; - new SecureRandom().nextBytes(b); + RANDOM.nextBytes(b); return b; } diff --git a/nostr-java-util/src/test/java/nostr/util/NostrUtilRandomTest.java b/nostr-java-util/src/test/java/nostr/util/NostrUtilRandomTest.java new file mode 100644 index 000000000..5284add6c --- /dev/null +++ b/nostr-java-util/src/test/java/nostr/util/NostrUtilRandomTest.java @@ -0,0 +1,25 @@ +package nostr.util; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.*; + +public class NostrUtilRandomTest { + + @Test + public void testCreateRandomByteArrayLength() { + int len = 16; + byte[] data = NostrUtil.createRandomByteArray(len); + assertNotNull(data, "Random byte array should not be null"); + assertEquals(len, data.length, "Random byte array has wrong length"); + } + + @Test + public void testCreateRandomByteArrayUniqueness() { + byte[] data1 = NostrUtil.createRandomByteArray(16); + byte[] data2 = NostrUtil.createRandomByteArray(16); + assertFalse(Arrays.equals(data1, data2), "Consecutive random arrays should differ"); + } +}