|
@@ -14,6 +14,15 @@ std::string base64::decode(const std::string &val) {
|
|
|
[](char c) { return c == '\0'; });
|
|
|
}
|
|
|
|
|
|
+std::vector<char> base64::decodeVector(const std::string &val) {
|
|
|
+ using namespace boost::archive::iterators;
|
|
|
+ using It =
|
|
|
+ transform_width<binary_from_base64<std::string::const_iterator>, 8, 6>;
|
|
|
+ return boost::algorithm::trim_right_copy_if(
|
|
|
+ std::vector<char>(It(std::begin(val)), It(std::end(val))),
|
|
|
+ [](char c) { return c == '\0'; });
|
|
|
+}
|
|
|
+
|
|
|
std::string base64::encode(const std::string &val) {
|
|
|
using namespace boost::archive::iterators;
|
|
|
using It =
|
|
@@ -21,3 +30,11 @@ std::string base64::encode(const std::string &val) {
|
|
|
auto tmp = std::string(It(std::begin(val)), It(std::end(val)));
|
|
|
return tmp.append((3 - val.size() % 3) % 3, '=');
|
|
|
}
|
|
|
+
|
|
|
+std::string base64::encodeVector(const std::vector<char> &val) {
|
|
|
+ using namespace boost::archive::iterators;
|
|
|
+ using It = base64_from_binary<
|
|
|
+ transform_width<std::vector<char>::const_iterator, 6, 8>>;
|
|
|
+ auto tmp = std::string(It(std::begin(val)), It(std::end(val)));
|
|
|
+ return tmp.append((3 - val.size() % 3) % 3, '=');
|
|
|
+}
|