Class SecureRandomWithCache
- java.lang.Object
-
- java.security.SecureRandomSpi
-
- com.ibm.crypto.hdwrCCA.provider.SecureRandomWithCache
-
- All Implemented Interfaces:
- java.io.Serializable
public final class SecureRandomWithCache extends java.security.SecureRandomSpiThis class provides a crytpographically strong true random number generated based on cryptographic hardware. In this implementation of the SecureRandom class bytes are prefetched from cryptographic hardware to create a cache of random numbers available for a caller. This implementation of the SecureRandom class can be leveraged by setting the ibm.hwrandom.useicsfcache Java environment variable to true. If the ibm.hwrandom.useicsfcache Java environment variable is set to true when the IBMJCECCA provider is loaded then all subsequent calls to the SecureRandom class in the IBMJCECCA provider will be routed to this caching implementation. An additional environment variable of ibm.hwrandom.cachesize may also be specified to set the size of the cache to be used. Note a seed is not necessary for hardware random number generation and if one is passed it is not used. (Allowing the passing of a seed is to allow backwards compatibility with software generated random numbers)
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor and Description SecureRandomWithCache()Constructs a new instance of this class.SecureRandomWithCache(byte[] seed)Constructor that requires a seed.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description byte[]engineGenerateSeed(int numBytes)As hardware crypto does not need a seed value this method has no purpose, but is defined in SecureRandomSpi.voidengineNextBytes(byte[] bytes)Generates a user-specified number of random bytes.voidengineSetSeed(byte[] seed)As hardware crypto does not need a seed value this method has no purpose, but is defined in SecureRandomSpi.
-
-
-
Constructor Detail
-
SecureRandomWithCache
public SecureRandomWithCache()
Constructs a new instance of this class. The Java envionrment variable ibm.hwrandom.cachesize will be used to set the size of the cache to be used. If not specified the default size of 14400 bytes will be used.
-
SecureRandomWithCache
public SecureRandomWithCache(byte[] seed)
Constructor that requires a seed. Note: The seed has no real meaning in hardware and this constructor only exists for compatibility with SecureRandomSpi.- Parameters:
seed- a series of bytes used as seed. This value will be ignored.
-
-
Method Detail
-
engineSetSeed
public void engineSetSeed(byte[] seed)
As hardware crypto does not need a seed value this method has no purpose, but is defined in SecureRandomSpi. This method is a no-op whenever called.- Specified by:
engineSetSeedin classjava.security.SecureRandomSpi- Parameters:
seed- a series of bytes used as seed. This parameter is ignored.
-
engineNextBytes
public void engineNextBytes(byte[] bytes) throws java.lang.InternalError, java.nio.BufferUnderflowExceptionGenerates a user-specified number of random bytes. A cache is used to cache the bytes fetched from the underlying hardware implementation.- Specified by:
engineNextBytesin classjava.security.SecureRandomSpi- Parameters:
bytes- the array to be filled in with random bytes.- Throws:
java.lang.InternalError- is thrown when an unexpected error occurs or bytes is equal to null.java.nio.BufferUnderflowException- is thrown when an unexpected internal error occurs while fetching bytes from the cache.
-
engineGenerateSeed
public byte[] engineGenerateSeed(int numBytes) throws java.lang.UnsupportedOperationExceptionAs hardware crypto does not need a seed value this method has no purpose, but is defined in SecureRandomSpi.- Specified by:
engineGenerateSeedin classjava.security.SecureRandomSpi- Throws:
java.lang.UnsupportedOperationException- is always thrown if this method is invoked.
-
-