#include "Base64.hpp" #include #include "cpp-base64/base64.h" #include #include #include #include "Field.hpp" template void b64encode(const InContainer &iContainer, OutContainer &oContainer) { b64encode(std::begin(iContainer), std::end(iContainer), std::back_inserter(oContainer)); } template void b64decode(const InContainer &iContainer, OutContainer &oContainer) { b64decode(std::begin(iContainer), std::end(iContainer), std::back_inserter(oContainer)); } template void b64encode(const InContainer &iContainer, std::array &oArr) { b64encode(std::begin(iContainer), std::end(iContainer), std::begin(oArr)); } template void b64decode(const InContainer &iContainer, std::array &oArr) { b64decode(std::begin(iContainer), std::end(iContainer), std::begin(oArr)); } template void b64encode(const InContainerIter beginIter, const InContainerIter endIter, OutContainerIter oBeginIter) { std::vector rawBytes{}; for (auto iter = beginIter; iter != endIter; iter++) rawBytes.insert(rawBytes.end(), FIELD(*iter)); auto encoded = base64_encode(rawBytes.data(), rawBytes.size()); std::copy(encoded.begin(), encoded.end(), oBeginIter); } template void b64decode(const InContainerIter beginIter, const InContainerIter endIter, OutContainerIter oBeginIter) { auto decoded = base64_decode(std::string{ beginIter, endIter }); std::copy(decoded.begin(), decoded.end(), oBeginIter); }