1 // Copyright 2014 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 "components/proximity_auth/base64url.h"
7 #include "base/base64.h"
8 #include "base/strings/string_util.h"
10 namespace proximity_auth
{
12 void Base64UrlEncode(const std::string
& decoded_input
,
13 std::string
* encoded_output
) {
14 base::Base64Encode(decoded_input
, encoded_output
);
15 base::ReplaceChars(*encoded_output
, "+", "-", encoded_output
);
16 base::ReplaceChars(*encoded_output
, "/", "_", encoded_output
);
19 bool Base64UrlDecode(const std::string
& encoded_input
,
20 std::string
* decoded_output
) {
21 std::string adjusted_encoded_input
= encoded_input
;
22 base::ReplaceChars(adjusted_encoded_input
, "-", "+", &adjusted_encoded_input
);
23 base::ReplaceChars(adjusted_encoded_input
, "_", "/", &adjusted_encoded_input
);
25 return base::Base64Decode(adjusted_encoded_input
, decoded_output
);
28 } // namespace proximity_auth