summaryrefslogtreecommitdiff
path: root/src/utils/base64.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/base64.cpp')
-rw-r--r--src/utils/base64.cpp29
1 files changed, 29 insertions, 0 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;
+}