blob: 2477b19a0e2b8a58b42197d7eeb6d9c65735eeb2 [file] [log] [blame]
/*
* File: CvEntropyServer.h
* Author: mony
*
* Created on November 9, 2012, 2:35 PM
*/
#ifndef CVENTROPYSERVER_H
#define CVENTROPYSERVER_H
extern "C"
{
#include "miracl.h"
}
typedef unsigned char* CvBytePtr;
#include "CvCommon.h"
#include <string>
class CvEntropyServer
{
public:
typedef std::string String;
CvEntropyServer( const String& aUrl );
virtual ~CvEntropyServer();
enum enAlgorithm_t
{
enAlgorithm_Unknown = -1,
enAlgorithm_Unsafe = 0,
enAlgorithm_Alf = 2,
enAlgorithm_Mt19937 = 3,
enAlgorithm_XorShift128 = 4
};
enum enEncoding_t
{
enEncoding_Unknown = -1,
enEncoding_Raw = 0,
enEncoding_Base64 = 1
};
bool Generate( enAlgorithm_t aAlgorithm, enEncoding_t aEncoding, int aLength, OUT String& aEntropy );
static const char* AlgorithmToString( enAlgorithm_t aAlgorithm );
static const char* EncodingToString( enEncoding_t aEncoding );
static enAlgorithm_t StringToAlgorithm( const String& aAlgorithm );
static enEncoding_t StringToEncoding( const String& aEncoding );
private:
CvEntropyServer(const CvEntropyServer& orig){}
void operator=(const CvEntropyServer){}
String m_url;
};
class SystemCSPRNG
{
public:
SystemCSPRNG();
virtual ~SystemCSPRNG();
void rndPool(OUT CvBytePtr pMemory, size_t req_len);
csprng& Csprng();
private:
csprng m_csprng;
};
#endif /* CVENTROPYSERVER_H */