Class DualECSP800DRBG

  • All Implemented Interfaces:
    SP80090DRBG

    public class DualECSP800DRBG
    extends java.lang.Object
    implements SP80090DRBG
    A SP800-90A Dual EC DRBG.
    • Constructor Summary

      Constructors 
      Constructor Description
      DualECSP800DRBG​(Digest digest, int securityStrength, EntropySource entropySource, byte[] personalizationString, byte[] nonce)
      Construct a SP800-90A Dual EC DRBG.
      DualECSP800DRBG​(DualECPoints[] pointSet, Digest digest, int securityStrength, EntropySource entropySource, byte[] personalizationString, byte[] nonce)
      Construct a SP800-90A Dual EC 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

      • DualECSP800DRBG

        public DualECSP800DRBG​(Digest digest,
                               int securityStrength,
                               EntropySource entropySource,
                               byte[] personalizationString,
                               byte[] nonce)
        Construct a SP800-90A Dual EC DRBG.

        Minimum entropy requirement is the security strength requested.

        Parameters:
        digest - source digest to use with the DRB stream.
        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).
      • DualECSP800DRBG

        public DualECSP800DRBG​(DualECPoints[] pointSet,
                               Digest digest,
                               int securityStrength,
                               EntropySource entropySource,
                               byte[] personalizationString,
                               byte[] nonce)
        Construct a SP800-90A Dual EC DRBG.

        Minimum entropy requirement is the security strength requested.

        Parameters:
        pointSet - an array of points to choose from, in order of increasing security strength
        digest - source digest to use with the DRB stream.
        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 internal 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.