Home | History | Annotate | Download | only in cert
      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