| Index: net/base/x509_certificate_unittest.cc
|
| ===================================================================
|
| --- net/base/x509_certificate_unittest.cc (revision 110129)
|
| +++ net/base/x509_certificate_unittest.cc (working copy)
|
| @@ -592,6 +592,40 @@
|
| EXPECT_NE(OK, error);
|
| }
|
|
|
| +TEST(X509CertificateTest, RejectWeakKeys) {
|
| + FilePath certs_dir = GetTestCertsDirectory();
|
| +
|
| + // Self-signed cert with weak (768-bit) key.
|
| + scoped_refptr<X509Certificate> weak_cert =
|
| + ImportCertFromFile(certs_dir, "weak-key.pem");
|
| + ASSERT_NE(static_cast<X509Certificate*>(NULL), weak_cert);
|
| +
|
| + CertVerifyResult verify_result;
|
| + int flags = 0;
|
| + int error = weak_cert->Verify("broken.example.com", flags, NULL,
|
| + &verify_result);
|
| + EXPECT_NE(OK, error);
|
| + EXPECT_EQ(CERT_STATUS_WEAK_KEY,
|
| + verify_result.cert_status & CERT_STATUS_WEAK_KEY);
|
| +
|
| + // EE has 2048-bit key, signer is weak_cert. Even though the EE is fine,
|
| + // we must still reject it.
|
| + scoped_refptr<X509Certificate> good_cert =
|
| + ImportCertFromFile(certs_dir, "strong-key-weak-signer.pem");
|
| + ASSERT_NE(static_cast<X509Certificate*>(NULL), good_cert);
|
| +
|
| + X509Certificate::OSCertHandles intermediates;
|
| + intermediates.push_back(weak_cert->os_cert_handle());
|
| + scoped_refptr<X509Certificate> cert_chain =
|
| + X509Certificate::CreateFromHandle(good_cert->os_cert_handle(),
|
| + intermediates);
|
| +
|
| + error = cert_chain->Verify("www.example.org", flags, NULL, &verify_result);
|
| + EXPECT_NE(OK, error);
|
| + EXPECT_EQ(CERT_STATUS_WEAK_KEY,
|
| + verify_result.cert_status & CERT_STATUS_WEAK_KEY);
|
| +}
|
| +
|
| TEST(X509CertificateTest, DigiNotarCerts) {
|
| static const char* const kDigiNotarFilenames[] = {
|
| "diginotar_root_ca.pem",
|
| @@ -677,7 +711,7 @@
|
| base::SHA1HashBytes(reinterpret_cast<const uint8*>(spkiBytes.data()),
|
| spkiBytes.size(), hash);
|
|
|
| - EXPECT_TRUE(0 == memcmp(hash, nistSPKIHash, sizeof(hash)));
|
| + EXPECT_EQ(0, memcmp(hash, nistSPKIHash, sizeof(hash)));
|
| }
|
|
|
| TEST(X509CertificateTest, ExtractCRLURLsFromDERCert) {
|
| @@ -1332,7 +1366,7 @@
|
| { false, "f.uk", ".uk" },
|
| { false, "w.bar.foo.com", "?.bar.foo.com" },
|
| { false, "www.foo.com", "(www|ftp).foo.com" },
|
| - { false, "www.foo.com", "www.foo.com#" }, // # = null char.
|
| + { false, "www.foo.com", "www.foo.com#" }, // # = null char.
|
| { false, "www.foo.com", "", "www.foo.com#*.foo.com,#,#" },
|
| { false, "www.house.example", "ww.house.example" },
|
| { false, "test.org", "", "www.test.org,*.test.org,*.org" },
|
| @@ -1470,7 +1504,7 @@
|
| for (size_t i = 0; i < ip_addressses_ascii.size(); ++i) {
|
| std::string& addr_ascii = ip_addressses_ascii[i];
|
| ASSERT_NE(0U, addr_ascii.length());
|
| - if (addr_ascii[0] == 'x') { // Hex encoded address
|
| + if (addr_ascii[0] == 'x') { // Hex encoded address
|
| addr_ascii.erase(0, 1);
|
| std::vector<uint8> bytes;
|
| EXPECT_TRUE(base::HexStringToBytes(addr_ascii, &bytes))
|
|
|