SSLContextTest.java revision 0c131a2ca38465b7d1df4eaee63ac73ce4d5986d
1ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom/* 2ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * Copyright (C) 2010 The Android Open Source Project 3ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * 4ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 5ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * you may not use this file except in compliance with the License. 6ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * You may obtain a copy of the License at 7ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * 8ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 9ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * 10ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * Unless required by applicable law or agreed to in writing, software 11ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 12ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * See the License for the specific language governing permissions and 14ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom * limitations under the License. 15ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom */ 16ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 17ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrompackage javax.net.ssl; 18ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 190c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstromimport java.security.KeyManagementException; 20ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport java.security.Provider; 21ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport javax.net.ServerSocketFactory; 22ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport javax.net.SocketFactory; 23ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport junit.framework.TestCase; 24ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 25ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrompublic class SSLContextTest extends TestCase { 26ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 270c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getDefault() throws Exception { 280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getDefault(); 290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sslContext); 300c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (KeyManagementException expected) { 330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_setDefault() throws Exception { 370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(null); 390c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (NullPointerException expected) { 400c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 410c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext defaultContext = SSLContext.getDefault(); 430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext oldContext = SSLContext.getDefault(); 450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(oldContext); 460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext newContext = SSLContext.getInstance(protocol); 470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(newContext); 480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(oldContext, newContext); 490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(newContext); 500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(newContext, SSLContext.getDefault()); 510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(defaultContext); 530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 55ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getInstance() throws Exception { 56ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 57ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null); 58ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 59e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (NullPointerException expected) { 60ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 610c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 620c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(SSLContext.getInstance(protocol)); 630c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol), 640c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol)); 650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 66ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 67ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 68ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null, (String) null); 69ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 70e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (IllegalArgumentException expected) { 71ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 72ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 73ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null, ""); 74ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 75e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (IllegalArgumentException expected) { 76ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 770c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol, (String) null); 800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalArgumentException expected) { 820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 83ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 84ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 85bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom SSLContext.getInstance(null, TestSSLContext.PROVIDER_NAME); 86ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 87e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (NullPointerException expected) { 88ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 89ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 90ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 91ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getProtocol() throws Exception { 920c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 930c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String protocolName = SSLContext.getInstance(protocol).getProtocol(); 940c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocolName); 950c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(protocol.startsWith(protocolName)); 960c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 97ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 98ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 99ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getProvider() throws Exception { 1000c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom Provider provider = SSLContext.getDefault().getProvider(); 101ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom assertNotNull(provider); 102bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertEquals(TestSSLContext.PROVIDER_NAME, provider.getName()); 103ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 104ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 105ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_init() throws Exception { 1060c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1070c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1080c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1090c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1100c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1110c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (KeyManagementException expected) { 1120c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1130c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1140c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1150c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1160c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 117ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 118ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 119ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getSocketFactory() throws Exception { 1200c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1210c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1220c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getSocketFactory(); 1230c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1240c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1250c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getSocketFactory(); 1260c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1270c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1300c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SocketFactory sf = sslContext.getSocketFactory(); 1360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sf); 1370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(SSLSocketFactory.class.isAssignableFrom(sf.getClass())); 138ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 139ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 140ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 141ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getServerSocketFactory() throws Exception { 1420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getServerSocketFactory(); 1450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getServerSocketFactory(); 1480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1560c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1570c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom ServerSocketFactory ssf = sslContext.getServerSocketFactory(); 1580c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(ssf); 1590c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(SSLServerSocketFactory.class.isAssignableFrom(ssf.getClass())); 160ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 161ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 162ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 163ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_createSSLEngine() throws Exception { 1640c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1660c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1670c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(); 1680c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1690c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1700c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(); 1710c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1720c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1730c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1740c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1750c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1760c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1770c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(null, -1); 1780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(null, -1); 1810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1830c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1840c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1850c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1860c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom { 1870c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1880c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1890c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1900c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1910c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLEngine se = sslContext.createSSLEngine(); 1920c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(se); 1930c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1940c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1950c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom { 1960c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1970c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1980c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1990c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2000c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLEngine se = sslContext.createSSLEngine(null, -1); 2010c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(se); 2020c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 203ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 204ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 205ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 206ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getServerSessionContext() throws Exception { 2070c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2080c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2090c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLSessionContext sessionContext = sslContext.getServerSessionContext(); 2100c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sessionContext); 211ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 2120c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2130c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(SSLContext.getInstance(protocol).getServerSessionContext(), 2140c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2150c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 2160c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol).getServerSessionContext(), 2170c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2180c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2190c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 220ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 221ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 222ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getClientSessionContext() throws Exception { 2230c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2240c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2250c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLSessionContext sessionContext = sslContext.getClientSessionContext(); 2260c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sessionContext); 2270c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(SSLContext.getInstance(protocol).getClientSessionContext(), 2300c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 2320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol).getClientSessionContext(), 2330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getDefaultSSLParameters() throws Exception { 2390c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2400c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2410c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLParameters p = sslContext.getDefaultSSLParameters(); 2460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(p); 2470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] cipherSuites = p.getCipherSuites(); 2490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(cipherSuites); 2500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertValidCipherSuites(StandardNames.CIPHER_SUITES, cipherSuites); 2510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] protocols = p.getProtocols(); 2530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocols); 2540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertValidCipherSuites(StandardNames.SSL_SOCKET_PROTOCOLS, protocols); 2550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2560c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getWantClientAuth()); 2570c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getNeedClientAuth()); 2580c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2590c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2600c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2610c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getSupportedSSLParameters() throws Exception { 2620c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2630c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2640c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2660c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2670c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2680c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLParameters p = sslContext.getSupportedSSLParameters(); 2690c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(p); 270ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 2710c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] cipherSuites = p.getCipherSuites(); 2720c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(cipherSuites); 2730c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertSupportedCipherSuites(StandardNames.CIPHER_SUITES, cipherSuites); 2740c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2750c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] protocols = p.getProtocols(); 2760c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocols); 2770c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertSupportedProtocols(StandardNames.SSL_SOCKET_PROTOCOLS, 2780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom protocols); 2790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getWantClientAuth()); 2810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getNeedClientAuth()); 2820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 283ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 284ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 285bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom public void test_SSLContextTest_TestSSLContext_create() { 286bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom TestSSLContext testContext = TestSSLContext.create(); 287bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext); 288bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.keyStore); 289bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNull(testContext.keyStorePassword); 290bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.sslContext); 291bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.serverSocket); 292bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.host); 293bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertTrue(testContext.port != 0); 294ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 295ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom} 296