summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/base64.cpp29
-rw-r--r--src/utils/base64.h14
2 files changed, 39 insertions, 4 deletions
diff --git a/src/utils/base64.cpp b/src/utils/base64.cpp
index 280e71ff0..f887a9e1b 100644
--- a/src/utils/base64.cpp
+++ b/src/utils/base64.cpp
@@ -174,3 +174,32 @@ unsigned char *php3_base64_decode(const unsigned char *restrict const string,
result[k] = '\0';
return result;
}
+
+std::string encodeBase64String(std::string value)
+{
+ int sz = 0;
+ unsigned char *str = reinterpret_cast<unsigned char*>(
+ const_cast<char*>(value.c_str()));
+ unsigned char *const buf = php3_base64_encode(str, value.size(), &sz);
+ if (!buf)
+ return std::string();
+
+ value = std::string(reinterpret_cast<char*>(buf), sz);
+ free(buf);
+ return value;
+}
+
+std::string decodeBase64String(std::string value)
+{
+ int sz = 0;
+ unsigned char *str = reinterpret_cast<unsigned char*>(
+ const_cast<char*>(value.c_str()));
+ unsigned char *const buf = php3_base64_decode(str, value.size(), &sz);
+
+ if (buf)
+ value = std::string(reinterpret_cast<char*>(buf), sz);
+ else
+ value.clear();
+ free(buf);
+ return value;
+}
diff --git a/src/utils/base64.h b/src/utils/base64.h
index 0e6546df5..4518a3e5a 100644
--- a/src/utils/base64.h
+++ b/src/utils/base64.h
@@ -30,11 +30,17 @@
#ifndef UTILS_BASE64_H
#define UTILS_BASE64_H
+#include <string>
+
#include "localconsts.h"
-extern unsigned char *php3_base64_encode(const unsigned char *restrict,
- int, int *restrict) A_WARN_UNUSED;
-extern unsigned char *php3_base64_decode(const unsigned char *restrict,
- int, int *restrict ) A_WARN_UNUSED;
+unsigned char *php3_base64_encode(const unsigned char *restrict,
+ int, int *restrict) A_WARN_UNUSED;
+unsigned char *php3_base64_decode(const unsigned char *restrict,
+ int, int *restrict ) A_WARN_UNUSED;
+
+std::string encodeBase64String(std::string value) A_WARN_UNUSED;
+
+std::string decodeBase64String(std::string value) A_WARN_UNUSED;
#endif // UTILS_BASE64_H