RandomData



javacard.security
Class RandomData

java.lang.Object
  extended by javacard.security.RandomData
Direct Known Subclasses:
RandomDataImpl

public abstract class RandomData
extends Object

The RandomData abstract class is the base class for random number generation. Implementations of RandomData algorithms must extend this class and implement all the abstract methods.


Field Summary
static byte ALG_PSEUDO_RANDOM
          Utility pseudo-random number generation algorithms.
static byte ALG_SECURE_RANDOM
          Cryptographically secure random number generation algorithms.
 
Constructor Summary
protected RandomData()
          Protected constructor for subclassing.
 
Method Summary
abstract  void generateData(byte[] buffer, short offset, short length)
          Generates random data.
static RandomData getInstance(byte algorithm)
          Creates a RandomData instance of the selected algorithm.
abstract  void setSeed(byte[] buffer, short offset, short length)
          Seeds the random data generator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ALG_PSEUDO_RANDOM

public static final byte ALG_PSEUDO_RANDOM
Utility pseudo-random number generation algorithms. The random number sequence generated by this algorithm need not be the same even if seeded with the same seed data.

Even if a transaction is in progress, the update of the internal state shall not participate in the transaction.

See Also:
Constant Field Values

ALG_SECURE_RANDOM

public static final byte ALG_SECURE_RANDOM
Cryptographically secure random number generation algorithms.

See Also:
Constant Field Values
Constructor Detail

RandomData

protected RandomData()
Protected constructor for subclassing.

Method Detail

getInstance

public static final RandomData getInstance(byte algorithm)
                                    throws CryptoException
Creates a RandomData instance of the selected algorithm. The pseudo random RandomData instance's seed is initialized to a internal default value.

Parameters:
algorithm - the desired random number algorithm. Valid codes listed in ALG_ .. constants above. See ALG_PSEUDO_RANDOM.
Returns:
the RandomData object instance of the requested algorithm
Throws:
CryptoException - with the following reason codes:
  • CryptoException.NO_SUCH_ALGORITHM if the requested algorithm is not supported.

generateData

public abstract void generateData(byte[] buffer,
                                  short offset,
                                  short length)
                           throws CryptoException
Generates random data.

Parameters:
buffer - the output buffer
offset - the offset into the output buffer
length - the length of random data to generate
Throws:
CryptoException - with the following reason codes:
  • CryptoException.ILLEGAL_VALUE if the length parameter is zero.

setSeed

public abstract void setSeed(byte[] buffer,
                             short offset,
                             short length)
Seeds the random data generator.

Parameters:
buffer - the input buffer
offset - the offset into the input buffer
length - the length of the seed data