gnu.crypto.prng

## Class BasePRNGStandalone

- java.lang.Object
- - gnu.crypto.prng.BasePRNGStandalone

- All Implemented Interfaces:
    IRandomStandalone, Serializable, Cloneable
  Direct Known Subclasses:
    FortunaStandalone

      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 and 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 and Description
    --- | ---
    `protected` | `BasePRNGStandalone(String name)` Trivial constructor for use by concrete subclasses.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and 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 Detail

    - #### buffer

          protected volatile byte[] buffer

      A temporary buffer to serve random bytes.

    - #### initialised

          protected volatile boolean initialised

      Indicate if this instance has already been initialised or not.

    - #### name

          protected final String name

      The canonical name prefix of the PRNG algorithm.

    - #### ndx

          protected int ndx

      The index into buffer of where the next byte will come from.

  - ### Constructor Detail

    - #### BasePRNGStandalone

          protected BasePRNGStandalone(String name)

      Trivial constructor for use by concrete subclasses.

      Parameters:
        `name` - the canonical name of this instance.

  - ### Method Detail

    - #### 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.

    - #### 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`

    - #### fillBlock

          public abstract void fillBlock()

    - #### 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.

    - #### isInitialised

          public boolean isInitialised()

    - #### 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.

    - #### 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

      Specified by:
        `nextBytes` in interface `IRandomStandalone`
      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.

    - #### setup

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