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:
Serialized Form
  • Field Summary

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

    Constructors 
    Modifier Constructor Description
    protected BasePRNGStandalone​(String name)
    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.
    Object clone()
    Returns a clone copy of this instance.
    abstract void fillBlock()  
    void init​(Map<String,​byte[]> attributes)
    Initialises the pseudo-random number generator scheme with the appropriate attributes.
    boolean isInitialised()  
    String name()
    Returns the canonical name of this instance.
    byte nextByte()
    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()