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 174557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonpackage libcore.javax.net.ssl; 18ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 190c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstromimport java.security.KeyManagementException; 20ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport java.security.Provider; 214557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport libcore.java.security.StandardNames; 22ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport javax.net.ServerSocketFactory; 23ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport javax.net.SocketFactory; 244557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport javax.net.ssl.SSLContext; 254557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport javax.net.ssl.SSLEngine; 264557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport javax.net.ssl.SSLParameters; 274557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport javax.net.ssl.SSLServerSocketFactory; 284557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport javax.net.ssl.SSLSessionContext; 294557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport javax.net.ssl.SSLSocketFactory; 30ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport junit.framework.TestCase; 31ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 32ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrompublic class SSLContextTest extends TestCase { 33ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getDefault() throws Exception { 350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getDefault(); 360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sslContext); 370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 390c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (KeyManagementException expected) { 400c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 410c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_setDefault() throws Exception { 440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(null); 460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (NullPointerException expected) { 470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext defaultContext = SSLContext.getDefault(); 500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext oldContext = SSLContext.getDefault(); 520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(oldContext); 530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext newContext = SSLContext.getInstance(protocol); 540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(newContext); 550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(oldContext, newContext); 560c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(newContext); 570c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(newContext, SSLContext.getDefault()); 580c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 590c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.setDefault(defaultContext); 600c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 610c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 62ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getInstance() throws Exception { 63ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 64ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null); 65ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 66e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (NullPointerException expected) { 67ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 680c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 690c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(SSLContext.getInstance(protocol)); 700c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol), 710c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol)); 720c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 73ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 74ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 75ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null, (String) null); 76ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 77e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (IllegalArgumentException expected) { 78ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 79ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 80ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom SSLContext.getInstance(null, ""); 81ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 82e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (IllegalArgumentException expected) { 83ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 840c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 850c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 860c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol, (String) null); 870c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 880c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalArgumentException expected) { 890c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 90ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 91ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom try { 92059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom SSLContext.getInstance(null, StandardNames.JSSE_PROVIDER_NAME); 93ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom fail(); 94e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom } catch (NullPointerException expected) { 95ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 96ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 97ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 98ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getProtocol() throws Exception { 990c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1000c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String protocolName = SSLContext.getInstance(protocol).getProtocol(); 1010c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocolName); 1020c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(protocol.startsWith(protocolName)); 1030c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 104ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 105ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 106ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getProvider() throws Exception { 1070c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom Provider provider = SSLContext.getDefault().getProvider(); 108ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom assertNotNull(provider); 109059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertEquals(StandardNames.JSSE_PROVIDER_NAME, provider.getName()); 110ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 111ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 112ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_init() throws Exception { 1130c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1140c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1150c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1160c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1170c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1180c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (KeyManagementException expected) { 1190c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1200c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1210c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1220c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1230c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 124ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 125ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 126ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getSocketFactory() throws Exception { 1270c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getSocketFactory(); 1300c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getSocketFactory(); 1330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1360c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1370c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1390c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1400c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1410c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SocketFactory sf = sslContext.getSocketFactory(); 1430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sf); 1440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(SSLSocketFactory.class.isAssignableFrom(sf.getClass())); 145ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 146ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 147ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 148ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getServerSocketFactory() throws Exception { 1490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getServerSocketFactory(); 1520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).getServerSocketFactory(); 1550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1560c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1570c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1580c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1590c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1600c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1610c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1620c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1630c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1640c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom ServerSocketFactory ssf = sslContext.getServerSocketFactory(); 1650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(ssf); 1660c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertTrue(SSLServerSocketFactory.class.isAssignableFrom(ssf.getClass())); 167ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 168ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 169ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 170ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_createSSLEngine() throws Exception { 1710c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 1720c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1730c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1740c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(); 1750c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1760c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1770c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(); 1780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1830c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1840c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(null, -1); 1850c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 1860c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom try { 1870c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext.getInstance(protocol).createSSLEngine(null, -1); 1880c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom fail(); 1890c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } catch (IllegalStateException expected) { 1900c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1910c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1920c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 1930c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom { 1940c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 1950c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 1960c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 1970c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 1980c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLEngine se = sslContext.createSSLEngine(); 1990c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(se); 2000c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2010c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2020c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom { 2030c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2040c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2050c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2060c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2070c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLEngine se = sslContext.createSSLEngine(null, -1); 2080c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(se); 2090c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 210ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 211ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 212ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 213ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getServerSessionContext() throws Exception { 2140c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2150c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2160c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLSessionContext sessionContext = sslContext.getServerSessionContext(); 2170c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sessionContext); 218ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 219aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom if (!StandardNames.IS_RI && 220aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2210c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(SSLContext.getInstance(protocol).getServerSessionContext(), 2220c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2230c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 2240c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol).getServerSessionContext(), 2250c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2260c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2270c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 228ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 229ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 230ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom public void test_SSLContext_getClientSessionContext() throws Exception { 2310c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2320c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2330c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLSessionContext sessionContext = sslContext.getClientSessionContext(); 2340c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(sessionContext); 2350c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 236aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom if (!StandardNames.IS_RI && 237aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2380c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertSame(SSLContext.getInstance(protocol).getClientSessionContext(), 2390c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2400c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } else { 2410c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotSame(SSLContext.getInstance(protocol).getClientSessionContext(), 2420c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sessionContext); 2430c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2440c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2450c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2460c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2470c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getDefaultSSLParameters() throws Exception { 2480c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2490c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2500c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2510c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2520c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2530c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2540c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLParameters p = sslContext.getDefaultSSLParameters(); 2550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(p); 2560c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2570c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] cipherSuites = p.getCipherSuites(); 2580c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(cipherSuites); 2590c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertValidCipherSuites(StandardNames.CIPHER_SUITES, cipherSuites); 2600c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2610c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] protocols = p.getProtocols(); 2620c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocols); 2630c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertValidCipherSuites(StandardNames.SSL_SOCKET_PROTOCOLS, protocols); 2640c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2650c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getWantClientAuth()); 2660c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getNeedClientAuth()); 2670c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2680c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2690c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2700c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom public void test_SSLContext_getSupportedSSLParameters() throws Exception { 2710c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom for (String protocol : StandardNames.SSL_CONTEXT_PROTOCOLS) { 2720c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLContext sslContext = SSLContext.getInstance(protocol); 2730c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom if (!protocol.equals(StandardNames.SSL_CONTEXT_PROTOCOLS_DEFAULT)) { 2740c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom sslContext.init(null, null, null); 2750c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 2760c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2770c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom SSLParameters p = sslContext.getSupportedSSLParameters(); 2780c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(p); 279ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 2800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] cipherSuites = p.getCipherSuites(); 2810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(cipherSuites); 2820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertSupportedCipherSuites(StandardNames.CIPHER_SUITES, cipherSuites); 2830c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2840c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom String[] protocols = p.getProtocols(); 2850c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertNotNull(protocols); 2860c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom StandardNames.assertSupportedProtocols(StandardNames.SSL_SOCKET_PROTOCOLS, 2870c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom protocols); 2880c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 2890c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getWantClientAuth()); 2900c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom assertFalse(p.getNeedClientAuth()); 2910c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 292ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 293ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom 294bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom public void test_SSLContextTest_TestSSLContext_create() { 295bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom TestSSLContext testContext = TestSSLContext.create(); 296bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext); 297059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientKeyStore); 298e3a187163504f00c98bd75cbd8bcbdde123ae2cdBrian Carlstrom assertNull(testContext.clientStorePassword); 299059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverKeyStore); 3006c78b7b94c232063ec559436b48b33751373ecf1Brian Carlstrom assertEquals(StandardNames.IS_RI, testContext.serverStorePassword != null); 301059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientKeyManager); 302059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverKeyManager); 303059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientTrustManager); 304059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverTrustManager); 305059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.clientContext); 306059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom assertNotNull(testContext.serverContext); 307bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.serverSocket); 308bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertNotNull(testContext.host); 309bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom assertTrue(testContext.port != 0); 310f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom testContext.close(); 311ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom } 312ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom} 313