gnu.crypto.prng

## Class BasePRNGStandalone

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

All Implemented Interfaces:
  IRandomStandalone, Cloneable

Direct Known Subclasses:
  FortunaStandalone, FortunaStandalone.Generator

    public abstract class BasePRNGStandalone
    extends Object
    implements IRandomStandalone

An abstract class to facilitate implementing PRNG algorithms.

Modified slightly by jrandom for I2P (removing unneeded exceptions)

Version:
  $Revision: 1.1 $

### Field Summary

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

### Method Summary

Methods
`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 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 attributes)`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### name

    protected String name

The canonical name prefix of the PRNG algorithm.

#### initialised

    protected boolean initialised

Indicate if this instance has already been initialised or not.

#### buffer

    protected 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 Detail

#### BasePRNGStandalone

    protected BasePRNGStandalone(String name)

Trivial constructor for use by concrete subclasses.

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

### Method Detail

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

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

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

#### fillBlock

    public abstract void fillBlock()