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 #include "content/child/webcrypto/webcrypto_util.h" | 5 #include "content/child/webcrypto/webcrypto_util.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 base::ListValue* CreateJwkKeyOpsFromWebCryptoUsages( | 128 base::ListValue* CreateJwkKeyOpsFromWebCryptoUsages( |
129 blink::WebCryptoKeyUsageMask usage_mask) { | 129 blink::WebCryptoKeyUsageMask usage_mask) { |
130 base::ListValue* jwk_key_ops = new base::ListValue(); | 130 base::ListValue* jwk_key_ops = new base::ListValue(); |
131 for (size_t i = 0; i < arraysize(kJwkWebCryptoUsageMap); ++i) { | 131 for (size_t i = 0; i < arraysize(kJwkWebCryptoUsageMap); ++i) { |
132 if (usage_mask & kJwkWebCryptoUsageMap[i].webcrypto_usage) | 132 if (usage_mask & kJwkWebCryptoUsageMap[i].webcrypto_usage) |
133 jwk_key_ops->AppendString(kJwkWebCryptoUsageMap[i].jwk_key_op); | 133 jwk_key_ops->AppendString(kJwkWebCryptoUsageMap[i].jwk_key_op); |
134 } | 134 } |
135 return jwk_key_ops; | 135 return jwk_key_ops; |
136 } | 136 } |
137 | 137 |
138 blink::WebCryptoAlgorithm GetInnerHashAlgorithm( | |
139 const blink::WebCryptoAlgorithm& algorithm) { | |
140 DCHECK(!algorithm.isNull()); | |
141 switch (algorithm.paramsType()) { | |
142 case blink::WebCryptoAlgorithmParamsTypeHmacImportParams: | |
143 return algorithm.hmacImportParams()->hash(); | |
144 case blink::WebCryptoAlgorithmParamsTypeHmacKeyGenParams: | |
145 return algorithm.hmacKeyGenParams()->hash(); | |
146 case blink::WebCryptoAlgorithmParamsTypeRsaHashedImportParams: | |
147 return algorithm.rsaHashedImportParams()->hash(); | |
148 case blink::WebCryptoAlgorithmParamsTypeRsaHashedKeyGenParams: | |
149 return algorithm.rsaHashedKeyGenParams()->hash(); | |
150 default: | |
151 return blink::WebCryptoAlgorithm::createNull(); | |
152 } | |
153 } | |
154 | |
155 blink::WebCryptoAlgorithm CreateAlgorithm(blink::WebCryptoAlgorithmId id) { | 138 blink::WebCryptoAlgorithm CreateAlgorithm(blink::WebCryptoAlgorithmId id) { |
156 return blink::WebCryptoAlgorithm::adoptParamsAndCreate(id, NULL); | 139 return blink::WebCryptoAlgorithm::adoptParamsAndCreate(id, NULL); |
157 } | 140 } |
158 | 141 |
159 blink::WebCryptoAlgorithm CreateHmacImportAlgorithm( | 142 blink::WebCryptoAlgorithm CreateHmacImportAlgorithm( |
160 blink::WebCryptoAlgorithmId hash_id) { | 143 blink::WebCryptoAlgorithmId hash_id) { |
161 DCHECK(blink::WebCryptoAlgorithm::isHash(hash_id)); | 144 DCHECK(blink::WebCryptoAlgorithm::isHash(hash_id)); |
162 return blink::WebCryptoAlgorithm::adoptParamsAndCreate( | 145 return blink::WebCryptoAlgorithm::adoptParamsAndCreate( |
163 blink::WebCryptoAlgorithmIdHmac, | 146 blink::WebCryptoAlgorithmIdHmac, |
164 new blink::WebCryptoHmacImportParams(CreateAlgorithm(hash_id))); | 147 new blink::WebCryptoHmacImportParams(CreateAlgorithm(hash_id))); |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 // avoid feeding OpenSSL data that will hang use a whitelist. | 281 // avoid feeding OpenSSL data that will hang use a whitelist. |
299 if (*public_exponent != 3 && *public_exponent != 65537) | 282 if (*public_exponent != 3 && *public_exponent != 65537) |
300 return Status::ErrorGenerateKeyPublicExponent(); | 283 return Status::ErrorGenerateKeyPublicExponent(); |
301 | 284 |
302 return Status::Success(); | 285 return Status::Success(); |
303 } | 286 } |
304 | 287 |
305 } // namespace webcrypto | 288 } // namespace webcrypto |
306 | 289 |
307 } // namespace content | 290 } // namespace content |
OLD | NEW |