ccdb2BaseLib.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #ifndef __ccdb2BaseLib_h
  2. #define __ccdb2BaseLib_h
  3. //#include <windows.h>
  4. #include "SpBase.h"
  5. #include <openssl/rsa.h>
  6. struct SmartBuffer
  7. {
  8. unsigned char *pBuf;
  9. int nLen;
  10. inline bool IsNull() const
  11. {
  12. return pBuf==NULL;
  13. }
  14. SmartBuffer(const SmartBuffer &InBuf)
  15. {
  16. if(InBuf.IsNull())
  17. {
  18. pBuf=NULL;
  19. nLen=0;
  20. }
  21. else
  22. {
  23. pBuf=new unsigned char[InBuf.nLen];
  24. memcpy((void *)pBuf,(void *)InBuf.pBuf,InBuf.nLen);
  25. nLen=InBuf.nLen;
  26. }
  27. }
  28. SmartBuffer()
  29. {
  30. pBuf=NULL;
  31. nLen=0;
  32. }
  33. SmartBuffer(int nSize)
  34. {
  35. if(nSize<0)
  36. nSize=0;
  37. if(nSize==0)
  38. {
  39. pBuf=NULL;
  40. nLen=0;
  41. }
  42. else
  43. {
  44. pBuf=new unsigned char[nSize];
  45. memset(pBuf,0,nSize);
  46. nLen=nSize;
  47. }
  48. }
  49. SmartBuffer(const char *pInStr)
  50. {
  51. if(pInStr==NULL || strlen(pInStr)==0)
  52. {
  53. pBuf=NULL;
  54. nLen=0;
  55. }
  56. else
  57. {
  58. nLen=(int)strlen(pInStr)+1;
  59. pBuf=new unsigned char[nLen];
  60. memcpy(pBuf,pInStr,nLen);
  61. }
  62. }
  63. ~SmartBuffer()
  64. {
  65. if(pBuf)
  66. delete[] pBuf;
  67. }
  68. void SetSize(int nSize)
  69. {
  70. Clear();
  71. if(nSize<=0)
  72. return;
  73. pBuf=new unsigned char[nSize];
  74. memset(pBuf,0,nSize);
  75. nLen=nSize;
  76. }
  77. SmartBuffer &operator =(const SmartBuffer &InBuf)
  78. {
  79. if(InBuf.IsNull())
  80. {
  81. pBuf=NULL;
  82. nLen=0;
  83. }
  84. else
  85. {
  86. pBuf=new unsigned char[InBuf.nLen];
  87. memcpy(pBuf,InBuf.pBuf,InBuf.nLen);
  88. nLen=InBuf.nLen;
  89. }
  90. return *this;
  91. }
  92. void Clear()
  93. {
  94. if(pBuf)
  95. delete[] pBuf;
  96. nLen=0;
  97. }
  98. void Copy(const BYTE *InBuf,int nSize)
  99. {
  100. Clear();
  101. if(nSize<=0)
  102. return;
  103. pBuf=new unsigned char[nSize];
  104. memcpy(pBuf,InBuf,nSize);
  105. nLen=nSize;
  106. }
  107. void SetStr(const char *pInStr)
  108. {
  109. Clear();
  110. if(pInStr==NULL || strlen(pInStr)==0)
  111. return;
  112. nLen=(int)strlen(pInStr)+1;
  113. pBuf=new unsigned char[nLen];
  114. memcpy(pBuf,pInStr,nLen);
  115. }
  116. bool IsEqual(const SmartBuffer &Other)
  117. {
  118. if(nLen!=Other.nLen)
  119. return false;
  120. if(nLen!=0 && memcmp(pBuf,Other.pBuf,nLen)!=0)
  121. return false;
  122. return true;
  123. }
  124. };
  125. const char *ccGetErrStr();
  126. void ccSetErrorString(const char *szFormat,...);
  127. void ccClearErrorString();
  128. SmartBuffer ccHash(const BYTE *pInBuf,int nInSize);
  129. SmartBuffer ccPublicDecryptStream(RSA *pPublicKey,const BYTE *pInBuf,int nLen,SmartBuffer &Signer);
  130. RSA *ccD2I_RsaPublic(const BYTE *pBuf,int nLen);
  131. #endif