Package gnu.crypto.prng
Class FortunaStandalone
- java.lang.Object
-
- gnu.crypto.prng.BasePRNGStandalone
-
- gnu.crypto.prng.FortunaStandalone
-
- All Implemented Interfaces:
IRandomStandalone
,Serializable
,Cloneable
- Direct Known Subclasses:
AsyncFortunaStandalone
public class FortunaStandalone extends BasePRNGStandalone implements Serializable
The Fortuna continuously-seeded pseudo-random number generator. This generator is composed of two major pieces: the entropy accumulator and the generator function. The former takes in random bits and incorporates them into the generator's state. The latter takes this base entropy and generates pseudo-random bits from it.There are some things users of this class must be aware of:
- Adding Random Data
- This class does not do any polling of random sources, but rather provides an interface for adding random events. Applications that use this code must provide this mechanism. We use this design because an application writer who knows the system he is targeting is in a better position to judge what random data is available.
- Storing the Seed
- This class implements
Serializable
in such a way that it writes a 64 byte seed to the stream, and reads it back again when being deserialized. This is the extent of seed file management, however, and those using this class are encouraged to think deeply about when, how often, and where to store the seed.
References:
- Niels Ferguson and Bruce Schneier, Practical Cryptography, pp. 155--184. Wiley Publishing, Indianapolis. (2003 Niels Ferguson and Bruce Schneier). ISBN 0-471-22357-3.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FortunaStandalone.Generator
The Fortuna generator function.
-
Field Summary
Fields Modifier and Type Field Description (package private) FortunaStandalone.Generator
generator
(package private) long
lastReseed
(package private) static int
MIN_POOL_SIZE
(package private) static int
NUM_POOLS
(package private) int
pool
(package private) int
pool0Count
(package private) MessageDigest[]
pools
(package private) int
reseedCount
static String
SEED
-
Fields inherited from class gnu.crypto.prng.BasePRNGStandalone
buffer, initialised, name, ndx
-
-
Constructor Summary
Constructors Constructor Description FortunaStandalone()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addRandomByte(byte b)
Supplement, or possibly replace, the random state of this PRNG with a random byte.void
addRandomBytes(byte[] buf, int offset, int length)
Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.protected void
allocBuffer()
Unused, see AsyncFortunaStandalonevoid
fillBlock()
Unused, see AsyncFortunaStandalonevoid
seed(byte[] val)
Unused, see AsyncFortunaStandalonevoid
setup(Map<String,byte[]> attributes)
-
Methods inherited from class gnu.crypto.prng.BasePRNGStandalone
addRandomBytes, clone, init, isInitialised, name, nextByte, nextBytes, nextBytes
-
-
-
-
Field Detail
-
NUM_POOLS
static final int NUM_POOLS
- See Also:
- Constant Field Values
-
MIN_POOL_SIZE
static final int MIN_POOL_SIZE
- See Also:
- Constant Field Values
-
generator
final FortunaStandalone.Generator generator
-
pools
final MessageDigest[] pools
-
lastReseed
long lastReseed
-
pool
int pool
-
pool0Count
int pool0Count
-
reseedCount
int reseedCount
-
SEED
public static final String SEED
- See Also:
- Constant Field Values
-
-
Method Detail
-
allocBuffer
protected void allocBuffer()
Unused, see AsyncFortunaStandalone
-
seed
public void seed(byte[] val)
Unused, see AsyncFortunaStandalone
-
setup
public void setup(Map<String,byte[]> attributes)
- Specified by:
setup
in classBasePRNGStandalone
-
fillBlock
public void fillBlock()
Unused, see AsyncFortunaStandalone- Specified by:
fillBlock
in classBasePRNGStandalone
-
addRandomByte
public void addRandomByte(byte b)
Description copied from interface:IRandomStandalone
Supplement, or possibly replace, the random state of this PRNG with a random byte.
Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an
UnsupportedOperationException
.- Specified by:
addRandomByte
in interfaceIRandomStandalone
- Overrides:
addRandomByte
in classBasePRNGStandalone
- Parameters:
b
- The byte to add.
-
addRandomBytes
public void addRandomBytes(byte[] buf, int offset, int length)
Description copied from interface:IRandomStandalone
Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.
Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an
UnsupportedOperationException
.- Specified by:
addRandomBytes
in interfaceIRandomStandalone
- Overrides:
addRandomBytes
in classBasePRNGStandalone
- Parameters:
buf
- The buffer of new random bytes to add.offset
- The offset from whence to begin reading random bytes.length
- The number of random bytes to add.
-
-