#include "StdAfx.h"
#include "InfoFormat.h"
//reinterpret_cast<const char *>(boutput)
//BYTE* binput = (BYTE*)input.c_str();
void CInfoFormat::DoEncode(BYTE* binput, int inputlen,BYTE** output, int* poutputlen, TEnumZip pzip, TEnumEncrypt penc)
{
BYTE* boutput;
int outputlen=0;
switch(pzip)
{
case TZipGZip:
interno.GZip(binput, inputlen, &boutput, &outputlen);
binput = boutput;
inputlen = outputlen;
break;
case TZipZLib:
interno.ZLibCompress(binput, inputlen, &boutput, &outputlen);
binput = boutput;
inputlen = outputlen;
break;
}
BYTE* boutput2;
switch(penc)
{
case TEncryptDEM:
interno.EncryptDEM(binput, inputlen, &boutput2, &outputlen);
binput = boutput2;
inputlen = outputlen;
break;
case TEncryptRSA:
interno.EncryptRSA(binput, inputlen, &boutput2, &outputlen);
binput = boutput2;
inputlen = outputlen;
break;
}
BYTE* boutput3;
interno.EncodeB64(binput, inputlen, &boutput3, &outputlen);
*output = boutput3;
*poutputlen = outputlen;
}
void CInfoFormat::DoDecode(BYTE* binput, int inputlen,BYTE** output, int* poutputlen, TEnumZip pzip, TEnumEncrypt penc)
{
int outputlen = 0;
BYTE* boutput;
interno.DecodeB64(binput, inputlen, &boutput, &outputlen);
binput = boutput;
inputlen = outputlen;
BYTE* boutput2;
switch(penc)
{
case TEncryptDEM:
interno.DecryptDEM(binput, inputlen, &boutput2, &outputlen);
binput = boutput2;
inputlen = outputlen;
delete boutput;
break;
case TEncryptRSA:
interno.DecryptRSA(binput, inputlen, &boutput2, &outputlen);
binput = boutput2;
inputlen = outputlen;
delete boutput;
break;
}
BYTE* boutput3;
switch(pzip)
{
case TZipGZip:
interno.UnGZip(binput, inputlen, &boutput3, &outputlen);
binput = boutput3;
inputlen = outputlen;
delete boutput2;
break;
case TZipZLib:
interno.ZLibUnCompress(binput, inputlen, &boutput3, &outputlen);
binput = boutput3;
inputlen = outputlen;
delete boutput2;
break;
}
*output = boutput3;
*poutputlen = outputlen;
}