1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/base64.h"
7 #include "third_party/modp_b64/modp_b64.h"
11 void Base64Encode(const StringPiece
& input
, std::string
* output
) {
13 temp
.resize(modp_b64_encode_len(input
.size())); // makes room for null byte
15 // modp_b64_encode_len() returns at least 1, so temp[0] is safe to use.
16 size_t output_size
= modp_b64_encode(&(temp
[0]), input
.data(), input
.size());
18 temp
.resize(output_size
); // strips off null byte
22 bool Base64Decode(const StringPiece
& input
, std::string
* output
) {
24 temp
.resize(modp_b64_decode_len(input
.size()));
26 // does not null terminate result since result is binary data!
27 size_t input_size
= input
.size();
28 size_t output_size
= modp_b64_decode(&(temp
[0]), input
.data(), input_size
);
29 if (output_size
== MODP_B64_ERROR
)
32 temp
.resize(output_size
);