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); } + } } }