00001
#ifndef CRYPTOPP_RANDPOOL_H
00002
#define CRYPTOPP_RANDPOOL_H
00003
00004
#include "cryptlib.h"
00005
#include "filters.h"
00006
00007 NAMESPACE_BEGIN(CryptoPP)
00008
00009
00010
00011
00012
00013 class CRYPTOPP_DLL
RandomPool : public
RandomNumberGenerator,
00014 public
Bufferless<
BufferedTransformation>
00015 {
00016
public:
00017
00018
RandomPool(
unsigned int poolSize=384);
00019
00020
unsigned int Put2(
const byte *begin,
unsigned int,
int messageEnd,
bool blocking);
00021
00022 bool AnyRetrievable()
const {
return true;}
00023 unsigned long MaxRetrievable()
const {
return ULONG_MAX;}
00024
00025
unsigned int TransferTo2(BufferedTransformation &target,
unsigned long &transferBytes,
const std::string &channel=NULL_CHANNEL,
bool blocking=
true);
00026
unsigned int CopyRangeTo2(BufferedTransformation &target,
unsigned long &begin,
unsigned long end=ULONG_MAX,
const std::string &channel=NULL_CHANNEL,
bool blocking=
true)
const
00027
{
00028
throw NotImplemented(
"RandomPool: CopyRangeTo2() is not supported by this store");
00029 }
00030
00031 byte GenerateByte();
00032
void GenerateBlock(byte *output,
unsigned int size);
00033
00034
void IsolatedInitialize(
const NameValuePairs ¶meters) {}
00035
00036
protected:
00037
void Stir();
00038
00039
private:
00040
SecByteBlock pool, key;
00041
unsigned int addPos, getPos;
00042 };
00043
00044 NAMESPACE_END
00045
00046
#endif