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 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 CreateAesCbcAlgorithm(iv), | 801 CreateAesCbcAlgorithm(iv), |
802 true, | 802 true, |
803 blink::WebCryptoKeyUsageEncrypt, | 803 blink::WebCryptoKeyUsageEncrypt, |
804 &key)); | 804 &key)); |
805 } | 805 } |
806 | 806 |
807 // Fail exporting the key in SPKI and PKCS#8 formats (not allowed for secret | 807 // Fail exporting the key in SPKI and PKCS#8 formats (not allowed for secret |
808 // keys). | 808 // keys). |
809 EXPECT_STATUS(Status::ErrorUnexpectedKeyType(), | 809 EXPECT_STATUS(Status::ErrorUnexpectedKeyType(), |
810 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output)); | 810 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output)); |
811 EXPECT_STATUS(Status::ErrorUnsupported(), | 811 EXPECT_STATUS(Status::ErrorUnexpectedKeyType(), |
812 ExportKey(blink::WebCryptoKeyFormatPkcs8, key, &output)); | 812 ExportKey(blink::WebCryptoKeyFormatPkcs8, key, &output)); |
813 } | 813 } |
814 | 814 |
815 TEST_F(SharedCryptoTest, MAYBE(AesCbcSampleSets)) { | 815 TEST_F(SharedCryptoTest, MAYBE(AesCbcSampleSets)) { |
816 scoped_ptr<base::ListValue> tests; | 816 scoped_ptr<base::ListValue> tests; |
817 ASSERT_TRUE(ReadJsonTestFileToList("aes_cbc.json", &tests)); | 817 ASSERT_TRUE(ReadJsonTestFileToList("aes_cbc.json", &tests)); |
818 | 818 |
819 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) { | 819 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) { |
820 SCOPED_TRACE(test_index); | 820 SCOPED_TRACE(test_index); |
821 base::DictionaryValue* test; | 821 base::DictionaryValue* test; |
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1705 CreateAlgorithm(blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5), | 1705 CreateAlgorithm(blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5), |
1706 false, | 1706 false, |
1707 blink::WebCryptoKeyUsageEncrypt, | 1707 blink::WebCryptoKeyUsageEncrypt, |
1708 &key)); | 1708 &key)); |
1709 EXPECT_TRUE(key.handle()); | 1709 EXPECT_TRUE(key.handle()); |
1710 EXPECT_FALSE(key.extractable()); | 1710 EXPECT_FALSE(key.extractable()); |
1711 EXPECT_STATUS(Status::ErrorKeyNotExtractable(), | 1711 EXPECT_STATUS(Status::ErrorKeyNotExtractable(), |
1712 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output)); | 1712 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output)); |
1713 } | 1713 } |
1714 | 1714 |
1715 TEST_F(SharedCryptoTest, MAYBE(ImportPkcs8)) { | 1715 TEST_F(SharedCryptoTest, MAYBE(ImportExportPkcs8)) { |
1716 // Passing case: Import a valid RSA key in PKCS#8 format. | 1716 // Passing case: Import a valid RSA key in PKCS#8 format. |
1717 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); | 1717 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); |
1718 ASSERT_STATUS_SUCCESS(ImportKey( | 1718 ASSERT_STATUS_SUCCESS(ImportKey( |
1719 blink::WebCryptoKeyFormatPkcs8, | 1719 blink::WebCryptoKeyFormatPkcs8, |
1720 CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)), | 1720 CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)), |
1721 CreateRsaHashedImportAlgorithm(blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, | 1721 CreateRsaHashedImportAlgorithm(blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, |
1722 blink::WebCryptoAlgorithmIdSha1), | 1722 blink::WebCryptoAlgorithmIdSha1), |
1723 true, | 1723 true, |
1724 blink::WebCryptoKeyUsageSign, | 1724 blink::WebCryptoKeyUsageSign, |
1725 &key)); | 1725 &key)); |
1726 EXPECT_TRUE(key.handle()); | 1726 EXPECT_TRUE(key.handle()); |
1727 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, key.type()); | 1727 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, key.type()); |
1728 EXPECT_TRUE(key.extractable()); | 1728 EXPECT_TRUE(key.extractable()); |
1729 EXPECT_EQ(blink::WebCryptoKeyUsageSign, key.usages()); | 1729 EXPECT_EQ(blink::WebCryptoKeyUsageSign, key.usages()); |
1730 EXPECT_EQ(blink::WebCryptoAlgorithmIdSha1, | 1730 EXPECT_EQ(blink::WebCryptoAlgorithmIdSha1, |
1731 key.algorithm().rsaHashedParams()->hash().id()); | 1731 key.algorithm().rsaHashedParams()->hash().id()); |
1732 EXPECT_EQ(kModulusLengthBits, | 1732 EXPECT_EQ(kModulusLengthBits, |
1733 key.algorithm().rsaHashedParams()->modulusLengthBits()); | 1733 key.algorithm().rsaHashedParams()->modulusLengthBits()); |
1734 ExpectCryptoDataMatchesHex( | 1734 ExpectCryptoDataMatchesHex( |
1735 "010001", | 1735 "010001", |
1736 CryptoData(key.algorithm().rsaHashedParams()->publicExponent())); | 1736 CryptoData(key.algorithm().rsaHashedParams()->publicExponent())); |
1737 | 1737 |
| 1738 blink::WebArrayBuffer exported_key; |
| 1739 ASSERT_STATUS_SUCCESS( |
| 1740 ExportKey(blink::WebCryptoKeyFormatPkcs8, key, &exported_key)); |
| 1741 ExpectArrayBufferMatchesHex(kPrivateKeyPkcs8DerHex, exported_key); |
| 1742 |
1738 // Failing case: Empty PKCS#8 data | 1743 // Failing case: Empty PKCS#8 data |
1739 EXPECT_STATUS(Status::ErrorImportEmptyKeyData(), | 1744 EXPECT_STATUS(Status::ErrorImportEmptyKeyData(), |
1740 ImportKey(blink::WebCryptoKeyFormatPkcs8, | 1745 ImportKey(blink::WebCryptoKeyFormatPkcs8, |
1741 CryptoData(std::vector<uint8>()), | 1746 CryptoData(std::vector<uint8>()), |
1742 blink::WebCryptoAlgorithm::createNull(), | 1747 blink::WebCryptoAlgorithm::createNull(), |
1743 true, | 1748 true, |
1744 blink::WebCryptoKeyUsageSign, | 1749 blink::WebCryptoKeyUsageSign, |
1745 &key)); | 1750 &key)); |
1746 | 1751 |
1747 // Failing case: Import RSA key with NULL input algorithm. This is not | 1752 // Failing case: Import RSA key with NULL input algorithm. This is not |
(...skipping 1226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2974 wrapping_algorithm, | 2979 wrapping_algorithm, |
2975 key_algorithm, | 2980 key_algorithm, |
2976 true, | 2981 true, |
2977 blink::WebCryptoKeyUsageSign, | 2982 blink::WebCryptoKeyUsageSign, |
2978 &unwrapped_key)); | 2983 &unwrapped_key)); |
2979 } | 2984 } |
2980 | 2985 |
2981 } // namespace webcrypto | 2986 } // namespace webcrypto |
2982 | 2987 |
2983 } // namespace content | 2988 } // namespace content |
OLD | NEW |