SSLContextTest.java revision 059dbc04218144f985b20a228bbe98139d400d0c
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; 219a106a63508697a6f5f02c20b7cc6b7c6152695fBrian Carlstromimport java.security.StandardNames; 22ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport javax.net.ServerSocketFactory; 23ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport javax.net.SocketFactory; 24ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport junit.framework.TestCase; 25ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 26ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrompublic class SSLContextTest extends TestCase { 27ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getDefault() throws Exception { 290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getDefault(); 300c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sslContext); 310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (KeyManagementException expected) { 340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_setDefault() throws Exception { 380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 390c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(null); 400c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (NullPointerException expected) { 410c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext defaultContext = SSLContext.getDefault(); 440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext oldContext = SSLContext.getDefault(); 460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(oldContext); 470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext newContext = SSLContext.getInstance(protocol); 480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(newContext); 490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(oldContext, newContext); 500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(newContext); 510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(newContext, SSLContext.getDefault()); 520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(defaultContext); 540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 56ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getInstance() throws Exception { 57ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 58ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null); 59ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 60e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (NullPointerException expected) { 61ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 620c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 630c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(SSLContext.getInstance(protocol)); 640c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol), 650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol)); 660c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 67ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 68ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 69ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null, (String) null); 70ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 71e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (IllegalArgumentException expected) { 72ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 73ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 74ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null, ""); 75ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 76e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (IllegalArgumentException expected) { 77ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol, (String) null); 810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalArgumentException expected) { 830c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 84ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 85ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 86059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom SSLContext.getInstance(null, StandardNames.JSSE_PROVIDER_NAME); 87ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 88e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (NullPointerException expected) { 89ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 90ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 91ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 92ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getProtocol() throws Exception { 930c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 940c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String protocolName = SSLContext.getInstance(protocol).getProtocol(); 950c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocolName); 960c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(protocol.startsWith(protocolName)); 970c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 98ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 99ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 100ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getProvider() throws Exception { 1010c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom Provider provider = SSLContext.getDefault().getProvider(); 102ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom assertNotNull(provider); 103059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertEquals(StandardNames.JSSE_PROVIDER_NAME, provider.getName()); 104ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 105ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 106ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_init() throws Exception { 1070c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1080c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1090c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1100c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1110c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1120c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (KeyManagementException expected) { 1130c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1140c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1150c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1160c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1170c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 118ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 119ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 120ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getSocketFactory() throws Exception { 1210c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1220c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1230c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getSocketFactory(); 1240c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1250c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1260c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getSocketFactory(); 1270c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1300c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SocketFactory sf = sslContext.getSocketFactory(); 1370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sf); 1380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(SSLSocketFactory.class.isAssignableFrom(sf.getClass())); 139ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 140ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 141ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 142ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getServerSocketFactory() throws Exception { 1430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getServerSocketFactory(); 1460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getServerSocketFactory(); 1490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1560c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1570c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1580c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom ServerSocketFactory ssf = sslContext.getServerSocketFactory(); 1590c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(ssf); 1600c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(SSLServerSocketFactory.class.isAssignableFrom(ssf.getClass())); 161ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 162ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 163ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 164ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_createSSLEngine() throws Exception { 1650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1660c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1670c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1680c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(); 1690c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1700c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1710c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(); 1720c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1730c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1740c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1750c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1760c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1770c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(null, -1); 1790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(null, -1); 1820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1830c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1840c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1850c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1860c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1870c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom { 1880c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1890c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1900c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1910c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1920c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLEngine se = sslContext.createSSLEngine(); 1930c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(se); 1940c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1950c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1960c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom { 1970c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1980c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1990c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2000c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2010c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLEngine se = sslContext.createSSLEngine(null, -1); 2020c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(se); 2030c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 204ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 205ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 206ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 207ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getServerSessionContext() throws Exception { 2080c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2090c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2100c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLSessionContext sessionContext = sslContext.getServerSessionContext(); 2110c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sessionContext); 212ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 2130c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2140c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(SSLContext.getInstance(protocol).getServerSessionContext(), 2150c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2160c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 2170c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol).getServerSessionContext(), 2180c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2190c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2200c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 221ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 222ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 223ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getClientSessionContext() throws Exception { 2240c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2250c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2260c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLSessionContext sessionContext = sslContext.getClientSessionContext(); 2270c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sessionContext); 2280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2300c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(SSLContext.getInstance(protocol).getClientSessionContext(), 2310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 2330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol).getClientSessionContext(), 2340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2390c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getDefaultSSLParameters() throws Exception { 2400c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2410c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLParameters p = sslContext.getDefaultSSLParameters(); 2470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(p); 2480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] cipherSuites = p.getCipherSuites(); 2500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(cipherSuites); 2510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertValidCipherSuites(StandardNames.CIPHER_SUITES, cipherSuites); 2520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] protocols = p.getProtocols(); 2540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocols); 2550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertValidCipherSuites(StandardNames.SSL_SOCKET_PROTOCOLS, protocols); 2560c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2570c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getWantClientAuth()); 2580c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getNeedClientAuth()); 2590c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2600c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2610c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2620c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getSupportedSSLParameters() throws Exception { 2630c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2640c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2660c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2670c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2680c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2690c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLParameters p = sslContext.getSupportedSSLParameters(); 2700c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(p); 271ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 2720c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] cipherSuites = p.getCipherSuites(); 2730c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(cipherSuites); 2740c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertSupportedCipherSuites(StandardNames.CIPHER_SUITES, cipherSuites); 2750c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2760c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] protocols = p.getProtocols(); 2770c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocols); 2780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertSupportedProtocols(StandardNames.SSL_SOCKET_PROTOCOLS, 2790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom protocols); 2800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getWantClientAuth()); 2820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getNeedClientAuth()); 2830c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 284ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 285ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 286bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom public void test_SSLContextTest_TestSSLContext_create() { 287bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom TestSSLContext testContext = TestSSLContext.create(); 288bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext); 289059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientKeyStore); 290059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNull(testContext.clientKeyStorePassword); 291059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverKeyStore); 292059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNull(testContext.serverKeyStorePassword); 293059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientKeyManager); 294059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverKeyManager); 295059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientTrustManager); 296059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverTrustManager); 297059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientContext); 298059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverContext); 299bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.serverSocket); 300bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.host); 301bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertTrue(testContext.port != 0); 302ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 303ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom} 304