|
@@ -1,41 +1,34 @@
|
|
|
#include "../include/base64.h"
|
|
|
|
|
|
-#include <boost/algorithm/string.hpp>
|
|
|
-#include <boost/archive/iterators/base64_from_binary.hpp>
|
|
|
-#include <boost/archive/iterators/binary_from_base64.hpp>
|
|
|
-#include <boost/archive/iterators/transform_width.hpp>
|
|
|
+#include <boost/beast.hpp>
|
|
|
|
|
|
std::string base64::decode(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::string(It(std::begin(val)), It(std::end(val))),
|
|
|
- [](char c) { return c == '\0'; });
|
|
|
+ char buf[boost::beast::detail::base64::decoded_size(val.size())];
|
|
|
+ int read =
|
|
|
+ boost::beast::detail::base64::decode(buf, val.c_str(), val.size()).first;
|
|
|
+
|
|
|
+ return std::string(buf, read);
|
|
|
}
|
|
|
|
|
|
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>;
|
|
|
- std::vector<char> ret =
|
|
|
- std::vector<char>(It(std::begin(val)), It(std::end(val)));
|
|
|
- ret.pop_back();
|
|
|
- return ret;
|
|
|
+ char buf[boost::beast::detail::base64::decoded_size(val.size())];
|
|
|
+ int read =
|
|
|
+ boost::beast::detail::base64::decode(buf, val.c_str(), val.size()).first;
|
|
|
+
|
|
|
+ std::vector<char> ret(buf, buf + read);
|
|
|
+ return std::vector<char>(buf, buf + read);
|
|
|
}
|
|
|
|
|
|
std::string base64::encode(const std::string &val) {
|
|
|
- using namespace boost::archive::iterators;
|
|
|
- using It =
|
|
|
- base64_from_binary<transform_width<std::string::const_iterator, 6, 8>>;
|
|
|
- auto tmp = std::string(It(std::begin(val)), It(std::end(val)));
|
|
|
- return tmp.append((3 - val.size() % 3) % 3, '=');
|
|
|
+ char buf[boost::beast::detail::base64::encoded_size(val.size())];
|
|
|
+ int read = boost::beast::detail::base64::encode(buf, val.data(), val.size());
|
|
|
+
|
|
|
+ return std::string(buf, read);
|
|
|
}
|
|
|
|
|
|
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, '=');
|
|
|
+ char buf[boost::beast::detail::base64::encoded_size(val.size())];
|
|
|
+ int read = boost::beast::detail::base64::encode(buf, val.data(), val.size());
|
|
|
+
|
|
|
+ return std::string(buf, read);
|
|
|
}
|