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

Unified Diff: net/base/x509_certificate_unittest.cc

Issue 8608003: Parse individual X.509 name components on Windows, rather than their stringified form (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests for Mac by fixing the domainComponent OID Created 9 years, 1 month 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
Index: net/base/x509_certificate_unittest.cc
diff --git a/net/base/x509_certificate_unittest.cc b/net/base/x509_certificate_unittest.cc
index f48336226c0c9701989bb2df21e6a299f23acd56..df6cccb8d33232a3ff715f8df632221600fbdc61 100644
--- a/net/base/x509_certificate_unittest.cc
+++ b/net/base/x509_certificate_unittest.cc
@@ -375,6 +375,80 @@ TEST(X509CertificateTest, ThawteCertParsing) {
#endif
}
+// Test that all desired AttributeAndValue pairs can be extracted when only
+// a single RelativeDistinguishedName is present. "Normally" there is only
+// one AVA per RDN, but some CAs place all AVAs within a single RDN.
+// This is a regression test for http://crbug.com/101009
+TEST(X509CertificateTest, InfonotaryCertParsing) {
+ FilePath certs_dir = GetTestCertsDirectory();
+
+ scoped_refptr<X509Certificate> infonotary_cert =
+ ImportCertFromFile(certs_dir, "infonotary.pem");
+ ASSERT_NE(static_cast<X509Certificate*>(NULL), infonotary_cert);
+
+ const CertPrincipal& subject = infonotary_cert->subject();
+ EXPECT_EQ("Vladislav Ivanov Evgeniev", subject.common_name);
+ EXPECT_EQ("", subject.locality_name);
+ EXPECT_EQ("", subject.state_or_province_name);
+ EXPECT_EQ("", subject.country_name);
+ EXPECT_EQ(0U, subject.street_addresses.size());
+ EXPECT_EQ(0U, subject.organization_names.size());
+ EXPECT_EQ(0U, subject.organization_unit_names.size());
+ ASSERT_EQ(1U, subject.domain_components.size());
+ EXPECT_EQ("identity-ca", subject.domain_components[0]);
+
+ const CertPrincipal& issuer = infonotary_cert->issuer();
+ EXPECT_EQ("i-Notary TrustPath Validated Identity CA", issuer.common_name);
+ EXPECT_EQ("", issuer.locality_name);
+ EXPECT_EQ("", issuer.state_or_province_name);
+ EXPECT_EQ("BG", issuer.country_name);
+ EXPECT_EQ(0U, issuer.street_addresses.size());
+ ASSERT_EQ(1U, issuer.organization_names.size());
+ EXPECT_EQ("InfoNotary PLC", issuer.organization_names[0]);
+ ASSERT_EQ(1U, issuer.organization_unit_names.size());
+ EXPECT_EQ("i-Notary TrustPath Validated Identity CA",
+ issuer.organization_unit_names[0]);
+ ASSERT_EQ(1U, issuer.domain_components.size());
+ EXPECT_EQ("identity-ca", issuer.domain_components[0]);
+}
+
+// Test that characters which would normally be escaped in the string form,
+// such as = or ", are not escaped when parsed as individual components.
wtc 2011/12/01 23:59:41 Nit: put = and " in single quotes?
+// This is a regression test for http://crbug.com/102839
+TEST(X509CertificateTest, BonaireCertParsing) {
+ FilePath certs_dir = GetTestCertsDirectory();
+
+ scoped_refptr<X509Certificate> bonairexl_cert =
+ ImportCertFromFile(certs_dir, "bonairexl.pem");
+ ASSERT_NE(static_cast<X509Certificate*>(NULL), bonairexl_cert);
+
+ const CertPrincipal& subject = bonairexl_cert->subject();
+ EXPECT_EQ("www.bonairexl.com", subject.common_name);
+ EXPECT_EQ("Bergen", subject.locality_name);
+ EXPECT_EQ("Noord-Holland", subject.state_or_province_name);
+ EXPECT_EQ("NL", subject.country_name);
+ ASSERT_EQ(1U, subject.street_addresses.size());
+ EXPECT_EQ("Eeuwigelaan 3", subject.street_addresses[0]);
+ ASSERT_EQ(1U, subject.organization_names.size());
+ EXPECT_EQ("Aan Zee \"Gezellige Vakantiehuizen\" B.V.",
+ subject.organization_names[0]);
+ ASSERT_EQ(2U, subject.organization_unit_names.size());
+ EXPECT_EQ("ICT", subject.organization_unit_names[0]);
+ EXPECT_EQ("COMODO EV SSL", subject.organization_unit_names[1]);
+ EXPECT_EQ(0U, subject.domain_components.size());
+
+ const CertPrincipal& issuer = bonairexl_cert->issuer();
+ EXPECT_EQ("COMODO Extended Validation Secure Server CA", issuer.common_name);
+ EXPECT_EQ("Salford", issuer.locality_name);
+ EXPECT_EQ("Greater Manchester", issuer.state_or_province_name);
+ EXPECT_EQ("GB", issuer.country_name);
+ EXPECT_EQ(0U, issuer.street_addresses.size());
+ ASSERT_EQ(1U, issuer.organization_names.size());
+ EXPECT_EQ("COMODO CA Limited", issuer.organization_names[0]);
+ EXPECT_EQ(0U, issuer.organization_unit_names.size());
+ EXPECT_EQ(0U, issuer.domain_components.size());
+}
+
TEST(X509CertificateTest, PaypalNullCertParsing) {
scoped_refptr<X509Certificate> paypal_null_cert(
X509Certificate::CreateFromBytes(

Powered by Google App Engine
This is Rietveld 408576698