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

Side by Side Diff: components/webcrypto/test/rsa_ssa_unittest.cc

Issue 1077273002: html_viewer: Move webcrypto to a place where html_viewer can use it. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase to ToT Created 5 years, 8 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
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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/stl_util.h" 6 #include "base/stl_util.h"
7 #include "content/child/webcrypto/algorithm_dispatch.h" 7 #include "components/webcrypto/algorithm_dispatch.h"
8 #include "content/child/webcrypto/crypto_data.h" 8 #include "components/webcrypto/crypto_data.h"
9 #include "content/child/webcrypto/status.h" 9 #include "components/webcrypto/status.h"
10 #include "content/child/webcrypto/test/test_helpers.h" 10 #include "components/webcrypto/test/test_helpers.h"
11 #include "content/child/webcrypto/webcrypto_util.h" 11 #include "components/webcrypto/webcrypto_util.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h" 13 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h"
14 #include "third_party/WebKit/public/platform/WebCryptoKey.h" 14 #include "third_party/WebKit/public/platform/WebCryptoKey.h"
15 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h" 15 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h"
16 16
17 namespace content {
18
19 namespace webcrypto { 17 namespace webcrypto {
20 18
21 namespace { 19 namespace {
22 20
23 // Helper for ImportJwkRsaFailures. Restores the JWK JSON 21 // Helper for ImportJwkRsaFailures. Restores the JWK JSON
24 // dictionary to a good state 22 // dictionary to a good state
25 void RestoreJwkRsaDictionary(base::DictionaryValue* dict) { 23 void RestoreJwkRsaDictionary(base::DictionaryValue* dict) {
26 dict->Clear(); 24 dict->Clear();
27 dict->SetString("kty", "RSA"); 25 dict->SetString("kty", "RSA");
28 dict->SetString("alg", "RS256"); 26 dict->SetString("alg", "RS256");
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 blink::WebCryptoAlgorithmIdSha256, modulus_length, 410 blink::WebCryptoAlgorithmIdSha256, modulus_length,
413 exponent_with_leading_zeros); 411 exponent_with_leading_zeros);
414 EXPECT_EQ(Status::ErrorGenerateKeyPublicExponent(), 412 EXPECT_EQ(Status::ErrorGenerateKeyPublicExponent(),
415 GenerateKeyPair(algorithm, extractable, usages, &public_key, 413 GenerateKeyPair(algorithm, extractable, usages, &public_key,
416 &private_key)); 414 &private_key));
417 415
418 // Key generation success using exponent with leading zeros. 416 // Key generation success using exponent with leading zeros.
419 exponent_with_leading_zeros.insert(exponent_with_leading_zeros.end(), 417 exponent_with_leading_zeros.insert(exponent_with_leading_zeros.end(),
420 public_exponent.begin(), 418 public_exponent.begin(),
421 public_exponent.end()); 419 public_exponent.end());
422 algorithm = 420 algorithm = CreateRsaHashedKeyGenAlgorithm(
423 CreateRsaHashedKeyGenAlgorithm(blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 421 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
424 blink::WebCryptoAlgorithmIdSha256, 422 blink::WebCryptoAlgorithmIdSha256, modulus_length,
425 modulus_length, 423 exponent_with_leading_zeros);
426 exponent_with_leading_zeros);
427 EXPECT_EQ(Status::Success(), GenerateKeyPair(algorithm, extractable, usages, 424 EXPECT_EQ(Status::Success(), GenerateKeyPair(algorithm, extractable, usages,
428 &public_key, &private_key)); 425 &public_key, &private_key));
429 EXPECT_FALSE(public_key.isNull()); 426 EXPECT_FALSE(public_key.isNull());
430 EXPECT_FALSE(private_key.isNull()); 427 EXPECT_FALSE(private_key.isNull());
431 EXPECT_EQ(blink::WebCryptoKeyTypePublic, public_key.type()); 428 EXPECT_EQ(blink::WebCryptoKeyTypePublic, public_key.type());
432 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, private_key.type()); 429 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, private_key.type());
433 EXPECT_TRUE(public_key.extractable()); 430 EXPECT_TRUE(public_key.extractable());
434 EXPECT_EQ(extractable, private_key.extractable()); 431 EXPECT_EQ(extractable, private_key.extractable());
435 EXPECT_EQ(public_usages, public_key.usages()); 432 EXPECT_EQ(public_usages, public_key.usages());
436 EXPECT_EQ(private_usages, private_key.usages()); 433 EXPECT_EQ(private_usages, private_key.usages());
437 434
438 // Successful WebCryptoAlgorithmIdRsaSsaPkcs1v1_5 key generation (sha1) 435 // Successful WebCryptoAlgorithmIdRsaSsaPkcs1v1_5 key generation (sha1)
439 algorithm = 436 algorithm = CreateRsaHashedKeyGenAlgorithm(
440 CreateRsaHashedKeyGenAlgorithm(blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 437 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
441 blink::WebCryptoAlgorithmIdSha1, 438 blink::WebCryptoAlgorithmIdSha1, modulus_length, public_exponent);
442 modulus_length, 439 EXPECT_EQ(Status::Success(), GenerateKeyPair(algorithm, false, usages,
443 public_exponent); 440 &public_key, &private_key));
444 EXPECT_EQ(
445 Status::Success(),
446 GenerateKeyPair(algorithm, false, usages, &public_key, &private_key));
447 EXPECT_FALSE(public_key.isNull()); 441 EXPECT_FALSE(public_key.isNull());
448 EXPECT_FALSE(private_key.isNull()); 442 EXPECT_FALSE(private_key.isNull());
449 EXPECT_EQ(blink::WebCryptoKeyTypePublic, public_key.type()); 443 EXPECT_EQ(blink::WebCryptoKeyTypePublic, public_key.type());
450 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, private_key.type()); 444 EXPECT_EQ(blink::WebCryptoKeyTypePrivate, private_key.type());
451 EXPECT_EQ(modulus_length, 445 EXPECT_EQ(modulus_length,
452 public_key.algorithm().rsaHashedParams()->modulusLengthBits()); 446 public_key.algorithm().rsaHashedParams()->modulusLengthBits());
453 EXPECT_EQ(modulus_length, 447 EXPECT_EQ(modulus_length,
454 private_key.algorithm().rsaHashedParams()->modulusLengthBits()); 448 private_key.algorithm().rsaHashedParams()->modulusLengthBits());
455 EXPECT_EQ(blink::WebCryptoAlgorithmIdSha1, 449 EXPECT_EQ(blink::WebCryptoAlgorithmIdSha1,
456 public_key.algorithm().rsaHashedParams()->hash().id()); 450 public_key.algorithm().rsaHashedParams()->hash().id());
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 CreateRsaHashedImportAlgorithm( 841 CreateRsaHashedImportAlgorithm(
848 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 842 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
849 blink::WebCryptoAlgorithmIdSha1), 843 blink::WebCryptoAlgorithmIdSha1),
850 true, 0, &private_key)); 844 true, 0, &private_key));
851 845
852 std::vector<uint8_t> public_jwk; 846 std::vector<uint8_t> public_jwk;
853 ASSERT_EQ(Status::Success(), 847 ASSERT_EQ(Status::Success(),
854 ExportKey(blink::WebCryptoKeyFormatJwk, public_key, &public_jwk)); 848 ExportKey(blink::WebCryptoKeyFormatJwk, public_key, &public_jwk));
855 849
856 ASSERT_EQ(Status::Success(), 850 ASSERT_EQ(Status::Success(),
857 ImportKey(blink::WebCryptoKeyFormatJwk, 851 ImportKey(blink::WebCryptoKeyFormatJwk, CryptoData(public_jwk),
858 CryptoData(public_jwk),
859 CreateRsaHashedImportAlgorithm( 852 CreateRsaHashedImportAlgorithm(
860 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 853 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
861 blink::WebCryptoAlgorithmIdSha256), 854 blink::WebCryptoAlgorithmIdSha256),
862 true, 0, &public_key)); 855 true, 0, &public_key));
863 EXPECT_EQ(0, public_key.usages()); 856 EXPECT_EQ(0, public_key.usages());
864 857
865 // With correct usage to get correct imported private_key 858 // With correct usage to get correct imported private_key
866 std::vector<uint8_t> private_jwk; 859 std::vector<uint8_t> private_jwk;
867 ImportKey(blink::WebCryptoKeyFormatPkcs8, 860 ImportKey(
868 CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)), 861 blink::WebCryptoKeyFormatPkcs8,
869 CreateRsaHashedImportAlgorithm( 862 CryptoData(HexStringToBytes(kPrivateKeyPkcs8DerHex)),
870 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 863 CreateRsaHashedImportAlgorithm(blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
871 blink::WebCryptoAlgorithmIdSha1), 864 blink::WebCryptoAlgorithmIdSha1),
872 true, blink::WebCryptoKeyUsageSign, &private_key); 865 true, blink::WebCryptoKeyUsageSign, &private_key);
873 866
874 ASSERT_EQ(Status::Success(), 867 ASSERT_EQ(Status::Success(),
875 ExportKey(blink::WebCryptoKeyFormatJwk, private_key, &private_jwk)); 868 ExportKey(blink::WebCryptoKeyFormatJwk, private_key, &private_jwk));
876 869
877 ASSERT_EQ(Status::ErrorCreateKeyEmptyUsages(), 870 ASSERT_EQ(Status::ErrorCreateKeyEmptyUsages(),
878 ImportKey(blink::WebCryptoKeyFormatJwk, 871 ImportKey(blink::WebCryptoKeyFormatJwk, CryptoData(private_jwk),
879 CryptoData(private_jwk), 872 CreateRsaHashedImportAlgorithm(
880 CreateRsaHashedImportAlgorithm( 873 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
881 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 874 blink::WebCryptoAlgorithmIdSha1),
882 blink::WebCryptoAlgorithmIdSha1), 875 true, 0, &private_key));
883 true, 0, &private_key));
884 } 876 }
885 877
886 TEST(WebCryptoRsaSsaTest, ImportExportJwkRsaPublicKey) { 878 TEST(WebCryptoRsaSsaTest, ImportExportJwkRsaPublicKey) {
887 struct TestCase { 879 struct TestCase {
888 const blink::WebCryptoAlgorithmId hash; 880 const blink::WebCryptoAlgorithmId hash;
889 const blink::WebCryptoKeyUsageMask usage; 881 const blink::WebCryptoKeyUsageMask usage;
890 const char* const jwk_alg; 882 const char* const jwk_alg;
891 }; 883 };
892 const TestCase kTests[] = { 884 const TestCase kTests[] = {
893 {blink::WebCryptoAlgorithmIdSha1, blink::WebCryptoKeyUsageVerify, "RS1"}, 885 {blink::WebCryptoAlgorithmIdSha1, blink::WebCryptoKeyUsageVerify, "RS1"},
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, 1034 blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
1043 blink::WebCryptoAlgorithmIdSha256), 1035 blink::WebCryptoAlgorithmIdSha256),
1044 true, usages, &key); 1036 true, usages, &key);
1045 EXPECT_EQ(test_error, StatusToString(status)); 1037 EXPECT_EQ(test_error, StatusToString(status));
1046 } 1038 }
1047 } 1039 }
1048 1040
1049 } // namespace 1041 } // namespace
1050 1042
1051 } // namespace webcrypto 1043 } // namespace webcrypto
1052
1053 } // namespace content
OLDNEW
« no previous file with comments | « components/webcrypto/test/rsa_pss_unittest.cc ('k') | components/webcrypto/test/sha_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698