public final class RNGTest
extends java.lang.Object
If this test fails for any RNG, the crypto module is placed in the ModuleState.ERROR_TEST_RNG_CONTINUOUS
error state, and a SelfTestException
is thrown. Until this state is cleared (see FIPS_140_2.clearModuleState()
), if any attempt to perform a cryptographic operation, including input or output, a ModuleStateException
is thrown.
FIPS_140_2
, RandomBitsSource.getRNGTest()
Constructor and Description |
---|
RNGTest(RandomBitsSource rng)
Creates a new
RNGTest instance. |
Modifier and Type | Method and Description |
---|---|
void |
initialize()
Resets the test and generates and discards an initial random value from the RNG.
|
void |
testRandomByte(byte random)
Runs the continuous Random Number Generator test for the given random bytes.
|
void |
testRandomBytes(byte[] random, int offset, int length)
Runs the continuous Random Number Generator test for the given random bytes.
|
public RNGTest(RandomBitsSource rng)
RNGTest
instance.
The RNGTest
should be instantiated in the RandomBitsSource
's constructor:
// Instance variable of the MyRandom class.
private RNGTest rngTest;
// MyRandom constructor.
public MyRandom (boolean seed)
{
//
// Set up MyRandom object...
//
rngTest = new RNGTest(this);
}
The initialize()
method must be called before the testRandomBytes
of testRandomByte
methods can be used.
rng
- The RandomBitsSource
that this instance of RNGTest
will be testing.public void initialize()
Sub-classes of RandomBitsSource
must invoke this method in their seed()
methods.
public void testRandomBytes(byte[] random, int offset, int length)
Sub-classes of RandomBitsSource
must invoke this test in their randomBytes
methods before returning any generated random value.
random
- The new random value to be compared with the previous value.offset
- The starting index in random
from which the bytes to be tested will be taken.length
- The number of bytes from random
, starting with offset
, that will be tested.SelfTestException
- If the test fails or if this RNGTest
has not been initialized.initialize()
, testRandomByte(byte)
public void testRandomByte(byte random)
Sub-classes of RandomBitsSource
should use this test in their randomByte
methods before returning any generated random value.
random
- The new random value to be compared with the previous value.SelfTestException
- If the test fails or if this RNGTest
has not been initialized.initialize()
, testRandomBytes(byte[], int, int)