OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_CHILD_WEBCRYPTO_JWK_H_ | 5 #ifndef CONTENT_CHILD_WEBCRYPTO_JWK_H_ |
6 #define CONTENT_CHILD_WEBCRYPTO_JWK_H_ | 6 #define CONTENT_CHILD_WEBCRYPTO_JWK_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/strings/string_piece.h" | 11 #include "base/strings/string_piece.h" |
12 #include "base/values.h" | 12 #include "base/values.h" |
13 #include "content/common/content_export.h" | |
14 #include "third_party/WebKit/public/platform/WebCrypto.h" | 13 #include "third_party/WebKit/public/platform/WebCrypto.h" |
15 | 14 |
16 namespace content { | 15 namespace components { |
17 | 16 |
18 namespace webcrypto { | 17 namespace webcrypto { |
19 | 18 |
20 class CryptoData; | 19 class CryptoData; |
21 class Status; | 20 class Status; |
22 | 21 |
23 // Helper class for parsing a JWK from JSON. | 22 // Helper class for parsing a JWK from JSON. |
24 // | 23 // |
25 // This primarily exists to ensure strict enforcement of the JWK schema, as the | 24 // This primarily exists to ensure strict enforcement of the JWK schema, as the |
26 // type and presence of particular members is security relevant. For example, | 25 // type and presence of particular members is security relevant. For example, |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 bool expected_extractable, | 225 bool expected_extractable, |
227 blink::WebCryptoKeyUsageMask expected_usages, | 226 blink::WebCryptoKeyUsageMask expected_usages, |
228 JwkRsaInfo* result); | 227 JwkRsaInfo* result); |
229 | 228 |
230 const char* GetJwkHmacAlgorithmName(blink::WebCryptoAlgorithmId hash); | 229 const char* GetJwkHmacAlgorithmName(blink::WebCryptoAlgorithmId hash); |
231 | 230 |
232 // This decodes JWK's flavor of base64 encoding, as described by: | 231 // This decodes JWK's flavor of base64 encoding, as described by: |
233 // https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-36#section-2 | 232 // https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-36#section-2 |
234 // | 233 // |
235 // In essence it is RFC 4648 'base64url' encoding where padding is omitted. | 234 // In essence it is RFC 4648 'base64url' encoding where padding is omitted. |
236 CONTENT_EXPORT bool Base64DecodeUrlSafe(const std::string& input, | 235 bool Base64DecodeUrlSafe(const std::string& input, std::string* output); |
237 std::string* output); | |
238 | 236 |
239 // Encodes |input| using JWK's flavor of base64 encoding. See the description | 237 // Encodes |input| using JWK's flavor of base64 encoding. See the description |
240 // above for details. | 238 // above for details. |
241 CONTENT_EXPORT std::string Base64EncodeUrlSafe(const base::StringPiece& input); | 239 std::string Base64EncodeUrlSafe(const base::StringPiece& input); |
242 CONTENT_EXPORT std::string Base64EncodeUrlSafe( | 240 std::string Base64EncodeUrlSafe(const std::vector<uint8_t>& input); |
243 const std::vector<uint8_t>& input); | |
244 | 241 |
245 // Converts a JWK "key_ops" array to the corresponding WebCrypto usages. Used by | 242 // Converts a JWK "key_ops" array to the corresponding WebCrypto usages. Used by |
246 // testing. | 243 // testing. |
247 CONTENT_EXPORT Status | 244 Status GetWebCryptoUsagesFromJwkKeyOpsForTest( |
248 GetWebCryptoUsagesFromJwkKeyOpsForTest(const base::ListValue* key_ops, | 245 const base::ListValue* key_ops, |
249 blink::WebCryptoKeyUsageMask* usages); | 246 blink::WebCryptoKeyUsageMask* usages); |
250 | 247 |
251 } // namespace webcrypto | 248 } // namespace webcrypto |
252 | 249 |
253 } // namespace content | 250 } // namespace components |
254 | 251 |
255 #endif // CONTENT_CHILD_WEBCRYPTO_JWK_H_ | 252 #endif // CONTENT_CHILD_WEBCRYPTO_JWK_H_ |
OLD | NEW |