diff options
author | watcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2011-04-21 14:14:52 +0000 |
---|---|---|
committer | watcherhd <watcherhd@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb> | 2011-04-21 14:14:52 +0000 |
commit | cb4a46e7fbe62d788e66ed6121c717a2d22a4d7c (patch) | |
tree | 30df260fdc5a1b5a7049c2f8cac8b7ef17513d6d /cryptopp/base16.cpp | |
parent | 19b6f534d2e784a1e120bf52c4aa07004798f473 (diff) |
svn.miranda.im is moving to a new home!
git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@7 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
|