gnu.crypto.prng
Class AsyncFortunaStandalone

java.lang.Object
  extended by gnu.crypto.prng.BasePRNGStandalone
      extended by gnu.crypto.prng.FortunaStandalone
          extended by gnu.crypto.prng.AsyncFortunaStandalone
All Implemented Interfaces:
IRandomStandalone, RandomEventListenerStandalone, Serializable, Cloneable, Runnable, EventListener

public class AsyncFortunaStandalone
extends FortunaStandalone
implements Runnable

fortuna instance that tries to avoid blocking if at all possible by using separate filled buffer segments rather than one buffer (and blocking when that buffer's data has been eaten) Note that this class is not fully Thread safe! The following methods must be synchronized externally, they are not synced here or in super(): addRandomByte(), addRandomBytes(), nextByte(), nextBytes(), seed()

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class gnu.crypto.prng.FortunaStandalone
FortunaStandalone.Generator
 
Field Summary
 
Fields inherited from class gnu.crypto.prng.FortunaStandalone
generator, lastRefill, lastReseed, MIN_POOL_SIZE, NUM_POOLS, pool, pool0Count, pools, refillCount, reseedCount, SEED
 
Fields inherited from class gnu.crypto.prng.BasePRNGStandalone
buffer, initialised, name, ndx
 
Constructor Summary
AsyncFortunaStandalone(I2PAppContext context)
           
 
Method Summary
protected  void allocBuffer()
           
 void fillBlock()
           
protected  void rotateBuffer()
          make the next available filled buffer current, scheduling any unfilled buffers for refill, and blocking until at least one buffer is ready
 void run()
          The refiller thread
 void seed(byte[] val)
          the seed is only propogated once the prng is started with startup()
 void shutdown()
          Note - methods may hang or NPE or throw IllegalStateExceptions after this
 void startup()
           
 
Methods inherited from class gnu.crypto.prng.FortunaStandalone
addRandomByte, addRandomBytes, addRandomEvent, setup
 
Methods inherited from class gnu.crypto.prng.BasePRNGStandalone
addRandomBytes, clone, init, isInitialised, name, nextByte, nextBytes, nextBytes
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AsyncFortunaStandalone

public AsyncFortunaStandalone(I2PAppContext context)
Method Detail

startup

public void startup()

shutdown

public void shutdown()
Note - methods may hang or NPE or throw IllegalStateExceptions after this

Since:
0.8.8

seed

public void seed(byte[] val)
the seed is only propogated once the prng is started with startup()

Overrides:
seed in class FortunaStandalone

allocBuffer

protected void allocBuffer()
Overrides:
allocBuffer in class FortunaStandalone

rotateBuffer

protected void rotateBuffer()
make the next available filled buffer current, scheduling any unfilled buffers for refill, and blocking until at least one buffer is ready


run

public void run()
The refiller thread

Specified by:
run in interface Runnable

fillBlock

public void fillBlock()
Overrides:
fillBlock in class FortunaStandalone