Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / components / proximity_auth / base64url.cc
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.
4
5 #include "components/proximity_auth/base64url.h"
6
7 #include "base/base64.h"
8 #include "base/strings/string_util.h"
9
10 namespace proximity_auth {
11
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);
17 }
18
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);
24
25   return base::Base64Decode(adjusted_encoded_input, decoded_output);
26 }
27
28 }  // namespace proximity_auth