diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-01-18 20:02:27 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-01-18 20:02:27 +0300 |
commit | fb5d0e7762f692948dddebd3deb38a0bd20de5f2 (patch) | |
tree | afe2c0d8cf75738fd847af37dc166e0c338f7493 /src/utils/base64.cpp | |
parent | 8a5603e487f682f5f67bc2cedae81249aa138f5b (diff) | |
parent | e9e343366fbfbe9a6343089ff113354524f3f306 (diff) | |
download | plus-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.cpp | 29 |
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; +} |