#pragma once
#include <string>
#include "defines.h"
#include "OptionsBuf.h"
#include "Keys.h"
class EXPIMPCRYPTLIB CInternal
{
public:
void Create();
void Destroy();
void *base2enc, *base2dec;
void *base8enc, *base8dec;
void *base16enc, *base16dec;
void *base64enc, *base64dec;
void *RSAenc, *RSAdec;
void *RSAencf, *RSAdecf;
void *DEMenc, *DEMdec;
void *BFhenc, *BFhdec;
void *BFhencf, *BFhdecf;
void *GZipenc, *GZipdec;
void *ZLibenc, *ZLibdec;
void *AESenc, *AESdec;
void *AESencf, *AESdecf;
COptionsBuf* optbuf;
void Encode(bool pend);
void Decode(bool pend);
template<typename T>
void ProcessBuffTrans(T* buf, bool pend);
void InitEncrypt();
int i_lookup2[256];
int i_lookup8[256];
CKeys* keys;
void* rng;
void DeleteRSA();
void DeleteB64();
void DeleteZip();
void DeleteDEM();
void DeleteBF();
void DeleteAES();
void InitB64();
void InitZip();
void InitRSA();
void InitDEM();
void InitBF();
void InitAES();
void InitEngine();
void EncDecRSA(bool encrypt, bool pend);
void Reset();
};