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