diff options
Diffstat (limited to 'randpool.h')
-rw-r--r-- | randpool.h | 39 |
1 files changed, 13 insertions, 26 deletions
@@ -7,38 +7,25 @@ NAMESPACE_BEGIN(CryptoPP) //! Randomness Pool -/*! This class can be used to generate - pseudorandom bytes after seeding the pool with - the Put() methods */ -class CRYPTOPP_DLL RandomPool : public RandomNumberGenerator, - public Bufferless<BufferedTransformation> +/*! This class can be used to generate cryptographic quality + pseudorandom bytes after seeding the pool with IncorporateEntropy() */ +class CRYPTOPP_DLL RandomPool : public RandomNumberGenerator, public NotCopyable { public: - //! poolSize must be greater than 16 - RandomPool(unsigned int poolSize=384); + RandomPool(); - size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking); + bool CanIncorporateEntropy() const {return true;} + void IncorporateEntropy(const byte *input, size_t length); + void GenerateIntoBufferedTransformation(BufferedTransformation &target, const std::string &channel, lword size); - bool AnyRetrievable() const {return true;} - lword MaxRetrievable() const {return ULONG_MAX;} - - size_t TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel=NULL_CHANNEL, bool blocking=true); - size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX, const std::string &channel=NULL_CHANNEL, bool blocking=true) const - { - throw NotImplemented("RandomPool: CopyRangeTo2() is not supported by this store"); - } - - byte GenerateByte(); - void GenerateBlock(byte *output, size_t size); - - void IsolatedInitialize(const NameValuePairs ¶meters) {} - -protected: - void Stir(); + // for backwards compatibility. use RandomNumberSource, RandomNumberStore, and RandomNumberSink for other BufferTransformation functionality + void Put(const byte *input, size_t length) {IncorporateEntropy(input, length);} private: - SecByteBlock pool, key; - size_t addPos, getPos; + FixedSizeSecBlock<byte, 32> m_key; + FixedSizeSecBlock<byte, 16> m_seed; + member_ptr<BlockCipher> m_pCipher; + bool m_keySet; }; NAMESPACE_END |