Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(280)

Side by Side Diff: content/child/webcrypto/webcrypto_util.h

Issue 200263002: Revert of [webcrypto] JWK: Updated import(ext, key_ops) and added export of symmetric keys (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wcAesKw_nss1
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_WEBCRYPTO_UTIL_H_ 5 #ifndef CONTENT_CHILD_WEBCRYPTO_WEBCRYPTO_UTIL_H_
6 #define CONTENT_CHILD_WEBCRYPTO_WEBCRYPTO_UTIL_H_ 6 #define CONTENT_CHILD_WEBCRYPTO_WEBCRYPTO_UTIL_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/strings/string_piece.h"
12 #include "base/values.h"
13 #include "content/common/content_export.h" 11 #include "content/common/content_export.h"
14 #include "third_party/WebKit/public/platform/WebArrayBuffer.h" 12 #include "third_party/WebKit/public/platform/WebArrayBuffer.h"
15 #include "third_party/WebKit/public/platform/WebCrypto.h" // TODO(eroman): dele te 13 #include "third_party/WebKit/public/platform/WebCrypto.h" // TODO(eroman): dele te
16 #include "third_party/WebKit/public/platform/WebCryptoAlgorithm.h" 14 #include "third_party/WebKit/public/platform/WebCryptoAlgorithm.h"
17 #include "third_party/WebKit/public/platform/WebCryptoKey.h" 15 #include "third_party/WebKit/public/platform/WebCryptoKey.h"
18 16
19 namespace content { 17 namespace content {
20 18
21 namespace webcrypto { 19 namespace webcrypto {
22 20
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 static Status ErrorJwkPropertyMissing(const std::string& property); 66 static Status ErrorJwkPropertyMissing(const std::string& property);
69 67
70 // The property |property| was not of type |expected_type|. 68 // The property |property| was not of type |expected_type|.
71 static Status ErrorJwkPropertyWrongType(const std::string& property, 69 static Status ErrorJwkPropertyWrongType(const std::string& property,
72 const std::string& expected_type); 70 const std::string& expected_type);
73 71
74 // The property |property| was a string, however could not be successfully 72 // The property |property| was a string, however could not be successfully
75 // base64 decoded. 73 // base64 decoded.
76 static Status ErrorJwkBase64Decode(const std::string& property); 74 static Status ErrorJwkBase64Decode(const std::string& property);
77 75
78 // The "ext" parameter was specified but was 76 // The "extractable" parameter was specified but was
79 // incompatible with the value requested by the Web Crypto call. 77 // incompatible with the value requested by the Web Crypto call.
80 static Status ErrorJwkExtInconsistent(); 78 static Status ErrorJwkExtractableInconsistent();
81 79
82 // The "alg" parameter could not be converted to an equivalent 80 // The "alg" parameter could not be converted to an equivalent
83 // WebCryptoAlgorithm. Either it was malformed or unrecognized. 81 // WebCryptoAlgorithm. Either it was malformed or unrecognized.
84 static Status ErrorJwkUnrecognizedAlgorithm(); 82 static Status ErrorJwkUnrecognizedAlgorithm();
85 83
86 // The "alg" parameter is incompatible with the (optional) Algorithm 84 // The "alg" parameter is incompatible with the (optional) Algorithm
87 // specified by the Web Crypto import operation. 85 // specified by the Web Crypto import operation.
88 static Status ErrorJwkAlgorithmInconsistent(); 86 static Status ErrorJwkAlgorithmInconsistent();
89 87
90 // The "alg" parameter was not provided, however neither was an algorithm 88 // The "alg" parameter was not provided, however neither was an algorithm
91 // provided by the Web Crypto import operation. 89 // provided by the Web Crypto import operation.
92 static Status ErrorJwkAlgorithmMissing(); 90 static Status ErrorJwkAlgorithmMissing();
93 91
94 // The "use" parameter was specified, however it couldn't be converted to an 92 // The "use" parameter was specified, however it couldn't be converted to an
95 // equivalent Web Crypto usage. 93 // equivalent Web Crypto usage.
96 static Status ErrorJwkUnrecognizedUse(); 94 static Status ErrorJwkUnrecognizedUsage();
97
98 // The "key_ops" parameter was specified, however one of the values in the
99 // array couldn't be converted to an equivalent Web Crypto usage.
100 static Status ErrorJwkUnrecognizedKeyop();
101 95
102 // The "use" parameter was specified, however it is incompatible with that 96 // The "use" parameter was specified, however it is incompatible with that
103 // specified by the Web Crypto import operation. 97 // specified by the Web Crypto import operation.
104 static Status ErrorJwkUseInconsistent(); 98 static Status ErrorJwkUsageInconsistent();
105
106 // The "key_ops" parameter was specified, however it is incompatible with that
107 // specified by the Web Crypto import operation.
108 static Status ErrorJwkKeyopsInconsistent();
109
110 // Both the "key_ops" and the "use" parameters were specified, however they
111 // are incompatible with each other.
112 static Status ErrorJwkUseAndKeyopsInconsistent();
113 99
114 // TODO(eroman): Private key import through JWK is not yet supported. 100 // TODO(eroman): Private key import through JWK is not yet supported.
115 static Status ErrorJwkRsaPrivateKeyUnsupported(); 101 static Status ErrorJwkRsaPrivateKeyUnsupported();
116 102
117 // The "kty" parameter was given and was a string, however it was 103 // The "kty" parameter was given and was a string, however it was
118 // unrecognized. 104 // unrecognized.
119 static Status ErrorJwkUnrecognizedKty(); 105 static Status ErrorJwkUnrecognizedKty();
120 106
121 // The amount of key data provided was incompatible with the selected 107 // The amount of key data provided was incompatible with the selected
122 // algorithm. For instance if the algorith name was A128CBC then EXACTLY 108 // algorithm. For instance if the algorith name was A128CBC then EXACTLY
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 void ShrinkBuffer(blink::WebArrayBuffer* buffer, unsigned int new_size); 211 void ShrinkBuffer(blink::WebArrayBuffer* buffer, unsigned int new_size);
226 212
227 // Creates a WebArrayBuffer from a uint8 byte array 213 // Creates a WebArrayBuffer from a uint8 byte array
228 blink::WebArrayBuffer CreateArrayBuffer(const uint8* data, 214 blink::WebArrayBuffer CreateArrayBuffer(const uint8* data,
229 unsigned int data_size); 215 unsigned int data_size);
230 216
231 // TODO(eroman): Move this to JWK file. 217 // TODO(eroman): Move this to JWK file.
232 // This function decodes unpadded 'base64url' encoded data, as described in 218 // This function decodes unpadded 'base64url' encoded data, as described in
233 // RFC4648 (http://www.ietf.org/rfc/rfc4648.txt) Section 5. 219 // RFC4648 (http://www.ietf.org/rfc/rfc4648.txt) Section 5.
234 // In Web Crypto, this type of encoding is only used inside JWK. 220 // In Web Crypto, this type of encoding is only used inside JWK.
235 CONTENT_EXPORT bool Base64DecodeUrlSafe(const std::string& input, 221 bool Base64DecodeUrlSafe(const std::string& input, std::string* output);
236 std::string* output);
237
238 // Returns an unpadded 'base64url' encoding of the input data, the opposite of
239 // Base64DecodeUrlSafe() above.
240 std::string Base64EncodeUrlSafe(const base::StringPiece& input);
241
242 // Composes a Web Crypto usage mask from an array of JWK key_ops values.
243 CONTENT_EXPORT Status GetWebCryptoUsagesFromJwkKeyOps(
244 const base::ListValue* jwk_key_ops_value,
245 blink::WebCryptoKeyUsageMask* jwk_key_ops_mask);
246
247 // Composes a JWK key_ops array from a Web Crypto usage mask.
248 base::ListValue* CreateJwkKeyOpsFromWebCryptoUsages(
249 blink::WebCryptoKeyUsageMask usage_mask);
250 222
251 CONTENT_EXPORT bool IsHashAlgorithm(blink::WebCryptoAlgorithmId alg_id); 223 CONTENT_EXPORT bool IsHashAlgorithm(blink::WebCryptoAlgorithmId alg_id);
252 224
253 // Returns the "hash" param for an algorithm if it exists, otherwise returns 225 // Returns the "hash" param for an algorithm if it exists, otherwise returns
254 // a null algorithm. 226 // a null algorithm.
255 blink::WebCryptoAlgorithm GetInnerHashAlgorithm( 227 blink::WebCryptoAlgorithm GetInnerHashAlgorithm(
256 const blink::WebCryptoAlgorithm& algorithm); 228 const blink::WebCryptoAlgorithm& algorithm);
257 229
258 // Creates a WebCryptoAlgorithm without any parameters. 230 // Creates a WebCryptoAlgorithm without any parameters.
259 CONTENT_EXPORT blink::WebCryptoAlgorithm CreateAlgorithm( 231 CONTENT_EXPORT blink::WebCryptoAlgorithm CreateAlgorithm(
(...skipping 21 matching lines...) Expand all
281 253
282 bool CreateSecretKeyAlgorithm(const blink::WebCryptoAlgorithm& algorithm, 254 bool CreateSecretKeyAlgorithm(const blink::WebCryptoAlgorithm& algorithm,
283 unsigned keylen_bytes, 255 unsigned keylen_bytes,
284 blink::WebCryptoKeyAlgorithm* key_algorithm); 256 blink::WebCryptoKeyAlgorithm* key_algorithm);
285 257
286 } // namespace webcrypto 258 } // namespace webcrypto
287 259
288 } // namespace content 260 } // namespace content
289 261
290 #endif // CONTENT_CHILD_WEBCRYPTO_WEBCRYPTO_UTIL_H_ 262 #endif // CONTENT_CHILD_WEBCRYPTO_WEBCRYPTO_UTIL_H_
OLDNEW
« no previous file with comments | « content/child/webcrypto/shared_crypto_unittest.cc ('k') | content/child/webcrypto/webcrypto_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698