| 95 | } |
| 96 | |
| 97 | std::string EncodeBase64(std::span<const unsigned char> input) |
| 98 | { |
| 99 | static const char *pbase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
| 100 | |
| 101 | std::string str; |
| 102 | str.reserve(CeilDiv(input.size(), 3u) * 4); |
| 103 | ConvertBits<8, 6, true>([&](int v) { str += pbase64[v]; }, input.begin(), input.end()); |
| 104 | while (str.size() % 4) str += '='; |
| 105 | return str; |
| 106 | } |
| 107 | |
| 108 | std::optional<std::vector<unsigned char>> DecodeBase64(std::string_view str) |
| 109 | { |