1
2
3
4
5
6 package x509
7
8 import (
9 "encoding/pem"
10 "math/big"
11 "reflect"
12 "strings"
13 "testing"
14 "time"
15
16 "github.com/google/certificate-transparency-go/asn1"
17 "github.com/google/certificate-transparency-go/x509/pkix"
18 )
19
20 func TestParseCertificateList(t *testing.T) {
21 var tests = []struct {
22 desc string
23 data string
24 want TBSCertList
25 wantErr string
26 }{
27 {
28 desc: "valid-certlist",
29 data: ("3082026c" +
30 ("30820154" +
31 ("0201" + "01") +
32 ("300d" +
33 ("0609" + "2a864886f70d01010b") +
34 "0500") +
35 ("3049" +
36 ("310b" +
37 ("3009" +
38 ("0603" + "550406") +
39 ("1302" + "5553"))) +
40 ("3113" +
41 ("3011" +
42 ("0603" + "55040a") +
43 ("130a" + "476f6f676c6520496e63"))) +
44 ("3125" +
45 ("3023" +
46 ("0603" + "550403") +
47 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
48 ("170d" + "3137303632393031303030325a") +
49 ("170d" + "3137303730393031303030325a") +
50 ("3081a4" +
51 ("3027" +
52 ("0208" + "764bedd38afd51f7") +
53 ("170d" + "3137303131333134313835385a") +
54 ("300c" +
55 ("300a" +
56 ("0603" + "551d15") +
57 ("0403" + "0a0103")))) +
58 ("3027" +
59 ("0208" + "3b772e5f1202118e") +
60 ("170d" + "3137303531303130353530375a") +
61 ("300c" +
62 ("300a" +
63 ("0603" + "551d15") +
64 ("0403" + "0a0101")))) +
65 ("3027" +
66 ("0208" + "0b54e3090079ad4b") +
67 ("170d" + "3137303431323038353331375a") +
68 ("300c" +
69 ("300a" +
70 ("0603" + "551d15") +
71 ("0403" + "0a0101")))) +
72 ("3027" +
73 ("0208" + "31da3380182af9b2") +
74 ("170d" + "3136303931353230323231335a") +
75 ("300c" +
76 ("300a" +
77 ("0603" + "551d15") +
78 ("0403" + "0a0103"))))) +
79 ("a030" +
80 ("302e" +
81 ("301f" +
82 ("0603" + "551d23") +
83 ("0418" +
84 ("3016" +
85 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
86 ("300b" +
87 ("0603" + "551d14") +
88 ("0404" + "02020623"))))) +
89 ("300d" +
90 ("0609" + "2a864886f70d01010b") +
91 "0500") +
92 ("03820101" +
93 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
94 want: TBSCertList{
95 Version: 1,
96 Signature: pkix.AlgorithmIdentifier{
97 Algorithm: oidSignatureSHA256WithRSA,
98 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
99 },
100 Issuer: pkix.RDNSequence{
101 []pkix.AttributeTypeAndValue{
102 {Type: pkix.OIDCountry, Value: "US"},
103 },
104 []pkix.AttributeTypeAndValue{
105 {Type: pkix.OIDOrganization, Value: "Google Inc"},
106 },
107 []pkix.AttributeTypeAndValue{
108 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
109 },
110 },
111 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
112 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
113 RevokedCertificates: []*RevokedCertificate{
114 {
115 RevokedCertificate: pkix.RevokedCertificate{
116 SerialNumber: big.NewInt(0x764bedd38afd51f7),
117 RevocationTime: time.Date(2017, 1, 13, 14, 18, 58, 0, time.UTC),
118 },
119 RevocationReason: AffiliationChanged,
120 },
121 {
122 RevokedCertificate: pkix.RevokedCertificate{
123 SerialNumber: big.NewInt(0x3b772e5f1202118e),
124 RevocationTime: time.Date(2017, 5, 10, 10, 55, 7, 0, time.UTC),
125 },
126 RevocationReason: KeyCompromise,
127 },
128 {
129 RevokedCertificate: pkix.RevokedCertificate{
130 SerialNumber: big.NewInt(0x0b54e3090079ad4b),
131 RevocationTime: time.Date(2017, 4, 12, 8, 53, 17, 0, time.UTC),
132 },
133 RevocationReason: KeyCompromise,
134 },
135 {
136 RevokedCertificate: pkix.RevokedCertificate{
137 SerialNumber: big.NewInt(0x31da3380182af9b2),
138 RevocationTime: time.Date(2016, 9, 15, 20, 22, 13, 0, time.UTC),
139 },
140 RevocationReason: AffiliationChanged,
141 },
142 },
143 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
144 CRLNumber: 1571,
145 BaseCRLNumber: -1,
146 },
147 },
148 {
149 desc: "invalid-cert-critical-ext-revocation-time",
150 data: ("3082026f" +
151 ("30820157" +
152 ("0201" + "01") +
153 ("300d" +
154 ("0609" + "2a864886f70d01010b") +
155 "0500") +
156 ("3049" +
157 ("310b" +
158 ("3009" +
159 ("0603" + "550406") +
160 ("1302" + "5553"))) +
161 ("3113" +
162 ("3011" +
163 ("0603" + "55040a") +
164 ("130a" + "476f6f676c6520496e63"))) +
165 ("3125" +
166 ("3023" +
167 ("0603" + "550403") +
168 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
169 ("170d" + "3137303632393031303030325a") +
170 ("170d" + "3137303730393031303030325a") +
171 ("3081a7" +
172 ("302a" +
173 ("0208" + "764bedd38afd51f7") +
174 ("170d" + "3137303131333134313835385a") +
175 ("300f" +
176 ("300d" +
177 ("0603" + "551d15") +
178 ("0101ff") +
179 ("0403" + "0a0103")))) +
180 ("3027" +
181 ("0208" + "3b772e5f1202118e") +
182 ("170d" + "3137303531303130353530375a") +
183 ("300c" +
184 ("300a" +
185 ("0603" + "551d15") +
186 ("0403" + "0a0101")))) +
187 ("3027" +
188 ("0208" + "0b54e3090079ad4b") +
189 ("170d" + "3137303431323038353331375a") +
190 ("300c" +
191 ("300a" +
192 ("0603" + "551d15") +
193 ("0403" + "0a0101")))) +
194 ("3027" +
195 ("0208" + "31da3380182af9b2") +
196 ("170d" + "3136303931353230323231335a") +
197 ("300c" +
198 ("300a" +
199 ("0603" + "551d15") +
200 ("0403" + "0a0103"))))) +
201 ("a030" +
202 ("302e" +
203 ("301f" +
204 ("0603" + "551d23") +
205 ("0418" +
206 ("3016" +
207 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
208 ("300b" +
209 ("0603" + "551d14") +
210 ("0404" + "02020623"))))) +
211 ("300d" +
212 ("0609" + "2a864886f70d01010b") +
213 "0500") +
214 ("03820101" +
215 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
216 wantErr: "marked critical",
217 },
218 {
219 desc: "invalid-unknown-critical-ext",
220 data: ("308201c9" +
221 ("3081b2" +
222 ("0201" + "01") +
223 ("300d" +
224 ("0609" + "2a864886f70d01010b") +
225 "0500") +
226 ("3049" +
227 ("310b" +
228 ("3009" +
229 ("0603" + "550406") +
230 ("1302" + "5553"))) +
231 ("3113" +
232 ("3011" +
233 ("0603" + "55040a") +
234 ("130a" + "476f6f676c6520496e63"))) +
235 ("3125" +
236 ("3023" +
237 ("0603" + "550403") +
238 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
239 ("170d" + "3137303632393031303030325a") +
240 ("170d" + "3137303730393031303030325a") +
241 ("3000") +
242 ("a033" +
243 ("3031" +
244 ("301f" +
245 ("0603" + "551d23") +
246 ("0418" +
247 ("3016" +
248 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
249 ("300e" +
250 ("0603" + "551d1f") +
251 ("0101ff") +
252 ("0404" + "02020623"))))) +
253 ("300d" +
254 ("0609" + "2a864886f70d01010b") +
255 "0500") +
256 ("03820101" +
257 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
258 wantErr: "unhandled critical extension",
259 },
260 {
261 desc: "invalid-unknown-ext-trailing-data",
262 data: ("308201c9" +
263 ("3081b2" +
264 ("0201" + "01") +
265 ("300d" +
266 ("0609" + "2a864886f70d01010b") +
267 "0500") +
268 ("3049" +
269 ("310b" +
270 ("3009" +
271 ("0603" + "550406") +
272 ("1302" + "5553"))) +
273 ("3113" +
274 ("3011" +
275 ("0603" + "55040a") +
276 ("130a" + "476f6f676c6520496e63"))) +
277 ("3125" +
278 ("3023" +
279 ("0603" + "550403") +
280 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
281 ("170d" + "3137303632393031303030325a") +
282 ("170d" + "3137303730393031303030325a") +
283 ("3000") +
284 ("a033" +
285 ("3031" +
286 ("301f" +
287 ("0603" + "551d23") +
288 ("0418" +
289 ("3016" +
290 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
291 ("300e" +
292 ("0603" + "551d1f") +
293 ("010100") +
294 ("0404" + "02020623"))))) +
295 ("300d" +
296 ("0609" + "2a864886f70d01010b") +
297 "0500") +
298 ("03820101" +
299 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369") +
300 "00"),
301 wantErr: "trailing data",
302 },
303 {
304 desc: "invalid-wrong-asn1",
305 data: "0a0101",
306 wantErr: "structure error",
307 },
308
309 {
310 desc: "valid-empty-certlist",
311 data: ("308201c6" +
312 ("3081af" +
313 ("0201" + "01") +
314 ("300d" +
315 ("0609" + "2a864886f70d01010b") +
316 "0500") +
317 ("3049" +
318 ("310b" +
319 ("3009" +
320 ("0603" + "550406") +
321 ("1302" + "5553"))) +
322 ("3113" +
323 ("3011" +
324 ("0603" + "55040a") +
325 ("130a" + "476f6f676c6520496e63"))) +
326 ("3125" +
327 ("3023" +
328 ("0603" + "550403") +
329 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
330 ("170d" + "3137303632393031303030325a") +
331 ("170d" + "3137303730393031303030325a") +
332 ("3000") +
333 ("a030" +
334 ("302e" +
335 ("301f" +
336 ("0603" + "551d23") +
337 ("0418" +
338 ("3016" +
339 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
340 ("300b" +
341 ("0603" + "551d14") +
342 ("0404" + "02020623"))))) +
343 ("300d" +
344 ("0609" + "2a864886f70d01010b") +
345 "0500") +
346 ("03820101" +
347 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
348 want: TBSCertList{
349 Version: 1,
350 Signature: pkix.AlgorithmIdentifier{
351 Algorithm: oidSignatureSHA256WithRSA,
352 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
353 },
354 Issuer: pkix.RDNSequence{
355 []pkix.AttributeTypeAndValue{
356 {Type: pkix.OIDCountry, Value: "US"},
357 },
358 []pkix.AttributeTypeAndValue{
359 {Type: pkix.OIDOrganization, Value: "Google Inc"},
360 },
361 []pkix.AttributeTypeAndValue{
362 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
363 },
364 },
365 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
366 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
367 RevokedCertificates: []*RevokedCertificate{},
368 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
369 CRLNumber: 1571,
370 BaseCRLNumber: -1,
371 },
372 },
373 {
374 desc: "valid-delta-crl-indicator-ext",
375 data: ("308201d6" +
376 ("3081bf" +
377 ("0201" + "01") +
378 ("300d" +
379 ("0609" + "2a864886f70d01010b") +
380 "0500") +
381 ("3049" +
382 ("310b" +
383 ("3009" +
384 ("0603" + "550406") +
385 ("1302" + "5553"))) +
386 ("3113" +
387 ("3011" +
388 ("0603" + "55040a") +
389 ("130a" + "476f6f676c6520496e63"))) +
390 ("3125" +
391 ("3023" +
392 ("0603" + "550403") +
393 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
394 ("170d" + "3137303632393031303030325a") +
395 ("170d" + "3137303730393031303030325a") +
396 ("3000") +
397 ("a040" +
398 ("303e" +
399 ("301f" +
400 ("0603" + "551d23") +
401 ("0418" +
402 ("3016" +
403 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
404 ("300e" +
405 ("0603" + "551d1b") +
406 ("0101ff") +
407 ("0404" + "02020120")) +
408 ("300b" +
409 ("0603" + "551d14") +
410 ("0404" + "02020623"))))) +
411 ("300d" +
412 ("0609" + "2a864886f70d01010b") +
413 "0500") +
414 ("03820101" +
415 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
416 want: TBSCertList{
417 Version: 1,
418 Signature: pkix.AlgorithmIdentifier{
419 Algorithm: oidSignatureSHA256WithRSA,
420 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
421 },
422 Issuer: pkix.RDNSequence{
423 []pkix.AttributeTypeAndValue{
424 {Type: pkix.OIDCountry, Value: "US"},
425 },
426 []pkix.AttributeTypeAndValue{
427 {Type: pkix.OIDOrganization, Value: "Google Inc"},
428 },
429 []pkix.AttributeTypeAndValue{
430 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
431 },
432 },
433 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
434 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
435 RevokedCertificates: []*RevokedCertificate{},
436 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
437 CRLNumber: 1571,
438 BaseCRLNumber: 288,
439 },
440 },
441 {
442 desc: "invalid-delta-crl-indicator-ext-non-critical",
443 data: ("308201d6" +
444 ("3081bf" +
445 ("0201" + "01") +
446 ("300d" +
447 ("0609" + "2a864886f70d01010b") +
448 "0500") +
449 ("3049" +
450 ("310b" +
451 ("3009" +
452 ("0603" + "550406") +
453 ("1302" + "5553"))) +
454 ("3113" +
455 ("3011" +
456 ("0603" + "55040a") +
457 ("130a" + "476f6f676c6520496e63"))) +
458 ("3125" +
459 ("3023" +
460 ("0603" + "550403") +
461 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
462 ("170d" + "3137303632393031303030325a") +
463 ("170d" + "3137303730393031303030325a") +
464 ("3000") +
465 ("a040" +
466 ("303e" +
467 ("301f" +
468 ("0603" + "551d23") +
469 ("0418" +
470 ("3016" +
471 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
472 ("300e" +
473 ("0603" + "551d1b") +
474 ("010100") +
475 ("0404" + "02020120")) +
476 ("300b" +
477 ("0603" + "551d14") +
478 ("0404" + "02020623"))))) +
479 ("300d" +
480 ("0609" + "2a864886f70d01010b") +
481 "0500") +
482 ("03820101" +
483 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
484 wantErr: "marked non-critical",
485 },
486 {
487 desc: "invalid-delta-crl-indicator-ext-wrong-asn1",
488 data: ("308201d6" +
489 ("3081bf" +
490 ("0201" + "01") +
491 ("300d" +
492 ("0609" + "2a864886f70d01010b") +
493 "0500") +
494 ("3049" +
495 ("310b" +
496 ("3009" +
497 ("0603" + "550406") +
498 ("1302" + "5553"))) +
499 ("3113" +
500 ("3011" +
501 ("0603" + "55040a") +
502 ("130a" + "476f6f676c6520496e63"))) +
503 ("3125" +
504 ("3023" +
505 ("0603" + "550403") +
506 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
507 ("170d" + "3137303632393031303030325a") +
508 ("170d" + "3137303730393031303030325a") +
509 ("3000") +
510 ("a040" +
511 ("303e" +
512 ("301f" +
513 ("0603" + "551d23") +
514 ("0418" +
515 ("3016" +
516 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
517 ("300e" +
518 ("0603" + "551d1b") +
519 ("0101ff") +
520 ("0404" + "0a020123")) +
521 ("300b" +
522 ("0603" + "551d14") +
523 ("0404" + "02020623"))))) +
524 ("300d" +
525 ("0609" + "2a864886f70d01010b") +
526 "0500") +
527 ("03820101" +
528 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
529 wantErr: "failed to unmarshal",
530 },
531 {
532 desc: "invalid-delta-crl-indicator-ext-trailing-data",
533 data: ("308201d6" +
534 ("3081bf" +
535 ("0201" + "01") +
536 ("300d" +
537 ("0609" + "2a864886f70d01010b") +
538 "0500") +
539 ("3049" +
540 ("310b" +
541 ("3009" +
542 ("0603" + "550406") +
543 ("1302" + "5553"))) +
544 ("3113" +
545 ("3011" +
546 ("0603" + "55040a") +
547 ("130a" + "476f6f676c6520496e63"))) +
548 ("3125" +
549 ("3023" +
550 ("0603" + "550403") +
551 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
552 ("170d" + "3137303632393031303030325a") +
553 ("170d" + "3137303730393031303030325a") +
554 ("3000") +
555 ("a040" +
556 ("303e" +
557 ("301f" +
558 ("0603" + "551d23") +
559 ("0418" +
560 ("3016" +
561 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
562 ("300e" +
563 ("0603" + "551d1b") +
564 ("0101ff") +
565 ("0404" + "020101DD")) +
566 ("300b" +
567 ("0603" + "551d14") +
568 ("0404" + "02020623"))))) +
569 ("300d" +
570 ("0609" + "2a864886f70d01010b") +
571 "0500") +
572 ("03820101" +
573 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
574 wantErr: "trailing data",
575 },
576 {
577 desc: "invalid-delta-crl-indicator-ext-negative",
578 data: ("308201d6" +
579 ("3081bf" +
580 ("0201" + "01") +
581 ("300d" +
582 ("0609" + "2a864886f70d01010b") +
583 "0500") +
584 ("3049" +
585 ("310b" +
586 ("3009" +
587 ("0603" + "550406") +
588 ("1302" + "5553"))) +
589 ("3113" +
590 ("3011" +
591 ("0603" + "55040a") +
592 ("130a" + "476f6f676c6520496e63"))) +
593 ("3125" +
594 ("3023" +
595 ("0603" + "550403") +
596 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
597 ("170d" + "3137303632393031303030325a") +
598 ("170d" + "3137303730393031303030325a") +
599 ("3000") +
600 ("a040" +
601 ("303e" +
602 ("301f" +
603 ("0603" + "551d23") +
604 ("0418" +
605 ("3016" +
606 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
607 ("300e" +
608 ("0603" + "551d1b") +
609 ("0101ff") +
610 ("0404" + "02028120")) +
611 ("300b" +
612 ("0603" + "551d14") +
613 ("0404" + "02020623"))))) +
614 ("300d" +
615 ("0609" + "2a864886f70d01010b") +
616 "0500") +
617 ("03820101" +
618 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
619 wantErr: "negative",
620 },
621 {
622 desc: "invalid-crl-number-ext-critical",
623 data: ("308201c9" +
624 ("3081b2" +
625 ("0201" + "01") +
626 ("300d" +
627 ("0609" + "2a864886f70d01010b") +
628 "0500") +
629 ("3049" +
630 ("310b" +
631 ("3009" +
632 ("0603" + "550406") +
633 ("1302" + "5553"))) +
634 ("3113" +
635 ("3011" +
636 ("0603" + "55040a") +
637 ("130a" + "476f6f676c6520496e63"))) +
638 ("3125" +
639 ("3023" +
640 ("0603" + "550403") +
641 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
642 ("170d" + "3137303632393031303030325a") +
643 ("170d" + "3137303730393031303030325a") +
644 ("3000") +
645 ("a033" +
646 ("3031" +
647 ("301f" +
648 ("0603" + "551d23") +
649 ("0418" +
650 ("3016" +
651 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
652 ("300e" +
653 ("0603" + "551d14") +
654 ("0101ff") +
655 ("0404" + "02020623"))))) +
656 ("300d" +
657 ("0609" + "2a864886f70d01010b") +
658 "0500") +
659 ("03820101" +
660 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
661 wantErr: "marked critical",
662 },
663 {
664 desc: "invalid-crl-number-ext-trailing-data",
665 data: ("308201c6" +
666 ("3081af" +
667 ("0201" + "01") +
668 ("300d" +
669 ("0609" + "2a864886f70d01010b") +
670 "0500") +
671 ("3049" +
672 ("310b" +
673 ("3009" +
674 ("0603" + "550406") +
675 ("1302" + "5553"))) +
676 ("3113" +
677 ("3011" +
678 ("0603" + "55040a") +
679 ("130a" + "476f6f676c6520496e63"))) +
680 ("3125" +
681 ("3023" +
682 ("0603" + "550403") +
683 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
684 ("170d" + "3137303632393031303030325a") +
685 ("170d" + "3137303730393031303030325a") +
686 ("3000") +
687 ("a030" +
688 ("302e" +
689 ("301f" +
690 ("0603" + "551d23") +
691 ("0418" +
692 ("3016" +
693 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
694 ("300b" +
695 ("0603" + "551d14") +
696 ("0404" + "0201" + "0623"))))) +
697 ("300d" +
698 ("0609" + "2a864886f70d01010b") +
699 "0500") +
700 ("03820101" +
701 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
702 wantErr: "trailing data",
703 },
704 {
705 desc: "invalid-crl-number-ext-negative",
706 data: ("308201c6" +
707 ("3081af" +
708 ("0201" + "01") +
709 ("300d" +
710 ("0609" + "2a864886f70d01010b") +
711 "0500") +
712 ("3049" +
713 ("310b" +
714 ("3009" +
715 ("0603" + "550406") +
716 ("1302" + "5553"))) +
717 ("3113" +
718 ("3011" +
719 ("0603" + "55040a") +
720 ("130a" + "476f6f676c6520496e63"))) +
721 ("3125" +
722 ("3023" +
723 ("0603" + "550403") +
724 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
725 ("170d" + "3137303632393031303030325a") +
726 ("170d" + "3137303730393031303030325a") +
727 ("3000") +
728 ("a030" +
729 ("302e" +
730 ("301f" +
731 ("0603" + "551d23") +
732 ("0418" +
733 ("3016" +
734 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
735 ("300b" +
736 ("0603" + "551d14") +
737 ("0404" + "0202" + "8623"))))) +
738 ("300d" +
739 ("0609" + "2a864886f70d01010b") +
740 "0500") +
741 ("03820101" +
742 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
743 wantErr: "negative",
744 },
745 {
746 desc: "invalid-crl-number-ext-wrong-asn1",
747 data: ("308201c6" +
748 ("3081af" +
749 ("0201" + "01") +
750 ("300d" +
751 ("0609" + "2a864886f70d01010b") +
752 "0500") +
753 ("3049" +
754 ("310b" +
755 ("3009" +
756 ("0603" + "550406") +
757 ("1302" + "5553"))) +
758 ("3113" +
759 ("3011" +
760 ("0603" + "55040a") +
761 ("130a" + "476f6f676c6520496e63"))) +
762 ("3125" +
763 ("3023" +
764 ("0603" + "550403") +
765 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
766 ("170d" + "3137303632393031303030325a") +
767 ("170d" + "3137303730393031303030325a") +
768 ("3000") +
769 ("a030" +
770 ("302e" +
771 ("301f" +
772 ("0603" + "551d23") +
773 ("0418" +
774 ("3016" +
775 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
776 ("300b" +
777 ("0603" + "551d14") +
778 ("0404" + "0a02" + "0623"))))) +
779 ("300d" +
780 ("0609" + "2a864886f70d01010b") +
781 "0500") +
782 ("03820101" +
783 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
784 wantErr: "structure error",
785 },
786 {
787 desc: "invalid-auth-key-id-ext-trailing-data",
788 data: ("308201c6" +
789 ("3081af" +
790 ("0201" + "01") +
791 ("300d" +
792 ("0609" + "2a864886f70d01010b") +
793 "0500") +
794 ("3049" +
795 ("310b" +
796 ("3009" +
797 ("0603" + "550406") +
798 ("1302" + "5553"))) +
799 ("3113" +
800 ("3011" +
801 ("0603" + "55040a") +
802 ("130a" + "476f6f676c6520496e63"))) +
803 ("3125" +
804 ("3023" +
805 ("0603" + "550403") +
806 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
807 ("170d" + "3137303632393031303030325a") +
808 ("170d" + "3137303730393031303030325a") +
809 ("3000") +
810 ("a030" +
811 ("302e" +
812 ("301f" +
813 ("0603" + "551d23") +
814 ("0418" +
815 ("3015" +
816 "8013" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
817 ("300b" +
818 ("0603" + "551d14") +
819 ("0404" + "0202" + "0623"))))) +
820 ("300d" +
821 ("0609" + "2a864886f70d01010b") +
822 "0500") +
823 ("03820101" +
824 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
825 wantErr: "trailing data",
826 },
827 {
828 desc: "invalid-auth-key-id-ext-wrong-asn1",
829 data: ("308201c6" +
830 ("3081af" +
831 ("0201" + "01") +
832 ("300d" +
833 ("0609" + "2a864886f70d01010b") +
834 "0500") +
835 ("3049" +
836 ("310b" +
837 ("3009" +
838 ("0603" + "550406") +
839 ("1302" + "5553"))) +
840 ("3113" +
841 ("3011" +
842 ("0603" + "55040a") +
843 ("130a" + "476f6f676c6520496e63"))) +
844 ("3125" +
845 ("3023" +
846 ("0603" + "550403") +
847 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
848 ("170d" + "3137303632393031303030325a") +
849 ("170d" + "3137303730393031303030325a") +
850 ("3000") +
851 ("a030" +
852 ("302e" +
853 ("301f" +
854 ("0603" + "551d23") +
855 ("0418" +
856 ("3116" +
857 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
858 ("300b" +
859 ("0603" + "551d14") +
860 ("0404" + "0202" + "0623"))))) +
861 ("300d" +
862 ("0609" + "2a864886f70d01010b") +
863 "0500") +
864 ("03820101" +
865 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
866 wantErr: "failed to unmarshal",
867 },
868
869 {
870 desc: "valid-auth-info-access-ext-ca-issuer",
871 data: ("308201ee" +
872 ("3081d7" +
873 ("0201" + "01") +
874 ("300d" +
875 ("0609" + "2a864886f70d01010b") +
876 "0500") +
877 ("3049" +
878 ("310b" +
879 ("3009" +
880 ("0603" + "550406") +
881 ("1302" + "5553"))) +
882 ("3113" +
883 ("3011" +
884 ("0603" + "55040a") +
885 ("130a" + "476f6f676c6520496e63"))) +
886 ("3125" +
887 ("3023" +
888 ("0603" + "550403") +
889 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
890 ("170d" + "3137303632393031303030325a") +
891 ("170d" + "3137303730393031303030325a") +
892 ("3000") +
893 ("a058" +
894 ("3056" +
895 ("301f" +
896 ("0603" + "551d23") +
897 ("0418" +
898 ("3016" +
899 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
900 ("3026" +
901 ("0608" + "2b06010505070101") +
902 ("041a" +
903 ("3018" +
904 ("3016" +
905 ("0608" + "2b06010505073002") +
906 ("860a" + "687474703a2f2f777777"))))) +
907 ("300b" +
908 ("0603" + "551d14") +
909 ("0404" + "02020623"))))) +
910 ("300d" +
911 ("0609" + "2a864886f70d01010b") +
912 "0500") +
913 ("03820101" +
914 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
915 want: TBSCertList{
916 Version: 1,
917 Signature: pkix.AlgorithmIdentifier{
918 Algorithm: oidSignatureSHA256WithRSA,
919 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
920 },
921 Issuer: pkix.RDNSequence{
922 []pkix.AttributeTypeAndValue{
923 {Type: pkix.OIDCountry, Value: "US"},
924 },
925 []pkix.AttributeTypeAndValue{
926 {Type: pkix.OIDOrganization, Value: "Google Inc"},
927 },
928 []pkix.AttributeTypeAndValue{
929 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
930 },
931 },
932 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
933 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
934 RevokedCertificates: []*RevokedCertificate{},
935 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
936 CRLNumber: 1571,
937 BaseCRLNumber: -1,
938 IssuingCertificateURL: []string{"http://www"},
939 },
940 },
941 {
942 desc: "valid-auth-info-access-ext-ocsp-server",
943 data: ("308201ee" +
944 ("3081d7" +
945 ("0201" + "01") +
946 ("300d" +
947 ("0609" + "2a864886f70d01010b") +
948 "0500") +
949 ("3049" +
950 ("310b" +
951 ("3009" +
952 ("0603" + "550406") +
953 ("1302" + "5553"))) +
954 ("3113" +
955 ("3011" +
956 ("0603" + "55040a") +
957 ("130a" + "476f6f676c6520496e63"))) +
958 ("3125" +
959 ("3023" +
960 ("0603" + "550403") +
961 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
962 ("170d" + "3137303632393031303030325a") +
963 ("170d" + "3137303730393031303030325a") +
964 ("3000") +
965 ("a058" +
966 ("3056" +
967 ("301f" +
968 ("0603" + "551d23") +
969 ("0418" +
970 ("3016" +
971 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
972 ("3026" +
973 ("0608" + "2b06010505070101") +
974 ("041a" +
975 ("3018" +
976 ("3016" +
977 ("0608" + "2b06010505073001") +
978 ("860a" + "687474703a2f2f777777"))))) +
979 ("300b" +
980 ("0603" + "551d14") +
981 ("0404" + "02020623"))))) +
982 ("300d" +
983 ("0609" + "2a864886f70d01010b") +
984 "0500") +
985 ("03820101" +
986 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
987 want: TBSCertList{
988 Version: 1,
989 Signature: pkix.AlgorithmIdentifier{
990 Algorithm: oidSignatureSHA256WithRSA,
991 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
992 },
993 Issuer: pkix.RDNSequence{
994 []pkix.AttributeTypeAndValue{
995 {Type: pkix.OIDCountry, Value: "US"},
996 },
997 []pkix.AttributeTypeAndValue{
998 {Type: pkix.OIDOrganization, Value: "Google Inc"},
999 },
1000 []pkix.AttributeTypeAndValue{
1001 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
1002 },
1003 },
1004 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
1005 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
1006 RevokedCertificates: []*RevokedCertificate{},
1007 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
1008 CRLNumber: 1571,
1009 BaseCRLNumber: -1,
1010 OCSPServer: []string{"http://www"},
1011 },
1012 },
1013 {
1014 desc: "valid-auth-info-access-ext-non-uri-ignored",
1015 data: ("308201ee" +
1016 ("3081d7" +
1017 ("0201" + "01") +
1018 ("300d" +
1019 ("0609" + "2a864886f70d01010b") +
1020 "0500") +
1021 ("3049" +
1022 ("310b" +
1023 ("3009" +
1024 ("0603" + "550406") +
1025 ("1302" + "5553"))) +
1026 ("3113" +
1027 ("3011" +
1028 ("0603" + "55040a") +
1029 ("130a" + "476f6f676c6520496e63"))) +
1030 ("3125" +
1031 ("3023" +
1032 ("0603" + "550403") +
1033 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1034 ("170d" + "3137303632393031303030325a") +
1035 ("170d" + "3137303730393031303030325a") +
1036 ("3000") +
1037 ("a058" +
1038 ("3056" +
1039 ("301f" +
1040 ("0603" + "551d23") +
1041 ("0418" +
1042 ("3016" +
1043 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1044 ("3026" +
1045 ("0608" + "2b06010505070101") +
1046 ("041a" +
1047 ("3018" +
1048 ("3016" +
1049 ("0608" + "2b06010505073001") +
1050 ("820a" + "687474703a2f2f777777"))))) +
1051 ("300b" +
1052 ("0603" + "551d14") +
1053 ("0404" + "02020623"))))) +
1054 ("300d" +
1055 ("0609" + "2a864886f70d01010b") +
1056 "0500") +
1057 ("03820101" +
1058 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1059 want: TBSCertList{
1060 Version: 1,
1061 Signature: pkix.AlgorithmIdentifier{
1062 Algorithm: oidSignatureSHA256WithRSA,
1063 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
1064 },
1065 Issuer: pkix.RDNSequence{
1066 []pkix.AttributeTypeAndValue{
1067 {Type: pkix.OIDCountry, Value: "US"},
1068 },
1069 []pkix.AttributeTypeAndValue{
1070 {Type: pkix.OIDOrganization, Value: "Google Inc"},
1071 },
1072 []pkix.AttributeTypeAndValue{
1073 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
1074 },
1075 },
1076 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
1077 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
1078 RevokedCertificates: []*RevokedCertificate{},
1079 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
1080 CRLNumber: 1571,
1081 BaseCRLNumber: -1,
1082 },
1083 },
1084 {
1085 desc: "invalid-auth-info-access-ext-wrong-asn1",
1086 data: ("308201ee" +
1087 ("3081d7" +
1088 ("0201" + "01") +
1089 ("300d" +
1090 ("0609" + "2a864886f70d01010b") +
1091 "0500") +
1092 ("3049" +
1093 ("310b" +
1094 ("3009" +
1095 ("0603" + "550406") +
1096 ("1302" + "5553"))) +
1097 ("3113" +
1098 ("3011" +
1099 ("0603" + "55040a") +
1100 ("130a" + "476f6f676c6520496e63"))) +
1101 ("3125" +
1102 ("3023" +
1103 ("0603" + "550403") +
1104 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1105 ("170d" + "3137303632393031303030325a") +
1106 ("170d" + "3137303730393031303030325a") +
1107 ("3000") +
1108 ("a058" +
1109 ("3056" +
1110 ("301f" +
1111 ("0603" + "551d23") +
1112 ("0418" +
1113 ("3016" +
1114 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1115 ("3026" +
1116 ("0608" + "2b06010505070101") +
1117 ("041a" +
1118 ("3018" +
1119 ("3116" +
1120 ("0608" + "2b06010505073002") +
1121 ("860a" + "687474703a2f2f777777"))))) +
1122 ("300b" +
1123 ("0603" + "551d14") +
1124 ("0404" + "02020623"))))) +
1125 ("300d" +
1126 ("0609" + "2a864886f70d01010b") +
1127 "0500") +
1128 ("03820101" +
1129 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1130 wantErr: "failed to unmarshal",
1131 },
1132 {
1133 desc: "invalid-auth-info-access-ext-trailing-data",
1134 data: ("308201ee" +
1135 ("3081d7" +
1136 ("0201" + "01") +
1137 ("300d" +
1138 ("0609" + "2a864886f70d01010b") +
1139 "0500") +
1140 ("3049" +
1141 ("310b" +
1142 ("3009" +
1143 ("0603" + "550406") +
1144 ("1302" + "5553"))) +
1145 ("3113" +
1146 ("3011" +
1147 ("0603" + "55040a") +
1148 ("130a" + "476f6f676c6520496e63"))) +
1149 ("3125" +
1150 ("3023" +
1151 ("0603" + "550403") +
1152 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1153 ("170d" + "3137303632393031303030325a") +
1154 ("170d" + "3137303730393031303030325a") +
1155 ("3000") +
1156 ("a058" +
1157 ("3056" +
1158 ("301f" +
1159 ("0603" + "551d23") +
1160 ("0418" +
1161 ("3016" +
1162 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1163 ("3026" +
1164 ("0608" + "2b06010505070101") +
1165 ("041a" +
1166 ("3017" +
1167 ("3015" +
1168 ("0608" + "2b06010505073002") +
1169 ("8609" + "687474703a2f2f7777"))) + "77")) +
1170 ("300b" +
1171 ("0603" + "551d14") +
1172 ("0404" + "02020623"))))) +
1173 ("300d" +
1174 ("0609" + "2a864886f70d01010b") +
1175 "0500") +
1176 ("03820101" +
1177 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1178 wantErr: "trailing data",
1179 },
1180 {
1181 desc: "valid-issuer-alt-name-ext",
1182 data: ("308201d6" +
1183 ("3081bf" +
1184 ("0201" + "01") +
1185 ("300d" +
1186 ("0609" + "2a864886f70d01010b") +
1187 "0500") +
1188 ("3049" +
1189 ("310b" +
1190 ("3009" +
1191 ("0603" + "550406") +
1192 ("1302" + "5553"))) +
1193 ("3113" +
1194 ("3011" +
1195 ("0603" + "55040a") +
1196 ("130a" + "476f6f676c6520496e63"))) +
1197 ("3125" +
1198 ("3023" +
1199 ("0603" + "550403") +
1200 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1201 ("170d" + "3137303632393031303030325a") +
1202 ("170d" + "3137303730393031303030325a") +
1203 ("3000") +
1204 ("a040" +
1205 ("303e" +
1206 ("301f" +
1207 ("0603" + "551d23") +
1208 ("0418" +
1209 ("3016" +
1210 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1211 ("300e" +
1212 ("0603" + "551d12") +
1213 ("0407" +
1214 ("3005" +
1215 "8203" + "777777"))) +
1216 ("300b" +
1217 ("0603" + "551d14") +
1218 ("0404" + "02020623"))))) +
1219 ("300d" +
1220 ("0609" + "2a864886f70d01010b") +
1221 "0500") +
1222 ("03820101" +
1223 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1224 want: TBSCertList{
1225 Version: 1,
1226 Signature: pkix.AlgorithmIdentifier{
1227 Algorithm: oidSignatureSHA256WithRSA,
1228 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
1229 },
1230 Issuer: pkix.RDNSequence{
1231 []pkix.AttributeTypeAndValue{
1232 {Type: pkix.OIDCountry, Value: "US"},
1233 },
1234 []pkix.AttributeTypeAndValue{
1235 {Type: pkix.OIDOrganization, Value: "Google Inc"},
1236 },
1237 []pkix.AttributeTypeAndValue{
1238 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
1239 },
1240 },
1241 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
1242 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
1243 RevokedCertificates: []*RevokedCertificate{},
1244 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
1245 CRLNumber: 1571,
1246 BaseCRLNumber: -1,
1247 IssuerAltNames: GeneralNames{DNSNames: []string{"www"}},
1248 },
1249 },
1250 {
1251 desc: "invalid-issuer-alt-name-ext",
1252 data: ("308201d6" +
1253 ("3081bf" +
1254 ("0201" + "01") +
1255 ("300d" +
1256 ("0609" + "2a864886f70d01010b") +
1257 "0500") +
1258 ("3049" +
1259 ("310b" +
1260 ("3009" +
1261 ("0603" + "550406") +
1262 ("1302" + "5553"))) +
1263 ("3113" +
1264 ("3011" +
1265 ("0603" + "55040a") +
1266 ("130a" + "476f6f676c6520496e63"))) +
1267 ("3125" +
1268 ("3023" +
1269 ("0603" + "550403") +
1270 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1271 ("170d" + "3137303632393031303030325a") +
1272 ("170d" + "3137303730393031303030325a") +
1273 ("3000") +
1274 ("a040" +
1275 ("303e" +
1276 ("301f" +
1277 ("0603" + "551d23") +
1278 ("0418" +
1279 ("3016" +
1280 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1281 ("300e" +
1282 ("0603" + "551d12") +
1283 ("0407" +
1284 ("3005" +
1285 "8903" + "777777"))) +
1286 ("300b" +
1287 ("0603" + "551d14") +
1288 ("0404" + "02020623"))))) +
1289 ("300d" +
1290 ("0609" + "2a864886f70d01010b") +
1291 "0500") +
1292 ("03820101" +
1293 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1294 wantErr: "failed to parse",
1295 },
1296 {
1297 desc: "valid-freshest-crl-ext",
1298 data: ("308201e3" +
1299 ("3081cc" +
1300 ("0201" + "01") +
1301 ("300d" +
1302 ("0609" + "2a864886f70d01010b") +
1303 "0500") +
1304 ("3049" +
1305 ("310b" +
1306 ("3009" +
1307 ("0603" + "550406") +
1308 ("1302" + "5553"))) +
1309 ("3113" +
1310 ("3011" +
1311 ("0603" + "55040a") +
1312 ("130a" + "476f6f676c6520496e63"))) +
1313 ("3125" +
1314 ("3023" +
1315 ("0603" + "550403") +
1316 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1317 ("170d" + "3137303632393031303030325a") +
1318 ("170d" + "3137303730393031303030325a") +
1319 ("3000") +
1320 ("a04d" +
1321 ("304b" +
1322 ("301f" +
1323 ("0603" + "551d23") +
1324 ("0418" +
1325 ("3016" +
1326 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1327 ("301b" +
1328 ("0603" + "551d2e") +
1329 ("0414" +
1330 ("3012" +
1331 ("3010" +
1332 ("a00e" +
1333 ("a00c" +
1334 ("860a" + "687474703a2f2f777777"))))))) +
1335 ("300b" +
1336 ("0603" + "551d14") +
1337 ("0404" + "02020623"))))) +
1338 ("300d" +
1339 ("0609" + "2a864886f70d01010b") +
1340 "0500") +
1341 ("03820101" +
1342 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1343 want: TBSCertList{
1344 Version: 1,
1345 Signature: pkix.AlgorithmIdentifier{
1346 Algorithm: oidSignatureSHA256WithRSA,
1347 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
1348 },
1349 Issuer: pkix.RDNSequence{
1350 []pkix.AttributeTypeAndValue{
1351 {Type: pkix.OIDCountry, Value: "US"},
1352 },
1353 []pkix.AttributeTypeAndValue{
1354 {Type: pkix.OIDOrganization, Value: "Google Inc"},
1355 },
1356 []pkix.AttributeTypeAndValue{
1357 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
1358 },
1359 },
1360 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
1361 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
1362 RevokedCertificates: []*RevokedCertificate{},
1363 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
1364 CRLNumber: 1571,
1365 BaseCRLNumber: -1,
1366 FreshestCRLDistributionPoint: []string{"http://www"},
1367 },
1368 },
1369 {
1370 desc: "invalid-freshest-crl-ext",
1371 data: ("308201e3" +
1372 ("3081cc" +
1373 ("0201" + "01") +
1374 ("300d" +
1375 ("0609" + "2a864886f70d01010b") +
1376 "0500") +
1377 ("3049" +
1378 ("310b" +
1379 ("3009" +
1380 ("0603" + "550406") +
1381 ("1302" + "5553"))) +
1382 ("3113" +
1383 ("3011" +
1384 ("0603" + "55040a") +
1385 ("130a" + "476f6f676c6520496e63"))) +
1386 ("3125" +
1387 ("3023" +
1388 ("0603" + "550403") +
1389 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1390 ("170d" + "3137303632393031303030325a") +
1391 ("170d" + "3137303730393031303030325a") +
1392 ("3000") +
1393 ("a04d" +
1394 ("304b" +
1395 ("301f" +
1396 ("0603" + "551d23") +
1397 ("0418" +
1398 ("3016" +
1399 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1400 ("301b" +
1401 ("0603" + "551d2e") +
1402 ("0414" +
1403 ("3112" +
1404 ("3010" +
1405 ("a00e" +
1406 ("a00c" +
1407 ("860a" + "687474703a2f2f777777"))))))) +
1408 ("300b" +
1409 ("0603" + "551d14") +
1410 ("0404" + "02020623"))))) +
1411 ("300d" +
1412 ("0609" + "2a864886f70d01010b") +
1413 "0500") +
1414 ("03820101" +
1415 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1416 wantErr: "structure error",
1417 },
1418 {
1419 desc: "valid-issuing-dp-ext",
1420 data: ("308201d7" +
1421 ("3081c0" +
1422 ("0201" + "01") +
1423 ("300d" +
1424 ("0609" + "2a864886f70d01010b") +
1425 "0500") +
1426 ("3049" +
1427 ("310b" +
1428 ("3009" +
1429 ("0603" + "550406") +
1430 ("1302" + "5553"))) +
1431 ("3113" +
1432 ("3011" +
1433 ("0603" + "55040a") +
1434 ("130a" + "476f6f676c6520496e63"))) +
1435 ("3125" +
1436 ("3023" +
1437 ("0603" + "550403") +
1438 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1439 ("170d" + "3137303632393031303030325a") +
1440 ("170d" + "3137303730393031303030325a") +
1441 ("3000") +
1442 ("a041" +
1443 ("303f" +
1444 ("301f" +
1445 ("0603" + "551d23") +
1446 ("0418" +
1447 ("3016" +
1448 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1449 ("300f" +
1450 ("0603" + "551d1c") +
1451 ("0101ff") +
1452 ("0405" +
1453 ("3003" +
1454 "8101" + "ff"))) +
1455 ("300b" +
1456 ("0603" + "551d14") +
1457 ("0404" + "02020623"))))) +
1458 ("300d" +
1459 ("0609" + "2a864886f70d01010b") +
1460 "0500") +
1461 ("03820101" +
1462 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1463 want: TBSCertList{
1464 Version: 1,
1465 Signature: pkix.AlgorithmIdentifier{
1466 Algorithm: oidSignatureSHA256WithRSA,
1467 Parameters: asn1.RawValue{Class: 0, Tag: 5, Bytes: []byte{}, FullBytes: []byte{5, 0}},
1468 },
1469 Issuer: pkix.RDNSequence{
1470 []pkix.AttributeTypeAndValue{
1471 {Type: pkix.OIDCountry, Value: "US"},
1472 },
1473 []pkix.AttributeTypeAndValue{
1474 {Type: pkix.OIDOrganization, Value: "Google Inc"},
1475 },
1476 []pkix.AttributeTypeAndValue{
1477 {Type: pkix.OIDCommonName, Value: "Google Internet Authority G2"},
1478 },
1479 },
1480 ThisUpdate: time.Date(2017, 6, 29, 01, 0, 2, 0, time.UTC),
1481 NextUpdate: time.Date(2017, 7, 9, 01, 0, 2, 0, time.UTC),
1482 RevokedCertificates: []*RevokedCertificate{},
1483 AuthorityKeyID: fromHex("4add06161bbcf668b576f581b6bb621aba5a812f"),
1484 CRLNumber: 1571,
1485 BaseCRLNumber: -1,
1486 IssuingDistributionPoint: IssuingDistributionPoint{OnlyContainsUserCerts: true},
1487 },
1488 },
1489 {
1490 desc: "invalid-issuing-dp-ext",
1491 data: ("308201d7" +
1492 ("3081c0" +
1493 ("0201" + "01") +
1494 ("300d" +
1495 ("0609" + "2a864886f70d01010b") +
1496 "0500") +
1497 ("3049" +
1498 ("310b" +
1499 ("3009" +
1500 ("0603" + "550406") +
1501 ("1302" + "5553"))) +
1502 ("3113" +
1503 ("3011" +
1504 ("0603" + "55040a") +
1505 ("130a" + "476f6f676c6520496e63"))) +
1506 ("3125" +
1507 ("3023" +
1508 ("0603" + "550403") +
1509 ("131c" + "476f6f676c6520496e7465726e657420417574686f72697479204732")))) +
1510 ("170d" + "3137303632393031303030325a") +
1511 ("170d" + "3137303730393031303030325a") +
1512 ("3000") +
1513 ("a041" +
1514 ("303f" +
1515 ("301f" +
1516 ("0603" + "551d23") +
1517 ("0418" +
1518 ("3016" +
1519 "8014" + "4add06161bbcf668b576f581b6bb621aba5a812f"))) +
1520 ("300f" +
1521 ("0603" + "551d1c") +
1522 ("0101ff") +
1523 ("0405" +
1524 ("3103" +
1525 "8101" + "ff"))) +
1526 ("300b" +
1527 ("0603" + "551d14") +
1528 ("0404" + "02020623"))))) +
1529 ("300d" +
1530 ("0609" + "2a864886f70d01010b") +
1531 "0500") +
1532 ("03820101" +
1533 "004dcde29667973239cca344c58b72128fb5c5db03efdc75cfb7d9a0410ec03c8cd21160b449cd80224f41ca9d91529295ef7d0179ca4b08bb688cecce13cc07b20ecd87ffde1bc356554083c40bea7a387dacc54b3848b3710acf2fa613d007b12afc37f0a77082655b8dbb6683ba2fc52555e9f74bb5ba9429377ff38e193e799fc05c4c9bbcee29492945a732db67ba3575a79a83427a1f6d18d9ede01c544f3ccd68e5680a9b5418e03e1d80b3e77e69860982a4d21c6b111b07c87fe32c561e871554896b37651d5aaf42b2d092ce8d4dd4ae1d7a97091c0a06c03d71580e0557a51408513fde3012f02dac76536822a564faa2553048729633b68f1fc369")),
1534 wantErr: "failed to unmarshal",
1535 },
1536 }
1537
1538 for _, test := range tests {
1539 inData := fromHex(test.data)
1540 got, err := ParseCertificateList(inData)
1541 if err != nil {
1542 if test.wantErr == "" {
1543 t.Errorf("ParseCertificateList(%q)=%+v,%v; want _,nil", test.desc, got, err)
1544 } else if !strings.Contains(err.Error(), test.wantErr) {
1545 t.Errorf("ParseCertificateList(%q)=%+v,%v; want _,%q", test.desc, got, err, test.wantErr)
1546 }
1547 continue
1548 }
1549 if test.wantErr != "" {
1550 t.Errorf("ParseCertificateList(%q)=%+v,nil; want _,%q", test.desc, got, test.wantErr)
1551 continue
1552 }
1553
1554
1555 got.TBSCertList.Raw = nil
1556 got.TBSCertList.Extensions = nil
1557 for _, rc := range got.TBSCertList.RevokedCertificates {
1558 rc.Extensions = nil
1559 }
1560
1561 if !reflect.DeepEqual(got.TBSCertList, test.want) {
1562 t.Errorf("ParseCertificateList(%q)=%+v; want %+v", test.desc, got.TBSCertList, test.want)
1563 }
1564 }
1565 }
1566
1567 func TestParseRevokedCertificate(t *testing.T) {
1568 var tests = []struct {
1569 desc string
1570 data string
1571 want RevokedCertificate
1572 wantErr string
1573 }{
1574
1575 {
1576 desc: "valid-reason-ext",
1577 data: ("3027" +
1578 ("0208" + "3b772e5f1202118e") +
1579 ("170d" + "3137303531303130353530375a") +
1580 ("300c" +
1581 ("300a" +
1582 ("0603" + "551d15") +
1583 ("0403" +
1584 "0a01" + "01")))),
1585 want: RevokedCertificate{
1586 RevokedCertificate: pkix.RevokedCertificate{
1587 SerialNumber: big.NewInt(4284944556325212558),
1588 RevocationTime: time.Date(2017, 05, 10, 10, 55, 07, 0, time.UTC),
1589 Extensions: []pkix.Extension{
1590 {
1591 Id: OIDExtensionCRLReasons,
1592 Critical: false,
1593 Value: fromHex("0a01" + "01"),
1594 },
1595 },
1596 },
1597 RevocationReason: KeyCompromise,
1598 },
1599 },
1600 {
1601 desc: "invalid-reason-ext-wrong-type",
1602 data: ("3027" +
1603 ("0208" + "3b772e5f1202118e") +
1604 ("170d" + "3137303531303130353530375a") +
1605 ("300c" +
1606 ("300a" +
1607 ("0603" + "551d15") +
1608 ("0403" +
1609 "0201" + "01")))),
1610 wantErr: "tags don't match",
1611 },
1612 {
1613 desc: "invalid-reason-ext-trailing-data",
1614 data: ("3028" +
1615 ("0208" + "3b772e5f1202118e") +
1616 ("170d" + "3137303531303130353530375a") +
1617 ("300d" +
1618 ("300b" +
1619 ("0603" + "551d15") +
1620 ("0404" +
1621 "0a01" + "01" + "aa")))),
1622 wantErr: "trailing data",
1623 },
1624 {
1625 desc: "invalid-reason-ext-critical",
1626 data: ("302b" +
1627 ("0208" + "3b772e5f1202118e") +
1628 ("170d" + "3137303531303130353530375a") +
1629 ("3010" +
1630 ("300e" +
1631 ("0603" + "551d15") +
1632 ("0101ff") +
1633 ("0404" +
1634 "0a01" + "01" + "aa")))),
1635 wantErr: "marked critical",
1636 },
1637
1638 {
1639 desc: "valid-invalidity-date-ext",
1640 data: ("3033" +
1641 ("0208" + "3b772e5f1202118e") +
1642 ("170d" + "3137303531303130353530375a") +
1643 ("3018" +
1644 ("3016" +
1645 ("0603" + "551d18") +
1646 ("040f" +
1647 "170d" + "3137303531303130353530375a")))),
1648 want: RevokedCertificate{
1649 RevokedCertificate: pkix.RevokedCertificate{
1650 SerialNumber: big.NewInt(4284944556325212558),
1651 RevocationTime: time.Date(2017, 05, 10, 10, 55, 07, 0, time.UTC),
1652 Extensions: []pkix.Extension{
1653 {
1654 Id: OIDExtensionInvalidityDate,
1655 Critical: false,
1656 Value: fromHex("170d" + "3137303531303130353530375a"),
1657 },
1658 },
1659 },
1660 InvalidityDate: time.Date(2017, 05, 10, 10, 55, 07, 0, time.UTC),
1661 },
1662 },
1663 {
1664 desc: "invalid-invalidity-date-ext-wrong-type",
1665 data: ("3027" +
1666 ("0208" + "3b772e5f1202118e") +
1667 ("170d" + "3137303531303130353530375a") +
1668 ("300c" +
1669 ("300a" +
1670 ("0603" + "551d18") +
1671 ("0403" +
1672 "0a01" + "01")))),
1673 wantErr: "failed to parse",
1674 },
1675 {
1676 desc: "invalid-invalidity-date-ext-trailing-data",
1677 data: ("3036" +
1678 ("0208" + "3b772e5f1202118e") +
1679 ("170d" + "3137303531303130353530375a") +
1680 ("301b" +
1681 ("3019" +
1682 ("0603" + "551d18") +
1683 ("0412" +
1684 "170d" + "3137303531303130353530375a" + "0a0101")))),
1685 wantErr: "trailing data",
1686 },
1687 {
1688 desc: "invalid-invalidity-date-ext-critical",
1689 data: ("3036" +
1690 ("0208" + "3b772e5f1202118e") +
1691 ("170d" + "3137303531303130353530375a") +
1692 ("301b" +
1693 ("3019" +
1694 ("0603" + "551d18") +
1695 ("0101ff") +
1696 ("040f" +
1697 "170d" + "3137303531303130353530375a")))),
1698 wantErr: "marked critical",
1699 },
1700
1701 {
1702 desc: "valid-issuer-ext",
1703 data: ("303b" +
1704 ("0208" + "3b772e5f1202118e") +
1705 ("170d" + "3137303531303130353530375a") +
1706 ("3020" +
1707 ("301e" +
1708 ("0603" + "551d1d") +
1709 ("0101ff") +
1710 ("0414" +
1711 ("3012" +
1712 ("8210" + "7777772e676f6f676c652e636f2e756b")))))),
1713 want: RevokedCertificate{
1714 RevokedCertificate: pkix.RevokedCertificate{
1715 SerialNumber: big.NewInt(4284944556325212558),
1716 RevocationTime: time.Date(2017, 05, 10, 10, 55, 07, 0, time.UTC),
1717 Extensions: []pkix.Extension{
1718 {
1719 Id: OIDExtensionCertificateIssuer,
1720 Critical: true,
1721 Value: fromHex("3012" +
1722 ("8210" + "7777772e676f6f676c652e636f2e756b")),
1723 },
1724 },
1725 },
1726 Issuer: GeneralNames{
1727 DNSNames: []string{"www.google.co.uk"},
1728 },
1729 },
1730 },
1731 {
1732 desc: "invalid-issuer-ext-wrong-type",
1733 data: ("302a" +
1734 ("0208" + "3b772e5f1202118e") +
1735 ("170d" + "3137303531303130353530375a") +
1736 ("300f" +
1737 ("300d" +
1738 ("0603" + "551d1d") +
1739 ("0101ff") +
1740 ("0403" +
1741 "0a01" + "01")))),
1742 wantErr: "failed to parse",
1743 },
1744 {
1745 desc: "invalid-issuer-ext-non-critical",
1746 data: ("303b" +
1747 ("0208" + "3b772e5f1202118e") +
1748 ("170d" + "3137303531303130353530375a") +
1749 ("3020" +
1750 ("301e" +
1751 ("0603" + "551d1d") +
1752 ("010100") +
1753 ("0414" +
1754 ("3012" +
1755 ("8210" + "7777772e676f6f676c652e636f2e756b")))))),
1756 wantErr: "marked non-critical",
1757 },
1758
1759 {
1760 desc: "valid-unknown-ext",
1761 data: ("3027" +
1762 ("0208" + "3b772e5f1202118e") +
1763 ("170d" + "3137303531303130353530375a") +
1764 ("300c" +
1765 ("300a" +
1766 ("0603" + "551d14") +
1767 ("0403" +
1768 "0a01" + "01")))),
1769 want: RevokedCertificate{
1770 RevokedCertificate: pkix.RevokedCertificate{
1771 SerialNumber: big.NewInt(4284944556325212558),
1772 RevocationTime: time.Date(2017, 05, 10, 10, 55, 07, 0, time.UTC),
1773 Extensions: []pkix.Extension{
1774 {
1775 Id: OIDExtensionCRLNumber,
1776 Critical: false,
1777 Value: fromHex("0a01" + "01"),
1778 },
1779 },
1780 },
1781 },
1782 },
1783 {
1784 desc: "invalid-unknown-ext-critical",
1785 data: ("302a" +
1786 ("0208" + "3b772e5f1202118e") +
1787 ("170d" + "3137303531303130353530375a") +
1788 ("300f" +
1789 ("300d" +
1790 ("0603" + "551d14") +
1791 ("0101ff") +
1792 ("0403" +
1793 "0a01" + "01")))),
1794 wantErr: "unhandled critical extension",
1795 },
1796 }
1797
1798 for _, test := range tests {
1799 inData := fromHex(test.data)
1800 var pkixCert pkix.RevokedCertificate
1801 if _, err := asn1.Unmarshal(inData, &pkixCert); err != nil {
1802 t.Errorf("asn1.Unmarshal(%s)=_,%v; want _,nil", test.data, err)
1803 continue
1804 }
1805 var errs Errors
1806 got := parseRevokedCertificate(pkixCert, &errs)
1807 if len(errs.Errs) > 0 {
1808 err := errs.Errs[0]
1809 if test.wantErr == "" {
1810 t.Errorf("parseRevokedCertificate(%q)=%+v,%v; want _,nil", test.desc, got, err)
1811 } else if !strings.Contains(err.Error(), test.wantErr) {
1812 t.Errorf("parseRevokedCertificate(%q)=%+v,%v; want _,%q", test.desc, got, err, test.wantErr)
1813 }
1814 continue
1815 }
1816 if test.wantErr != "" {
1817 t.Errorf("parseRevokedCertificate(%q)=%+v,nil; want _,%q", test.desc, got, test.wantErr)
1818 continue
1819 }
1820 if !reflect.DeepEqual(got, &test.want) {
1821 t.Errorf("parseRevokedCertificate(%q)=%+v; want %+v", test.desc, got, test.want)
1822 }
1823 }
1824 }
1825
1826 func TestParseIssuingDistributionPoint(t *testing.T) {
1827 var tests = []struct {
1828 data string
1829 want IssuingDistributionPoint
1830 wantErr string
1831 }{
1832 {
1833 data: ("3003" + "8101ff"),
1834 want: IssuingDistributionPoint{OnlyContainsUserCerts: true},
1835 },
1836 {
1837 data: ("3003" + "8201ff"),
1838 want: IssuingDistributionPoint{OnlyContainsCACerts: true},
1839 },
1840 {
1841 data: ("3003" + "8501ff"),
1842 want: IssuingDistributionPoint{OnlyContainsAttributeCerts: true},
1843 },
1844 {
1845 data: ("3006" + "810100" + "8501ff"),
1846 want: IssuingDistributionPoint{OnlyContainsAttributeCerts: true},
1847 },
1848 {
1849 data: ("3009" +
1850 ("a007" +
1851 ("a005" +
1852 "8203" + "777777"))),
1853 want: IssuingDistributionPoint{
1854 DistributionPoint: distributionPointName{
1855 FullName: []asn1.RawValue{
1856 {
1857 Class: asn1.ClassContextSpecific,
1858 Tag: 2,
1859 IsCompound: false,
1860 Bytes: fromHex("777777"),
1861 FullBytes: fromHex("8203777777"),
1862 },
1863 },
1864 },
1865 },
1866 },
1867 {
1868 data: ("3019" +
1869 ("a017" +
1870 ("a115" +
1871 ("3113" +
1872 ("3011" +
1873 ("0603" + "55040a") +
1874 ("130a" + "476f6f676c6520496e63")))))),
1875 want: IssuingDistributionPoint{
1876 DistributionPoint: distributionPointName{
1877 RelativeName: pkix.RDNSequence{
1878 pkix.RelativeDistinguishedNameSET{
1879 pkix.AttributeTypeAndValue{
1880 Type: pkix.OIDOrganization,
1881 Value: "Google Inc",
1882 },
1883 },
1884 },
1885 },
1886 },
1887 },
1888 {
1889 data: ("3006" + "8101ff" + "8501ff"),
1890 wantErr: "multiple cert",
1891 },
1892 {
1893 data: ("3003" + "8501ff" + "00"),
1894 wantErr: "trailing data",
1895 },
1896 {
1897 data: ("3103" + "8101ff"),
1898 wantErr: "failed to unmarshal",
1899 },
1900 {
1901 data: ("3009" +
1902 ("a007" +
1903 ("a005" +
1904 "8903" + "777777"))),
1905 wantErr: "failed to unmarshal GeneralName",
1906 },
1907 }
1908 for _, test := range tests {
1909 inData := fromHex(test.data)
1910 var got IssuingDistributionPoint
1911 var gn GeneralNames
1912 var errs Errors
1913 parseIssuingDistributionPoint(inData, &got, &gn, &errs)
1914 if !errs.Empty() {
1915 err := errs.Errs[0]
1916 if test.wantErr == "" {
1917 t.Errorf("asn1.Unmarshal(%s)=_,%v; want _,nil", test.data, err)
1918 } else if !strings.Contains(err.Error(), test.wantErr) {
1919 t.Errorf("asn1.Unmarshal(%s)=_,%v; want _,%q", test.data, err, test.wantErr)
1920 }
1921 continue
1922 }
1923 if test.wantErr != "" {
1924 t.Errorf("asn1.Unmarshal(%s)=%+v,nil; want _,%q", test.data, got, test.wantErr)
1925 continue
1926 }
1927 if !reflect.DeepEqual(got, test.want) {
1928 t.Errorf("asn1.Unmarshal(%s)=%+v; want %+v", test.data, got, test.want)
1929 }
1930 }
1931 }
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983 const giag2CRL = `-----BEGIN X509 CRL-----
1984 MIICbDCCAVQCAQEwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCVVMxEzARBgNV
1985 BAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRlcm5ldCBBdXRob3Jp
1986 dHkgRzIXDTE3MDYyOTAxMDAwMloXDTE3MDcwOTAxMDAwMlowgaQwJwIIdkvt04r9
1987 UfcXDTE3MDExMzE0MTg1OFowDDAKBgNVHRUEAwoBAzAnAgg7dy5fEgIRjhcNMTcw
1988 NTEwMTA1NTA3WjAMMAoGA1UdFQQDCgEBMCcCCAtU4wkAea1LFw0xNzA0MTIwODUz
1989 MTdaMAwwCgYDVR0VBAMKAQEwJwIIMdozgBgq+bIXDTE2MDkxNTIwMjIxM1owDDAK
1990 BgNVHRUEAwoBA6AwMC4wHwYDVR0jBBgwFoAUSt0GFhu89mi1dvWBtrtiGrpagS8w
1991 CwYDVR0UBAQCAgYjMA0GCSqGSIb3DQEBCwUAA4IBAQBNzeKWZ5cyOcyjRMWLchKP
1992 tcXbA+/cdc+32aBBDsA8jNIRYLRJzYAiT0HKnZFSkpXvfQF5yksIu2iM7M4TzAey
1993 Ds2H/94bw1ZVQIPEC+p6OH2sxUs4SLNxCs8vphPQB7Eq/Dfwp3CCZVuNu2aDui/F
1994 JVXp90u1upQpN3/zjhk+eZ/AXEybvO4pSSlFpzLbZ7o1daeag0J6H20Y2e3gHFRP
1995 PM1o5WgKm1QY4D4dgLPnfmmGCYKk0hxrERsHyH/jLFYehxVUiWs3ZR1ar0Ky0JLO
1996 jU3Urh16lwkcCgbAPXFYDgVXpRQIUT/eMBLwLax2U2gipWT6olUwSHKWM7aPH8Np
1997 -----END X509 CRL-----`
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074 const giag2Cert = `-----BEGIN CERTIFICATE-----
2075 MIIEKDCCAxCgAwIBAgIQAQAhJYiw+lmnd+8Fe2Yn3zANBgkqhkiG9w0BAQsFADBC
2076 MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS
2077 R2VvVHJ1c3QgR2xvYmFsIENBMB4XDTE3MDUyMjExMzIzN1oXDTE4MTIzMTIzNTk1
2078 OVowSTELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMT
2079 HEdvb2dsZSBJbnRlcm5ldCBBdXRob3JpdHkgRzIwggEiMA0GCSqGSIb3DQEBAQUA
2080 A4IBDwAwggEKAoIBAQCcKgR3XNhQkToGo4Lg2FBIvIk/8RlwGohGfuCPxfGJziHu
2081 Wv5hDbcyRImgdAtTT1WkzoJile7rWV/G4QWAEsRelD+8W0g49FP3JOb7kekVxM/0
2082 Uw30SvyfVN59vqBrb4fA0FAfKDADQNoIc1Fsf/86PKc3Bo69SxEE630k3ub5/DFx
2083 +5TVYPMuSq9C0svqxGoassxT3RVLix/IGWEfzZ2oPmMrhDVpZYTIGcVGIvhTlb7j
2084 gEoQxirsupcgEcc5mRAEoPBhepUljE5SdeK27QjKFPzOImqzTs9GA5eXA37Asd57
2085 r0Uzz7o+cbfe9CUlwg01iZ2d+w4ReYkeN8WvjnJpAgMBAAGjggERMIIBDTAfBgNV
2086 HSMEGDAWgBTAephojYn7qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1
2087 dvWBtrtiGrpagS8wDgYDVR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggr
2088 BgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAw
2089 NQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9i
2090 YWwuY3JsMCEGA1UdIAQaMBgwDAYKKwYBBAHWeQIFATAIBgZngQwBAgIwHQYDVR0l
2091 BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQDKSeWs
2092 12Rkd1u+cfrP9B4jx5ppY1Rf60zWGSgjZGaOHMeHgGRfBIsmr5jfCnC8vBk97nsz
2093 qX+99AXUcLsFJnnqmseYuQcZZTTMPOk/xQH6bwx+23pwXEz+LQDwyr4tjrSogPsB
2094 E4jLnD/lu3fKOmc2887VJwJyQ6C9bgLxRwVxPgFZ6RGeGvOED4Cmong1L7bHon8X
2095 fOGLVq7uZ4hRJzBgpWJSwzfVO+qFKgE4h6LPcK2kesnE58rF2rwjMvL+GMJ74N87
2096 L9TQEOaWTPtEtyFkDbkAlDASJodYmDkFOA/MgkgMCkdm7r+0X8T/cKjhf4t5K7hl
2097 MqO5tzHpCvX2HzLc
2098 -----END CERTIFICATE-----`
2099
2100 func TestParseGIAG2CertificateList(t *testing.T) {
2101 certList, err := ParseCertificateList([]byte(giag2CRL))
2102 if err != nil {
2103 t.Fatalf("error parsing: %s", err)
2104 }
2105 if got, want := len(certList.TBSCertList.RevokedCertificates), 4; got != want {
2106 t.Errorf("len(ParseCertificateList(crl).TBSCertList.RevokedCertificates) = %d; want %d", got, want)
2107 }
2108
2109 when := time.Date(2017, 7, 7, 12, 0, 0, 0, time.UTC)
2110 if certList.ExpiredAt(when) {
2111 t.Errorf("certList.ExpiredAt(%v)=true; want false", when)
2112 }
2113 if got, want := certList.TBSCertList.CRLNumber, 1571; got != want {
2114 t.Errorf("ParseCertificateList(crl).TBSCertList.CRLNumber = %d; want %d", got, want)
2115 }
2116
2117 pemBlock, _ := pem.Decode([]byte(giag2Cert))
2118 giag2, err := ParseCertificate(pemBlock.Bytes)
2119 if err != nil {
2120 t.Fatalf("error parsing GIAG2 cert: %v", err)
2121 }
2122 if err := giag2.CheckCertificateListSignature(certList); err != nil {
2123 t.Errorf("CheckCertificateListSignature(giag2CRL)=%v; want nil", err)
2124 }
2125 }
2126
View as plain text