Class HMacSP800DRBG

java.lang.Object
org.bouncycastle.crypto.prng.drbg.HMacSP800DRBG
All Implemented Interfaces:
SP80090DRBG

public class HMacSP800DRBG extends Object implements SP80090DRBG
A SP800-90A HMAC DRBG.
  • Constructor Summary

    Constructors
    Constructor
    Description
    HMacSP800DRBG(Mac hMac, int securityStrength, EntropySource entropySource, byte[] personalizationString, byte[] nonce)
    Construct a SP800-90A Hash DRBG.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    generate(byte[] output, byte[] additionalInput, boolean predictionResistant)
    Populate a passed in array with random data.
    int
    Return the block size (in bits) of the DRBG.
    void
    reseed(byte[] additionalInput)
    Reseed the DRBG.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • HMacSP800DRBG

      public HMacSP800DRBG(Mac hMac, int securityStrength, EntropySource entropySource, byte[] personalizationString, byte[] nonce)
      Construct a SP800-90A Hash DRBG.

      Minimum entropy requirement is the security strength requested.

      Parameters:
      hMac - Hash MAC to base the DRBG on.
      securityStrength - security strength required (in bits)
      entropySource - source of entropy to use for seeding/reseeding.
      personalizationString - personalization string to distinguish this DRBG (may be null).
      nonce - nonce to further distinguish this DRBG (may be null).
  • Method Details

    • getBlockSize

      public int getBlockSize()
      Return the block size (in bits) of the DRBG.
      Specified by:
      getBlockSize in interface SP80090DRBG
      Returns:
      the number of bits produced on each round of the DRBG.
    • generate

      public int generate(byte[] output, byte[] additionalInput, boolean predictionResistant)
      Populate a passed in array with random data.
      Specified by:
      generate in interface SP80090DRBG
      Parameters:
      output - output array for generated bits.
      additionalInput - additional input to be added to the DRBG in this step.
      predictionResistant - true if a reseed should be forced, false otherwise.
      Returns:
      number of bits generated, -1 if a reseed required.
    • reseed

      public void reseed(byte[] additionalInput)
      Reseed the DRBG.
      Specified by:
      reseed in interface SP80090DRBG
      Parameters:
      additionalInput - additional input to be added to the DRBG in this step.