Class BasePRNGStandalone

java.lang.Object
gnu.crypto.prng.BasePRNGStandalone
All Implemented Interfaces:
IRandomStandalone, Serializable, Cloneable
Direct Known Subclasses:
FortunaStandalone, FortunaStandalone.Generator

public abstract class BasePRNGStandalone extends Object implements IRandomStandalone, Serializable

An abstract class to facilitate implementing PRNG algorithms.

Modified slightly by jrandom for I2P (removing unneeded exceptions)
Version:
$Revision: 1.1 $
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected byte[]
    A temporary buffer to serve random bytes.
    protected boolean
    Indicate if this instance has already been initialised or not.
    protected final String
    The canonical name prefix of the PRNG algorithm.
    protected int
    The index into buffer of where the next byte will come from.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Trivial constructor for use by concrete subclasses.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addRandomByte(byte b)
    Supplement, or possibly replace, the random state of this PRNG with a random byte.
    void
    addRandomBytes(byte[] buffer)
    Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.
    void
    addRandomBytes(byte[] buffer, int offset, int length)
    Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.
    Returns a clone copy of this instance.
    abstract void
     
    void
    init(Map<String,byte[]> attributes)
    Initialises the pseudo-random number generator scheme with the appropriate attributes.
    boolean
     
    Returns the canonical name of this instance.
    byte
    Returns the next 8 bits of random data generated from this instance.
    void
    nextBytes(byte[] out)
     
    void
    nextBytes(byte[] out, int offset, int length)
    Fills the designated byte array, starting from byte at index offset, for a maximum of length bytes with the output of this generator instance.
    abstract void
    setup(Map<String,byte[]> attributes)
     

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • name

      protected final String name
      The canonical name prefix of the PRNG algorithm.
    • initialised

      protected volatile boolean initialised
      Indicate if this instance has already been initialised or not.
    • buffer

      protected volatile byte[] buffer
      A temporary buffer to serve random bytes.
    • ndx

      protected int ndx
      The index into buffer of where the next byte will come from.
  • Constructor Details

    • BasePRNGStandalone

      protected BasePRNGStandalone(String name)

      Trivial constructor for use by concrete subclasses.

      Parameters:
      name - the canonical name of this instance.
  • Method Details

    • name

      public String name()
      Description copied from interface: IRandomStandalone

      Returns the canonical name of this instance.

      Specified by:
      name in interface IRandomStandalone
      Returns:
      the canonical name of this instance.
    • init

      public void init(Map<String,byte[]> attributes)
      Description copied from interface: IRandomStandalone

      Initialises the pseudo-random number generator scheme with the appropriate attributes.

      Specified by:
      init in interface IRandomStandalone
      Parameters:
      attributes - a set of name-value pairs that describe the desired future instance behaviour.
    • nextByte

      public byte nextByte() throws IllegalStateException
      Description copied from interface: IRandomStandalone

      Returns the next 8 bits of random data generated from this instance.

      Specified by:
      nextByte in interface IRandomStandalone
      Returns:
      the next 8 bits of random data generated from this instance.
      Throws:
      IllegalStateException - if the instance is not yet initialised. theoretical limit for generating non-repetitive pseudo-random data.
    • nextBytes

      public void nextBytes(byte[] out) throws IllegalStateException
      Throws:
      IllegalStateException
    • nextBytes

      public void nextBytes(byte[] out, int offset, int length) throws IllegalStateException
      Description copied from interface: IRandomStandalone

      Fills the designated byte array, starting from byte at index offset, for a maximum of length bytes with the output of this generator instance.

      Specified by:
      nextBytes in interface IRandomStandalone
      Parameters:
      out - the placeholder to contain the generated random bytes.
      offset - the starting index in out to consider. This method does nothing if this parameter is not within 0 and out.length.
      length - the maximum number of required random bytes. This method does nothing if this parameter is less than 1.
      Throws:
      IllegalStateException - if the instance is not yet initialised. theoretical limit for generating non-repetitive pseudo-random data.
    • addRandomByte

      public void addRandomByte(byte b)
      Description copied from interface: IRandomStandalone

      Supplement, or possibly replace, the random state of this PRNG with a random byte.

      Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an UnsupportedOperationException.

      Specified by:
      addRandomByte in interface IRandomStandalone
      Parameters:
      b - The byte to add.
    • addRandomBytes

      public void addRandomBytes(byte[] buffer)
      Description copied from interface: IRandomStandalone

      Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.

      Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an UnsupportedOperationException.

      Specified by:
      addRandomBytes in interface IRandomStandalone
      Parameters:
      buffer - The buffer of new random bytes to add.
    • addRandomBytes

      public void addRandomBytes(byte[] buffer, int offset, int length)
      Description copied from interface: IRandomStandalone

      Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.

      Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an UnsupportedOperationException.

      Specified by:
      addRandomBytes in interface IRandomStandalone
      Parameters:
      buffer - The buffer of new random bytes to add.
      offset - The offset from whence to begin reading random bytes.
      length - The number of random bytes to add.
    • isInitialised

      public boolean isInitialised()
    • clone

      public Object clone() throws CloneNotSupportedException
      Description copied from interface: IRandomStandalone

      Returns a clone copy of this instance.

      Specified by:
      clone in interface IRandomStandalone
      Overrides:
      clone in class Object
      Returns:
      a clone copy of this instance.
      Throws:
      CloneNotSupportedException
    • setup

      public abstract void setup(Map<String,byte[]> attributes)
    • fillBlock

      public abstract void fillBlock()