1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.net.ssl;
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream;
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateException;
50da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmerimport java.security.cert.CertificateFactory;
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.X509Certificate;
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.X509TrustManager;
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.TestUtils;
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.xnet.tests.support.X509TrustManagerImpl;
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class X509TrustManagerTest extends TestCase {
13f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
140da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    private X509Certificate[] setX509Certificate() throws Exception {
150da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        CertificateFactory certFact = CertificateFactory.getInstance("X.509");
160da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        X509Certificate pemCert = (X509Certificate) certFact.generateCertificate(
170da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer                new ByteArrayInputStream(TestUtils.getX509Certificate_v3()));
180da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        X509Certificate[] xcert = { pemCert };
190da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        return xcert;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
220da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    private X509Certificate[] setInvalid() throws Exception {
230da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        CertificateFactory certFact = CertificateFactory.getInstance("X.509");
240da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        X509Certificate pemCert = (X509Certificate) certFact.generateCertificate(
250da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer                new ByteArrayInputStream(TestUtils.getX509Certificate_v1()));
260da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        X509Certificate[] xcert = { pemCert };
270da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        return xcert;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
29f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
300da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    public void test_checkClientTrusted_01() throws Exception {
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509TrustManagerImpl xtm = new X509TrustManagerImpl();
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate[] xcert = null;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkClientTrusted(xcert, "SSL");
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
370da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
39f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        xcert = new X509Certificate[0];
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkClientTrusted(xcert, "SSL");
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
440da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        xcert = setX509Certificate();
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkClientTrusted(xcert, null);
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
510da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
53f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkClientTrusted(xcert, "");
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
570da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
62229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.X509TrustManager#checkClientTrusted(X509Certificate[] chain, String authType)
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
640da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    public void test_checkClientTrusted_02() throws Exception {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509TrustManagerImpl xtm = new X509TrustManagerImpl();
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate[] xcert = setInvalid();
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkClientTrusted(xcert, "SSL");
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("CertificateException wasn't thrown");
710da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (CertificateException expected) {
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
74f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
76229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.X509TrustManager#checkClientTrusted(X509Certificate[] chain, String authType)
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
780da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    public void test_checkClientTrusted_03() throws Exception {
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509TrustManagerImpl xtm = new X509TrustManagerImpl();
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate[] xcert = setX509Certificate();
810da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        xtm.checkClientTrusted(xcert, "SSL");
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
83f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
85229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[] chain, String authType)
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
870da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    public void test_checkServerTrusted_01() throws Exception {
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509TrustManagerImpl xtm = new X509TrustManagerImpl();
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate[] xcert = null;
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkServerTrusted(xcert, "SSL");
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
940da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        xcert = new X509Certificate[0];
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkServerTrusted(xcert, "SSL");
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
1010da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
103f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        xcert = setX509Certificate();
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkServerTrusted(xcert, null);
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
1080da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
110f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkServerTrusted(xcert, "");
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
1140da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (IllegalArgumentException expected) {
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
119229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[] chain, String authType)
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1210da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    public void test_checkServerTrusted_02() throws Exception {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509TrustManagerImpl xtm = new X509TrustManagerImpl();
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate[] xcert = setInvalid();
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            xtm.checkServerTrusted(xcert, "SSL");
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("CertificateException wasn't thrown");
1280da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        } catch (CertificateException expected) {
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
131f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
133229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[] chain, String authType)
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1350da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    public void test_checkServerTrusted_03() throws Exception {
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509TrustManagerImpl xtm = new X509TrustManagerImpl();
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate[] xcert = setX509Certificate();
1380da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        xtm.checkServerTrusted(xcert, "SSL");
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
140f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
142229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.X509TrustManager#getAcceptedIssuers()
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1440da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer    public void test_getAcceptedIssuers() throws Exception {
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509TrustManagerImpl xtm = new X509TrustManagerImpl();
1460da1515c5fe4e97fc2d4d24a41ebd4c078fec4dbChris Palmer        assertNotNull(xtm.getAcceptedIssuers());
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
148f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
150