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

Side by Side Diff: content/child/webcrypto/shared_crypto_unittest.cc

Issue 203753009: [webcrypto] Add PKCS#8 export for RSA private keys for NSS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « content/child/webcrypto/shared_crypto.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 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 792 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 CreateAesCbcAlgorithm(iv), 803 CreateAesCbcAlgorithm(iv),
804 true, 804 true,
805 blink::WebCryptoKeyUsageEncrypt, 805 blink::WebCryptoKeyUsageEncrypt,
806 &key)); 806 &key));
807 } 807 }
808 808
809 // Fail exporting the key in SPKI and PKCS#8 formats (not allowed for secret 809 // Fail exporting the key in SPKI and PKCS#8 formats (not allowed for secret
810 // keys). 810 // keys).
811 EXPECT_STATUS(Status::ErrorUnexpectedKeyType(), 811 EXPECT_STATUS(Status::ErrorUnexpectedKeyType(),
812 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output)); 812 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output));
813 EXPECT_STATUS(Status::ErrorUnsupported(), 813 EXPECT_STATUS(Status::ErrorUnexpectedKeyType(),
814 ExportKey(blink::WebCryptoKeyFormatPkcs8, key, &output)); 814 ExportKey(blink::WebCryptoKeyFormatPkcs8, key, &output));
815 } 815 }
816 816
817 TEST_F(SharedCryptoTest, MAYBE(AesCbcSampleSets)) { 817 TEST_F(SharedCryptoTest, MAYBE(AesCbcSampleSets)) {
818 scoped_ptr<base::ListValue> tests; 818 scoped_ptr<base::ListValue> tests;
819 ASSERT_TRUE(ReadJsonTestFileToList("aes_cbc.json", &tests)); 819 ASSERT_TRUE(ReadJsonTestFileToList("aes_cbc.json", &tests));
820 820
821 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) { 821 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) {
822 SCOPED_TRACE(test_index); 822 SCOPED_TRACE(test_index);
823 base::DictionaryValue* test; 823 base::DictionaryValue* test;
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after
1674 CreateAlgorithm(blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5), 1674 CreateAlgorithm(blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5),
1675 false, 1675 false,
1676 blink::WebCryptoKeyUsageEncrypt, 1676 blink::WebCryptoKeyUsageEncrypt,
1677 &key)); 1677 &key));
1678 EXPECT_TRUE(key.handle()); 1678 EXPECT_TRUE(key.handle());
1679 EXPECT_FALSE(key.extractable()); 1679 EXPECT_FALSE(key.extractable());
1680 EXPECT_STATUS(Status::ErrorKeyNotExtractable(), 1680 EXPECT_STATUS(Status::ErrorKeyNotExtractable(),
1681 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output)); 1681 ExportKey(blink::WebCryptoKeyFormatSpki, key, &output));
1682 } 1682 }
1683 1683
1684 TEST_F(SharedCryptoTest, MAYBE(ImportPkcs8)) { 1684 TEST_F(SharedCryptoTest, MAYBE(ImportExportPkcs8)) {
1685 // Passing case: Import a valid RSA key in PKCS#8 format. 1685 // Passing case: Import a valid RSA key in PKCS#8 format.
1686 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 1686 blink::WebCryptoKey key = blink::WebCryptoKey::createNull();
1687 ASSERT_STATUS_SUCCESS(ImportKey( 1687 ASSERT_STATUS_SUCCESS(ImportKey(
1688 blink::WebCryptoKeyFormatPkcs8, 1688 blink::WebCryptoKeyFormatPkcs8,
1689 CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)), 1689 CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)),
1690 CreateRsaHashedImportAlgorithm(blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 1690 CreateRsaHashedImportAlgorithm(blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
1691 blink::WebCryptoAlgorithmIdSha1), 1691 blink::WebCryptoAlgorithmIdSha1),
1692 true, 1692 true,
1693 blink::WebCryptoKeyUsageSign, 1693 blink::WebCryptoKeyUsageSign,
1694 &key)); 1694 &key));
1695 EXPECT_TRUE(key.handle()); 1695 EXPECT_TRUE(key.handle());
1696 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, key.type()); 1696 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, key.type());
1697 EXPECT_TRUE(key.extractable()); 1697 EXPECT_TRUE(key.extractable());
1698 EXPECT_EQ(blink::WebCryptoKeyUsageSign, key.usages()); 1698 EXPECT_EQ(blink::WebCryptoKeyUsageSign, key.usages());
1699 EXPECT_EQ(blink::WebCryptoAlgorithmIdSha1, 1699 EXPECT_EQ(blink::WebCryptoAlgorithmIdSha1,
1700 key.algorithm().rsaHashedParams()->hash().id()); 1700 key.algorithm().rsaHashedParams()->hash().id());
1701 EXPECT_EQ(kModulusLengthBits, 1701 EXPECT_EQ(kModulusLengthBits,
1702 key.algorithm().rsaHashedParams()->modulusLengthBits()); 1702 key.algorithm().rsaHashedParams()->modulusLengthBits());
1703 ExpectCryptoDataMatchesHex( 1703 ExpectCryptoDataMatchesHex(
1704 "010001", 1704 "010001",
1705 CryptoData(key.algorithm().rsaHashedParams()->publicExponent())); 1705 CryptoData(key.algorithm().rsaHashedParams()->publicExponent()));
1706 1706
1707 blink::WebArrayBuffer exported_key;
1708 ASSERT_STATUS_SUCCESS(
1709 ExportKey(blink::WebCryptoKeyFormatPkcs8, key, &exported_key));
1710 ExpectArrayBufferMatchesHex(kPrivateKeyPkcs8DerHex, exported_key);
1711
1707 // Failing case: Empty PKCS#8 data 1712 // Failing case: Empty PKCS#8 data
1708 EXPECT_STATUS(Status::ErrorImportEmptyKeyData(), 1713 EXPECT_STATUS(Status::ErrorImportEmptyKeyData(),
1709 ImportKey(blink::WebCryptoKeyFormatPkcs8, 1714 ImportKey(blink::WebCryptoKeyFormatPkcs8,
1710 CryptoData(std::vector<uint8>()), 1715 CryptoData(std::vector<uint8>()),
1711 CreateRsaHashedImportAlgorithm( 1716 CreateRsaHashedImportAlgorithm(
1712 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 1717 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
1713 blink::WebCryptoAlgorithmIdSha1), 1718 blink::WebCryptoAlgorithmIdSha1),
1714 true, 1719 true,
1715 blink::WebCryptoKeyUsageSign, 1720 blink::WebCryptoKeyUsageSign,
1716 &key)); 1721 &key));
(...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after
3042 algorithm, 3047 algorithm,
3043 CreateAesCbcAlgorithm(std::vector<uint8>(0, 16)), 3048 CreateAesCbcAlgorithm(std::vector<uint8>(0, 16)),
3044 true, 3049 true,
3045 blink::WebCryptoKeyUsageEncrypt, 3050 blink::WebCryptoKeyUsageEncrypt,
3046 &unwrapped_key)); 3051 &unwrapped_key));
3047 } 3052 }
3048 3053
3049 } // namespace webcrypto 3054 } // namespace webcrypto
3050 3055
3051 } // namespace content 3056 } // namespace content
OLDNEW
« no previous file with comments | « content/child/webcrypto/shared_crypto.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698