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