| Index: net/cert/nss_cert_database_unittest.cc
|
| diff --git a/net/cert/nss_cert_database_unittest.cc b/net/cert/nss_cert_database_unittest.cc
|
| index 4f65005fd15f2e81b2c7fe9be303bb06f0a4b826..2f6fbeb0822b09f978fa7b1b9594ae300b89350a 100644
|
| --- a/net/cert/nss_cert_database_unittest.cc
|
| +++ b/net/cert/nss_cert_database_unittest.cc
|
| @@ -938,4 +938,47 @@ TEST_F(CertDatabaseNSSTest, TrustIntermediateCa4) {
|
| EXPECT_EQ(0U, verify_result2.cert_status);
|
| }
|
|
|
| +// Importing two certificates with the same issuer and subject common name,
|
| +// but overall distinct subject names, should succeed and generate a unique
|
| +// nickname for the second certificate.
|
| +TEST_F(CertDatabaseNSSTest, ImportDuplicateCommonName) {
|
| + CertificateList certs =
|
| + CreateCertificateListFromFile(GetTestCertsDirectory(),
|
| + "duplicate_cn_1.pem",
|
| + X509Certificate::FORMAT_AUTO);
|
| + ASSERT_EQ(1U, certs.size());
|
| +
|
| + EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
|
| +
|
| + // Import server cert with default trust.
|
| + NSSCertDatabase::ImportCertFailureList failed;
|
| + EXPECT_TRUE(cert_db_->ImportServerCert(
|
| + certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
|
| + EXPECT_EQ(0U, failed.size());
|
| + EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
|
| + cert_db_->GetCertTrust(certs[0], SERVER_CERT));
|
| +
|
| + CertificateList new_certs = ListCertsInSlot(slot_->os_module_handle());
|
| + ASSERT_EQ(1U, new_certs.size());
|
| +
|
| + // Now attempt to import a different certificate with the same common name.
|
| + CertificateList certs2 =
|
| + CreateCertificateListFromFile(GetTestCertsDirectory(),
|
| + "duplicate_cn_2.pem",
|
| + X509Certificate::FORMAT_AUTO);
|
| + ASSERT_EQ(1U, certs2.size());
|
| +
|
| + // Import server cert with default trust.
|
| + EXPECT_TRUE(cert_db_->ImportServerCert(
|
| + certs2, NSSCertDatabase::TRUST_DEFAULT, &failed));
|
| + EXPECT_EQ(0U, failed.size());
|
| + EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
|
| + cert_db_->GetCertTrust(certs2[0], SERVER_CERT));
|
| +
|
| + new_certs = ListCertsInSlot(slot_->os_module_handle());
|
| + ASSERT_EQ(2U, new_certs.size());
|
| + EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname,
|
| + new_certs[1]->os_cert_handle()->nickname);
|
| +}
|
| +
|
| } // namespace net
|
|
|