Class HMacSP800DRBG

  • All Implemented Interfaces:
    SP80090DRBG

    public class HMacSP800DRBG
    extends java.lang.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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int generate​(byte[] output, byte[] additionalInput, boolean predictionResistant)
      Populate a passed in array with random data.
      int getBlockSize()
      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 Detail

      • 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 Detail

      • 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.