SSLSessionTest.java revision 8399ee3eb85894946668475af43259597a1d0f36
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
194557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport libcore.java.security.StandardNames;
204557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport libcore.java.security.TestKeyStore;
21ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport java.util.Arrays;
224557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport javax.net.ssl.SSLPeerUnverifiedException;
23ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstromimport junit.framework.TestCase;
24ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
25ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrompublic class SSLSessionTest extends TestCase {
26ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
27bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom    public void test_SSLSocket_TestSSLSessions_create() {
28bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
29ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.invalid);
30ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.invalid.isValid());
31ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.isValid());
32ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.isValid());
33f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
34ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
35ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
36ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getApplicationBufferSize() {
37bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
38ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.invalid.getApplicationBufferSize() > 0);
39ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getApplicationBufferSize() > 0);
40ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.getApplicationBufferSize() > 0);
41f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
42ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
43ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
44ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getCipherSuite() {
45bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
46ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.invalid.getCipherSuite());
47fd487fbac3547360ea81d96edea9827fad080f86Brian Carlstrom        assertEquals(StandardNames.CIPHER_SUITE_INVALID, s.invalid.getCipherSuite());
48ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getCipherSuite());
49ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getCipherSuite());
50ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(s.server.getCipherSuite(),
51ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                     s.client.getCipherSuite());
529acacc36bafda869c6e9cc63786cdddd995ca96aBrian Carlstrom        assertTrue(StandardNames.CIPHER_SUITES.contains(s.server.getCipherSuite()));
53f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
54ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
55ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
56ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getCreationTime() {
578399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        // We use OpenSSL, which only returns times accurate to the nearest second.
588399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        // NativeCrypto just multiplies by 1000, which looks like truncation, which
598399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        // would make it appear as if the OpenSSL side of things was created before
608399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        // we called it.
618399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        long t0 = System.currentTimeMillis() / 1000;
62bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
638399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        long t1 = System.currentTimeMillis() / 1000;
648399ee3eb85894946668475af43259597a1d0f36Elliott Hughes
65ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.invalid.getCreationTime() > 0);
668399ee3eb85894946668475af43259597a1d0f36Elliott Hughes
678399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        long sTime = s.server.getCreationTime() / 1000;
688399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        assertTrue(sTime + " >= " + t0, sTime >= t0);
698399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        assertTrue(sTime + " <= " + t1, sTime <= t1);
708399ee3eb85894946668475af43259597a1d0f36Elliott Hughes
718399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        long cTime = s.client.getCreationTime() / 1000;
728399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        assertTrue(cTime + " >= " + t0, cTime >= t0);
738399ee3eb85894946668475af43259597a1d0f36Elliott Hughes        assertTrue(cTime + " <= " + t1, cTime <= t1);
748399ee3eb85894946668475af43259597a1d0f36Elliott Hughes
75f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
76ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
77ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
78ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getId() {
79bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
80ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.invalid.getId());
81ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getId());
82ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getId());
83ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(0, s.invalid.getId().length);
84bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        if (TestSSLContext.sslServerSocketSupportsSessionTickets()) {
85bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom            assertEquals(0, s.server.getId().length);
86bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        } else {
87bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom            assertEquals(32, s.server.getId().length);
88bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom            assertTrue(Arrays.equals(s.server.getId(), s.client.getId()));
89bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        }
90ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(32, s.client.getId().length);
91f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
92ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
93ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
94ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getLastAccessedTime() {
95bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
96ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.invalid.getLastAccessedTime() > 0);
97ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getLastAccessedTime() > 0);
98ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.getLastAccessedTime() > 0);
99e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        assertTrue(Math.abs(s.server.getLastAccessedTime()
100e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom                            - s.client.getLastAccessedTime()) < 1 * 1000);
101ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getLastAccessedTime() >=
102ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                   s.server.getCreationTime());
103ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.getLastAccessedTime() >=
104ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                   s.client.getCreationTime());
105f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
106ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
107ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
108ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getLocalCertificates() throws Exception {
109bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
110ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getLocalCertificates());
111ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.client.getLocalCertificates());
112ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getLocalCertificates());
113059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestKeyStore.assertChainLength(s.server.getLocalCertificates());
114059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestSSLContext.assertServerCertificateChain(s.s.c.serverTrustManager,
115059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                    s.server.getLocalCertificates());
116204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.server.getLocalCertificates()[0],
117059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
118f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
119ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
120ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
121ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getLocalPrincipal() throws Exception {
122bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
123ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getLocalPrincipal());
124ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.client.getLocalPrincipal());
125ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getLocalPrincipal());
126ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getLocalPrincipal().getName());
127204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.server.getLocalPrincipal(),
128059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
129f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
130ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
131ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
132ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPacketBufferSize() {
133bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
134ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.invalid.getPacketBufferSize() > 0);
135ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getPacketBufferSize() > 0);
136ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.getPacketBufferSize() > 0);
137f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
138ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
139ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
140ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerCertificateChain() throws Exception {
141bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
142ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
143ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getPeerCertificateChain();
144ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
145e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
146ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
147ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerCertificates());
148059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestKeyStore.assertChainLength(s.client.getPeerCertificateChain());
149ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
150059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom            assertNull(s.server.getPeerCertificateChain());
151ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
152e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
153ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
154f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
155ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
156ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
157ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerCertificates() throws Exception {
158bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
159ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
160ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getPeerCertificates();
161ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
162e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
163ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
164ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerCertificates());
165059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestKeyStore.assertChainLength(s.client.getPeerCertificates());
166059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestSSLContext.assertServerCertificateChain(s.s.c.serverTrustManager,
167059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                    s.client.getPeerCertificates());
168204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.client.getPeerCertificates()[0],
169059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
170ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
171ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.server.getPeerCertificates();
172ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
173e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
174ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
175f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
176ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
177ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
178ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerHost() {
179bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
180ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getPeerHost());
181ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getPeerHost());
182ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerHost());
183f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
184ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
185ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
186ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerPort() {
187bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
188ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(-1, s.invalid.getPeerPort());
189ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getPeerPort() > 0);
190ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(s.s.c.port, s.client.getPeerPort());
191f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
192ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
193ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
194ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerPrincipal() throws Exception {
195bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
196ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
197ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getPeerPrincipal();
198ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
199e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
200ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
201ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
202ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.server.getPeerPrincipal();
203ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
204e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
205ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
206ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerPrincipal());
207ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerPrincipal().getName());
208204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.client.getPeerPrincipal(),
209059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
210f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
211ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
212ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
213ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getProtocol() {
214bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
215ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.invalid.getProtocol());
216ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals("NONE", s.invalid.getProtocol());
217ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getProtocol());
218ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getProtocol());
219ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(s.server.getProtocol(),
220ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                     s.client.getProtocol());
2219acacc36bafda869c6e9cc63786cdddd995ca96aBrian Carlstrom        assertTrue(StandardNames.SSL_SOCKET_PROTOCOLS.contains(s.server.getProtocol()));
222f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
223ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
224ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
225ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getSessionContext() {
226bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
227ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getSessionContext());
228ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getSessionContext());
229ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getSessionContext());
230059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        assertEquals(s.s.c.serverContext.getServerSessionContext(),
231ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                     s.server.getSessionContext());
232059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        assertEquals(s.s.c.clientContext.getClientSessionContext(),
233ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                     s.client.getSessionContext());
234ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotSame(s.server.getSessionContext(),
235ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                      s.client.getSessionContext());
236f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
237ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
238ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
239ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getValue() {
240bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
241ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
242ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getValue(null);
243e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (IllegalArgumentException expected) {
244ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
245ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getValue("BOGUS"));
246f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
247ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
248ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
249ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getValueNames() {
250bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
251ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.invalid.getValueNames());
252ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(0, s.invalid.getValueNames().length);
253f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
254ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
255ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
256ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_invalidate() {
257bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
258f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom
259ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.invalid.isValid());
260ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.invalidate();
261ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.invalid.isValid());
262ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getSessionContext());
263ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
264ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.isValid());
265ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.server.invalidate();
266ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.server.isValid());
267ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.server.getSessionContext());
268ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
269ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.isValid());
270ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.client.invalidate();
271ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.client.isValid());
272ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.client.getSessionContext());
273f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom
274f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
275ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
276ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
277ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_isValid() {
278bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
279ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.invalid.isValid());
280ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.isValid());
281ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.isValid());
282f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
283ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
284ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
285ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_putValue() {
286bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
2878ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String key = "KEY";
2888ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String value = "VALUE";
289ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getValue(key));
290ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(0, s.invalid.getValueNames().length);
291ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.putValue(key, value);
292ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertSame(value, s.invalid.getValue(key));
293ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(1, s.invalid.getValueNames().length);
294ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(key, s.invalid.getValueNames()[0]);
295f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
296ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
297ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
298ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_removeValue() {
299bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
3008ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String key = "KEY";
3018ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String value = "VALUE";
302ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.putValue(key, value);
303ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(1, s.invalid.getValueNames().length);
304ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(key, s.invalid.getValueNames()[0]);
305ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.removeValue(key);
306ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getValue(key));
307ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(0, s.invalid.getValueNames().length);
308f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
309ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
310ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom}
311