diff options
Diffstat (limited to 'core/src/main/java/org/spongycastle/crypto/prng/drbg/SP80090DRBG.java')
-rw-r--r-- | core/src/main/java/org/spongycastle/crypto/prng/drbg/SP80090DRBG.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/core/src/main/java/org/spongycastle/crypto/prng/drbg/SP80090DRBG.java b/core/src/main/java/org/spongycastle/crypto/prng/drbg/SP80090DRBG.java new file mode 100644 index 00000000..a1ec3b26 --- /dev/null +++ b/core/src/main/java/org/spongycastle/crypto/prng/drbg/SP80090DRBG.java @@ -0,0 +1,32 @@ +package org.spongycastle.crypto.prng.drbg; + +/** + * Interface to SP800-90A deterministic random bit generators. + */ +public interface SP80090DRBG +{ + /** + * Return the block size of the DRBG. + * + * @return the block size (in bits) produced by each round of the DRBG. + */ + int getBlockSize(); + + /** + * Populate a passed in array with random data. + * + * @param output output array for generated bits. + * @param additionalInput additional input to be added to the DRBG in this step. + * @param predictionResistant true if a reseed should be forced, false otherwise. + * + * @return number of bits generated, -1 if a reseed required. + */ + int generate(byte[] output, byte[] additionalInput, boolean predictionResistant); + + /** + * Reseed the DRBG. + * + * @param additionalInput additional input to be added to the DRBG in this step. + */ + void reseed(byte[] additionalInput); +} |