summaryrefslogtreecommitdiff
path: root/src/utils/base64.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-01-18 20:02:27 +0300
committerAndrei Karas <akaras@inbox.ru>2014-01-18 20:02:27 +0300
commitfb5d0e7762f692948dddebd3deb38a0bd20de5f2 (patch)
treeafe2c0d8cf75738fd847af37dc166e0c338f7493 /src/utils/base64.cpp
parent8a5603e487f682f5f67bc2cedae81249aa138f5b (diff)
parente9e343366fbfbe9a6343089ff113354524f3f306 (diff)
downloadplus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.tar.gz
plus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.tar.bz2
plus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.tar.xz
plus-fb5d0e7762f692948dddebd3deb38a0bd20de5f2.zip
Merge branch 'master' into stable
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..bd20496b3 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;
+ const unsigned char *const 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;
+ const unsigned char *const 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;
+}