Bouncy Castle Cryptography Library 1.79

org.bouncycastle.crypto.prng
Class SP800SecureRandomBuilder

java.lang.Object
  |
  +--org.bouncycastle.crypto.prng.SP800SecureRandomBuilder

public class SP800SecureRandomBuilder
extends java.lang.Object

Builder class for making SecureRandom objects based on SP 800-90A Deterministic Random Bit Generators (DRBG).


Constructor Summary
SP800SecureRandomBuilder()
          Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with predictionResistant set to false.
SP800SecureRandomBuilder(EntropySourceProvider entropySourceProvider)
          Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.
SP800SecureRandomBuilder(java.security.SecureRandom entropySource, boolean predictionResistant)
          Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value for prediction resistance.
 
Method Summary
 SP800SecureRandom buildCTR(BlockCipher cipher, int keySizeInBits, byte[] nonce, boolean predictionResistant)
          Build a SecureRandom based on a SP 800-90A CTR DRBG.
 SP800SecureRandom buildHash(Digest digest, byte[] nonce, boolean predictionResistant)
          Build a SecureRandom based on a SP 800-90A Hash DRBG.
 SP800SecureRandom buildHMAC(Mac hMac, byte[] nonce, boolean predictionResistant)
          Build a SecureRandom based on a SP 800-90A HMAC DRBG.
 SP800SecureRandomBuilder setEntropyBitsRequired(int entropyBitsRequired)
          Set the amount of entropy bits required for seeding and reseeding DRBGs used in building SecureRandom objects.
 SP800SecureRandomBuilder setPersonalizationString(byte[] personalizationString)
          Set the personalization string for DRBG SecureRandoms created by this builder
 SP800SecureRandomBuilder setSecurityStrength(int securityStrength)
          Set the security strength required for DRBGs used in building SecureRandom objects.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SP800SecureRandomBuilder

public SP800SecureRandomBuilder()
Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with predictionResistant set to false.

Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if the default SecureRandom does for its generateSeed() call.


SP800SecureRandomBuilder

public SP800SecureRandomBuilder(java.security.SecureRandom entropySource,
                                boolean predictionResistant)
Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value for prediction resistance.

Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if the passed in SecureRandom does for its generateSeed() call.

Parameters:
entropySource - the SecureRandom acting as a source of entropy for DRBGs made by this builder.
predictionResistant - true if the SecureRandom seeder can be regarded as predictionResistant.

SP800SecureRandomBuilder

public SP800SecureRandomBuilder(EntropySourceProvider entropySourceProvider)
Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.

Note: If this constructor is used any calls to setSeed() in the resulting SecureRandom will be ignored.

Parameters:
entropySourceProvider - a provider of EntropySource objects.
Method Detail

setPersonalizationString

public SP800SecureRandomBuilder setPersonalizationString(byte[] personalizationString)
Set the personalization string for DRBG SecureRandoms created by this builder
Parameters:
personalizationString - the personalisation string for the underlying DRBG.
Returns:
the current builder.

setSecurityStrength

public SP800SecureRandomBuilder setSecurityStrength(int securityStrength)
Set the security strength required for DRBGs used in building SecureRandom objects.
Parameters:
securityStrength - the security strength (in bits)
Returns:
the current builder.

setEntropyBitsRequired

public SP800SecureRandomBuilder setEntropyBitsRequired(int entropyBitsRequired)
Set the amount of entropy bits required for seeding and reseeding DRBGs used in building SecureRandom objects.
Parameters:
entropyBitsRequired - the number of bits of entropy to be requested from the entropy source on each seed/reseed.
Returns:
the current builder.

buildHash

public SP800SecureRandom buildHash(Digest digest,
                                   byte[] nonce,
                                   boolean predictionResistant)
Build a SecureRandom based on a SP 800-90A Hash DRBG.
Parameters:
digest - digest algorithm to use in the DRBG underneath the SecureRandom.
nonce - nonce value to use in DRBG construction.
predictionResistant - specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
Returns:
a SecureRandom supported by a Hash DRBG.

buildCTR

public SP800SecureRandom buildCTR(BlockCipher cipher,
                                  int keySizeInBits,
                                  byte[] nonce,
                                  boolean predictionResistant)
Build a SecureRandom based on a SP 800-90A CTR DRBG.
Parameters:
cipher - the block cipher to base the DRBG on.
keySizeInBits - key size in bits to be used with the block cipher.
nonce - nonce value to use in DRBG construction.
predictionResistant - specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
Returns:
a SecureRandom supported by a CTR DRBG.

buildHMAC

public SP800SecureRandom buildHMAC(Mac hMac,
                                   byte[] nonce,
                                   boolean predictionResistant)
Build a SecureRandom based on a SP 800-90A HMAC DRBG.
Parameters:
hMac - HMAC algorithm to use in the DRBG underneath the SecureRandom.
nonce - nonce value to use in DRBG construction.
predictionResistant - specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
Returns:
a SecureRandom supported by a HMAC DRBG.

Bouncy Castle Cryptography Library 1.79