diff --git a/src/main/java/net/schmizz/sshj/transport/random/BouncyCastleRandom.java b/src/main/java/net/schmizz/sshj/transport/random/BouncyCastleRandom.java
index b7e9fe34..6fb9180c 100644
--- a/src/main/java/net/schmizz/sshj/transport/random/BouncyCastleRandom.java
+++ b/src/main/java/net/schmizz/sshj/transport/random/BouncyCastleRandom.java
@@ -17,6 +17,8 @@ package net.schmizz.sshj.transport.random;
import org.bouncycastle.crypto.prng.RandomGenerator;
import org.bouncycastle.crypto.prng.VMPCRandomGenerator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.security.SecureRandom;
@@ -27,6 +29,8 @@ import java.security.SecureRandom;
public class BouncyCastleRandom
implements Random {
+ private static final Logger logger = LoggerFactory.getLogger(BouncyCastleRandom.class);
+
/** Named factory for the BouncyCastle Random */
public static class Factory
implements net.schmizz.sshj.common.Factory {
@@ -41,7 +45,10 @@ public class BouncyCastleRandom
private final RandomGenerator random = new VMPCRandomGenerator();
public BouncyCastleRandom() {
+ logger.info("Generating random seed from SecureRandom.");
+ long t = System.currentTimeMillis();
byte[] seed = new SecureRandom().generateSeed(8);
+ logger.debug("Creating random seed took {} ms", System.currentTimeMillis() - t);
random.addSeedMaterial(seed);
}
diff --git a/src/main/java/net/schmizz/sshj/transport/random/JCERandom.java b/src/main/java/net/schmizz/sshj/transport/random/JCERandom.java
index 50f487cf..ea2179d9 100644
--- a/src/main/java/net/schmizz/sshj/transport/random/JCERandom.java
+++ b/src/main/java/net/schmizz/sshj/transport/random/JCERandom.java
@@ -16,10 +16,13 @@
package net.schmizz.sshj.transport.random;
import java.security.SecureRandom;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/** A {@link Random} implementation using the built-in {@link SecureRandom} PRNG. */
public class JCERandom
implements Random {
+ private static final Logger logger = LoggerFactory.getLogger(JCERandom.class);
/** Named factory for the JCE {@link Random} */
public static class Factory
@@ -38,7 +41,14 @@ public class JCERandom
}
private byte[] tmp = new byte[16];
- private final SecureRandom random = new SecureRandom();
+ private final SecureRandom random;
+
+ JCERandom() {
+ logger.info("Creating new SecureRandom.");
+ long t = System.currentTimeMillis();
+ random = new SecureRandom();
+ logger.debug("Random creation took {} ms", System.currentTimeMillis() - t);
+ }
/**
* Fill the given byte-array with random bytes from this PRNG.
@@ -49,15 +59,16 @@ public class JCERandom
*/
@Override
public synchronized void fill(byte[] foo, int start, int len) {
- if (start == 0 && len == foo.length)
+ if (start == 0 && len == foo.length) {
random.nextBytes(foo);
- else
+ } else {
synchronized (this) {
if (len > tmp.length)
tmp = new byte[len];
random.nextBytes(tmp);
System.arraycopy(tmp, 0, foo, start, len);
}
+ }
}
}