Chromium Code Reviews| Index: content/child/webcrypto/jwk.cc |
| diff --git a/content/child/webcrypto/jwk.cc b/content/child/webcrypto/jwk.cc |
| index 4bc15e2b788aa898ee618bbf31cb0bfba7cf3230..ac6f13d59e614928745c724e6e0747f66b043654 100644 |
| --- a/content/child/webcrypto/jwk.cc |
| +++ b/content/child/webcrypto/jwk.cc |
| @@ -8,8 +8,10 @@ |
| #include <functional> |
| #include <map> |
| +#include "base/base64.h" |
| #include "base/json/json_reader.h" |
| #include "base/json/json_writer.h" |
| +#include "base/stl_util.h" |
| #include "base/strings/string_piece.h" |
| #include "content/child/webcrypto/crypto_data.h" |
| #include "content/child/webcrypto/status.h" |
| @@ -702,6 +704,29 @@ const char* GetJwkHmacAlgorithmName(blink::WebCryptoAlgorithmId hash) { |
| } |
| } |
| +bool Base64DecodeUrlSafe(const std::string& input, std::string* output) { |
| + std::string base64EncodedText(input); |
|
Ryan Sleevi
2014/08/27 17:22:15
1) variable naming / style
2) This still seems to
eroman
2014/08/27 18:00:57
Good catch, Done.
|
| + std::replace(base64EncodedText.begin(), base64EncodedText.end(), '-', '+'); |
| + std::replace(base64EncodedText.begin(), base64EncodedText.end(), '_', '/'); |
| + base64EncodedText.append((4 - base64EncodedText.size() % 4) % 4, '='); |
| + return base::Base64Decode(base64EncodedText, output); |
| +} |
| + |
| +std::string Base64EncodeUrlSafe(const base::StringPiece& input) { |
| + std::string output; |
| + base::Base64Encode(input, &output); |
| + std::replace(output.begin(), output.end(), '+', '-'); |
| + std::replace(output.begin(), output.end(), '/', '_'); |
| + output.erase(std::remove(output.begin(), output.end(), '='), output.end()); |
| + return output; |
| +} |
| + |
| +std::string Base64EncodeUrlSafe(const std::vector<uint8_t>& input) { |
| + const base::StringPiece string_piece( |
| + reinterpret_cast<const char*>(vector_as_array(&input)), input.size()); |
| + return Base64EncodeUrlSafe(string_piece); |
| +} |
| + |
| } // namespace webcrypto |
| } // namespace content |