aboutsummaryrefslogtreecommitdiff
path: root/util/base64.cc
diff options
context:
space:
mode:
Diffstat (limited to 'util/base64.cc')
-rw-r--r--util/base64.cc16
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;
}