#ifndef __ccdb2BaseLib_h #define __ccdb2BaseLib_h //#include #include "SpBase.h" #include struct SmartBuffer { unsigned char *pBuf; int nLen; inline bool IsNull() const { return pBuf==NULL; } SmartBuffer(const SmartBuffer &InBuf) { if(InBuf.IsNull()) { pBuf=NULL; nLen=0; } else { pBuf=new unsigned char[InBuf.nLen]; memcpy((void *)pBuf,(void *)InBuf.pBuf,InBuf.nLen); nLen=InBuf.nLen; } } SmartBuffer() { pBuf=NULL; nLen=0; } SmartBuffer(int nSize) { if(nSize<0) nSize=0; if(nSize==0) { pBuf=NULL; nLen=0; } else { pBuf=new unsigned char[nSize]; memset(pBuf,0,nSize); nLen=nSize; } } SmartBuffer(const char *pInStr) { if(pInStr==NULL || strlen(pInStr)==0) { pBuf=NULL; nLen=0; } else { nLen=(int)strlen(pInStr)+1; pBuf=new unsigned char[nLen]; memcpy(pBuf,pInStr,nLen); } } ~SmartBuffer() { if(pBuf) delete[] pBuf; } void SetSize(int nSize) { Clear(); if(nSize<=0) return; pBuf=new unsigned char[nSize]; memset(pBuf,0,nSize); nLen=nSize; } SmartBuffer &operator =(const SmartBuffer &InBuf) { if(InBuf.IsNull()) { pBuf=NULL; nLen=0; } else { pBuf=new unsigned char[InBuf.nLen]; memcpy(pBuf,InBuf.pBuf,InBuf.nLen); nLen=InBuf.nLen; } return *this; } void Clear() { if(pBuf) delete[] pBuf; nLen=0; } void Copy(const BYTE *InBuf,int nSize) { Clear(); if(nSize<=0) return; pBuf=new unsigned char[nSize]; memcpy(pBuf,InBuf,nSize); nLen=nSize; } void SetStr(const char *pInStr) { Clear(); if(pInStr==NULL || strlen(pInStr)==0) return; nLen=(int)strlen(pInStr)+1; pBuf=new unsigned char[nLen]; memcpy(pBuf,pInStr,nLen); } bool IsEqual(const SmartBuffer &Other) { if(nLen!=Other.nLen) return false; if(nLen!=0 && memcmp(pBuf,Other.pBuf,nLen)!=0) return false; return true; } }; const char *ccGetErrStr(); void ccSetErrorString(const char *szFormat,...); void ccClearErrorString(); SmartBuffer ccHash(const BYTE *pInBuf,int nInSize); SmartBuffer ccPublicDecryptStream(RSA *pPublicKey,const BYTE *pInBuf,int nLen,SmartBuffer &Signer); RSA *ccD2I_RsaPublic(const BYTE *pBuf,int nLen); #endif