diff options
author | Chad Brubaker <cbrubaker@google.com> | 2015-11-10 12:26:18 -0800 |
---|---|---|
committer | Chad Brubaker <cbrubaker@google.com> | 2015-11-11 10:54:54 -0800 |
commit | 5a1078f40dd511901c33ccf78be6e2d5081d6637 (patch) | |
tree | b9d5ab60194a061c0aed6f07d34bfa1dff18525b /tests/NetworkSecurityConfigTest | |
parent | 08d36202daeb3e668911c9902edb61b6894f822e (diff) |
Add NetworkSecurityConfigProvider
Change-Id: I321e3ca94cc2a8d5e0e5d82a83b255ff5b8a71d2
Diffstat (limited to 'tests/NetworkSecurityConfigTest')
-rw-r--r-- | tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java | 6 | ||||
-rw-r--r-- | tests/NetworkSecurityConfigTest/src/android/security/net/config/XmlConfigTests.java | 27 |
2 files changed, 32 insertions, 1 deletions
diff --git a/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java b/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java index 43c0e5708233..f7590fd6ff12 100644 --- a/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java +++ b/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java @@ -22,6 +22,7 @@ import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; import junit.framework.Assert; @@ -69,8 +70,11 @@ public final class TestUtils extends Assert { public static SSLContext getSSLContext(ConfigSource source) throws Exception { ApplicationConfig config = new ApplicationConfig(source); + TrustManagerFactory tmf = + TrustManagerFactory.getInstance("PKIX", new NetworkSecurityConfigProvider()); + tmf.init(new RootTrustManagerFactorySpi.ApplicationConfigParameters(config)); SSLContext context = SSLContext.getInstance("TLS"); - context.init(null, new TrustManager[] {config.getTrustManager()}, null); + context.init(null, tmf.getTrustManagers(), null); return context; } } diff --git a/tests/NetworkSecurityConfigTest/src/android/security/net/config/XmlConfigTests.java b/tests/NetworkSecurityConfigTest/src/android/security/net/config/XmlConfigTests.java index 43fa830f733e..c6f3680f455c 100644 --- a/tests/NetworkSecurityConfigTest/src/android/security/net/config/XmlConfigTests.java +++ b/tests/NetworkSecurityConfigTest/src/android/security/net/config/XmlConfigTests.java @@ -24,6 +24,10 @@ import android.util.Pair; import java.io.IOException; import java.net.Socket; import java.net.URL; +import java.security.KeyStore; +import java.security.Provider; +import java.security.Security; +import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collections; import java.util.Set; @@ -31,6 +35,7 @@ import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; public class XmlConfigTests extends AndroidTestCase { @@ -375,4 +380,26 @@ public class XmlConfigTests extends AndroidTestCase { public void testBadConfig5() throws Exception { testBadConfig(R.xml.bad_config4); } + + public void testTrustManagerKeystore() throws Exception { + XmlConfigSource source = new XmlConfigSource(getContext(), R.xml.bad_pin, true); + ApplicationConfig appConfig = new ApplicationConfig(source); + Provider provider = new NetworkSecurityConfigProvider(); + TrustManagerFactory tmf = + TrustManagerFactory.getInstance("PKIX", provider); + KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); + keystore.load(null); + int i = 0; + for (X509Certificate cert : SystemCertificateSource.getInstance().getCertificates()) { + keystore.setEntry(String.valueOf(i), + new KeyStore.TrustedCertificateEntry(cert), + null); + i++; + } + tmf.init(keystore); + TrustManager[] tms = tmf.getTrustManagers(); + SSLContext context = SSLContext.getInstance("TLS"); + context.init(null, tms, null); + TestUtils.assertConnectionSucceeds(context, "android.com" , 443); + } } |