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

Side by Side Diff: net/base/x509_cert_types_mac_unittest.cc

Issue 9358080: Properly parse UTF8Strings in certificates on Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 10 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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/base/x509_cert_types.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 // 0:d=0 hl=2 l= 95 cons: SEQUENCE
10 // 2:d=1 hl=2 l= 11 cons: SET
11 // 4:d=2 hl=2 l= 9 cons: SEQUENCE
12 // 6:d=3 hl=2 l= 3 prim: OBJECT :countryName
13 // 11:d=3 hl=2 l= 2 prim: PRINTABLESTRING :US
14 // 15:d=1 hl=2 l= 23 cons: SET
15 // 17:d=2 hl=2 l= 21 cons: SEQUENCE
16 // 19:d=3 hl=2 l= 3 prim: OBJECT :organizationName
17 // 24:d=3 hl=2 l= 14 prim: PRINTABLESTRING :VeriSign, Inc.
18 // 40:d=1 hl=2 l= 55 cons: SET
19 // 42:d=2 hl=2 l= 53 cons: SEQUENCE
20 // 44:d=3 hl=2 l= 3 prim: OBJECT :organizationalUnitName
21 // 49:d=3 hl=2 l= 46 prim: PRINTABLESTRING :Class 1 Public Primary Certif ication Authority
22 static const uint8 VerisignDN[] = {
23 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
24 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e,
25 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63,
26 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2e, 0x43,
27 0x6c, 0x61, 0x73, 0x73, 0x20, 0x31, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
28 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74,
29 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
30 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79
31 };
32
33 // 0:d=0 hl=2 l= 125 cons: SEQUENCE
34 // 2:d=1 hl=2 l= 11 cons: SET
35 // 4:d=2 hl=2 l= 9 cons: SEQUENCE
36 // 6:d=3 hl=2 l= 3 prim: OBJECT :countryName
37 // 11:d=3 hl=2 l= 2 prim: PRINTABLESTRING :IL
38 // 15:d=1 hl=2 l= 22 cons: SET
39 // 17:d=2 hl=2 l= 20 cons: SEQUENCE
40 // 19:d=3 hl=2 l= 3 prim: OBJECT :organizationName
41 // 24:d=3 hl=2 l= 13 prim: PRINTABLESTRING :StartCom Ltd.
42 // 39:d=1 hl=2 l= 43 cons: SET
43 // 41:d=2 hl=2 l= 41 cons: SEQUENCE
44 // 43:d=3 hl=2 l= 3 prim: OBJECT :organizationalUnitName
45 // 48:d=3 hl=2 l= 34 prim: PRINTABLESTRING :Secure Digital Certificate Si gning
46 // 84:d=1 hl=2 l= 41 cons: SET
47 // 86:d=2 hl=2 l= 39 cons: SEQUENCE
48 // 88:d=3 hl=2 l= 3 prim: OBJECT :commonName
49 // 93:d=3 hl=2 l= 32 prim: PRINTABLESTRING :StartCom Certification Author ity
50 static const uint8 StartComDN[] = {
51 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
52 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d,
53 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, 0x64, 0x2e,
54 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x22, 0x53, 0x65,
55 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20,
56 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53,
57 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55,
58 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20,
59 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
60 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79
61 };
62
63 // 0:d=0 hl=3 l= 174 cons: SEQUENCE
64 // 3:d=1 hl=2 l= 11 cons: SET
65 // 5:d=2 hl=2 l= 9 cons: SEQUENCE
66 // 7:d=3 hl=2 l= 3 prim: OBJECT :countryName
67 // 12:d=3 hl=2 l= 2 prim: PRINTABLESTRING :US
68 // 16:d=1 hl=2 l= 11 cons: SET
69 // 18:d=2 hl=2 l= 9 cons: SEQUENCE
70 // 20:d=3 hl=2 l= 3 prim: OBJECT :stateOrProvinceName
71 // 25:d=3 hl=2 l= 2 prim: PRINTABLESTRING :UT
72 // 29:d=1 hl=2 l= 23 cons: SET
73 // 31:d=2 hl=2 l= 21 cons: SEQUENCE
74 // 33:d=3 hl=2 l= 3 prim: OBJECT :localityName
75 // 38:d=3 hl=2 l= 14 prim: PRINTABLESTRING :Salt Lake City
76 // 54:d=1 hl=2 l= 30 cons: SET
77 // 56:d=2 hl=2 l= 28 cons: SEQUENCE
78 // 58:d=3 hl=2 l= 3 prim: OBJECT :organizationName
79 // 63:d=3 hl=2 l= 21 prim: PRINTABLESTRING :The USERTRUST Network
80 // 86:d=1 hl=2 l= 33 cons: SET
81 // 88:d=2 hl=2 l= 31 cons: SEQUENCE
82 // 90:d=3 hl=2 l= 3 prim: OBJECT :organizationalUnitName
83 // 95:d=3 hl=2 l= 24 prim: PRINTABLESTRING :http://www.usertrust.com
84 //121:d=1 hl=2 l= 54 cons: SET
85 //123:d=2 hl=2 l= 52 cons: SEQUENCE
86 //125:d=3 hl=2 l= 3 prim: OBJECT :commonName
87 //130:d=3 hl=2 l= 45 prim: PRINTABLESTRING :UTN-USERFirst-Client Authenti cation and Email
88 static const uint8 UserTrustDN[] = {
89 0x30, 0x81, 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
90 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
91 0x02, 0x55, 0x54, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13,
92 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x43, 0x69,
93 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15,
94 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54,
95 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f, 0x06,
96 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
97 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74,
98 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03,
99 0x13, 0x2d, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, 0x72,
100 0x73, 0x74, 0x2d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x41, 0x75, 0x74,
101 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61,
102 0x6e, 0x64, 0x20, 0x45, 0x6d, 0x61, 0x69, 0x6c
103 };
104
105 // 0:d=0 hl=3 l= 190 cons: SEQUENCE
106 // 3:d=1 hl=2 l= 63 cons: SET
107 // 5:d=2 hl=2 l= 61 cons: SEQUENCE
108 // 7:d=3 hl=2 l= 3 prim: OBJECT :commonName
109 // 12:d=3 hl=2 l= 54 prim: UTF8STRING :TÜRKTRUST Elektronik Sertifik a Hizmet Sağlayıcısı
110 // 68:d=1 hl=2 l= 11 cons: SET
111 // 70:d=2 hl=2 l= 9 cons: SEQUENCE
112 // 72:d=3 hl=2 l= 3 prim: OBJECT :countryName
113 // 77:d=3 hl=2 l= 2 prim: PRINTABLESTRING :TR
114 // 81:d=1 hl=2 l= 15 cons: SET
115 // 83:d=2 hl=2 l= 13 cons: SEQUENCE
116 // 85:d=3 hl=2 l= 3 prim: OBJECT :localityName
117 // 90:d=3 hl=2 l= 6 prim: UTF8STRING :Ankara
118 // 98:d=1 hl=2 l= 93 cons: SET
119 //100:d=2 hl=2 l= 91 cons: SEQUENCE
120 //102:d=3 hl=2 l= 3 prim: OBJECT :organizationName
121 //107:d=3 hl=2 l= 84 prim: UTF8STRING :TÜRKTRUST Bilgi İletişim ve B ilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005
122 static const uint8 TurkTrustDN[] = {
123 0x30, 0x81, 0xbe, 0x31, 0x3f, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
124 0x36, 0x54, 0xc3, 0x9c, 0x52, 0x4b, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x45,
125 0x6c, 0x65, 0x6b, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x6b, 0x20, 0x53, 0x65, 0x72,
126 0x74, 0x69, 0x66, 0x69, 0x6b, 0x61, 0x20, 0x48, 0x69, 0x7a, 0x6d, 0x65, 0x74,
127 0x20, 0x53, 0x61, 0xc4, 0x9f, 0x6c, 0x61, 0x79, 0xc4, 0xb1, 0x63, 0xc4, 0xb1,
128 0x73, 0xc4, 0xb1, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
129 0x02, 0x54, 0x52, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c,
130 0x06, 0x41, 0x6e, 0x6b, 0x61, 0x72, 0x61, 0x31, 0x5d, 0x30, 0x5b, 0x06, 0x03,
131 0x55, 0x04, 0x0a, 0x0c, 0x54, 0x54, 0xc3, 0x9c, 0x52, 0x4b, 0x54, 0x52, 0x55,
132 0x53, 0x54, 0x20, 0x42, 0x69, 0x6c, 0x67, 0x69, 0x20, 0xc4, 0xb0, 0x6c, 0x65,
133 0x74, 0x69, 0xc5, 0x9f, 0x69, 0x6d, 0x20, 0x76, 0x65, 0x20, 0x42, 0x69, 0x6c,
134 0x69, 0xc5, 0x9f, 0x69, 0x6d, 0x20, 0x47, 0xc3, 0xbc, 0x76, 0x65, 0x6e, 0x6c,
135 0x69, 0xc4, 0x9f, 0x69, 0x20, 0x48, 0x69, 0x7a, 0x6d, 0x65, 0x74, 0x6c, 0x65,
136 0x72, 0x69, 0x20, 0x41, 0x2e, 0xc5, 0x9e, 0x2e, 0x20, 0x28, 0x63, 0x29, 0x20,
137 0x4b, 0x61, 0x73, 0xc4, 0xb1, 0x6d, 0x20, 0x32, 0x30, 0x30, 0x35, 0x30, 0x1e,
138 0x17, 0x0d, 0x30, 0x35, 0x31, 0x31, 0x30, 0x37, 0x31, 0x30, 0x30, 0x37, 0x35,
139 0x37
140 };
141
142 // 33:d=2 hl=3 l= 207 cons: SEQUENCE
143 // 36:d=3 hl=2 l= 11 cons: SET
144 // 38:d=4 hl=2 l= 9 cons: SEQUENCE
145 // 40:d=5 hl=2 l= 3 prim: OBJECT :countryName
146 // 45:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AT
147 // 49:d=3 hl=3 l= 139 cons: SET
148 // 52:d=4 hl=3 l= 136 cons: SEQUENCE
149 // 55:d=5 hl=2 l= 3 prim: OBJECT :organizationName
150 // 60:d=5 hl=3 l= 128 prim: BMPSTRING :A-Trust Ges. für Sicherheit ssysteme im elektr. Datenverkehr GmbH
151 //191:d=3 hl=2 l= 24 cons: SET
152 //193:d=4 hl=2 l= 22 cons: SEQUENCE
153 //195:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName
154 //200:d=5 hl=2 l= 15 prim: PRINTABLESTRING :A-Trust-Qual-01
155 //217:d=3 hl=2 l= 24 cons: SET
156 //219:d=4 hl=2 l= 22 cons: SEQUENCE
157 //221:d=5 hl=2 l= 3 prim: OBJECT :commonName
158 //226:d=5 hl=2 l= 15 prim: PRINTABLESTRING :A-Trust-Qual-01
159 static const uint8 ATrustQual01DN[] = {
160 0x30, 0x81, 0xcf, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
161 0x02, 0x41, 0x54, 0x31, 0x81, 0x8b, 0x30, 0x81, 0x88, 0x06, 0x03, 0x55, 0x04,
162 0x0a, 0x1e, 0x81, 0x80, 0x00, 0x41, 0x00, 0x2d, 0x00, 0x54, 0x00, 0x72, 0x00,
163 0x75, 0x00, 0x73, 0x00, 0x74, 0x00, 0x20, 0x00, 0x47, 0x00, 0x65, 0x00, 0x73,
164 0x00, 0x2e, 0x00, 0x20, 0x00, 0x66, 0x00, 0xfc, 0x00, 0x72, 0x00, 0x20, 0x00,
165 0x53, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x68,
166 0x00, 0x65, 0x00, 0x69, 0x00, 0x74, 0x00, 0x73, 0x00, 0x73, 0x00, 0x79, 0x00,
167 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69,
168 0x00, 0x6d, 0x00, 0x20, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x6b, 0x00,
169 0x74, 0x00, 0x72, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x44, 0x00, 0x61, 0x00, 0x74,
170 0x00, 0x65, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x65, 0x00, 0x72, 0x00, 0x6b, 0x00,
171 0x65, 0x00, 0x68, 0x00, 0x72, 0x00, 0x20, 0x00, 0x47, 0x00, 0x6d, 0x00, 0x62,
172 0x00, 0x48, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0f,
173 0x41, 0x2d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x2d, 0x51, 0x75, 0x61, 0x6c, 0x2d,
174 0x30, 0x31, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0f,
175 0x41, 0x2d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x2d, 0x51, 0x75, 0x61, 0x6c, 0x2d,
176 0x30, 0x31, 0x30, 0x1e, 0x17
177 };
178
179 // 34:d=2 hl=3 l= 180 cons: SEQUENCE
180 // 37:d=3 hl=2 l= 20 cons: SET
181 // 39:d=4 hl=2 l= 18 cons: SEQUENCE
182 // 41:d=5 hl=2 l= 3 prim: OBJECT :organizationName
183 // 46:d=5 hl=2 l= 11 prim: PRINTABLESTRING :Entrust.net
184 // 59:d=3 hl=2 l= 64 cons: SET
185 // 61:d=4 hl=2 l= 62 cons: SEQUENCE
186 // 63:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName
187 // 68:d=5 hl=2 l= 55 prim: T61STRING :www.entrust.net/CPS_2048 in corp. by ref. (limits liab.)
188 //125:d=3 hl=2 l= 37 cons: SET
189 //127:d=4 hl=2 l= 35 cons: SEQUENCE
190 //129:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName
191 //134:d=5 hl=2 l= 28 prim: PRINTABLESTRING :(c) 1999 Entrust.net Limite d
192 //164:d=3 hl=2 l= 51 cons: SET
193 //166:d=4 hl=2 l= 49 cons: SEQUENCE
194 //168:d=5 hl=2 l= 3 prim: OBJECT :commonName
195 //173:d=5 hl=2 l= 42 prim: PRINTABLESTRING :Entrust.net Certification A uthority (2048)
196 static const uint8 EntrustDN[] = {
197 0x30, 0x81, 0xb4, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
198 0x0b, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x31,
199 0x40, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x14, 0x37, 0x77, 0x77, 0x77,
200 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f,
201 0x43, 0x50, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x20, 0x69, 0x6e, 0x63, 0x6f,
202 0x72, 0x70, 0x2e, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x20, 0x28,
203 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x6c, 0x69, 0x61, 0x62, 0x2e, 0x29,
204 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1c, 0x28, 0x63,
205 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73,
206 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64,
207 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2a, 0x45, 0x6e,
208 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x20, 0x43, 0x65, 0x72,
209 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
210 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x28, 0x32, 0x30, 0x34, 0x38,
211 0x29
212 };
213
214 namespace net {
215
216 TEST(X509TypesTest, Matching) {
217 CertPrincipal spamco;
218 spamco.common_name = "SpamCo Dept. Of Certificization";
219 spamco.country_name = "EB";
220 spamco.organization_names.push_back("SpamCo Holding Company, LLC");
221 spamco.organization_names.push_back("SpamCo Evil Masterminds");
222 spamco.organization_unit_names.push_back("Class Z Obfuscation Authority");
223 ASSERT_TRUE(spamco.Matches(spamco));
224
225 CertPrincipal bogus;
226 EXPECT_FALSE(bogus.Matches(spamco));
227 EXPECT_FALSE(spamco.Matches(bogus));
228
229 bogus = spamco;
230 EXPECT_TRUE(bogus.Matches(spamco));
231 EXPECT_TRUE(spamco.Matches(bogus));
232
233 bogus.organization_names.erase(bogus.organization_names.begin(),
234 bogus.organization_names.end());
235 EXPECT_FALSE(bogus.Matches(spamco));
236 EXPECT_FALSE(spamco.Matches(bogus));
237
238 bogus.organization_names.push_back("SpamCo Holding Company, LLC");
239 bogus.organization_names.push_back("SpamCo Evil Masterminds");
240 EXPECT_TRUE(bogus.Matches(spamco));
241 EXPECT_TRUE(spamco.Matches(bogus));
242
243 bogus.locality_name = "Elbosdorf";
244 EXPECT_FALSE(bogus.Matches(spamco));
245 EXPECT_FALSE(spamco.Matches(bogus));
246
247 bogus.locality_name = "";
248 bogus.organization_unit_names.push_back("Q Division");
249 EXPECT_FALSE(bogus.Matches(spamco));
250 EXPECT_FALSE(spamco.Matches(bogus));
251 }
252
253 TEST(X509TypesTest, ParseDNVerisign) {
254 CertPrincipal verisign;
255 EXPECT_TRUE(verisign.ParseDistinguishedName(VerisignDN, sizeof(VerisignDN)));
256 EXPECT_EQ("", verisign.common_name);
257 EXPECT_EQ("US", verisign.country_name);
258 ASSERT_EQ(1U, verisign.organization_names.size());
259 EXPECT_EQ("VeriSign, Inc.", verisign.organization_names[0]);
260 ASSERT_EQ(1U, verisign.organization_unit_names.size());
261 EXPECT_EQ("Class 1 Public Primary Certification Authority",
262 verisign.organization_unit_names[0]);
263 }
264
265 TEST(X509TypesTest, ParseDNStartcom) {
266 CertPrincipal startcom;
267 EXPECT_TRUE(startcom.ParseDistinguishedName(StartComDN, sizeof(StartComDN)));
268 EXPECT_EQ("StartCom Certification Authority", startcom.common_name);
269 EXPECT_EQ("IL", startcom.country_name);
270 ASSERT_EQ(1U, startcom.organization_names.size());
271 EXPECT_EQ("StartCom Ltd.", startcom.organization_names[0]);
272 ASSERT_EQ(1U, startcom.organization_unit_names.size());
273 EXPECT_EQ("Secure Digital Certificate Signing",
274 startcom.organization_unit_names[0]);
275 }
276
277 TEST(X509TypesTest, ParseDNUserTrust) {
278 CertPrincipal usertrust;
279 EXPECT_TRUE(usertrust.ParseDistinguishedName(UserTrustDN,
280 sizeof(UserTrustDN)));
281 EXPECT_EQ("UTN-USERFirst-Client Authentication and Email",
282 usertrust.common_name);
283 EXPECT_EQ("US", usertrust.country_name);
284 EXPECT_EQ("UT", usertrust.state_or_province_name);
285 EXPECT_EQ("Salt Lake City", usertrust.locality_name);
286 ASSERT_EQ(1U, usertrust.organization_names.size());
287 EXPECT_EQ("The USERTRUST Network", usertrust.organization_names[0]);
288 ASSERT_EQ(1U, usertrust.organization_unit_names.size());
289 EXPECT_EQ("http://www.usertrust.com",
290 usertrust.organization_unit_names[0]);
291 }
292
293 TEST(X509TypesTest, ParseDNTurkTrust) {
294 // Note: This tests parsing UTF8STRINGs.
295 CertPrincipal turktrust;
296 EXPECT_TRUE(turktrust.ParseDistinguishedName(TurkTrustDN,
297 sizeof(TurkTrustDN)));
298 EXPECT_EQ("TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı",
299 turktrust.common_name);
300 EXPECT_EQ("TR", turktrust.country_name);
301 EXPECT_EQ("Ankara", turktrust.locality_name);
302 ASSERT_EQ(1U, turktrust.organization_names.size());
303 EXPECT_EQ("TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) K asım 2005",
304 turktrust.organization_names[0]);
305 }
306
307 TEST(X509TypesTest, ParseDNATrust) {
308 // Note: This tests parsing 16-bit BMPSTRINGs.
309 CertPrincipal atrust;
310 EXPECT_TRUE(atrust.ParseDistinguishedName(ATrustQual01DN,
311 sizeof(ATrustQual01DN)));
312 EXPECT_EQ("A-Trust-Qual-01",
313 atrust.common_name);
314 EXPECT_EQ("AT", atrust.country_name);
315 ASSERT_EQ(1U, atrust.organization_names.size());
316 EXPECT_EQ("A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH",
317 atrust.organization_names[0]);
318 ASSERT_EQ(1U, atrust.organization_unit_names.size());
319 EXPECT_EQ("A-Trust-Qual-01",
320 atrust.organization_unit_names[0]);
321 }
322
323 TEST(X509TypesTest, ParseDNEntrust) {
324 // Note: This tests parsing T61STRINGs and fields with multiple values.
325 CertPrincipal entrust;
326 EXPECT_TRUE(entrust.ParseDistinguishedName(EntrustDN,
327 sizeof(EntrustDN)));
328 EXPECT_EQ("Entrust.net Certification Authority (2048)",
329 entrust.common_name);
330 EXPECT_EQ("", entrust.country_name);
331 ASSERT_EQ(1U, entrust.organization_names.size());
332 EXPECT_EQ("Entrust.net",
333 entrust.organization_names[0]);
334 ASSERT_EQ(2U, entrust.organization_unit_names.size());
335 EXPECT_EQ("www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)",
336 entrust.organization_unit_names[0]);
337 EXPECT_EQ("(c) 1999 Entrust.net Limited",
338 entrust.organization_unit_names[1]);
339 }
340
341 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698