1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package tests.security.cert;
19
20import dalvik.annotation.TestLevel;
21import dalvik.annotation.TestTargetClass;
22import dalvik.annotation.TestTargetNew;
23
24import junit.framework.TestCase;
25
26import tests.support.resource.Support_Resources;
27
28import tests.support.Support_GetResource;
29
30import java.io.ByteArrayInputStream;
31import java.io.IOException;
32import java.io.InputStream;
33import java.net.URL;
34import java.security.NoSuchProviderException;
35import java.security.Provider;
36import java.security.Security;
37import java.security.cert.CRL;
38import java.security.cert.CRLException;
39import java.security.cert.Certificate;
40import java.security.cert.CertificateException;
41import java.security.cert.CertificateFactory;
42import java.util.Collection;
43import java.util.List;
44
45@TestTargetClass(CertificateFactory.class)
46public class CertificateFactory4Test extends TestCase {
47
48    private static final String BASE_URL = Support_GetResource
49            .getResourceURL("/../internalres/");
50
51    private static final String[] CERTIFICATE_URLS = new String[] {
52            "Bug93891-PEM.cer", "Bug93891-DER.cer", "Bug94404-PKCS7.cer" };
53
54    private static final String[] CRL_URLS = new String[] { "Bug93893-1.crl",
55            "Bug93893-2.crl", "Bug94404-DER.crl" };
56
57    private static final String[] CRLCOLLECTION_URLS = new String[] { "Bug94404-PKCS7.crl" };
58
59    /**
60     * @tests java.security.cert.CertificateFactory#generateCertificate(java.io.InputStream)
61     */
62    @TestTargetNew(
63        level = TestLevel.COMPLETE,
64        notes = "",
65        method = "generateCertificate",
66        args = {java.io.InputStream.class}
67    )
68    public void test_generateCertificateLjava_io_InputStream() throws Exception {
69        // Test 1
70        // Test for method java.security.cert.Certificate
71        // java.security.cert.CertificateFactory.generateCertificate(java.io.InputStream)
72        CertificateFactory fact = CertificateFactory.getInstance("X.509");
73        for (int i = 0; i < CERTIFICATES_ENCODED_X509.length; i++) {
74            ByteArrayInputStream bais = new ByteArrayInputStream(
75                    CERTIFICATES_ENCODED_X509[i].getBytes());
76            fact.generateCertificate(bais);
77
78            // try again with generateCertificates()
79            bais = new ByteArrayInputStream(CERTIFICATES_ENCODED_X509[i]
80                    .getBytes());
81            fact.generateCertificate(bais);
82        }
83
84        // Test 2
85        InputStream is = Support_Resources.getResourceStream("hyts_badpem.cer");
86        try {
87            fact.generateCertificate(is);
88            fail("Test2: CertificateException not thrown");
89        } catch (CertificateException e) {} finally {
90            try {
91                is.close();
92            } catch (IOException ignore) {}
93        }
94    }
95
96    /**
97     * @tests java.security.cert.CertificateFactory#generateCertificates(java.io.InputStream)
98     */
99    @TestTargetNew(
100        level = TestLevel.PARTIAL_COMPLETE,
101        notes = "Verifies IOException.",
102        method = "generateCertificates",
103        args = {java.io.InputStream.class}
104    )
105    public void test_generateCertificatesLjava_io_InputStream()
106            throws Exception {
107        CertificateFactory fact = CertificateFactory.getInstance("X.509");
108        for (int i = 0; i < CERTIFICATE_URLS.length; i++) {
109            URL certUrl = new URL(BASE_URL + CERTIFICATE_URLS[i]);
110            try {
111                InputStream is = certUrl.openStream();
112                Collection<? extends Certificate> certs = fact.generateCertificates(is);
113                assertNotNull("The certificates in \""
114                        + certUrl.toExternalForm()
115                        + "\" were not parsed correctly", certs);
116            } catch (IOException e) {
117                // the certificate could not be found, skip it
118            } catch (CertificateException e) {
119                fail("An exception was thrown while parsing \""
120                        + certUrl.toExternalForm() + "\": " + e.getMessage());
121            }
122        }
123    }
124
125    /**
126     * @tests java.security.cert.CertificateFactory#generateCRL(java.io.InputStream)
127     */
128    @TestTargetNew(
129        level = TestLevel.PARTIAL_COMPLETE,
130        notes = "Verifies IOException.",
131        method = "generateCRL",
132        args = {java.io.InputStream.class}
133    )
134    public void test_generateCRLLjava_io_InputStream() throws Exception {
135        CertificateFactory fact = CertificateFactory.getInstance("X.509");
136        for (int i = 0; i < CRL_URLS.length; i++) {
137            URL certUrl = new URL(BASE_URL + CRL_URLS[i]);
138            try {
139                InputStream is = certUrl.openStream();
140                CRL crl = fact.generateCRL(is);
141                assertNotNull("The CRL in \"" + certUrl.toExternalForm()
142                        + "\" were not parsed correctly", crl);
143            } catch (IOException e) {
144                // the certificate could not be found, skip it
145            } catch (CRLException e) {
146                fail("An exception was thrown while parsing \""
147                        + certUrl.toExternalForm() + "\": " + e.getMessage());
148            }
149        }
150    }
151
152    /**
153     * @tests java.security.cert.CertificateFactory#generateCRLs(java.io.InputStream)
154     */
155    @TestTargetNew(
156        level = TestLevel.PARTIAL_COMPLETE,
157        notes = "Verifies IOException.",
158        method = "generateCRLs",
159        args = {java.io.InputStream.class}
160    )
161    public void test_generateCRLsLjava_io_InputStream() throws Exception {
162        CertificateFactory fact = CertificateFactory.getInstance("X.509");
163        for (int i = 0; i < CRLCOLLECTION_URLS.length; i++) {
164            URL certUrl = new URL(BASE_URL + CRLCOLLECTION_URLS[i]);
165            try {
166                InputStream is = certUrl.openStream();
167                Collection<? extends CRL> crls = fact.generateCRLs(is);
168                assertTrue("The CRLs in \"" + certUrl.toExternalForm()
169                        + "\" were not parsed correctly", crls != null
170                        && crls.size() > 0);
171            } catch (IOException e) {
172                // the certificate could not be found, skip it
173            }
174        }
175    }
176
177    /**
178     * @tests java.security.cert.CertificateFactory#getInstance(java.lang.String)
179     */
180    @TestTargetNew(
181        level = TestLevel.PARTIAL_COMPLETE,
182        notes = "Doesn't verify CertificateException.",
183        method = "getInstance",
184        args = {java.lang.String.class}
185    )
186    public void test_getInstanceLjava_lang_String() throws Exception {
187        // Test for method java.security.cert.CertificateFactory
188        // java.security.cert.CertificateFactory.getInstance(java.lang.String)
189        CertificateFactory fact = CertificateFactory.getInstance("X.509");
190        assertTrue("factory is null", fact != null);
191    }
192
193    /**
194     * @tests java.security.cert.CertificateFactory#getInstance(java.lang.String,
195     *        java.lang.String)
196     */
197    @TestTargetNew(
198        level = TestLevel.COMPLETE,
199        notes = "",
200        method = "getInstance",
201        args = {java.lang.String.class, java.lang.String.class}
202    )
203    public void test_getInstanceLjava_lang_StringLjava_lang_String()
204            throws Exception {
205        // Test for method java.security.cert.CertificateFactory
206        // java.security.cert.CertificateFactory.getInstance(java.lang.String,
207        // java.lang.String)
208        Provider[] providers = Security
209                .getProviders("CertificateFactory.X.509");
210
211        if (providers != null) {
212            for (int i = 0; i < providers.length; i++) {
213                CertificateFactory fact = CertificateFactory.getInstance(
214                        "X.509", providers[i].getName());
215                assertNotNull("factory is null", fact);
216            }// end for
217        } else {
218            fail("No providers support CertificateFactory.X.509");
219        }
220
221        // exception case
222        try {
223            CertificateFactory.getInstance("X.509", "IHaventBeenConfigured");
224            fail("Should have thrown NoSuchProviderException");
225        } catch (NoSuchProviderException e) {
226            // Expected
227        }
228    }
229
230    /**
231     * @tests java.security.cert.CertificateFactory#getProvider()
232     */
233    @TestTargetNew(
234        level = TestLevel.COMPLETE,
235        notes = "",
236        method = "getProvider",
237        args = {}
238    )
239    public void test_getProvider() throws Exception {
240        // Test for method java.security.Provider
241        // java.security.cert.CertificateFactory.getProvider()
242        Provider p = CertificateFactory.getInstance("X.509").getProvider();
243        assertNotNull("provider is null", p);
244    }
245
246    /**
247     * @tests java.security.cert.CertificateFactory#generateCRLs(InputStream
248     *        inStream)
249     */
250    @TestTargetNew(
251        level = TestLevel.PARTIAL_COMPLETE,
252        notes = "Verifies null as a parameter.",
253        method = "generateCRLs",
254        args = {java.io.InputStream.class}
255    )
256    public void testGenerateCRLs2() throws Exception {
257        // Regression for HARMONY-814
258        try {
259            CertificateFactory.getInstance("X.509").generateCRL(
260                    (InputStream) null);
261            fail("CRLException was not thrown");
262        } catch (CRLException e) {}
263    }
264
265    /**
266     * @tests java.security.cert.CertificateFactory#generateCertificate(InputStream
267     *        inStream)
268     */
269    @TestTargetNew(
270        level = TestLevel.PARTIAL_COMPLETE,
271        notes = "Verifies null as a parameter,s and CertificateException.",
272        method = "generateCertificate",
273        args = {java.io.InputStream.class}
274    )
275    public void testGenerateCertificate() throws Exception {
276        // Regression for HARMONY-814
277        try {
278            CertificateFactory.getInstance("X.509").generateCertificate(null);
279            fail("CertificateException was not thrown");
280        } catch (CertificateException e) {}
281    }
282
283    /**
284     * @tests java.security.cert.CertificateFactory#generateCertificates(InputStream
285     *        inStream)
286     */
287    @TestTargetNew(
288        level = TestLevel.PARTIAL_COMPLETE,
289        notes = "Verifies null as a parameter.",
290        method = "generateCertificates",
291        args = {java.io.InputStream.class}
292    )
293    public void testGenerateCertificates2() throws Exception {
294        // Regression for HARMONY-814
295        try {
296            CertificateFactory.getInstance("X.509").generateCertificates(null);
297            fail("CertificateException was not thrown");
298        } catch (CertificateException e) {}
299    }
300
301    /**
302     * @tests java.security.cert.CertificateFactory#generateCertPath(InputStream
303     *        inStream, String encoding)
304     */
305    @TestTargetNew(
306        level = TestLevel.PARTIAL_COMPLETE,
307        notes = "Verifies null as InputStream parameter.",
308        method = "generateCertPath",
309        args = {java.io.InputStream.class, java.lang.String.class}
310    )
311    public void testGenerateCertPath1() throws Exception {
312        // Regression for HARMONY-814
313        try {
314            CertificateFactory.getInstance("X.509").generateCertPath(
315                    (InputStream) null, "PkiPath");
316            fail("CertificateException was not thrown");
317        } catch (CertificateException e) {}
318    }
319
320    /**
321     * @tests java.security.cert.CertificateFactory#generateCertPath(List<?
322     *        extends Certificate> certificates)
323     */
324    @TestTargetNew(
325        level = TestLevel.PARTIAL_COMPLETE,
326        notes = "Verifies null as a parameter.",
327        method = "generateCertPath",
328        args = {java.util.List.class}
329    )
330    public void testGenerateCertPath2() throws Exception {
331        // Regression for HARMONY-814
332        try {
333            CertificateFactory.getInstance("X.509").generateCertPath(
334                    (List<Certificate>) null);
335            fail("NullPointerException was not thrown");
336        } catch (NullPointerException e) {}
337    }
338
339    /**
340     * @tests java.security.cert.CertificateFactory#generateCertPath(InputStream
341     *        inStream)
342     */
343    @TestTargetNew(
344        level = TestLevel.PARTIAL_COMPLETE,
345        notes = "Verifies null as  a parameter.",
346        method = "generateCertPath",
347        args = {java.io.InputStream.class}
348    )
349    public void testGenerateCertPath3() throws Exception {
350        // Regression for HARMONY-814
351        try {
352            CertificateFactory.getInstance("X.509").generateCertPath(
353                    (InputStream) null);
354            fail("CertificateException was not thrown");
355        } catch (CertificateException e) {}
356    }
357
358    /**
359     * @tests java.security.cert.CertificateFactory#generateCRL(InputStream
360     *        inStream)
361     */
362    @TestTargetNew(
363        level = TestLevel.PARTIAL_COMPLETE,
364        notes = "Verifies null as a parameter.",
365        method = "generateCRL",
366        args = {java.io.InputStream.class}
367    )
368    public void testGenerateCRL() throws Exception {
369        // Regression for HARMONY-814
370        try {
371            CertificateFactory.getInstance("X.509").generateCRL(
372                    (InputStream) null);
373            fail("CRLException was not thrown");
374        } catch (CRLException e) {}
375    }
376
377    private static final String[] CERTIFICATES_ENCODED_X509 = {
378            // CERTIFICATES_ENCODED_X509[0]
379            "-----BEGIN CERTIFICATE-----\n"
380                    + "MIICZTCCAdICBQL3AAC2MA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMSAw\n"
381                    + "HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJl\n"
382                    + "IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NzAyMjAwMDAwMDBa\n"
383                    + "Fw05ODAyMjAyMzU5NTlaMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\n"
384                    + "cm5pYTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQKExZTdW4gTWljcm9zeXN0\n"
385                    + "ZW1zLCBJbmMuMSEwHwYDVQQLExhUZXN0IGFuZCBFdmFsdWF0aW9uIE9ubHkxGjAY\n"
386                    + "BgNVBAMTEWFyZ29uLmVuZy5zdW4uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n"
387                    + "iQKBgQCofmdY+PiUWN01FOzEewf+GaG+lFf132UpzATmYJkA4AEA/juW7jSi+LJk\n"
388                    + "wJKi5GO4RyZoyimAL/5yIWDV6l1KlvxyKslr0REhMBaD/3Z3EsLTTEf5gVrQS6sT\n"
389                    + "WMoSZAyzB39kFfsB6oUXNtV8+UKKxSxKbxvhQn267PeCz5VX2QIDAQABMA0GCSqG\n"
390                    + "SIb3DQEBAgUAA34AXl3at6luiV/7I9MN5CXYoPJYI8Bcdc1hBagJvTMcmlqL2uOZ\n"
391                    + "H9T5hNMEL9Tk6aI7yZPXcw/xI2K6pOR/FrMp0UwJmdxX7ljV6ZtUZf7pY492UqwC\n"
392                    + "1777XQ9UEZyrKJvF5ntleeO0ayBqLGVKCWzWZX9YsXCpv47FNLZbupE=\n"
393                    + "-----END CERTIFICATE-----\n",
394
395            // CERTIFICATES_ENCODED_X509[1]
396            "-----BEGIN CERTIFICATE-----\n"
397                    + "MIICZzCCAdCgAwIBAgIBGzANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJVUzEY\n"
398                    + "MBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsT\n"
399                    + "A1BLSTEcMBoGA1UEAxMTRG9EIFBLSSBNZWQgUm9vdCBDQTAeFw05ODA4MDMyMjAy\n"
400                    + "MjlaFw0wODA4MDQyMjAyMjlaMGExCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMu\n"
401                    + "IEdvdmVybm1lbnQxDDAKBgNVBAsTA0RvRDEMMAoGA1UECxMDUEtJMRwwGgYDVQQD\n"
402                    + "ExNEb0QgUEtJIE1lZCBSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n"
403                    + "gQDbrM/J9FrJSX+zxFUbsI9Vw5QbguVBIa95rwW/0M8+sM0r5gd+DY6iubm6wnXk\n"
404                    + "CSvbfQlFEDSKr4WYeeGp+d9WlDnQdtDFLdA45tCi5SHjnW+hGAmZnld0rz6wQekF\n"
405                    + "5xQaa5A6wjhMlLOjbh27zyscrorMJ1O5FBOWnEHcRv6xqQIDAQABoy8wLTAdBgNV\n"
406                    + "HQ4EFgQUVrmYR6m9701cHQ3r5kXyG7zsCN0wDAYDVR0TBAUwAwEB/zANBgkqhkiG\n"
407                    + "9w0BAQUFAAOBgQDVX1Y0YqC7vekeZjVxtyuC8Mnxbrz6D109AX07LEIRzNYzwZ0w\n"
408                    + "MTImSp9sEzWW+3FueBIU7AxGys2O7X0qmN3zgszPfSiocBuQuXIYQctJhKjF5KVc\n"
409                    + "VGQRYYlt+myhl2vy6yPzEVCjiKwMEb1Spu0irCf+lFW2hsdjvmSQMtZvOw==\n"
410                    + "-----END CERTIFICATE-----\n",
411
412            // CERTIFICATES_ENCODED_X509[2]
413            "-----BEGIN CERTIFICATE-----\n"
414                    + "MIID6TCCA1KgAwIBAgIBGjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJVUzEY\n"
415                    + "MBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsT\n"
416                    + "A1BLSTEcMBoGA1UEAxMTRG9EIFBLSSBNZWQgUm9vdCBDQTAeFw05ODA4MDIxNjQ1\n"
417                    + "MzhaFw0wMzA4MDIxNjQ1MzhaMFYxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMu\n"
418                    + "IEdvdmVybm1lbnQxDDAKBgNVBAsTA0RvRDEMMAoGA1UECxMDUEtJMREwDwYDVQQD\n"
419                    + "EwhNZWQgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyUcrw1k6QKdB\n"
420                    + "WjgtGOk1AVaqJNI8acDGglhqQQ94QYfqZKuo1wwdnYehrgo5QcGkw9XcjBYegLFs\n"
421                    + "v4NCCwZ2pgsfYJlvHcSGPhT/wROUYEpXKelfXiEeaGhFl8zGcqteI2+EBbOZnFpj\n"
422                    + "Y4y+25dQcjYnrRGMAQ98qGwQtogDiDcCAwEAAaOCAbowggG2MBYGA1UdIAQPMA0w\n"
423                    + "CwYJYIZIAWUCAQsDMB8GA1UdIwQYMBaAFFa5mEepve9NXB0N6+ZF8hu87AjdMAwG\n"
424                    + "A1UdJAQFMAOAAQAwHQYDVR0OBBYEFDM6FOgJZ2GIZSQg7HlwQtemkx72MA4GA1Ud\n"
425                    + "DwEB/wQEAwIBhjB+BgNVHRIEdzB1hnNsZGFwOi8vZHMtMS5jaGFtYi5kaXNhLm1p\n"
426                    + "bC9jbiUzZERvRCUyMFBLSSUyME1lZCUyMFJvb3QlMjBDQSUyY291JTNkUEtJJTIg\n"
427                    + "Y291JTNkRG9EJTJjbyUzZFUuUy4lMjBHb3Zlcm5tZW50JTJjYyUzZFVTMA8GA1Ud\n"
428                    + "EwEB/wQFMAMBAf8wgawGA1UdHwSBpDCBoTCBnqCBm6CBmIaBlWxkYXA6Ly9kcy0x\n"
429                    + "LmNoYW1iLmRpc2EubWlsL2NuJTNkRG9EJTIwUEtJJTIwTWVkJTIwUm9vdCUyMENB\n"
430                    + "JTJjb3UlM2RQS0klMmNvdSUzZERvRCUyY28lM2RVLlMuJTIwR292ZXJubWVudCUy\n"
431                    + "Y2MlM2RVUz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0JTNiYmluYXJ5MA0GCSqG\n"
432                    + "SIb3DQEBBQUAA4GBAFo5/Tu0dsy8tyhJVvxaKFNMfP3LLaspl+Or8oCpncKdpKyj\n"
433                    + "7ZO6uJ0n7oqvEaUThm8jgXSNgyttlYPwoNBxEsTq/lBDV3+y/c61psw3qM2boB1H\n"
434                    + "Oi3xXnRY+etG33TN9yydzrZ52XM0hnJZd4xIfoAgqs4T2rgqg8hx0ydU7o4o\n"
435                    + "-----END CERTIFICATE-----\n",
436
437            // CERTIFICATES_ENCODED_X509[3]
438            "-----BEGIN CERTIFICATE-----\n"
439                    + "MIIDVjCCAr+gAwIBAgIBRTANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJVUzEY\n"
440                    + "MBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsT\n"
441                    + "A1BLSTERMA8GA1UEAxMITWVkIENBLTEwHhcNOTgwODAyMTcxMzI5WhcNMDEwODAy\n"
442                    + "MTcxMzI5WjBwMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50\n"
443                    + "MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsTA1BLSTENMAsGA1UECxMEVVNBRjEcMBoG\n"
444                    + "A1UEAxMTZHMtMS5jaXN0dy5zYWljLmNvbTCBnTANBgkqhkiG9w0BAQEFAAOBiwAw\n"
445                    + "gYcCgYEA19oJsspSHnWDi1/NTthbLrnicDogg3c63ZHPedU1YD90L1ogkYzxSA2t\n"
446                    + "MgsVZpNejBglE972mXKPqEGDojnDgltRgRLtLqisIs0DSFQrJrhA8egMH/pHAo9H\n"
447                    + "fH0n9rQUYBI3dsLxQkGVUSbB4P83VHi0sQO0dWsq5mEZd9G+MfsCAQOjggEaMIIB\n"
448                    + "FjAWBgNVHSAEDzANMAsGCWCGSAFlAgELAzAfBgNVHSMEGDAWgBQzOhToCWdhiGUk\n"
449                    + "IOx5cELXppMe9jAdBgNVHQ4EFgQUcQaYO8EEjje+VI3vfBIlDC6HNj0wDgYDVR0P\n"
450                    + "AQH/BAQDAgUgMAwGA1UdEwEB/wQCMAAwgZ0GA1UdHwSBlTCBkjCBj6CBjKCBiYaB\n"
451                    + "hmxkYXA6Ly9kcy0xLmNoYW1iLmRpc2EubWlsL2NuJTNkTWVkJTIwQ0ElMmQxJTJj\n"
452                    + "b3UlM2RQS0klMmNvdSUzZERvRCUyY28lM2RVLlMuJTIwR292ZXJubWVudCUyY2Ml\n"
453                    + "M2RVUz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0JTNiYmluYXJ5MA0GCSqGSIb3\n"
454                    + "DQEBBQUAA4GBAEg7AC9bad2KZzyX4cqLU/mv2cbVg6tES2PIeST7nk8CQcv9a8IO\n"
455                    + "3K4uhrKoTsQfqs9p6+6s0VbgH3PKvOAIF4DAp5Yq1zz3fB+hsaFleHqtDNuldm1+\n"
456                    + "3XA2Oqa5aRFkb6Krut0EEOV4c/GEAPOrRGUTzYmOp4SEc8TEaD/75A7R\n"
457                    + "-----END CERTIFICATE-----\n",
458
459            // CERTIFICATES_ENCODED_X509[4]
460            "-----BEGIN CERTIFICATE-----\n"
461                    + "MIIDXDCCAsWgAwIBAgIBSjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJVUzEY\n"
462                    + "MBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsT\n"
463                    + "A1BLSTERMA8GA1UEAxMITWVkIENBLTEwHhcNOTgwODAyMTgwMjQwWhcNMDEwODAy\n"
464                    + "MTgwMjQwWjB0MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50\n"
465                    + "MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsTA1BLSTENMAsGA1UECxMEVVNBRjEgMB4G\n"
466                    + "A1UEAxMXR3VtYnkuSm9zZXBoLjAwMDAwMDUwNDQwgZ8wDQYJKoZIhvcNAQEBBQAD\n"
467                    + "gY0AMIGJAoGBALT/R7bPqs1c1YqXAg5HNpZLgW2HuAc7RCaP06cE4R44GBLw/fQc\n"
468                    + "VRNLn5pgbTXsDnjiZVd8qEgYqjKFQka4/tNhaF7No2tBZB+oYL/eP0IWtP+h/W6D\n"
469                    + "KR5+UvIIdgmx7k3t9jp2Q51JpHhhKEb9WN54trCO9Yu7PYU+LI85jEIBAgMBAAGj\n"
470                    + "ggEaMIIBFjAWBgNVHSAEDzANMAsGCWCGSAFlAgELAzAfBgNVHSMEGDAWgBQzOhTo\n"
471                    + "CWdhiGUkIOx5cELXppMe9jAdBgNVHQ4EFgQUkLBJl+ayKgzOp/wwBX9M1lSkCg4w\n"
472                    + "DgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwgZ0GA1UdHwSBlTCBkjCBj6CB\n"
473                    + "jKCBiYaBhmxkYXA6Ly9kcy0xLmNoYW1iLmRpc2EubWlsL2NuJTNkTWVkJTIwQ0El\n"
474                    + "MmQxJTJjb3UlM2RQS0klMmNvdSUzZERvRCUyY28lM2RVLlMuJTIwR292ZXJubWVu\n"
475                    + "dCUyY2MlM2RVUz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0JTNiYmluYXJ5MA0G\n"
476                    + "CSqGSIb3DQEBBQUAA4GBAFjapuDHMvIdUeYRyEYdShBR1JZC20tJ3MQnyBQveddz\n"
477                    + "LGFDGpIkRAQU7T/5/ne8lMexyxViC21xOlK9LdbJCbVyywvb9uEm/1je9wieQQtr\n"
478                    + "kjykuB+WB6qTCIslAO/eUmgzfzIENvnH8O+fH7QTr2PdkFkiPIqBJYHvw7F3XDqy\n"
479                    + "-----END CERTIFICATE-----\n",
480
481            // CERTIFICATES_ENCODED_X509[5]
482            "-----BEGIN CERTIFICATE-----\n"
483                    + "MIIDlDCCAv2gAwIBAgIBGTANBgkqhkiG9w0BAQUFADBcMQswCQYDVQQGEwJVUzEY\n"
484                    + "MBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxDDAKBgNVBAsT\n"
485                    + "A1BLSTEXMBUGA1UEAxMOTWVkIEVtYWlsIENBLTEwHhcNOTgwODAyMTgwNjM0WhcN\n"
486                    + "MDAwODAyMTgwNjM0WjCBmTELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD1UuUy4gR292\n"
487                    + "ZXJubWVudDEMMAoGA1UECxMDRG9EMQwwCgYDVQQLEwNQS0kxDTALBgNVBAsTBFVT\n"
488                    + "QUYxIDAeBgNVBAMTF0d1bWJ5Lkpvc2VwaC4wMDAwMDA1MDQ0MSMwIQYJKoZIhvcN\n"
489                    + "AQkBFhRndW1ieUBjaXN0dy5zYWljLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw\n"
490                    + "gYkCgYEAvU4LMoOnF9bmhHvxZz8wCc9eRJ0j4RB0SmVYoq9iPrSJBwROeuxuU8VS\n"
491                    + "JBL/u+RB5t6UJVNjXFmB1wS0foxpOHFQBFWyvWmuOiRUNaRxTVCrO4eG+nmM/U89\n"
492                    + "DKAc9FV4bZ8dPE9PlK9oq0J8Y2DIKz1+gIeM1sTPMnDtFgfGyH8CAwEAAaOCASYw\n"
493                    + "ggEiMBYGA1UdIAQPMA0wCwYJYIZIAWUCAQsDMB8GA1UdIwQYMBaAFJcrSHN/a+aN\n"
494                    + "L5DK1NpJUIvX+bVnMB0GA1UdDgQWBBR50N97AxK0G6U17EP1iu38LiLTBzAOBgNV\n"
495                    + "HQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADCBqQYDVR0fBIGhMIGeMIGboIGYoIGV\n"
496                    + "hoGSbGRhcDovL2RzLTEuY2hhbWIuZGlzYS5taWw6MzkwL2NuJTNkTWVkJTIwRW1h\n"
497                    + "aWwlMjBDQSUyZDElMmNvdSUzZFBLSSUyY291JTNkRG9EJTJjbyUzZFUuUy4lMjBH\n"
498                    + "b3Zlcm5tZW50JTJjYyUzZFVTP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3QlM2Ji\n"
499                    + "aW5hcnkwDQYJKoZIhvcNAQEFBQADgYEAA9z8h7K4v0CuOyvmALNl8TQt0inf0w52\n"
500                    + "JJUvw/3FLA622IHe/vC9VHyIF0ibSEljWeOBuRjoMELAZGXCwRu43o2LDRqHr4Pc\n"
501                    + "WlG0uUtgHTPxbZpaUwueIZCBZg57f7Zhlub7Ag+AjeOybFj3FYqDB7TYqWJgAs/7\n"
502                    + "g5WfNEVAEwc=\n" + "-----END CERTIFICATE-----\n",
503
504            // CERTIFICATES_ENCODED_X509[6]
505            "-----BEGIN CERTIFICATE-----\n"
506                    + "MIIEEjCCA7ygAwIBAgIIEt4r4gAAAlIwDQYJKoZIhvcNAQEEBQAwgZMxCzAJBgNV\n"
507                    + "BAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDETMBEGA1UEChMK\n"
508                    + "V2luZG93cyBOVDEbMBkGA1UECxMSRGlzdHJpYnV0ZWQgU3lzdGVtMTMwMQYDVQQD\n"
509                    + "EypNaWNyb3NvZnQgQ2VydGlmaWNhdGUgU2VydmVyIFRlc3QgR3JvdXAgQ0EwHhcN\n"
510                    + "OTcxMTI1MTkwNDIyWhcNOTgxMDE0MTgxMTI4WjBuMQswCQYDVQQGEwJVUzELMAkG\n"
511                    + "A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD\n"
512                    + "b3Jwb3JhdGlvbjENMAsGA1UECxMERFNZUzERMA8GA1UEAxMIQ2VydFRlc3QwWzAN\n"
513                    + "BgkqhkiG9w0BAQEFAANKADBHAkB6hKgbYme8gtCf1Vy74KVNLf2o/R1kQVDSZiNm\n"
514                    + "lBSEsHAJSLXuuVdYsKo/hzarr9gGmI/gUzmargY1xJGQYbazAgMBAAGjggIXMIIC\n"
515                    + "EzCBzwYDVR0jBIHHMIHEgBS3hTIRuBZaOibht1DZjnTUg/IiRaGBmaSBljCBkzEL\n"
516                    + "MAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMRMwEQYD\n"
517                    + "VQQKEwpXaW5kb3dzIE5UMRswGQYDVQQLExJEaXN0cmlidXRlZCBTeXN0ZW0xMzAx\n"
518                    + "BgNVBAMTKk1pY3Jvc29mdCBDZXJ0aWZpY2F0ZSBTZXJ2ZXIgVGVzdCBHcm91cCBD\n"
519                    + "QYIQERNhAKoA/oUR0US54igUYzCBvQYDVR0fBIG1MIGyMFagVKBShlBodHRwOi8v\n"
520                    + "Q0VSVFNSVi9DZXJ0U3J2L0NlcnRFbnJvbGwvTWljcm9zb2Z0IENlcnRpZmljYXRl\n"
521                    + "IFNlcnZlciBUZXN0IEdyb3VwIENBLmNybDBYoFagVIZSZmlsZTovL1xcQ0VSVFNS\n"
522                    + "VlxDZXJ0U3J2XENlcnRFbnJvbGxcTWljcm9zb2Z0IENlcnRpZmljYXRlIFNlcnZl\n"
523                    + "ciBUZXN0IEdyb3VwIENBLmNybDAJBgNVHRMEAjAAMHQGCCsGAQUFBwEBBGgwZjBk\n"
524                    + "BggrBgEFBQcwAoZYaHR0cDovL0NFUlRTUlYvQ2VydFNydi9DZXJ0RW5yb2xsL0NF\n"
525                    + "UlRTUlZfTWljcm9zb2Z0IENlcnRpZmljYXRlIFNlcnZlciBUZXN0IEdyb3VwIENB\n"
526                    + "LmNydDANBgkqhkiG9w0BAQQFAANBAFbEj4j/3Nv6WcAvq24C7yw8L0FcyE4dtLLX\n"
527                    + "U+04P0POe/doyTT6UngXNXp9RXpqDSiIHBRTshpvR+N2vweR5qA=\n"
528                    + "-----END CERTIFICATE-----\n",
529
530            // CERTIFICATES_ENCODED_X509[7]
531            "-----BEGIN CERTIFICATE-----\n"
532                    + "MIIEYTCCBAugAwIBAgIIFViWmwAAAlowDQYJKoZIhvcNAQEEBQAwgZMxCzAJBgNV\n"
533                    + "BAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDETMBEGA1UEChMK\n"
534                    + "V2luZG93cyBOVDEbMBkGA1UECxMSRGlzdHJpYnV0ZWQgU3lzdGVtMTMwMQYDVQQD\n"
535                    + "EypNaWNyb3NvZnQgQ2VydGlmaWNhdGUgU2VydmVyIFRlc3QgR3JvdXAgQ0EwHhcN\n"
536                    + "OTcxMTI2MDYzNzE4WhcNOTgxMDE0MTgxMTI4WjCBmjEjMCEGCSqGSIb3DQEJARYU\n"
537                    + "YWxsYW5jQG1pY3Jvc29mdC5jb20xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQ\n"
538                    + "MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u\n"
539                    + "MQ0wCwYDVQQLEwREU1lTMRgwFgYDVQQDEw9BbGxhbiBKLiBDb29wZXIwWzANBgkq\n"
540                    + "hkiG9w0BAQEFAANKADBHAkB1951uZLyJXjSZTc8Z1QnuXvKBAqm2WT4OFaFySF/F\n"
541                    + "WnMbIlAE0pvszDkKZ+N7hBzcc5pVIjezPfZ8cPh//jVPAgMBAAGjggI5MIICNTAL\n"
542                    + "BgNVHQ8EBAMCADgwEwYDVR0lBAwwCgYIKwYBBQUHAwQwgc8GA1UdIwSBxzCBxIAU\n"
543                    + "t4UyEbgWWjom4bdQ2Y501IPyIkWhgZmkgZYwgZMxCzAJBgNVBAYTAlVTMQswCQYD\n"
544                    + "VQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDETMBEGA1UEChMKV2luZG93cyBOVDEb\n"
545                    + "MBkGA1UECxMSRGlzdHJpYnV0ZWQgU3lzdGVtMTMwMQYDVQQDEypNaWNyb3NvZnQg\n"
546                    + "Q2VydGlmaWNhdGUgU2VydmVyIFRlc3QgR3JvdXAgQ0GCEBETYQCqAP6FEdFEueIo\n"
547                    + "FGMwgb0GA1UdHwSBtTCBsjBWoFSgUoZQaHR0cDovL0NFUlRTUlYvQ2VydFNydi9D\n"
548                    + "ZXJ0RW5yb2xsL01pY3Jvc29mdCBDZXJ0aWZpY2F0ZSBTZXJ2ZXIgVGVzdCBHcm91\n"
549                    + "cCBDQS5jcmwwWKBWoFSGUmZpbGU6Ly9cXENFUlRTUlZcQ2VydFNydlxDZXJ0RW5y\n"
550                    + "b2xsXE1pY3Jvc29mdCBDZXJ0aWZpY2F0ZSBTZXJ2ZXIgVGVzdCBHcm91cCBDQS5j\n"
551                    + "cmwwCQYDVR0TBAIwADB0BggrBgEFBQcBAQRoMGYwZAYIKwYBBQUHMAKGWGh0dHA6\n"
552                    + "Ly9DRVJUU1JWL0NlcnRTcnYvQ2VydEVucm9sbC9DRVJUU1JWX01pY3Jvc29mdCBD\n"
553                    + "ZXJ0aWZpY2F0ZSBTZXJ2ZXIgVGVzdCBHcm91cCBDQS5jcnQwDQYJKoZIhvcNAQEE\n"
554                    + "BQADQQA1TYsk07tW0dhU6bHPK7NXHUFFiZ2fAtC0epLY9G6yuYb1lozPv5sDnCl1\n"
555                    + "A2fZPgawvAqCvK9xkv5L4j2F+v4U\n"
556                    + "-----END CERTIFICATE-----\n",
557
558            // CERTIFICATES_ENCODED_X509[8]
559            "-----BEGIN CERTIFICATE-----\n"
560                    + "MIIEYjCCBAygAwIBAgIIFVsHaQAAAlwwDQYJKoZIhvcNAQEEBQAwgZMxCzAJBgNV\n"
561                    + "BAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDETMBEGA1UEChMK\n"
562                    + "V2luZG93cyBOVDEbMBkGA1UECxMSRGlzdHJpYnV0ZWQgU3lzdGVtMTMwMQYDVQQD\n"
563                    + "EypNaWNyb3NvZnQgQ2VydGlmaWNhdGUgU2VydmVyIFRlc3QgR3JvdXAgQ0EwHhcN\n"
564                    + "OTcxMTI2MDYzOTU4WhcNOTgxMDE0MTgxMTI4WjCBmjEjMCEGCSqGSIb3DQEJARYU\n"
565                    + "YWxsYW5jQG1pY3Jvc29mdC5jb20xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQ\n"
566                    + "MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u\n"
567                    + "MQ0wCwYDVQQLEwREU1lTMRgwFgYDVQQDEw9BbGxhbiBKLiBDb29wZXIwXDANBgkq\n"
568                    + "hkiG9w0BAQEFAANLADBIAkEA0T1td8kfsJgwm8Qj+jtrq29tqc/DIkIbAPcyygKG\n"
569                    + "1XEUvzQEQumVQx5lCD2LOOJs0eOuv4h6ngvLW+goDaidNQIDAQABo4ICOTCCAjUw\n"
570                    + "CwYDVR0PBAQDAgDAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMIHPBgNVHSMEgccwgcSA\n"
571                    + "FLeFMhG4Flo6JuG3UNmOdNSD8iJFoYGZpIGWMIGTMQswCQYDVQQGEwJVUzELMAkG\n"
572                    + "A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxEzARBgNVBAoTCldpbmRvd3MgTlQx\n"
573                    + "GzAZBgNVBAsTEkRpc3RyaWJ1dGVkIFN5c3RlbTEzMDEGA1UEAxMqTWljcm9zb2Z0\n"
574                    + "IENlcnRpZmljYXRlIFNlcnZlciBUZXN0IEdyb3VwIENBghARE2EAqgD+hRHRRLni\n"
575                    + "KBRjMIG9BgNVHR8EgbUwgbIwVqBUoFKGUGh0dHA6Ly9DRVJUU1JWL0NlcnRTcnYv\n"
576                    + "Q2VydEVucm9sbC9NaWNyb3NvZnQgQ2VydGlmaWNhdGUgU2VydmVyIFRlc3QgR3Jv\n"
577                    + "dXAgQ0EuY3JsMFigVqBUhlJmaWxlOi8vXFxDRVJUU1JWXENlcnRTcnZcQ2VydEVu\n"
578                    + "cm9sbFxNaWNyb3NvZnQgQ2VydGlmaWNhdGUgU2VydmVyIFRlc3QgR3JvdXAgQ0Eu\n"
579                    + "Y3JsMAkGA1UdEwQCMAAwdAYIKwYBBQUHAQEEaDBmMGQGCCsGAQUFBzAChlhodHRw\n"
580                    + "Oi8vQ0VSVFNSVi9DZXJ0U3J2L0NlcnRFbnJvbGwvQ0VSVFNSVl9NaWNyb3NvZnQg\n"
581                    + "Q2VydGlmaWNhdGUgU2VydmVyIFRlc3QgR3JvdXAgQ0EuY3J0MA0GCSqGSIb3DQEB\n"
582                    + "BAUAA0EAUPXt2pOY3YwRUHzD7Dtgyx5G7KxKtLan1wFBFjhv406v2Utb+2+wTQlS\n"
583                    + "ulWemcm8eOdG64nspv0oqSJnA8f4xg==\n"
584                    + "-----END CERTIFICATE-----\n",
585
586            // CERTIFICATES_ENCODED_X509[9]
587            "-----BEGIN CERTIFICATE-----\n"
588                    + "MIICiTCCAfICAQAwDQYJKoZIhvcNAQEEBQAwgYwxCzAJBgNVBAYTAlVTMRUwEwYD\n"
589                    + "VQQIEwxOb3J0aCBEYWtvdGExFDASBgNVBAcTC0dyYW5kIEZvcmtzMRYwFAYDVQQK\n"
590                    + "Ew1VTkQgQWVyb3NwYWNlMRgwFgYDVQQDFA9yb290QGNzLnVuZC5lZHUxHjAcBgkq\n"
591                    + "hkiG9w0BCQEWD3Jvb3RAY3MudW5kLmVkdTAeFw05OTAzMDIyMDU4NDRaFw0wOTAy\n"
592                    + "MjcyMDU4NDRaMIGMMQswCQYDVQQGEwJVUzEVMBMGA1UECBMMTm9ydGggRGFrb3Rh\n"
593                    + "MRQwEgYDVQQHEwtHcmFuZCBGb3JrczEWMBQGA1UEChMNVU5EIEFlcm9zcGFjZTEY\n"
594                    + "MBYGA1UEAxQPcm9vdEBjcy51bmQuZWR1MR4wHAYJKoZIhvcNAQkBFg9yb290QGNz\n"
595                    + "LnVuZC5lZHUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALmlQJg5Nl2VsQZ1\n"
596                    + "/B8fW4YDdk09SlVc7vyWcbcmbWRBJee0jcH448XdRP/m/MXIRsVKyhLA5f01+VPy\n"
597                    + "E2aDkx2WiU4DpqbMbGGAytuXBNudJQmBXjWEFiAGe7dYgDNGKK7Yo1k49Q6qGg9q\n"
598                    + "5did3+ppsyfzbeaiDCH0LO5gegNvAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAJnok\n"
599                    + "1gvj4KC9HeUX/R4Q/f5tbJ2jLeQATIHtUx9QSKSq7IsdY0zz9EnKOsc9pr8JfBTL\n"
600                    + "cAwrxqvl5QuoCFVR2tQq8DtBQY8vp7bEF2CZVoxZJXMIKKiD/Hjb0oypbq5wF0SY\n"
601                    + "xN5DUfG5sShi+vPIAwE62tZ1P1I1N8DQpDYiXkw=\n"
602                    + "-----END CERTIFICATE-----\n",
603
604            // CERTIFICATES_ENCODED_X509[10]
605            "-----BEGIN CERTIFICATE-----\n"
606                    + "MIICWDCCAgICAQAwDQYJKoZIhvcNAQEEBQAwgbYxCzAJBgNVBAYTAlpBMRUwEwYD\n"
607                    + "VQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU\n"
608                    + "VGhhd3RlIENvbnN1bHRpbmcgY2MxHzAdBgNVBAsTFkNlcnRpZmljYXRpb24gU2Vy\n"
609                    + "dmljZXMxFzAVBgNVBAMTDnd3dy50aGF3dGUuY29tMSMwIQYJKoZIhvcNAQkBFhR3\n"
610                    + "ZWJtYXN0ZXJAdGhhd3RlLmNvbTAeFw05NjExMTQxNzE1MjVaFw05NjEyMTQxNzE1\n"
611                    + "MjVaMIG2MQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYD\n"
612                    + "VQQHEwlDYXBlIFRvd24xHTAbBgNVBAoTFFRoYXd0ZSBDb25zdWx0aW5nIGNjMR8w\n"
613                    + "HQYDVQQLExZDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzMRcwFQYDVQQDEw53d3cudGhh\n"
614                    + "d3RlLmNvbTEjMCEGCSqGSIb3DQEJARYUd2VibWFzdGVyQHRoYXd0ZS5jb20wXDAN\n"
615                    + "BgkqhkiG9w0BAQEFAANLADBIAkEAmpIl7aR3aSPUUwUrHzpVMrsm3gpI2PzIwMh3\n"
616                    + "9l1h/RszI0/0qC2WRMlfwm5FapohoyjTJ6ZyGUUenICllKyKZwIDAQABMA0GCSqG\n"
617                    + "SIb3DQEBBAUAA0EAfI57WLkOKEyQqyCDYZ6reCukVDmAe7nZSbOyKv6KUvTCiQ5c\n"
618                    + "e5L4y3c/ViKdlou5BcQYAbxA7rwO/vz4m51w4w==\n"
619                    + "-----END CERTIFICATE-----\n",
620
621            // CERTIFICATES_ENCODED_X509[11]
622            "-----BEGIN CERTIFICATE-----\n"
623                    + "MIIDGjCCAtgCBDaRW4swCwYHKoZIzjgEAwUAMHMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9y\n"
624                    + "aWRhMRQwEgYDVQQHEwtHYWluZXN2aWxsZTEQMA4GA1UEChMHVW5rbm93bjEQMA4GA1UECxMHVW5r\n"
625                    + "bm93bjEYMBYGA1UEAxMPUm9iZXJ0IEx5YmFyZ2VyMB4XDTk5MDEwNTAwMjMzOVoXDTk5MDQwNTAw\n"
626                    + "MjMzOVowczELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExFDASBgNVBAcTC0dhaW5lc3Zp\n"
627                    + "bGxlMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRgwFgYDVQQDEw9Sb2JlcnQg\n"
628                    + "THliYXJnZXIwggG3MIIBLAYHKoZIzjgEATCCAR8CgYEA/X9TgR11EilS30qcLuzk5/YRt1I870QA\n"
629                    + "wx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9subVWzXgTuAHTRv8mZgt2uZUKWkn5/oBHsQIsJPu6nX\n"
630                    + "/rfGG/g7V+fGqKYVDwT7g/bTxR7DAjVUE1oWkTL2dfOuK2HXKu/yIgMZndFIAccCFQCXYFCPFSML\n"
631                    + "zLKSuYKi64QL8Fgc9QKBgQD34aCF1ps93su8q1w2uFe5eZSvu/o66oL5V0wLPQeCZ1FZV4661FlP\n"
632                    + "5nEHEIGAtEkWcSPoTCgWE7fPCTKMyKbhPBZ6i1R8jSjgo64eK7OmdZFuo38L+iE1YvH7YnoBJDvM\n"
633                    + "pPG+qFGQiaiD3+Fa5Z8GkotmXoB7VSVkAUw7/s9JKgOBhAACgYBMhs/XcF0LAjbuhoAY4EOmxd4U\n"
634                    + "U0w4nSJQ2vKcgpyHU1Sv/tbUr3xEm6Yyx49j1eNp9jVwM1a6NYX8BO8fCSHIiUVvJVFlCcoO7Qb8\n"
635                    + "Px7drfbFAFt8mFE1mjYCuj21ePHhs1DlZKJwu2ElC6GaRwtBk3+oCMDAnLuySd0+fAohdDALBgcq\n"
636                    + "hkjOOAQDBQADLwAwLAIUddbqC3woMcABg/r1GPW9eVNStGwCFCBGySvdXK0i4aLVC4Ptbc3PQFjp\n"
637                    + "-----END CERTIFICATE-----\n",
638
639            //CERTIFICATES_ENCODED_X509[12]
640            "-----BEGIN CERTIFICATE-----\n"
641                    + "MIICyzCCAjQCAQAwDQYJKoZIhvcNAQEEBQAwga0xCzAJBgNVBAYTAlVTMREwDwYD\n"
642                    + "VQQIEwhOZXcgWW9yazEWMBQGA1UEBxMNTmV3IFlvcmsgQ2l0eTEcMBoGA1UEChMT\n"
643                    + "Q29sdW1iaWEgVW5pdmVyc2l0eTENMAsGA1UECxMEQWNJUzEfMB0GA1UEAxMWQ29s\n"
644                    + "dW1iaWEgVW5pdmVyc2l0eSBDQTElMCMGCSqGSIb3DQEJARYWY2VydC1hdXRoQGNv\n"
645                    + "bHVtYmlhLmVkdTAeFw05NzA0MjgxNDQxMDNaFw0wMDA0MjgxNDQxMDNaMIGtMQsw\n"
646                    + "CQYDVQQGEwJVUzERMA8GA1UECBMITmV3IFlvcmsxFjAUBgNVBAcTDU5ldyBZb3Jr\n"
647                    + "IENpdHkxHDAaBgNVBAoTE0NvbHVtYmlhIFVuaXZlcnNpdHkxDTALBgNVBAsTBEFj\n"
648                    + "SVMxHzAdBgNVBAMTFkNvbHVtYmlhIFVuaXZlcnNpdHkgQ0ExJTAjBgkqhkiG9w0B\n"
649                    + "CQEWFmNlcnQtYXV0aEBjb2x1bWJpYS5lZHUwgZ8wDQYJKoZIhvcNAQEBBQADgY0A\n"
650                    + "MIGJAoGBANiod6flzM72CbsK/3gzHzcdjpoozRDD/wgq31jEeDdfKY+ljAwxaZS9\n"
651                    + "mt7S1g7lL+55fx7FjfJxvJRXvS9UbDU46PDDyJloWYobg84bK5ZcV5UnIPZmGHW/\n"
652                    + "/xVDUtIGhc4T+Xm5p4F+4AcgewF2s4TbKWxfC98FJfepc31KjkGbAgMBAAEwDQYJ\n"
653                    + "KoZIhvcNAQEEBQADgYEAI/e6xC+osVM4eMkSUUWgihuocQlRL9ixTlGqW9fvNlI1\n"
654                    + "q58fELU5bcFko7d02S9Egac/9ckkt/sbHMv9zQhfnvpol8BN+LivGu+09IiOW4yq\n"
655                    + "c9xT58Pv9gwZ/Ei5VS+FXvzHIr91yWIlwLsnKfgYDrmQowG5FkHSG1ZotUdl7Oo=\n"
656                    + "-----END CERTIFICATE-----\n",
657
658            //CERTIFICATES_ENCODED_X509[13]
659            "-----BEGIN CERTIFICATE-----\n"
660                    + "MIICnjCCAgcCAQMwDQYJKoZIhvcNAQEEBQAwgaAxCzAJBgNVBAYTAklUMR4wHAYD\n"
661                    + "VQQKExVQb2xpdGVjbmljbyBkaSBUb3Jpbm8xIzAhBgNVBAsTGklDRS1URUwgSXRh\n"
662                    + "bGlhbiBDQSBmb3IgV1dXMSAwHgYDVQQDExdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0\n"
663                    + "eTEqMCgGCSqGSIb3DQEJARYbd3d3LWNhLWl0QGljZS10ZWwucG9saXRvLml0MB4X\n"
664                    + "DTk2MTAwMjExNDQ0NFoXDTk3MTIwMTExNDQ0NFowgY0xCzAJBgNVBAYTAklUMQ8w\n"
665                    + "DQYDVQQHEwZUb3Jpbm8xHjAcBgNVBAoTFVBvbGl0ZWNuaWNvIGRpIFRvcmlubzEO\n"
666                    + "MAwGA1UECxMFQ2VTSVQxGTAXBgNVBAMTEHVsaXNzZS5wb2xpdG8uaXQxIjAgBgkq\n"
667                    + "hkiG9w0BCQEWE3dlYm1hc3RlckBwb2xpdG8uaXQwgZ8wDQYJKoZIhvcNAQEBBQAD\n"
668                    + "gY0AMIGJAoGBAMUq/FdrxbSfGtGZq/FTTgC1JqxO4iiHiyxtgRT1oEvJIUjajVRN\n"
669                    + "dtBVUhW6JmhHje/qnMop09XcF7b89a9ahtG9jM70S03biXVmg66pWOpy6P7znAQj\n"
670                    + "VFPoCRR7BqUiGq0419a101Acaqkxi/4DdqiTPee4H7mcDZYu+fDPNQaHAgMBAAEw\n"
671                    + "DQYJKoZIhvcNAQEEBQADgYEAt15bzk0XO+ZM+Q6275VTQIon6KQQHnv9NflIFOoW\n"
672                    + "fgGRmoyiJFrjU1sIS8ctF03DH2xR20CuKd98fBpKnoOLd7eTKAGzGFPml36TPVj+\n"
673                    + "YYWdrWqnIzQn6F0OKR/U3Y+ot5fUNuqN36Q1wsVvpPJlOMx8D8OQy8ainHgG3YYA\n"
674                    + "TJk=\n" + "-----END CERTIFICATE-----\n",
675
676            //CERTIFICATES_ENCODED_X509[14]
677            "-----BEGIN CERTIFICATE-----\n"
678                    + "MIIC1TCCAj6gAwIBAgIBBDANBgkqhkiG9w0BAQQFADBZMQswCQYDVQQGEwJVUzEf\n"
679                    + "MB0GA1UEChMWVW5pdmVyc2l0eSBvZiBDb2xvcmFkbzEWMBQGA1UECxMNU3lzdGVt\n"
680                    + "IE9mZmljZTERMA8GA1UEAxMIVU1TIENBLTEwHhcNOTgwNTExMjEwMjU0WhcNMDgw\n"
681                    + "NTEwMjEwMjU0WjBZMQswCQYDVQQGEwJVUzEfMB0GA1UEChMWVW5pdmVyc2l0eSBv\n"
682                    + "ZiBDb2xvcmFkbzEWMBQGA1UECxMNU3lzdGVtIE9mZmljZTERMA8GA1UEAxMIVU1T\n"
683                    + "IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALGf8Ny+kHlXqLTi3uIf\n"
684                    + "mkxxwDJd14sOg+hv85pxsqzCRJEgOx5YDUt05hJ7N0s4rJ/gNUcJaKR6ul+qLGbW\n"
685                    + "+Zb4S1YFbnKaO16zggvgckwpLGYRBbmee9+E47W8VEOZWrJXUkpJ/ZV8GAnesrvn\n"
686                    + "XTEKfm7bX9s6R7FQfDoHNnQfAgMBAAGjgawwgakwEQYJYIZIAYb4QgEBBAQDAgD2\n"
687                    + "MB8GA1UdIwQYMBaAFOqlID9Er6dI09n9Lvnby+FISi7oMFQGCWCGSAGG+EIBDQRH\n"
688                    + "FkVFeHRlbmRlZCBDQSBDZXJ0aWZpY2F0ZSBmcm9tIDI0IE1vbnRocyB0byAxMjAg\n"
689                    + "TW9udGhzLiAgRFRHID0gMDUxMTE5OTgwHQYDVR0OBBYEFOqlID9Er6dI09n9Lvnb\n"
690                    + "y+FISi7oMA0GCSqGSIb3DQEBBAUAA4GBAFNFo27JeeIgsMqS7Na//6gJQRilxwVS\n"
691                    + "Bfx6J43YX47EgNDLn4J7B9Tst+2bDZDAk1lZyu4y2WCLrnfg/e6B1KYBhCt/Srsc\n"
692                    + "r+WomFcw19k1jBtBaYxVwh/9N4ppZGdKILACciXbxfoLbbNgSDx5+KbE2c2m9is7\n"
693                    + "MIZgRexTvnJa\n" + "-----END CERTIFICATE-----\n" };
694}
695