1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/basictypes.h" 6 #include "net/cert/x509_cert_types.h" 7 #include "net/test/test_certificate_data.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 10 namespace net { 11 12 #if defined(OS_MACOSX) 13 TEST(X509TypesTest, Matching) { 14 CertPrincipal spamco; 15 spamco.common_name = "SpamCo Dept. Of Certificization"; 16 spamco.country_name = "EB"; 17 spamco.organization_names.push_back("SpamCo Holding Company, LLC"); 18 spamco.organization_names.push_back("SpamCo Evil Masterminds"); 19 spamco.organization_unit_names.push_back("Class Z Obfuscation Authority"); 20 ASSERT_TRUE(spamco.Matches(spamco)); 21 22 CertPrincipal bogus; 23 EXPECT_FALSE(bogus.Matches(spamco)); 24 EXPECT_FALSE(spamco.Matches(bogus)); 25 26 bogus = spamco; 27 EXPECT_TRUE(bogus.Matches(spamco)); 28 EXPECT_TRUE(spamco.Matches(bogus)); 29 30 bogus.organization_names.erase(bogus.organization_names.begin(), 31 bogus.organization_names.end()); 32 EXPECT_FALSE(bogus.Matches(spamco)); 33 EXPECT_FALSE(spamco.Matches(bogus)); 34 35 bogus.organization_names.push_back("SpamCo Holding Company, LLC"); 36 bogus.organization_names.push_back("SpamCo Evil Masterminds"); 37 EXPECT_TRUE(bogus.Matches(spamco)); 38 EXPECT_TRUE(spamco.Matches(bogus)); 39 40 bogus.locality_name = "Elbosdorf"; 41 EXPECT_FALSE(bogus.Matches(spamco)); 42 EXPECT_FALSE(spamco.Matches(bogus)); 43 44 bogus.locality_name = ""; 45 bogus.organization_unit_names.push_back("Q Division"); 46 EXPECT_FALSE(bogus.Matches(spamco)); 47 EXPECT_FALSE(spamco.Matches(bogus)); 48 } 49 #endif 50 51 TEST(X509TypesTest, ParseDNVerisign) { 52 CertPrincipal verisign; 53 EXPECT_TRUE(verisign.ParseDistinguishedName(VerisignDN, sizeof(VerisignDN))); 54 EXPECT_EQ("", verisign.common_name); 55 EXPECT_EQ("US", verisign.country_name); 56 ASSERT_EQ(1U, verisign.organization_names.size()); 57 EXPECT_EQ("VeriSign, Inc.", verisign.organization_names[0]); 58 ASSERT_EQ(1U, verisign.organization_unit_names.size()); 59 EXPECT_EQ("Class 1 Public Primary Certification Authority", 60 verisign.organization_unit_names[0]); 61 } 62 63 TEST(X509TypesTest, ParseDNStartcom) { 64 CertPrincipal startcom; 65 EXPECT_TRUE(startcom.ParseDistinguishedName(StartComDN, sizeof(StartComDN))); 66 EXPECT_EQ("StartCom Certification Authority", startcom.common_name); 67 EXPECT_EQ("IL", startcom.country_name); 68 ASSERT_EQ(1U, startcom.organization_names.size()); 69 EXPECT_EQ("StartCom Ltd.", startcom.organization_names[0]); 70 ASSERT_EQ(1U, startcom.organization_unit_names.size()); 71 EXPECT_EQ("Secure Digital Certificate Signing", 72 startcom.organization_unit_names[0]); 73 } 74 75 TEST(X509TypesTest, ParseDNUserTrust) { 76 CertPrincipal usertrust; 77 EXPECT_TRUE(usertrust.ParseDistinguishedName(UserTrustDN, 78 sizeof(UserTrustDN))); 79 EXPECT_EQ("UTN-USERFirst-Client Authentication and Email", 80 usertrust.common_name); 81 EXPECT_EQ("US", usertrust.country_name); 82 EXPECT_EQ("UT", usertrust.state_or_province_name); 83 EXPECT_EQ("Salt Lake City", usertrust.locality_name); 84 ASSERT_EQ(1U, usertrust.organization_names.size()); 85 EXPECT_EQ("The USERTRUST Network", usertrust.organization_names[0]); 86 ASSERT_EQ(1U, usertrust.organization_unit_names.size()); 87 EXPECT_EQ("http://www.usertrust.com", 88 usertrust.organization_unit_names[0]); 89 } 90 91 TEST(X509TypesTest, ParseDNTurkTrust) { 92 // Note: This tests parsing UTF8STRINGs. 93 CertPrincipal turktrust; 94 EXPECT_TRUE(turktrust.ParseDistinguishedName(TurkTrustDN, 95 sizeof(TurkTrustDN))); 96 EXPECT_EQ("TRKTRUST Elektronik Sertifika Hizmet Salaycs", 97 turktrust.common_name); 98 EXPECT_EQ("TR", turktrust.country_name); 99 EXPECT_EQ("Ankara", turktrust.locality_name); 100 ASSERT_EQ(1U, turktrust.organization_names.size()); 101 EXPECT_EQ("TRKTRUST Bilgi letiim ve Biliim Gvenlii Hizmetleri A.. (c) Kasm 2005", 102 turktrust.organization_names[0]); 103 } 104 105 TEST(X509TypesTest, ParseDNATrust) { 106 // Note: This tests parsing 16-bit BMPSTRINGs. 107 CertPrincipal atrust; 108 EXPECT_TRUE(atrust.ParseDistinguishedName(ATrustQual01DN, 109 sizeof(ATrustQual01DN))); 110 EXPECT_EQ("A-Trust-Qual-01", 111 atrust.common_name); 112 EXPECT_EQ("AT", atrust.country_name); 113 ASSERT_EQ(1U, atrust.organization_names.size()); 114 EXPECT_EQ("A-Trust Ges. fr Sicherheitssysteme im elektr. Datenverkehr GmbH", 115 atrust.organization_names[0]); 116 ASSERT_EQ(1U, atrust.organization_unit_names.size()); 117 EXPECT_EQ("A-Trust-Qual-01", 118 atrust.organization_unit_names[0]); 119 } 120 121 TEST(X509TypesTest, ParseDNEntrust) { 122 // Note: This tests parsing T61STRINGs and fields with multiple values. 123 CertPrincipal entrust; 124 EXPECT_TRUE(entrust.ParseDistinguishedName(EntrustDN, 125 sizeof(EntrustDN))); 126 EXPECT_EQ("Entrust.net Certification Authority (2048)", 127 entrust.common_name); 128 EXPECT_EQ("", entrust.country_name); 129 ASSERT_EQ(1U, entrust.organization_names.size()); 130 EXPECT_EQ("Entrust.net", 131 entrust.organization_names[0]); 132 ASSERT_EQ(2U, entrust.organization_unit_names.size()); 133 EXPECT_EQ("www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)", 134 entrust.organization_unit_names[0]); 135 EXPECT_EQ("(c) 1999 Entrust.net Limited", 136 entrust.organization_unit_names[1]); 137 } 138 139 } // namespace net 140