Index: net/cert/cert_verify_proc_unittest.cc |
diff --git a/net/cert/cert_verify_proc_unittest.cc b/net/cert/cert_verify_proc_unittest.cc |
index fdb254d1bc5fc94e8f1c4166efb732dc5340a8e0..a1bde4fc870ae20e28a13321c562aac8e47c9496 100644 |
--- a/net/cert/cert_verify_proc_unittest.cc |
+++ b/net/cert/cert_verify_proc_unittest.cc |
@@ -1199,14 +1199,9 @@ TEST_P(CertVerifyProcInternalTest, PublicKeyHashes) { |
} |
// A regression test for http://crbug.com/70293. |
-// The Key Usage extension in this RSA SSL server certificate does not have |
-// the keyEncipherment bit. |
-TEST_P(CertVerifyProcInternalTest, InvalidKeyUsage) { |
- if (verify_proc_type() == CERT_VERIFY_PROC_BUILTIN) { |
- LOG(INFO) << "TODO(crbug.com/649017): Skipping test as not yet implemented " |
- "in builting verifier"; |
- return; |
- } |
+// The certificate in question has a key purpose of clientAuth, and also lacks |
+// the required key usage for serverAuth. |
+TEST_P(CertVerifyProcInternalTest, WrongKeyPurpose) { |
base::FilePath certs_dir = GetTestCertsDirectory(); |
scoped_refptr<X509Certificate> server_cert = |
@@ -1218,25 +1213,27 @@ TEST_P(CertVerifyProcInternalTest, InvalidKeyUsage) { |
int error = Verify(server_cert.get(), "jira.aquameta.com", flags, NULL, |
CertificateList(), &verify_result); |
- // TODO(eroman): Change the test data so results are consistent across |
- // verifiers. |
- if (verify_proc_type() == CERT_VERIFY_PROC_OPENSSL) { |
- // This certificate has two errors: "invalid key usage" and "untrusted CA". |
- // However, OpenSSL returns only one (the latter), and we can't detect |
- // the other errors. |
- EXPECT_THAT(error, IsError(ERR_CERT_AUTHORITY_INVALID)); |
- } else { |
- EXPECT_THAT(error, IsError(ERR_CERT_INVALID)); |
+ EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_COMMON_NAME_INVALID); |
+ |
+ // TODO(crbug.com/649017): Don't special-case builtin verifier. |
+ if (verify_proc_type() != CERT_VERIFY_PROC_BUILTIN) |
EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_INVALID); |
- } |
+ |
// TODO(wtc): fix http://crbug.com/75520 to get all the certificate errors |
// from NSS. |
if (verify_proc_type() != CERT_VERIFY_PROC_NSS && |
- verify_proc_type() != CERT_VERIFY_PROC_IOS && |
verify_proc_type() != CERT_VERIFY_PROC_ANDROID) { |
// The certificate is issued by an unknown CA. |
EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_AUTHORITY_INVALID); |
} |
+ |
+ // TODO(crbug.com/649017): Don't special-case builtin verifier. |
+ if (verify_proc_type() == CERT_VERIFY_PROC_OPENSSL || |
+ verify_proc_type() == CERT_VERIFY_PROC_BUILTIN) { |
+ EXPECT_THAT(error, IsError(ERR_CERT_AUTHORITY_INVALID)); |
+ } else { |
+ EXPECT_THAT(error, IsError(ERR_CERT_INVALID)); |
+ } |
} |
// Basic test for returning the chain in CertVerifyResult. Note that the |