Răsfoiți Sursa

* Fix EncryptedStream to use external decoding functions
* Make broken_base64 encoding functions as opposed to the bdlib ones which are proper (Need to incorporate this into the botlink to detect if the connecting bot has a fixed base64 or not)

svn: 3761

Bryan Drewery 18 ani în urmă
părinte
comite
f9a4f57810
2 a modificat fișierele cu 33 adăugiri și 0 ștergeri
  1. 28 0
      src/base64.c
  2. 5 0
      src/base64.h

+ 28 - 0
src/base64.c

@@ -27,6 +27,7 @@
 #include <stdio.h>
 #include <stdio.h>
 #include "base64.h"
 #include "base64.h"
 #include "src/compat/compat.h"
 #include "src/compat/compat.h"
+#include <bdlib/src/String.h>
 
 
 static const char base64[65] = ".\\0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 static const char base64[65] = ".\\0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 static const char base64r[256] = {
 static const char base64r[256] = {
@@ -114,6 +115,33 @@ b64enc(const unsigned char *data, size_t *len)
   return (dest);
   return (dest);
 }
 }
 
 
+/**
+ * @brief Base64 encode a string
+ * @param string The string to encode
+ * @return A new, encoded string
+ */
+bd::String broken_base64Encode(const bd::String& string) {
+  size_t len = string.length();
+  char *p = b64enc((unsigned char*) string.data(), &len);
+  bd::String encoded(p, len);
+  free(p);
+  return encoded;
+}
+
+/**
+ * @brief Base64 decode a string
+ * @param string The string to decode
+ * @return A new, decoded string
+ */
+bd::String broken_base64Decode(const bd::String& string) {
+  size_t len = string.length();
+  char *p = b64dec((unsigned char*) string.data(), &len);
+  bd::String decoded(p, len);
+  free(p);
+  return decoded;
+}
+
+
 /* Encode 3 8-bit bytes to 4 6-bit characters */
 /* Encode 3 8-bit bytes to 4 6-bit characters */
 void
 void
 b64enc_buf(const unsigned char *data, size_t len, char *dest)
 b64enc_buf(const unsigned char *data, size_t len, char *dest)

+ 5 - 0
src/base64.h

@@ -2,13 +2,18 @@
 #  define _BASE64_H_
 #  define _BASE64_H_
 
 
 #include <sys/types.h>
 #include <sys/types.h>
+namespace bd {
+  class String;
+};
 
 
 char *int_to_base64(unsigned int);
 char *int_to_base64(unsigned int);
 int base64_to_int(char *);
 int base64_to_int(char *);
 
 
+bd::String broken_base64Encode(const bd::String&);
 char *b64enc(const unsigned char *data, size_t *len);
 char *b64enc(const unsigned char *data, size_t *len);
 void b64enc_buf(const unsigned char *data, size_t len, char *dest);
 void b64enc_buf(const unsigned char *data, size_t len, char *dest);
 
 
+bd::String broken_base64Decode(const bd::String&);
 char *b64dec(const unsigned char *data, size_t *len);
 char *b64dec(const unsigned char *data, size_t *len);
 void b64dec_buf(const unsigned char *data, size_t *len, char *dest);
 void b64dec_buf(const unsigned char *data, size_t *len, char *dest);