From 7aff1e4cb053394db57c2814d5fe1e6493e0cc75 Mon Sep 17 00:00:00 2001 From: watcherhd Date: Sat, 26 Nov 2011 14:19:43 +0000 Subject: Project folders rename part 2 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@214 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- CryptoPP/base16.cpp | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 CryptoPP/base16.cpp (limited to 'CryptoPP/base16.cpp') 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 -- cgit v1.2.3