diff options
Diffstat (limited to 'util/base64.cc')
-rw-r--r-- | util/base64.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/util/base64.cc b/util/base64.cc index 06e120e0..64e34175 100644 --- a/util/base64.cc +++ b/util/base64.cc @@ -6,6 +6,10 @@ #include <stddef.h> +#include <string> +#include <utility> +#include <vector> + #include "third_party/modp_b64/modp_b64.h" #include "util/osp_logging.h" #include "util/std_util.h" @@ -33,20 +37,18 @@ std::string Encode(absl::string_view input) { return out; } -bool Decode(absl::string_view input, std::string* output) { - std::string out; - out.resize(modp_b64_decode_len(input.size())); +bool Decode(absl::string_view input, std::vector<uint8_t>* output) { + std::vector<uint8_t> out(modp_b64_decode_len(input.size())); - // We don't null terminate the result since it is binary data. - const size_t output_size = - modp_b64_decode(data(out), input.data(), input.size()); + const size_t output_size = modp_b64_decode( + reinterpret_cast<char*>(out.data()), input.data(), input.size()); if (output_size == MODP_B64_ERROR) { return false; } // The output size from decode_len is generally larger than needed. out.resize(output_size); - output->swap(out); + *output = std::move(out); return true; } |