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

Side by Side Diff: content/renderer/webcrypto/webcrypto_impl_openssl.cc

Issue 113003002: [webcrypto] Use new parameter names (that end in "bits" vs "bytes"). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « content/renderer/webcrypto/webcrypto_impl_nss.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/renderer/webcrypto/webcrypto_impl.h" 5 #include "content/renderer/webcrypto/webcrypto_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 #include <openssl/aes.h> 8 #include <openssl/aes.h>
9 #include <openssl/evp.h> 9 #include <openssl/evp.h>
10 #include <openssl/hmac.h> 10 #include <openssl/hmac.h>
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 return EVP_aes_128_cbc(); 44 return EVP_aes_128_cbc();
45 case 24: 45 case 24:
46 return EVP_aes_192_cbc(); 46 return EVP_aes_192_cbc();
47 case 32: 47 case 32:
48 return EVP_aes_256_cbc(); 48 return EVP_aes_256_cbc();
49 default: 49 default:
50 return NULL; 50 return NULL;
51 } 51 }
52 } 52 }
53 53
54 unsigned WebCryptoHmacParamsToBlockSize( 54 // TODO(eroman): This is wrong. These constants are bytes not bits. Moreover
55 // this doesn't match the NSS version.
56 unsigned WebCryptoHmacParamsToBlockSizeBytes(
55 const blink::WebCryptoHmacKeyParams* params) { 57 const blink::WebCryptoHmacKeyParams* params) {
56 DCHECK(params); 58 DCHECK(params);
57 switch (params->hash().id()) { 59 switch (params->hash().id()) {
58 case blink::WebCryptoAlgorithmIdSha1: 60 case blink::WebCryptoAlgorithmIdSha1:
59 return SHA_DIGEST_LENGTH / 8; 61 return SHA_DIGEST_LENGTH / 8;
60 case blink::WebCryptoAlgorithmIdSha224: 62 case blink::WebCryptoAlgorithmIdSha224:
61 return SHA224_DIGEST_LENGTH / 8; 63 return SHA224_DIGEST_LENGTH / 8;
62 case blink::WebCryptoAlgorithmIdSha256: 64 case blink::WebCryptoAlgorithmIdSha256:
63 return SHA256_DIGEST_LENGTH / 8; 65 return SHA256_DIGEST_LENGTH / 8;
64 case blink::WebCryptoAlgorithmIdSha384: 66 case blink::WebCryptoAlgorithmIdSha384:
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 blink::WebCryptoKeyUsageMask usage_mask, 273 blink::WebCryptoKeyUsageMask usage_mask,
272 blink::WebCryptoKey* key) { 274 blink::WebCryptoKey* key) {
273 275
274 unsigned keylen_bytes = 0; 276 unsigned keylen_bytes = 0;
275 blink::WebCryptoKeyType key_type; 277 blink::WebCryptoKeyType key_type;
276 switch (algorithm.id()) { 278 switch (algorithm.id()) {
277 case blink::WebCryptoAlgorithmIdAesCbc: { 279 case blink::WebCryptoAlgorithmIdAesCbc: {
278 const blink::WebCryptoAesKeyGenParams* params = 280 const blink::WebCryptoAesKeyGenParams* params =
279 algorithm.aesKeyGenParams(); 281 algorithm.aesKeyGenParams();
280 DCHECK(params); 282 DCHECK(params);
281 if (params->length() % 8) 283 if (params->lengthBits() % 8)
282 return false; 284 return false;
283 keylen_bytes = params->length() / 8; 285 keylen_bytes = params->lengthBits() / 8;
284 if (!GetAESCipherByKeyLength(keylen_bytes)) { 286 if (!GetAESCipherByKeyLength(keylen_bytes)) {
285 return false; 287 return false;
286 } 288 }
287 key_type = blink::WebCryptoKeyTypeSecret; 289 key_type = blink::WebCryptoKeyTypeSecret;
288 break; 290 break;
289 } 291 }
290 case blink::WebCryptoAlgorithmIdHmac: { 292 case blink::WebCryptoAlgorithmIdHmac: {
291 const blink::WebCryptoHmacKeyParams* params = algorithm.hmacKeyParams(); 293 const blink::WebCryptoHmacKeyParams* params = algorithm.hmacKeyParams();
292 DCHECK(params); 294 DCHECK(params);
293 if (!params->getLength(keylen_bytes)) { 295 if (params->hasLengthBytes()) {
294 keylen_bytes = WebCryptoHmacParamsToBlockSize(params); 296 keylen_bytes = params->optionalLengthBytes();
297 } else {
298 keylen_bytes = WebCryptoHmacParamsToBlockSizeBytes(params);
295 } 299 }
296 key_type = blink::WebCryptoKeyTypeSecret; 300 key_type = blink::WebCryptoKeyTypeSecret;
297 break; 301 break;
298 } 302 }
299 303
300 default: { return false; } 304 default: { return false; }
301 } 305 }
302 306
303 if (keylen_bytes == 0) { 307 if (keylen_bytes == 0) {
304 return false; 308 return false;
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 const blink::WebCryptoAlgorithm& algorithm, 534 const blink::WebCryptoAlgorithm& algorithm,
531 bool extractable, 535 bool extractable,
532 blink::WebCryptoKeyUsageMask usage_mask, 536 blink::WebCryptoKeyUsageMask usage_mask,
533 blink::WebCryptoKey* key) { 537 blink::WebCryptoKey* key) {
534 // TODO(padolph): Placeholder for OpenSSL implementation. 538 // TODO(padolph): Placeholder for OpenSSL implementation.
535 // Issue http://crbug.com/267888. 539 // Issue http://crbug.com/267888.
536 return false; 540 return false;
537 } 541 }
538 542
539 } // namespace content 543 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/webcrypto/webcrypto_impl_nss.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698