Package net.i2p.util

Class 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 Details

  • Constructor Details

    • RandomSource

      public RandomSource​(I2PAppContext context)
      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

      public static RandomSource 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
      Overrides:
      nextInt in class Random
    • 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

      public EntropyHarvester harvester()
    • feedEntropy

      public void feedEntropy​(String source, long data, int bitoffset, int bits)
      Description copied from interface: EntropyHarvester
      Feed the entropy pools with the bits in the data
      Specified by:
      feedEntropy in interface EntropyHarvester
      Parameters:
      source - origin of the entropy, allowing the harvester to determine how much to value the data
      bitoffset - bit index into the data array to start (using java standard big-endian)
      bits - how many bits to use
    • feedEntropy

      public void feedEntropy​(String source, byte[] data, int offset, int len)
      Description copied from interface: EntropyHarvester
      Feed the entropy pools with data[offset:offset+len]
      Specified by:
      feedEntropy in interface EntropyHarvester
      Parameters:
      source - origin of the entropy, allowing the harvester to determine how much to value the data
      offset - index into the data array to start
      len - 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