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