diff options
author | watcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2011-11-26 14:19:43 +0000 |
---|---|---|
committer | watcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2011-11-26 14:19:43 +0000 |
commit | 7aff1e4cb053394db57c2814d5fe1e6493e0cc75 (patch) | |
tree | c8585e44049b37e4da152495c954242204c2c38d /CryptoPP/base16.cpp | |
parent | 6f3d69266933ef120d229e0daf2da164b77214d0 (diff) |
Project folders rename part 2
git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@214 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb
Diffstat (limited to 'CryptoPP/base16.cpp')
-rw-r--r-- | CryptoPP/base16.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/CryptoPP/base16.cpp b/CryptoPP/base16.cpp new file mode 100644 index 0000000..b8c813e --- /dev/null +++ b/CryptoPP/base16.cpp @@ -0,0 +1,64 @@ +#include "commonheaders.h"
+
+
+char *base16encode(const char *inBuffer, int count) {
+
+ char *outBuffer = (char *) malloc(count*2+1);
+ char *outBufferPtr = outBuffer;
+ BYTE *inBufferPtr = (BYTE *) inBuffer;
+
+ while(count){
+ *outBufferPtr++ = encode16(((*inBufferPtr)>>4)&0x0F);
+ *outBufferPtr++ = encode16((*inBufferPtr++)&0x0F);
+ count--;
+ }
+ *outBufferPtr = '\0';
+
+ return outBuffer;
+}
+
+
+char *base16decode(const char *inBuffer, int *count) {
+
+ char *outBuffer = (char *) malloc(*count);
+ BYTE *outBufferPtr = (BYTE *) outBuffer;
+ bool big_endian = false;
+
+ if(*inBuffer == '0' && *(inBuffer+1) == 'x') {
+ inBuffer += *count;
+ big_endian = true;
+ *count -= 2;
+ }
+ while(*count>1){
+ BYTE c0,c1;
+ if(big_endian) {
+ c1 = decode16(*--inBuffer);
+ c0 = decode16(*--inBuffer);
+ }
+ else {
+ c0 = decode16(*inBuffer++);
+ c1 = decode16(*inBuffer++);
+ }
+ if((c0 | c1) == BERR) {
+ free(outBuffer);
+ *count = 0;
+ return(NULL);
+ }
+ *outBufferPtr++ = (c0<<4) | c1;
+ *count -= 2;
+ }
+ *outBufferPtr = '\0';
+ *count = (int)(outBufferPtr-(BYTE *)outBuffer);
+
+ return outBuffer;
+}
+
+
+char *base16decode(const char *inBuffer) {
+
+ int count = (int)strlen(inBuffer);
+ return base16decode(inBuffer, &count);
+}
+
+
+// EOF
|