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/shared_crypto.h" | 5 #include "content/child/webcrypto/shared_crypto.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
509 cipher_text_with_tag.reserve(cipher_text.size() + authentication_tag.size()); | 509 cipher_text_with_tag.reserve(cipher_text.size() + authentication_tag.size()); |
510 cipher_text_with_tag.insert( | 510 cipher_text_with_tag.insert( |
511 cipher_text_with_tag.end(), cipher_text.begin(), cipher_text.end()); | 511 cipher_text_with_tag.end(), cipher_text.begin(), cipher_text.end()); |
512 cipher_text_with_tag.insert(cipher_text_with_tag.end(), | 512 cipher_text_with_tag.insert(cipher_text_with_tag.end(), |
513 authentication_tag.begin(), | 513 authentication_tag.begin(), |
514 authentication_tag.end()); | 514 authentication_tag.end()); |
515 | 515 |
516 return Decrypt(algorithm, key, CryptoData(cipher_text_with_tag), plain_text); | 516 return Decrypt(algorithm, key, CryptoData(cipher_text_with_tag), plain_text); |
517 } | 517 } |
518 | 518 |
| 519 Status ImportKeyJwk(const CryptoData& key_data, |
| 520 const blink::WebCryptoAlgorithm& algorithm, |
| 521 bool extractable, |
| 522 blink::WebCryptoKeyUsageMask usage_mask, |
| 523 blink::WebCryptoKey* key) { |
| 524 return ImportKey(blink::WebCryptoKeyFormatJwk, |
| 525 key_data, |
| 526 algorithm, |
| 527 extractable, |
| 528 usage_mask, |
| 529 key); |
| 530 } |
| 531 |
519 Status ImportKeyJwkFromDict(const base::DictionaryValue& dict, | 532 Status ImportKeyJwkFromDict(const base::DictionaryValue& dict, |
520 const blink::WebCryptoAlgorithm& algorithm, | 533 const blink::WebCryptoAlgorithm& algorithm, |
521 bool extractable, | 534 bool extractable, |
522 blink::WebCryptoKeyUsageMask usage_mask, | 535 blink::WebCryptoKeyUsageMask usage_mask, |
523 blink::WebCryptoKey* key) { | 536 blink::WebCryptoKey* key) { |
524 return ImportKeyJwk(CryptoData(MakeJsonVector(dict)), | 537 return ImportKeyJwk(CryptoData(MakeJsonVector(dict)), |
525 algorithm, | 538 algorithm, |
526 extractable, | 539 extractable, |
527 usage_mask, | 540 usage_mask, |
528 key); | 541 key); |
(...skipping 1184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1713 if (test.algorithm.id() == blink::WebCryptoAlgorithmIdAesGcm && | 1726 if (test.algorithm.id() == blink::WebCryptoAlgorithmIdAesGcm && |
1714 !SupportsAesGcm()) { | 1727 !SupportsAesGcm()) { |
1715 continue; | 1728 continue; |
1716 } | 1729 } |
1717 | 1730 |
1718 // Import a raw key. | 1731 // Import a raw key. |
1719 key = ImportSecretKeyFromRaw( | 1732 key = ImportSecretKeyFromRaw( |
1720 HexStringToBytes(test.key_hex), test.algorithm, test.usage); | 1733 HexStringToBytes(test.key_hex), test.algorithm, test.usage); |
1721 | 1734 |
1722 // Export the key in JWK format and validate. | 1735 // Export the key in JWK format and validate. |
1723 ASSERT_STATUS_SUCCESS(ExportKeyJwk(key, &json)); | 1736 ASSERT_STATUS_SUCCESS(ExportKey(blink::WebCryptoKeyFormatJwk, key, &json)); |
1724 EXPECT_TRUE(VerifySecretJwk(json, test.jwk_alg, test.key_hex, test.usage)); | 1737 EXPECT_TRUE(VerifySecretJwk(json, test.jwk_alg, test.key_hex, test.usage)); |
1725 | 1738 |
1726 // Import the JWK-formatted key. | 1739 // Import the JWK-formatted key. |
1727 ASSERT_STATUS_SUCCESS( | 1740 ASSERT_STATUS_SUCCESS( |
1728 ImportKeyJwk(CryptoData(json), test.algorithm, true, test.usage, &key)); | 1741 ImportKeyJwk(CryptoData(json), test.algorithm, true, test.usage, &key)); |
1729 EXPECT_TRUE(key.handle()); | 1742 EXPECT_TRUE(key.handle()); |
1730 EXPECT_EQ(blink::WebCryptoKeyTypeSecret, key.type()); | 1743 EXPECT_EQ(blink::WebCryptoKeyTypeSecret, key.type()); |
1731 EXPECT_EQ(test.algorithm.id(), key.algorithm().id()); | 1744 EXPECT_EQ(test.algorithm.id(), key.algorithm().id()); |
1732 EXPECT_EQ(true, key.extractable()); | 1745 EXPECT_EQ(true, key.extractable()); |
1733 EXPECT_EQ(test.usage, key.usages()); | 1746 EXPECT_EQ(test.usage, key.usages()); |
(...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3179 algorithm, | 3192 algorithm, |
3180 CreateAesCbcAlgorithm(std::vector<uint8>(0, 16)), | 3193 CreateAesCbcAlgorithm(std::vector<uint8>(0, 16)), |
3181 true, | 3194 true, |
3182 blink::WebCryptoKeyUsageEncrypt, | 3195 blink::WebCryptoKeyUsageEncrypt, |
3183 &unwrapped_key)); | 3196 &unwrapped_key)); |
3184 } | 3197 } |
3185 | 3198 |
3186 } // namespace webcrypto | 3199 } // namespace webcrypto |
3187 | 3200 |
3188 } // namespace content | 3201 } // namespace content |
OLD | NEW |