Index: content/child/webcrypto/test/rsa_ssa_unittest.cc |
diff --git a/content/child/webcrypto/test/rsa_ssa_unittest.cc b/content/child/webcrypto/test/rsa_ssa_unittest.cc |
index 1733ae78e3a9ce92aef0d0e05bb9d6edd9f4399b..a8f968193f7423696d85f7fd4639be54cab8b895 100644 |
--- a/content/child/webcrypto/test/rsa_ssa_unittest.cc |
+++ b/content/child/webcrypto/test/rsa_ssa_unittest.cc |
@@ -823,6 +823,62 @@ TEST(WebCryptoRsaSsaTest, GenerateKeyPairEmptyUsages) { |
true, 0, &public_key, &private_key)); |
} |
+TEST(WebCryptoRsaSsaTest, ImportKeyEmptyUsages) { |
eroman
2014/12/17 01:23:51
Add a test for
if (!SupportsRsaPrivateKeyImport()
Habib Virji
2014/12/17 15:41:54
Done.
|
+ blink::WebCryptoKey public_key; |
+ blink::WebCryptoKey private_key; |
+ blink::WebCryptoKey key; |
eroman
2014/12/17 01:23:51
It is unclear what this variable means. Can you in
Habib Virji
2014/12/17 15:41:54
Done.
|
+ |
+ // Public without usage does not throw an error. |
+ ASSERT_EQ(Status::Success(), |
eroman
2014/12/17 01:23:51
It would be good if each of these successful Impor
Habib Virji
2014/12/17 15:41:54
Done.
|
+ ImportKey(blink::WebCryptoKeyFormatSpki, |
+ CryptoData(HexStringToBytes(kPublicKeySpkiDerHex)), |
+ CreateRsaHashedImportAlgorithm( |
+ blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, |
+ blink::WebCryptoAlgorithmIdSha256), |
+ true, 0, &public_key)); |
+ |
+ // Private empty usage will throw an error. |
+ ASSERT_EQ(Status::ErrorCreateKeyEmptyUsages(), |
+ ImportKey(blink::WebCryptoKeyFormatPkcs8, |
+ CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)), |
+ CreateRsaHashedImportAlgorithm( |
+ blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, |
+ blink::WebCryptoAlgorithmIdSha1), |
+ true, 0, &private_key)); |
+ |
+ std::vector<uint8_t> public_jwk; |
+ ASSERT_EQ(Status::Success(), |
+ ExportKey(blink::WebCryptoKeyFormatJwk, public_key, &public_jwk)); |
+ |
+ ASSERT_EQ(Status::Success(), |
+ ImportKey(blink::WebCryptoKeyFormatJwk, |
+ CryptoData(public_jwk), |
+ CreateRsaHashedImportAlgorithm( |
+ blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, |
+ blink::WebCryptoAlgorithmIdSha256), |
+ true, 0, &key)); |
+ |
+ // With correct usage to get correct imported private_key |
+ std::vector<uint8_t> private_jwk; |
+ ImportKey(blink::WebCryptoKeyFormatPkcs8, |
+ CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)), |
+ CreateRsaHashedImportAlgorithm( |
+ blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, |
+ blink::WebCryptoAlgorithmIdSha1), |
+ true, blink::WebCryptoKeyUsageSign, &private_key); |
+ |
+ ASSERT_EQ(Status::Success(), |
+ ExportKey(blink::WebCryptoKeyFormatJwk, private_key, &private_jwk)); |
+ |
+ ASSERT_EQ(Status::ErrorCreateKeyEmptyUsages(), |
+ ImportKey(blink::WebCryptoKeyFormatJwk, |
+ CryptoData(private_jwk), |
+ CreateRsaHashedImportAlgorithm( |
+ blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, |
+ blink::WebCryptoAlgorithmIdSha1), |
+ true, 0, &key)); |
+} |
+ |
TEST(WebCryptoRsaSsaTest, ImportExportJwkRsaPublicKey) { |
struct TestCase { |
const blink::WebCryptoAlgorithmId hash; |