Author: toad
Date: 2006-04-06 18:59:16 +0000 (Thu, 06 Apr 2006)
New Revision: 8484
Modified:
trunk/freenet/src/freenet/crypt/Yarrow.java
trunk/freenet/src/freenet/node/Version.java
Log:
622:
Random number generator blocking on startup fix:
Don't block on SecureRandom.generateSeed on *nix. This should be the last
remaining blocking call in Yarrow's constructor.
Modified: trunk/freenet/src/freenet/crypt/Yarrow.java
===================================================================
--- trunk/freenet/src/freenet/crypt/Yarrow.java 2006-04-06 18:09:20 UTC (rev
8483)
+++ trunk/freenet/src/freenet/crypt/Yarrow.java 2006-04-06 18:59:16 UTC (rev
8484)
@@ -99,11 +99,7 @@
}
public void seedFromExternalStuff(boolean canBlock) {
- // SecureRandom hopefully acts as a proxy for CAPI on Windows
- byte[] buf = sr.generateSeed(20);
- consumeBytes(buf);
- buf = sr.generateSeed(20);
- consumeBytes(buf);
+ byte[] buf = new byte[32];
if(File.separatorChar == '/') {
FileInputStream fis = null;
File hwrng = new File("/dev/hwrng");
@@ -162,7 +158,18 @@
}
}
fis = null;
+ } else {
+ // Force generateSeed(), since we can't read random data from
anywhere else.
+ // Anyway, Windows's CAPI won't block.
+ canBlock = true;
}
+ if(canBlock) {
+ // SecureRandom hopefully acts as a proxy for CAPI on
Windows
+ buf = sr.generateSeed(32);
+ consumeBytes(buf);
+ buf = sr.generateSeed(32);
+ consumeBytes(buf);
+ }
// A few more bits
consumeString(Long.toHexString(Runtime.getRuntime().freeMemory()));
consumeString(Long.toHexString(Runtime.getRuntime().totalMemory()));
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-04-06 18:09:20 UTC (rev
8483)
+++ trunk/freenet/src/freenet/node/Version.java 2006-04-06 18:59:16 UTC (rev
8484)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 621;
+ private static final int buildNumber = 622;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 591;