Class 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 indexoffset
, for a maximum oflength
bytes with the output of this generator instance.abstract void
setup(Map<String,byte[]> attributes)
-
Field Details
-
name
The canonical name prefix of the PRNG algorithm. -
initialised
protected volatile boolean initialisedIndicate if this instance has already been initialised or not. -
buffer
protected volatile byte[] bufferA temporary buffer to serve random bytes. -
ndx
protected int ndxThe index into buffer of where the next byte will come from.
-
-
Constructor Details
-
BasePRNGStandalone
Trivial constructor for use by concrete subclasses.
- Parameters:
name
- the canonical name of this instance.
-
-
Method Details
-
name
Description copied from interface:IRandomStandalone
Returns the canonical name of this instance.
- Specified by:
name
in interfaceIRandomStandalone
- Returns:
- the canonical name of this instance.
-
init
Description copied from interface:IRandomStandalone
Initialises the pseudo-random number generator scheme with the appropriate attributes.
- Specified by:
init
in interfaceIRandomStandalone
- Parameters:
attributes
- a set of name-value pairs that describe the desired future instance behaviour.
-
nextByte
Description copied from interface:IRandomStandalone
Returns the next 8 bits of random data generated from this instance.
- Specified by:
nextByte
in interfaceIRandomStandalone
- 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
- Throws:
IllegalStateException
-
nextBytes
Description copied from interface:IRandomStandalone
Fills the designated byte array, starting from byte at index
offset
, for a maximum oflength
bytes with the output of this generator instance.- Specified by:
nextBytes
in interfaceIRandomStandalone
- 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 within0
andout.length
.length
- the maximum number of required random bytes. This method does nothing if this parameter is less than1
.- 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 interfaceIRandomStandalone
- 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 interfaceIRandomStandalone
- 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 interfaceIRandomStandalone
- 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
Description copied from interface:IRandomStandalone
Returns a clone copy of this instance.
- Specified by:
clone
in interfaceIRandomStandalone
- Overrides:
clone
in classObject
- Returns:
- a clone copy of this instance.
- Throws:
CloneNotSupportedException
-
setup
-
fillBlock
public abstract void fillBlock()
-