Package net.i2p.util
Class RandomSource
java.lang.Object
java.util.Random
java.security.SecureRandom
net.i2p.util.RandomSource
- All Implemented Interfaces:
Serializable
,EntropyHarvester
- Direct Known Subclasses:
FortunaRandomSource
public class RandomSource extends SecureRandom implements EntropyHarvester
Singleton for whatever PRNG i2p uses.
- Author:
- jrandom
- See Also:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description protected I2PAppContext
_context
-
Constructor Summary
Constructors Constructor Description RandomSource(I2PAppContext context)
Deprecated - do not instantiate this directly, as you won't get the good one (Fortuna). -
Method Summary
Modifier and Type Method Description void
feedEntropy(String source, byte[] data, int offset, int len)
Feed the entropy pools with data[offset:offset+len]void
feedEntropy(String source, long data, int bitoffset, int bits)
Feed the entropy pools with the bits in the datastatic RandomSource
getInstance()
Singleton for whatever PRNG i2p uses.EntropyHarvester
harvester()
boolean
initSeed(byte[] buf)
May block up to 10 secondsvoid
loadSeed()
May block up to 10 secondsvoid
nextBytes(byte[] buf, int offset, int length)
Not part of java.util.SecureRandom, but added since Fortuna supports it.int
nextInt(int n)
According to the java docs (http://java.sun.com/j2se/1.4.1/docs/api/java/util/Random.html#nextInt(int)) nextInt(n) should return a number between 0 and n (including 0 and excluding n).long
nextLong(long n)
Like the modified nextInt, nextLong(n) returns a random number from 0 through n, including 0, excluding n.void
saveSeed()
static void
writeSeed(byte[] buf)
Methods inherited from class java.security.SecureRandom
generateSeed, getAlgorithm, getInstance, getInstance, getInstance, getInstance, getInstance, getInstance, getInstanceStrong, getParameters, getProvider, getSeed, next, nextBytes, nextBytes, reseed, reseed, setSeed, setSeed, toString
-
Field Details
-
Constructor Details
-
RandomSource
Deprecated - do not instantiate this directly, as you won't get the good one (Fortuna). Use getInstance() or I2PAppContext.getGlobalContext().random() to get the FortunaRandomSource instance.
-
-
Method Details
-
getInstance
Singleton for whatever PRNG i2p uses. Same as I2PAppContext.getGlobalContext().random(); use context.random() if you have a context already.- Returns:
- I2PAppContext.getGlobalContext().random()
-
nextInt
public int nextInt(int n)According to the java docs (http://java.sun.com/j2se/1.4.1/docs/api/java/util/Random.html#nextInt(int)) nextInt(n) should return a number between 0 and n (including 0 and excluding n). However, their pseudocode, as well as sun's, kaffe's, and classpath's implementation INCLUDES NEGATIVE VALUES. Ok, so we're going to have it return between 0 and n (including 0, excluding n), since thats what it has been used for. This code unused, see FortunaRandomSource override -
nextLong
public long nextLong(long n)Like the modified nextInt, nextLong(n) returns a random number from 0 through n, including 0, excluding n. This code unused, see FortunaRandomSource override -
nextBytes
public void nextBytes(byte[] buf, int offset, int length)Not part of java.util.SecureRandom, but added since Fortuna supports it. This code unused, see FortunaRandomSource override- Since:
- 0.8.12
-
harvester
-
feedEntropy
Description copied from interface:EntropyHarvester
Feed the entropy pools with the bits in the data- Specified by:
feedEntropy
in interfaceEntropyHarvester
- Parameters:
source
- origin of the entropy, allowing the harvester to determine how much to value the databitoffset
- bit index into the data array to start (using java standard big-endian)bits
- how many bits to use
-
feedEntropy
Description copied from interface:EntropyHarvester
Feed the entropy pools with data[offset:offset+len]- Specified by:
feedEntropy
in interfaceEntropyHarvester
- Parameters:
source
- origin of the entropy, allowing the harvester to determine how much to value the dataoffset
- index into the data array to startlen
- how many bytes to use
-
loadSeed
public void loadSeed()May block up to 10 seconds -
saveSeed
public void saveSeed() -
writeSeed
public static final void writeSeed(byte[] buf) -
initSeed
public final boolean initSeed(byte[] buf)May block up to 10 seconds
-