Class DualECSP800DRBG

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

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

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