Author: nextgens
Date: 2008-05-03 13:25:08 +0000 (Sat, 03 May 2008)
New Revision: 19696
Modified:
trunk/freenet/src/freenet/client/ArchiveManager.java
trunk/freenet/src/freenet/node/NodeClientCore.java
trunk/freenet/src/freenet/support/io/FilenameGenerator.java
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
trunk/freenet/src/freenet/support/io/PersistentTempBucketFactory.java
Log:
Some refactoring: use the same instance of MT everywhere instead of creating a
new one
Needs testing!
Modified: trunk/freenet/src/freenet/client/ArchiveManager.java
===================================================================
--- trunk/freenet/src/freenet/client/ArchiveManager.java 2008-05-03
11:50:20 UTC (rev 19695)
+++ trunk/freenet/src/freenet/client/ArchiveManager.java 2008-05-03
13:25:08 UTC (rev 19696)
@@ -23,6 +23,7 @@
import freenet.support.io.FilenameGenerator;
import freenet.support.io.PaddedEphemerallyEncryptedBucket;
import freenet.support.io.TempFileBucket;
+import java.util.Random;
/**
* Cache of recently decoded archives:
@@ -39,6 +40,7 @@
private static boolean logMINOR;
final RandomSource random;
+ final Random weakRandom;
final long maxArchiveSize;
final long maxArchivedFileSize;
@@ -72,7 +74,7 @@
* @param cacheDir The directory in which to store cached data.
* @param random A random source for the encryption keys used by stored
files.
*/
- public ArchiveManager(int maxHandlers, long maxCachedData, long
maxArchiveSize, long maxArchivedFileSize, int maxCachedElements, RandomSource
random, FilenameGenerator filenameGenerator) {
+ public ArchiveManager(int maxHandlers, long maxCachedData, long
maxArchiveSize, long maxArchivedFileSize, int maxCachedElements, RandomSource
random, Random weakRandom, FilenameGenerator filenameGenerator) {
maxArchiveHandlers = maxHandlers;
archiveHandlers = new LRUHashtable();
this.maxCachedElements = maxCachedElements;
@@ -81,6 +83,7 @@
this.maxArchiveSize = maxArchiveSize;
this.maxArchivedFileSize = maxArchivedFileSize;
this.random = random;
+ this.weakRandom = weakRandom;
this.filenameGenerator = filenameGenerator;
logMINOR = Logger.shouldLog(Logger.MINOR, this);
}
@@ -473,7 +476,7 @@
byte[] cipherKey = new byte[32];
random.nextBytes(cipherKey);
- PaddedEphemerallyEncryptedBucket encryptedBucket = new
PaddedEphemerallyEncryptedBucket(fb, 1024, random);
+ PaddedEphemerallyEncryptedBucket encryptedBucket = new
PaddedEphemerallyEncryptedBucket(fb, 1024, weakRandom);
return new TempStoreElement(myFile, fb, encryptedBucket);
}
Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java 2008-05-03 11:50:20 UTC
(rev 19695)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java 2008-05-03 13:25:08 UTC
(rev 19696)
@@ -190,14 +190,14 @@
}
});
try {
- persistentTempBucketFactory = new
PersistentTempBucketFactory(new
File(nodeConfig.getString("persistentTempDir")), "freenet-temp-", random);
+ persistentTempBucketFactory = new
PersistentTempBucketFactory(new
File(nodeConfig.getString("persistentTempDir")), "freenet-temp-",
node.fastWeakRandom);
persistentEncryptedTempBucketFactory = new
PersistentEncryptedTempBucketFactory(persistentTempBucketFactory);
} catch (IOException e2) {
String msg = "Could not find or create persistent
temporary directory";
throw new
NodeInitException(NodeInitException.EXIT_BAD_TEMP_DIR, msg);
}
- tempBucketFactory = new
PaddedEphemerallyEncryptedBucketFactory(new
TempBucketFactory(tempFilenameGenerator), random, 1024);
+ tempBucketFactory = new
PaddedEphemerallyEncryptedBucketFactory(new
TempBucketFactory(tempFilenameGenerator), node.fastWeakRandom, 1024);
// Downloads directory
@@ -272,7 +272,7 @@
});
setUploadAllowedDirs(nodeConfig.getStringArr("uploadAllowedDirs"));
- archiveManager = new ArchiveManager(MAX_ARCHIVE_HANDLERS,
MAX_CACHED_ARCHIVE_DATA, MAX_ARCHIVE_SIZE, MAX_ARCHIVED_FILE_SIZE,
MAX_CACHED_ELEMENTS, random, tempFilenameGenerator);
+ archiveManager = new ArchiveManager(MAX_ARCHIVE_HANDLERS,
MAX_CACHED_ARCHIVE_DATA, MAX_ARCHIVE_SIZE, MAX_ARCHIVED_FILE_SIZE,
MAX_CACHED_ELEMENTS, random, node.fastWeakRandom, tempFilenameGenerator);
Logger.normal(this, "Initializing USK Manager");
System.out.println("Initializing USK Manager");
uskManager = new USKManager(this);
Modified: trunk/freenet/src/freenet/support/io/FilenameGenerator.java
===================================================================
--- trunk/freenet/src/freenet/support/io/FilenameGenerator.java 2008-05-03
11:50:20 UTC (rev 19695)
+++ trunk/freenet/src/freenet/support/io/FilenameGenerator.java 2008-05-03
13:25:08 UTC (rev 19696)
@@ -5,14 +5,14 @@
import org.tanukisoftware.wrapper.WrapperManager;
-import freenet.crypt.RandomSource;
import freenet.support.Fields;
import freenet.support.Logger;
import freenet.support.TimeUtil;
+import java.util.Random;
public class FilenameGenerator {
- private final RandomSource random;
+ private final Random random;
private final String prefix;
private final File tmpDir;
@@ -23,7 +23,7 @@
* @param prefix
* @throws IOException
*/
- public FilenameGenerator(RandomSource random, boolean wipeFiles, File
dir, String prefix) throws IOException {
+ public FilenameGenerator(Random random, boolean wipeFiles, File dir,
String prefix) throws IOException {
this.random = random;
this.prefix = prefix;
if (dir == null)
Modified:
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
2008-05-03 11:50:20 UTC (rev 19695)
+++ trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
2008-05-03 13:25:08 UTC (rev 19696)
@@ -8,8 +8,6 @@
import java.io.OutputStream;
import java.lang.ref.SoftReference;
-import org.spaceroots.mantissa.random.MersenneTwister;
-
import freenet.crypt.PCFBMode;
import freenet.crypt.RandomSource;
import freenet.crypt.UnsupportedCipherException;
@@ -18,6 +16,7 @@
import freenet.support.Logger;
import freenet.support.SimpleFieldSet;
import freenet.support.api.Bucket;
+import java.util.Random;
/**
* A proxy Bucket which adds:
@@ -28,7 +27,7 @@
private final Bucket bucket;
private final int minPaddedSize;
- private final RandomSource randomSource;
+ private final Random randomSource;
private SoftReference /* <Rijndael> */ aesRef;
/** The decryption key. */
private final byte[] key;
@@ -41,10 +40,10 @@
* @param bucket The bucket which we are proxying to. Must be empty.
* @param pcfb The encryption mode with which to encipher/decipher the
data.
* @param minSize The minimum padded size of the file (after it has
been closed).
- * @param origRandom Hard random number generator from which to obtain
a seed for padding.
+ * @param origRandom a week prng we will padd from.
* @throws UnsupportedCipherException
*/
- public PaddedEphemerallyEncryptedBucket(Bucket bucket, int minSize,
RandomSource origRandom) {
+ public PaddedEphemerallyEncryptedBucket(Bucket bucket, int minSize,
Random origRandom) {
this.randomSource = origRandom;
this.bucket = bucket;
if(bucket.size() != 0) throw new
IllegalArgumentException("Bucket must be empty");
Modified:
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
===================================================================
---
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
2008-05-03 11:50:20 UTC (rev 19695)
+++
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucketFactory.java
2008-05-03 13:25:08 UTC (rev 19696)
@@ -2,9 +2,9 @@
import java.io.IOException;
-import freenet.crypt.RandomSource;
import freenet.support.api.Bucket;
import freenet.support.api.BucketFactory;
+import java.util.Random;
/**
* Factory wrapper for PaddedEphemerallyEncryptedBucket's, which are themselves
@@ -13,10 +13,10 @@
public class PaddedEphemerallyEncryptedBucketFactory implements BucketFactory {
final BucketFactory baseFactory;
- final RandomSource random;
+ final Random random;
final int minSize;
- public PaddedEphemerallyEncryptedBucketFactory(BucketFactory factory,
RandomSource r, int minSize) {
+ public PaddedEphemerallyEncryptedBucketFactory(BucketFactory factory,
Random r, int minSize) {
baseFactory = factory;
this.minSize = minSize;
this.random = r;
Modified: trunk/freenet/src/freenet/support/io/PersistentTempBucketFactory.java
===================================================================
--- trunk/freenet/src/freenet/support/io/PersistentTempBucketFactory.java
2008-05-03 11:50:20 UTC (rev 19695)
+++ trunk/freenet/src/freenet/support/io/PersistentTempBucketFactory.java
2008-05-03 13:25:08 UTC (rev 19696)
@@ -13,6 +13,7 @@
import freenet.support.Logger;
import freenet.support.api.Bucket;
import freenet.support.api.BucketFactory;
+import java.util.Random;
/**
* Handles persistent temp files. These are used for e.g. persistent downloads.
@@ -35,12 +36,12 @@
private final FilenameGenerator fg;
/** Random number generator */
- private final RandomSource rand;
+ private final Random rand;
/** Buckets to free */
private final LinkedList bucketsToFree;
- public PersistentTempBucketFactory(File dir, String prefix,
RandomSource rand) throws IOException {
+ public PersistentTempBucketFactory(File dir, String prefix, Random
rand) throws IOException {
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
this.dir = dir;
this.rand = rand;