/************************************************* * Randpool Header File * * (C) 1999-2008 Jack Lloyd * *************************************************/ #ifndef BOTAN_RANDPOOL_H__ #define BOTAN_RANDPOOL_H__ #include #include #include #include namespace Botan { /************************************************* * Randpool * *************************************************/ class BOTAN_DLL Randpool : public RandomNumberGenerator { public: void randomize(byte[], u32bit); bool is_seeded() const; void clear() throw(); std::string name() const; void reseed(); void add_entropy_source(EntropySource*); void add_entropy(const byte[], u32bit); Randpool(BlockCipher*, MessageAuthenticationCode*, u32bit pool_blocks = 32, u32bit iterations_before_reseed = 128); ~Randpool(); private: void update_buffer(); void mix_pool(); u32bit ITERATIONS_BEFORE_RESEED, POOL_BLOCKS; BlockCipher* cipher; MessageAuthenticationCode* mac; std::vector entropy_sources; SecureVector pool, buffer, counter; u32bit entropy; }; } #endif