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)| 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.
|
| Modifier | Constructor and Description |
|---|---|
protected |
BasePRNGStandalone(String name)
Trivial constructor for use by concrete subclasses.
|
| 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) |
protected volatile byte[] buffer
protected volatile boolean initialised
protected final String name
protected int ndx
protected BasePRNGStandalone(String name)
Trivial constructor for use by concrete subclasses.
name - the canonical name of this instance.public void addRandomByte(byte b)
IRandomStandaloneSupplement, 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.
addRandomByte in interface IRandomStandaloneb - The byte to add.public void addRandomBytes(byte[] buffer)
IRandomStandaloneSupplement, 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.
addRandomBytes in interface IRandomStandalonebuffer - The buffer of new random bytes to add.public void addRandomBytes(byte[] buffer,
int offset,
int length)
IRandomStandaloneSupplement, 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.
addRandomBytes in interface IRandomStandalonebuffer - 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.public Object clone() throws CloneNotSupportedException
IRandomStandaloneReturns a clone copy of this instance.
clone in interface IRandomStandaloneclone in class ObjectCloneNotSupportedExceptionpublic abstract void fillBlock()
public void init(Map<String,byte[]> attributes)
IRandomStandaloneInitialises the pseudo-random number generator scheme with the appropriate attributes.
init in interface IRandomStandaloneattributes - a set of name-value pairs that describe the desired
future instance behaviour.public boolean isInitialised()
public String name()
IRandomStandaloneReturns the canonical name of this instance.
name in interface IRandomStandalonepublic byte nextByte()
throws IllegalStateException
IRandomStandaloneReturns the next 8 bits of random data generated from this instance.
nextByte in interface IRandomStandaloneIllegalStateException - if the instance is not yet initialised.
theoretical limit for generating non-repetitive pseudo-random data.public void nextBytes(byte[] out)
throws IllegalStateException
nextBytes in interface IRandomStandaloneIllegalStateExceptionpublic void nextBytes(byte[] out,
int offset,
int length)
throws IllegalStateException
IRandomStandaloneFills the designated byte array, starting from byte at index
offset, for a maximum of length bytes with the
output of this generator instance.
nextBytes in interface IRandomStandaloneout - 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.IllegalStateException - if the instance is not yet initialised.
theoretical limit for generating non-repetitive pseudo-random data.