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

Side by Side Diff: content/child/webcrypto/test/aes_kw_unittest.cc

Issue 670433005: Cleanup: Use default constructor for WebCryptoKey rather than createNull() factory method. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 #include "base/stl_util.h" 5 #include "base/stl_util.h"
6 #include "content/child/webcrypto/algorithm_dispatch.h" 6 #include "content/child/webcrypto/algorithm_dispatch.h"
7 #include "content/child/webcrypto/crypto_data.h" 7 #include "content/child/webcrypto/crypto_data.h"
8 #include "content/child/webcrypto/status.h" 8 #include "content/child/webcrypto/status.h"
9 #include "content/child/webcrypto/test/test_helpers.h" 9 #include "content/child/webcrypto/test/test_helpers.h"
10 #include "content/child/webcrypto/webcrypto_util.h" 10 #include "content/child/webcrypto/webcrypto_util.h"
11 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h" 11 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h"
12 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h" 12 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h"
13 13
14 namespace content { 14 namespace content {
15 15
16 namespace webcrypto { 16 namespace webcrypto {
17 17
18 namespace { 18 namespace {
19 19
20 blink::WebCryptoAlgorithm CreateAesKwKeyGenAlgorithm( 20 blink::WebCryptoAlgorithm CreateAesKwKeyGenAlgorithm(
21 unsigned short key_length_bits) { 21 unsigned short key_length_bits) {
22 return CreateAesKeyGenAlgorithm(blink::WebCryptoAlgorithmIdAesKw, 22 return CreateAesKeyGenAlgorithm(blink::WebCryptoAlgorithmIdAesKw,
23 key_length_bits); 23 key_length_bits);
24 } 24 }
25 25
26 TEST(WebCryptoAesKwTest, GenerateKeyBadLength) { 26 TEST(WebCryptoAesKwTest, GenerateKeyBadLength) {
27 const unsigned short kKeyLen[] = {0, 127, 257}; 27 const unsigned short kKeyLen[] = {0, 127, 257};
28 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 28 blink::WebCryptoKey key;
29 for (size_t i = 0; i < arraysize(kKeyLen); ++i) { 29 for (size_t i = 0; i < arraysize(kKeyLen); ++i) {
30 SCOPED_TRACE(i); 30 SCOPED_TRACE(i);
31 EXPECT_EQ(Status::ErrorGenerateKeyLength(), 31 EXPECT_EQ(Status::ErrorGenerateKeyLength(),
32 GenerateSecretKey( 32 GenerateSecretKey(
33 CreateAesKwKeyGenAlgorithm(kKeyLen[i]), true, 0, &key)); 33 CreateAesKwKeyGenAlgorithm(kKeyLen[i]), true, 0, &key));
34 } 34 }
35 } 35 }
36 36
37 TEST(WebCryptoAesKwTest, ImportKeyJwkKeyOpsWrapUnwrap) { 37 TEST(WebCryptoAesKwTest, ImportKeyJwkKeyOpsWrapUnwrap) {
38 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 38 blink::WebCryptoKey key;
39 base::DictionaryValue dict; 39 base::DictionaryValue dict;
40 dict.SetString("kty", "oct"); 40 dict.SetString("kty", "oct");
41 dict.SetString("k", "GADWrMRHwQfoNaXU5fZvTg=="); 41 dict.SetString("k", "GADWrMRHwQfoNaXU5fZvTg==");
42 base::ListValue* key_ops = new base::ListValue; 42 base::ListValue* key_ops = new base::ListValue;
43 dict.Set("key_ops", key_ops); // Takes ownership. 43 dict.Set("key_ops", key_ops); // Takes ownership.
44 44
45 key_ops->AppendString("wrapKey"); 45 key_ops->AppendString("wrapKey");
46 46
47 EXPECT_EQ( 47 EXPECT_EQ(
48 Status::Success(), 48 Status::Success(),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 80
81 // AES-KW 256 81 // AES-KW 256
82 ImportExportJwkSymmetricKey( 82 ImportExportJwkSymmetricKey(
83 256, 83 256,
84 algorithm, 84 algorithm,
85 blink::WebCryptoKeyUsageWrapKey | blink::WebCryptoKeyUsageUnwrapKey, 85 blink::WebCryptoKeyUsageWrapKey | blink::WebCryptoKeyUsageUnwrapKey,
86 "A256KW"); 86 "A256KW");
87 } 87 }
88 88
89 TEST(WebCryptoAesKwTest, AesKwKeyImport) { 89 TEST(WebCryptoAesKwTest, AesKwKeyImport) {
90 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 90 blink::WebCryptoKey key;
91 blink::WebCryptoAlgorithm algorithm = 91 blink::WebCryptoAlgorithm algorithm =
92 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw); 92 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw);
93 93
94 // Import a 128-bit Key Encryption Key (KEK) 94 // Import a 128-bit Key Encryption Key (KEK)
95 std::string key_raw_hex_in = "025a8cf3f08b4f6c5f33bbc76a471939"; 95 std::string key_raw_hex_in = "025a8cf3f08b4f6c5f33bbc76a471939";
96 ASSERT_EQ(Status::Success(), 96 ASSERT_EQ(Status::Success(),
97 ImportKey(blink::WebCryptoKeyFormatRaw, 97 ImportKey(blink::WebCryptoKeyFormatRaw,
98 CryptoData(HexStringToBytes(key_raw_hex_in)), 98 CryptoData(HexStringToBytes(key_raw_hex_in)),
99 algorithm, 99 algorithm,
100 true, 100 true,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 TEST(WebCryptoAesKwTest, UnwrapFailures) { 173 TEST(WebCryptoAesKwTest, UnwrapFailures) {
174 // This test exercises the code path common to all unwrap operations. 174 // This test exercises the code path common to all unwrap operations.
175 scoped_ptr<base::ListValue> tests; 175 scoped_ptr<base::ListValue> tests;
176 ASSERT_TRUE(ReadJsonTestFileToList("aes_kw.json", &tests)); 176 ASSERT_TRUE(ReadJsonTestFileToList("aes_kw.json", &tests));
177 base::DictionaryValue* test; 177 base::DictionaryValue* test;
178 ASSERT_TRUE(tests->GetDictionary(0, &test)); 178 ASSERT_TRUE(tests->GetDictionary(0, &test));
179 const std::vector<uint8_t> test_kek = GetBytesFromHexString(test, "kek"); 179 const std::vector<uint8_t> test_kek = GetBytesFromHexString(test, "kek");
180 const std::vector<uint8_t> test_ciphertext = 180 const std::vector<uint8_t> test_ciphertext =
181 GetBytesFromHexString(test, "ciphertext"); 181 GetBytesFromHexString(test, "ciphertext");
182 182
183 blink::WebCryptoKey unwrapped_key = blink::WebCryptoKey::createNull(); 183 blink::WebCryptoKey unwrapped_key;
184 184
185 // Using a wrapping algorithm that does not match the wrapping key algorithm 185 // Using a wrapping algorithm that does not match the wrapping key algorithm
186 // should fail. 186 // should fail.
187 blink::WebCryptoKey wrapping_key = 187 blink::WebCryptoKey wrapping_key =
188 ImportSecretKeyFromRaw(test_kek, 188 ImportSecretKeyFromRaw(test_kek,
189 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw), 189 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw),
190 blink::WebCryptoKeyUsageUnwrapKey); 190 blink::WebCryptoKeyUsageUnwrapKey);
191 EXPECT_EQ(Status::ErrorUnexpected(), 191 EXPECT_EQ(Status::ErrorUnexpected(),
192 UnwrapKey(blink::WebCryptoKeyFormatRaw, 192 UnwrapKey(blink::WebCryptoKeyFormatRaw,
193 CryptoData(test_ciphertext), 193 CryptoData(test_ciphertext),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 std::vector<uint8_t> wrapped_key; 230 std::vector<uint8_t> wrapped_key;
231 ASSERT_EQ(Status::Success(), 231 ASSERT_EQ(Status::Success(),
232 WrapKey(blink::WebCryptoKeyFormatRaw, 232 WrapKey(blink::WebCryptoKeyFormatRaw,
233 key, 233 key,
234 wrapping_key, 234 wrapping_key,
235 wrapping_algorithm, 235 wrapping_algorithm,
236 &wrapped_key)); 236 &wrapped_key));
237 EXPECT_BYTES_EQ(test_ciphertext, wrapped_key); 237 EXPECT_BYTES_EQ(test_ciphertext, wrapped_key);
238 238
239 // Unwrap the known ciphertext to get a new test_key. 239 // Unwrap the known ciphertext to get a new test_key.
240 blink::WebCryptoKey unwrapped_key = blink::WebCryptoKey::createNull(); 240 blink::WebCryptoKey unwrapped_key;
241 ASSERT_EQ( 241 ASSERT_EQ(
242 Status::Success(), 242 Status::Success(),
243 UnwrapKey(blink::WebCryptoKeyFormatRaw, 243 UnwrapKey(blink::WebCryptoKeyFormatRaw,
244 CryptoData(test_ciphertext), 244 CryptoData(test_ciphertext),
245 wrapping_key, 245 wrapping_key,
246 wrapping_algorithm, 246 wrapping_algorithm,
247 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha1), 247 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha1),
248 true, 248 true,
249 blink::WebCryptoKeyUsageSign, 249 blink::WebCryptoKeyUsageSign,
250 &unwrapped_key)); 250 &unwrapped_key));
(...skipping 24 matching lines...) Expand all
275 const std::vector<uint8_t> test_ciphertext = 275 const std::vector<uint8_t> test_ciphertext =
276 GetBytesFromHexString(test, "ciphertext"); 276 GetBytesFromHexString(test, "ciphertext");
277 const blink::WebCryptoAlgorithm wrapping_algorithm = 277 const blink::WebCryptoAlgorithm wrapping_algorithm =
278 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw); 278 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw);
279 279
280 // Import the wrapping key. 280 // Import the wrapping key.
281 blink::WebCryptoKey wrapping_key = ImportSecretKeyFromRaw( 281 blink::WebCryptoKey wrapping_key = ImportSecretKeyFromRaw(
282 test_kek, wrapping_algorithm, blink::WebCryptoKeyUsageUnwrapKey); 282 test_kek, wrapping_algorithm, blink::WebCryptoKeyUsageUnwrapKey);
283 283
284 // Unwrap the known ciphertext. 284 // Unwrap the known ciphertext.
285 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 285 blink::WebCryptoKey key;
286 ASSERT_EQ( 286 ASSERT_EQ(
287 Status::Success(), 287 Status::Success(),
288 UnwrapKey(blink::WebCryptoKeyFormatRaw, 288 UnwrapKey(blink::WebCryptoKeyFormatRaw,
289 CryptoData(test_ciphertext), 289 CryptoData(test_ciphertext),
290 wrapping_key, 290 wrapping_key,
291 wrapping_algorithm, 291 wrapping_algorithm,
292 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha1), 292 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha1),
293 false, 293 false,
294 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageVerify, 294 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageVerify,
295 &key)); 295 &key));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 blink::WebCryptoKeyUsageWrapKey | blink::WebCryptoKeyUsageUnwrapKey); 342 blink::WebCryptoKeyUsageWrapKey | blink::WebCryptoKeyUsageUnwrapKey);
343 // Import the key to be wrapped. 343 // Import the key to be wrapped.
344 blink::WebCryptoKey key = 344 blink::WebCryptoKey key =
345 ImportSecretKeyFromRaw(test_key, 345 ImportSecretKeyFromRaw(test_key,
346 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCbc), 346 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCbc),
347 blink::WebCryptoKeyUsageEncrypt); 347 blink::WebCryptoKeyUsageEncrypt);
348 348
349 // Unwrap with wrapped data too small must fail. 349 // Unwrap with wrapped data too small must fail.
350 const std::vector<uint8_t> small_data(test_ciphertext.begin(), 350 const std::vector<uint8_t> small_data(test_ciphertext.begin(),
351 test_ciphertext.begin() + 23); 351 test_ciphertext.begin() + 23);
352 blink::WebCryptoKey unwrapped_key = blink::WebCryptoKey::createNull(); 352 blink::WebCryptoKey unwrapped_key;
353 EXPECT_EQ(Status::ErrorDataTooSmall(), 353 EXPECT_EQ(Status::ErrorDataTooSmall(),
354 UnwrapKey(blink::WebCryptoKeyFormatRaw, 354 UnwrapKey(blink::WebCryptoKeyFormatRaw,
355 CryptoData(small_data), 355 CryptoData(small_data),
356 wrapping_key, 356 wrapping_key,
357 wrapping_algorithm, 357 wrapping_algorithm,
358 key_algorithm, 358 key_algorithm,
359 true, 359 true,
360 blink::WebCryptoKeyUsageEncrypt, 360 blink::WebCryptoKeyUsageEncrypt,
361 &unwrapped_key)); 361 &unwrapped_key));
362 362
(...skipping 25 matching lines...) Expand all
388 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw); 388 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw);
389 389
390 // Import the wrapping key. 390 // Import the wrapping key.
391 blink::WebCryptoKey wrapping_key = ImportSecretKeyFromRaw( 391 blink::WebCryptoKey wrapping_key = ImportSecretKeyFromRaw(
392 test_kek, 392 test_kek,
393 wrapping_algorithm, 393 wrapping_algorithm,
394 blink::WebCryptoKeyUsageWrapKey | blink::WebCryptoKeyUsageUnwrapKey); 394 blink::WebCryptoKeyUsageWrapKey | blink::WebCryptoKeyUsageUnwrapKey);
395 395
396 // Unwrap of a corrupted version of the known ciphertext should fail, due to 396 // Unwrap of a corrupted version of the known ciphertext should fail, due to
397 // AES-KW's built-in integrity check. 397 // AES-KW's built-in integrity check.
398 blink::WebCryptoKey unwrapped_key = blink::WebCryptoKey::createNull(); 398 blink::WebCryptoKey unwrapped_key;
399 EXPECT_EQ(Status::OperationError(), 399 EXPECT_EQ(Status::OperationError(),
400 UnwrapKey(blink::WebCryptoKeyFormatRaw, 400 UnwrapKey(blink::WebCryptoKeyFormatRaw,
401 CryptoData(Corrupted(test_ciphertext)), 401 CryptoData(Corrupted(test_ciphertext)),
402 wrapping_key, 402 wrapping_key,
403 wrapping_algorithm, 403 wrapping_algorithm,
404 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCbc), 404 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCbc),
405 true, 405 true,
406 blink::WebCryptoKeyUsageEncrypt, 406 blink::WebCryptoKeyUsageEncrypt,
407 &unwrapped_key)); 407 &unwrapped_key));
408 } 408 }
(...skipping 16 matching lines...) Expand all
425 const std::vector<uint8_t> wrapping_key_data = 425 const std::vector<uint8_t> wrapping_key_data =
426 HexStringToBytes("000102030405060708090A0B0C0D0E0F"); 426 HexStringToBytes("000102030405060708090A0B0C0D0E0F");
427 const blink::WebCryptoAlgorithm wrapping_algorithm = 427 const blink::WebCryptoAlgorithm wrapping_algorithm =
428 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw); 428 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw);
429 429
430 // Import the wrapping key. 430 // Import the wrapping key.
431 blink::WebCryptoKey wrapping_key = ImportSecretKeyFromRaw( 431 blink::WebCryptoKey wrapping_key = ImportSecretKeyFromRaw(
432 wrapping_key_data, wrapping_algorithm, blink::WebCryptoKeyUsageUnwrapKey); 432 wrapping_key_data, wrapping_algorithm, blink::WebCryptoKeyUsageUnwrapKey);
433 433
434 // Unwrap the known wrapped key data to produce a new key 434 // Unwrap the known wrapped key data to produce a new key
435 blink::WebCryptoKey unwrapped_key = blink::WebCryptoKey::createNull(); 435 blink::WebCryptoKey unwrapped_key;
436 ASSERT_EQ( 436 ASSERT_EQ(
437 Status::Success(), 437 Status::Success(),
438 UnwrapKey(blink::WebCryptoKeyFormatJwk, 438 UnwrapKey(blink::WebCryptoKeyFormatJwk,
439 CryptoData(wrapped_key_data), 439 CryptoData(wrapped_key_data),
440 wrapping_key, 440 wrapping_key,
441 wrapping_algorithm, 441 wrapping_algorithm,
442 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha256), 442 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha256),
443 true, 443 true,
444 blink::WebCryptoKeyUsageVerify, 444 blink::WebCryptoKeyUsageVerify,
445 &unwrapped_key)); 445 &unwrapped_key));
(...skipping 30 matching lines...) Expand all
476 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageUnwrapKey, 476 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageUnwrapKey,
477 blink::WebCryptoKeyUsageDeriveBits, 477 blink::WebCryptoKeyUsageDeriveBits,
478 blink::WebCryptoKeyUsageUnwrapKey | blink::WebCryptoKeyUsageVerify, 478 blink::WebCryptoKeyUsageUnwrapKey | blink::WebCryptoKeyUsageVerify,
479 }; 479 };
480 480
481 std::vector<uint8_t> key_bytes(16); 481 std::vector<uint8_t> key_bytes(16);
482 482
483 for (size_t i = 0; i < arraysize(bad_usages); ++i) { 483 for (size_t i = 0; i < arraysize(bad_usages); ++i) {
484 SCOPED_TRACE(i); 484 SCOPED_TRACE(i);
485 485
486 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 486 blink::WebCryptoKey key;
487 ASSERT_EQ(Status::ErrorCreateKeyBadUsages(), 487 ASSERT_EQ(Status::ErrorCreateKeyBadUsages(),
488 ImportKey(blink::WebCryptoKeyFormatRaw, 488 ImportKey(blink::WebCryptoKeyFormatRaw,
489 CryptoData(key_bytes), 489 CryptoData(key_bytes),
490 algorithm, 490 algorithm,
491 true, 491 true,
492 bad_usages[i], 492 bad_usages[i],
493 &key)); 493 &key));
494 } 494 }
495 } 495 }
496 496
497 // Try unwrapping an HMAC key with unsupported usages using JWK format and 497 // Try unwrapping an HMAC key with unsupported usages using JWK format and
498 // AES-KW. HMAC keys support the following usages: 498 // AES-KW. HMAC keys support the following usages:
499 // 'sign', 'verify' 499 // 'sign', 'verify'
500 TEST(WebCryptoAesKwTest, UnwrapHmacKeyBadUsage_JWK) { 500 TEST(WebCryptoAesKwTest, UnwrapHmacKeyBadUsage_JWK) {
501 const blink::WebCryptoAlgorithm unwrap_algorithm = 501 const blink::WebCryptoAlgorithm unwrap_algorithm =
502 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw); 502 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw);
503 503
504 blink::WebCryptoKeyUsageMask bad_usages[] = { 504 blink::WebCryptoKeyUsageMask bad_usages[] = {
505 blink::WebCryptoKeyUsageEncrypt, 505 blink::WebCryptoKeyUsageEncrypt,
506 blink::WebCryptoKeyUsageDecrypt, 506 blink::WebCryptoKeyUsageDecrypt,
507 blink::WebCryptoKeyUsageWrapKey, 507 blink::WebCryptoKeyUsageWrapKey,
508 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageWrapKey, 508 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageWrapKey,
509 blink::WebCryptoKeyUsageVerify | blink::WebCryptoKeyUsageDeriveKey, 509 blink::WebCryptoKeyUsageVerify | blink::WebCryptoKeyUsageDeriveKey,
510 }; 510 };
511 511
512 // Import the wrapping key. 512 // Import the wrapping key.
513 blink::WebCryptoKey wrapping_key = blink::WebCryptoKey::createNull(); 513 blink::WebCryptoKey wrapping_key;
514 ASSERT_EQ(Status::Success(), 514 ASSERT_EQ(Status::Success(),
515 ImportKey(blink::WebCryptoKeyFormatRaw, 515 ImportKey(blink::WebCryptoKeyFormatRaw,
516 CryptoData(std::vector<uint8_t>(16)), 516 CryptoData(std::vector<uint8_t>(16)),
517 unwrap_algorithm, 517 unwrap_algorithm,
518 true, 518 true,
519 blink::WebCryptoKeyUsageUnwrapKey, 519 blink::WebCryptoKeyUsageUnwrapKey,
520 &wrapping_key)); 520 &wrapping_key));
521 521
522 // The JWK plain text is: 522 // The JWK plain text is:
523 // { "kty": "oct","alg": "HS256","k": "GADWrMRHwQfoNaXU5fZvTg=="} 523 // { "kty": "oct","alg": "HS256","k": "GADWrMRHwQfoNaXU5fZvTg=="}
524 const char* kWrappedJwk = 524 const char* kWrappedJwk =
525 "0AA245F17064FFB2A7A094436A39BEBFC962C627303D1327EA750CE9F917688C2782A943" 525 "0AA245F17064FFB2A7A094436A39BEBFC962C627303D1327EA750CE9F917688C2782A943"
526 "7AE7586547AC490E8AE7D5B02D63868D5C3BB57D36C4C8C5BF3962ACEC6F42E767E5706" 526 "7AE7586547AC490E8AE7D5B02D63868D5C3BB57D36C4C8C5BF3962ACEC6F42E767E5706"
527 "4"; 527 "4";
528 528
529 for (size_t i = 0; i < arraysize(bad_usages); ++i) { 529 for (size_t i = 0; i < arraysize(bad_usages); ++i) {
530 SCOPED_TRACE(i); 530 SCOPED_TRACE(i);
531 531
532 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 532 blink::WebCryptoKey key;
533 533
534 ASSERT_EQ( 534 ASSERT_EQ(
535 Status::ErrorCreateKeyBadUsages(), 535 Status::ErrorCreateKeyBadUsages(),
536 UnwrapKey(blink::WebCryptoKeyFormatJwk, 536 UnwrapKey(blink::WebCryptoKeyFormatJwk,
537 CryptoData(HexStringToBytes(kWrappedJwk)), 537 CryptoData(HexStringToBytes(kWrappedJwk)),
538 wrapping_key, 538 wrapping_key,
539 unwrap_algorithm, 539 unwrap_algorithm,
540 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha256), 540 CreateHmacImportAlgorithm(blink::WebCryptoAlgorithmIdSha256),
541 true, 541 true,
542 bad_usages[i], 542 bad_usages[i],
(...skipping 10 matching lines...) Expand all
553 553
554 blink::WebCryptoKeyUsageMask bad_usages[] = { 554 blink::WebCryptoKeyUsageMask bad_usages[] = {
555 blink::WebCryptoKeyUsageEncrypt, 555 blink::WebCryptoKeyUsageEncrypt,
556 blink::WebCryptoKeyUsageSign, 556 blink::WebCryptoKeyUsageSign,
557 blink::WebCryptoKeyUsageDecrypt, 557 blink::WebCryptoKeyUsageDecrypt,
558 blink::WebCryptoKeyUsageWrapKey, 558 blink::WebCryptoKeyUsageWrapKey,
559 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageWrapKey, 559 blink::WebCryptoKeyUsageSign | blink::WebCryptoKeyUsageWrapKey,
560 }; 560 };
561 561
562 // Import the wrapping key. 562 // Import the wrapping key.
563 blink::WebCryptoKey wrapping_key = blink::WebCryptoKey::createNull(); 563 blink::WebCryptoKey wrapping_key;
564 ASSERT_EQ(Status::Success(), 564 ASSERT_EQ(Status::Success(),
565 ImportKey(blink::WebCryptoKeyFormatRaw, 565 ImportKey(blink::WebCryptoKeyFormatRaw,
566 CryptoData(std::vector<uint8_t>(16)), 566 CryptoData(std::vector<uint8_t>(16)),
567 unwrap_algorithm, 567 unwrap_algorithm,
568 true, 568 true,
569 blink::WebCryptoKeyUsageUnwrapKey, 569 blink::WebCryptoKeyUsageUnwrapKey,
570 &wrapping_key)); 570 &wrapping_key));
571 571
572 // The JWK plaintext is: 572 // The JWK plaintext is:
573 // { "kty": "RSA","alg": "RS256","n": "...","e": "AQAB"} 573 // { "kty": "RSA","alg": "RS256","n": "...","e": "AQAB"}
574 574
575 const char* kWrappedJwk = 575 const char* kWrappedJwk =
576 "CE8DAEF99E977EE58958B8C4494755C846E883B2ECA575C5366622839AF71AB30875F152" 576 "CE8DAEF99E977EE58958B8C4494755C846E883B2ECA575C5366622839AF71AB30875F152"
577 "E8E33E15A7817A3A2874EB53EFE05C774D98BC936BA9BA29BEB8BB3F3C3CE2323CB3359D" 577 "E8E33E15A7817A3A2874EB53EFE05C774D98BC936BA9BA29BEB8BB3F3C3CE2323CB3359D"
578 "E3F426605CF95CCF0E01E870ABD7E35F62E030B5FB6E520A5885514D1D850FB64B57806D" 578 "E3F426605CF95CCF0E01E870ABD7E35F62E030B5FB6E520A5885514D1D850FB64B57806D"
579 "1ADA57C6E27DF345D8292D80F6B074F1BE51C4CF3D76ECC8886218551308681B44FAC60B" 579 "1ADA57C6E27DF345D8292D80F6B074F1BE51C4CF3D76ECC8886218551308681B44FAC60B"
580 "8CF6EA439BC63239103D0AE81ADB96F908680586C6169284E32EB7DD09D31103EBDAC0C2" 580 "8CF6EA439BC63239103D0AE81ADB96F908680586C6169284E32EB7DD09D31103EBDAC0C2"
581 "40C72DCF0AEA454113CC47457B13305B25507CBEAB9BDC8D8E0F867F9167F9DCEF0D9F9B" 581 "40C72DCF0AEA454113CC47457B13305B25507CBEAB9BDC8D8E0F867F9167F9DCEF0D9F9B"
582 "30F2EE83CEDFD51136852C8A5939B768"; 582 "30F2EE83CEDFD51136852C8A5939B768";
583 583
584 for (size_t i = 0; i < arraysize(bad_usages); ++i) { 584 for (size_t i = 0; i < arraysize(bad_usages); ++i) {
585 SCOPED_TRACE(i); 585 SCOPED_TRACE(i);
586 586
587 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 587 blink::WebCryptoKey key;
588 588
589 ASSERT_EQ(Status::ErrorCreateKeyBadUsages(), 589 ASSERT_EQ(Status::ErrorCreateKeyBadUsages(),
590 UnwrapKey(blink::WebCryptoKeyFormatJwk, 590 UnwrapKey(blink::WebCryptoKeyFormatJwk,
591 CryptoData(HexStringToBytes(kWrappedJwk)), 591 CryptoData(HexStringToBytes(kWrappedJwk)),
592 wrapping_key, 592 wrapping_key,
593 unwrap_algorithm, 593 unwrap_algorithm,
594 CreateRsaHashedImportAlgorithm( 594 CreateRsaHashedImportAlgorithm(
595 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 595 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
596 blink::WebCryptoAlgorithmIdSha256), 596 blink::WebCryptoAlgorithmIdSha256),
597 true, 597 true,
598 bad_usages[i], 598 bad_usages[i],
599 &key)); 599 &key));
600 } 600 }
601 } 601 }
602 602
603 } // namespace 603 } // namespace
604 604
605 } // namespace webcrypto 605 } // namespace webcrypto
606 606
607 } // namespace content 607 } // namespace content
OLDNEW
« no previous file with comments | « content/child/webcrypto/test/aes_gcm_unittest.cc ('k') | content/child/webcrypto/test/hmac_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698