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

Unified Diff: content/child/webcrypto/test/rsa_ssa_unittest.cc

Issue 681163002: Cleanup: Move some RSA key tests to data files. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/test/data/webcrypto/bad_rsa_keys.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 34037309a77055c96aae6ee6eb76fb3b62a0dd26..b30700200c2ccf4e6789c046814336ebcc81f807 100644
--- a/content/child/webcrypto/test/rsa_ssa_unittest.cc
+++ b/content/child/webcrypto/test/rsa_ssa_unittest.cc
@@ -147,58 +147,6 @@ TEST(WebCryptoRsaSsaTest, ImportExportPkcs8) {
&key));
}
-// Tests importing of PKCS8 data that does not define a valid RSA key.
-// TODO(eroman): Move to bad_rsa_keys.json
-TEST(WebCryptoRsaSsaTest, ImportInvalidPkcs8) {
- if (!SupportsRsaPrivateKeyImport())
- return;
-
- // kPrivateKeyPkcs8DerHex defines an RSA private key in PKCS8 format, whose
- // parameters appear at the following offsets:
- //
- // n: (offset=36, len=129)
- // e: (offset=167, len=3)
- // d: (offset=173, len=128)
- // p: (offset=303, len=65)
- // q: (offset=370, len=65)
- // dp: (offset=437, len=64)
- // dq; (offset=503, len=64)
- // qi: (offset=569, len=64)
-
- // Do several tests, each of which invert a single byte within the input.
- const unsigned int kOffsetsToCorrupt[] = {
- 50, // inside n
- 168, // inside e
- 175, // inside d
- 333, // inside p
- 373, // inside q
- 450, // inside dp
- 550, // inside dq
- 600, // inside qi
- };
-
- for (size_t test_index = 0; test_index < arraysize(kOffsetsToCorrupt);
- ++test_index) {
- SCOPED_TRACE(test_index);
-
- unsigned int i = kOffsetsToCorrupt[test_index];
- std::vector<uint8_t> corrupted_data =
- HexStringToBytes(kPrivateKeyPkcs8DerHex);
- corrupted_data[i] = ~corrupted_data[i];
-
- blink::WebCryptoKey key;
- EXPECT_EQ(Status::DataError(),
- ImportKey(blink::WebCryptoKeyFormatPkcs8,
- CryptoData(corrupted_data),
- CreateRsaHashedImportAlgorithm(
- blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
- blink::WebCryptoAlgorithmIdSha1),
- true,
- blink::WebCryptoKeyUsageSign,
- &key));
- }
-}
-
// Tests JWK import and export by doing a roundtrip key conversion and ensuring
// it was lossless:
//
@@ -384,112 +332,6 @@ TEST(WebCryptoRsaSsaTest, ImportJwkExistingModulusAndInvalid) {
&key2));
}
-// Import a JWK RSA private key with some optional parameters missing (q, dp,
-// dq, qi).
-//
-// The only optional parameter included is "p".
-//
-// This fails because JWA says that producers must include either ALL optional
-// parameters or NONE.
-// TODO(eroman): Move to bad_rsa_keys.json
-TEST(WebCryptoRsaSsaTest, ImportRsaPrivateKeyJwkMissingOptionalParams) {
- blink::WebCryptoKey key;
-
- base::DictionaryValue dict;
- dict.SetString("kty", "RSA");
- dict.SetString("alg", "RS1");
-
- dict.SetString(
- "n",
- "pW5KDnAQF1iaUYfcfqhB0Vby7A42rVKkTf6x5h962ZHYxRBW_-2xYrTA8oOhKoijlN_"
- "1JqtykcuzB86r_OCx39XNlQgJbVsri2311nHvY3fAkhyyPCcKcOJZjm_4nRnxBazC0_"
- "DLNfKSgOE4a29kxO8i4eHyDQzoz_siSb2aITc");
- dict.SetString("e", "AQAB");
- dict.SetString(
- "d",
- "M6UEKpCyfU9UUcqbu9C0R3GhAa-IQ0Cu-YhfKku-"
- "kuiUpySsPFaMj5eFOtB8AmbIxqPKCSnx6PESMYhEKfxNmuVf7olqEM5wfD7X5zTkRyejlXRQ"
- "GlMmgxCcKrrKuig8MbS9L1PD7jfjUs7jT55QO9gMBiKtecbc7og1R8ajsyU");
-
- dict.SetString("p",
- "5-"
- "iUJyCod1Fyc6NWBT6iobwMlKpy1VxuhilrLfyWeUjApyy8zKfqyzVwbgmh31W"
- "hU1vZs8w0Fgs7bc0-2o5kQw");
-
- ASSERT_EQ(Status::ErrorJwkPropertyMissing("q"),
- ImportKeyJwkFromDict(dict,
- CreateRsaHashedImportAlgorithm(
- blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
- blink::WebCryptoAlgorithmIdSha1),
- true,
- blink::WebCryptoKeyUsageSign,
- &key));
-}
-
-// Import a JWK RSA private key, without any of the optional parameters.
-//
-// According to JWA, such keys are valid, but applications SHOULD
-// include all the parameters when sending, and recipients MAY
-// accept them, but are not required to. Chromium's WebCrypto does
-// not allow such degenerate keys.
-// TODO(eroman): Move to bad_rsa_keys.json
-TEST(WebCryptoRsaSsaTest, ImportRsaPrivateKeyJwkIncorrectOptionalEmpty) {
- if (!SupportsRsaPrivateKeyImport())
- return;
-
- blink::WebCryptoKey key;
-
- base::DictionaryValue dict;
- dict.SetString("kty", "RSA");
- dict.SetString("alg", "RS1");
-
- dict.SetString(
- "n",
- "pW5KDnAQF1iaUYfcfqhB0Vby7A42rVKkTf6x5h962ZHYxRBW_-2xYrTA8oOhKoijlN_"
- "1JqtykcuzB86r_OCx39XNlQgJbVsri2311nHvY3fAkhyyPCcKcOJZjm_4nRnxBazC0_"
- "DLNfKSgOE4a29kxO8i4eHyDQzoz_siSb2aITc");
- dict.SetString("e", "AQAB");
- dict.SetString(
- "d",
- "M6UEKpCyfU9UUcqbu9C0R3GhAa-IQ0Cu-YhfKku-"
- "kuiUpySsPFaMj5eFOtB8AmbIxqPKCSnx6PESMYhEKfxNmuVf7olqEM5wfD7X5zTkRyejlXRQ"
- "GlMmgxCcKrrKuig8MbS9L1PD7jfjUs7jT55QO9gMBiKtecbc7og1R8ajsyU");
-
- ASSERT_EQ(Status::ErrorJwkPropertyMissing("p"),
- ImportKeyJwkFromDict(dict,
- CreateRsaHashedImportAlgorithm(
- blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
- blink::WebCryptoAlgorithmIdSha1),
- true,
- blink::WebCryptoKeyUsageSign,
- &key));
-}
-
-// Tries importing a public RSA key whose exponent contains leading zeros.
-// TODO(eroman): Move to bad_rsa_keys.json
-TEST(WebCryptoRsaSsaTest, ImportJwkRsaNonMinimalExponent) {
- base::DictionaryValue dict;
-
- dict.SetString("kty", "RSA");
- dict.SetString("e", "AAEAAQ"); // 00 01 00 01
- dict.SetString(
- "n",
- "qLOyhK-OtQs4cDSoYPFGxJGfMYdjzWxVmMiuSBGh4KvEx-CwgtaTpef87Wdc9GaFEncsDLxk"
- "p0LGxjD1M8jMcvYq6DPEC_JYQumEu3i9v5fAEH1VvbZi9cTg-rmEXLUUjvc5LdOq_5OuHmtm"
- "e7PUJHYW1PW6ENTP0ibeiNOfFvs");
-
- blink::WebCryptoKey key;
-
- EXPECT_EQ(Status::ErrorJwkBigIntegerHasLeadingZero("e"),
- ImportKeyJwkFromDict(dict,
- CreateRsaHashedImportAlgorithm(
- blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
- blink::WebCryptoAlgorithmIdSha256),
- false,
- blink::WebCryptoKeyUsageVerify,
- &key));
-}
-
TEST(WebCryptoRsaSsaTest, GenerateKeyPairRsa) {
// Note: using unrealistic short key lengths here to avoid bogging down tests.
« no previous file with comments | « no previous file | content/test/data/webcrypto/bad_rsa_keys.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698