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