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());
522cd541f61919798b5b050c210f61db450ad8b013Alex Klyubin        StandardNames.assertValidCipherSuites(new String[] {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);
9932bf67c30721864879186f03dd5c84e3a6ac5a2bBrian Carlstrom        assertTrue("s.server.getLastAccessedTime()=" + s.server.getLastAccessedTime() + " " +
10032bf67c30721864879186f03dd5c84e3a6ac5a2bBrian Carlstrom                   "s.client.getLastAccessedTime()=" + s.client.getLastAccessedTime(),
10132bf67c30721864879186f03dd5c84e3a6ac5a2bBrian Carlstrom                   Math.abs(s.server.getLastAccessedTime()
1023f49882b1d3316e37d8312d707c29261d14ece65zhulin                            - s.client.getLastAccessedTime()) <= 1 * 1000);
103ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getLastAccessedTime() >=
104ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                   s.server.getCreationTime());
105ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.getLastAccessedTime() >=
106ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                   s.client.getCreationTime());
107f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
108ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
109ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
110ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getLocalCertificates() throws Exception {
111bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
112ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getLocalCertificates());
113ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.client.getLocalCertificates());
114ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getLocalCertificates());
115059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestKeyStore.assertChainLength(s.server.getLocalCertificates());
116059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestSSLContext.assertServerCertificateChain(s.s.c.serverTrustManager,
117059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                    s.server.getLocalCertificates());
118204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.server.getLocalCertificates()[0],
119059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
120f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
121ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
122ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
123ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getLocalPrincipal() throws Exception {
124bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
125ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getLocalPrincipal());
126ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.client.getLocalPrincipal());
127ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getLocalPrincipal());
128ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getLocalPrincipal().getName());
129204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.server.getLocalPrincipal(),
130059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
131f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
132ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
133ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
134ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPacketBufferSize() {
135bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
136ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.invalid.getPacketBufferSize() > 0);
137ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getPacketBufferSize() > 0);
138ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.getPacketBufferSize() > 0);
139f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
140ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
141ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
142ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerCertificateChain() throws Exception {
143bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
144ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
145ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getPeerCertificateChain();
146ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
147e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
148ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
149ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerCertificates());
150059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestKeyStore.assertChainLength(s.client.getPeerCertificateChain());
151ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
152059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom            assertNull(s.server.getPeerCertificateChain());
153ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
154e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
155ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
156f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
157ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
158ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
159ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerCertificates() throws Exception {
160bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
161ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
162ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getPeerCertificates();
163ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
164e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
165ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
166ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerCertificates());
167059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestKeyStore.assertChainLength(s.client.getPeerCertificates());
168059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        TestSSLContext.assertServerCertificateChain(s.s.c.serverTrustManager,
169059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                    s.client.getPeerCertificates());
170204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.client.getPeerCertificates()[0],
171059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
172ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
173ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.server.getPeerCertificates();
174ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
175e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
176ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
177f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
178ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
179ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
180ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerHost() {
181bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
182ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getPeerHost());
183ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getPeerHost());
184ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerHost());
185f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
186ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
187ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
188ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerPort() {
189bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
190ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(-1, s.invalid.getPeerPort());
191ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.getPeerPort() > 0);
192ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(s.s.c.port, s.client.getPeerPort());
193f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
194ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
195ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
196ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getPeerPrincipal() throws Exception {
197bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
198ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
199ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getPeerPrincipal();
200ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
201e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
202ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
203ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
204ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.server.getPeerPrincipal();
205ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            fail();
206e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (SSLPeerUnverifiedException expected) {
207ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
208ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerPrincipal());
209ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getPeerPrincipal().getName());
210204cab3c22b4d75c866c95e2d2eec42e14cbd924Brian Carlstrom        TestSSLContext.assertCertificateInKeyStore(s.client.getPeerPrincipal(),
211059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom                                                   s.s.c.serverKeyStore);
212f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
213ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
214ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
215ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getProtocol() {
216bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
217ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.invalid.getProtocol());
218ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals("NONE", s.invalid.getProtocol());
219ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getProtocol());
220ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getProtocol());
221ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(s.server.getProtocol(),
222ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                     s.client.getProtocol());
2239acacc36bafda869c6e9cc63786cdddd995ca96aBrian Carlstrom        assertTrue(StandardNames.SSL_SOCKET_PROTOCOLS.contains(s.server.getProtocol()));
224f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
225ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
226ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
227ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getSessionContext() {
228bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
229ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getSessionContext());
230ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.server.getSessionContext());
231ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.client.getSessionContext());
232059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        assertEquals(s.s.c.serverContext.getServerSessionContext(),
233ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                     s.server.getSessionContext());
234059dbc04218144f985b20a228bbe98139d400d0cBrian Carlstrom        assertEquals(s.s.c.clientContext.getClientSessionContext(),
235ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                     s.client.getSessionContext());
236ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotSame(s.server.getSessionContext(),
237ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom                      s.client.getSessionContext());
238f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
239ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
240ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
241ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getValue() {
242bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
243ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        try {
244ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom            s.invalid.getValue(null);
245d4b7449574ca69c713a3f2230cb77c68ee642700Tobias Thierer            fail();
246e9505132a9a878aa77b0fb40a40dd55c9e6affe7Brian Carlstrom        } catch (IllegalArgumentException expected) {
247ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        }
248ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getValue("BOGUS"));
249f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
250ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
251ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
252ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_getValueNames() {
253bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
254ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNotNull(s.invalid.getValueNames());
255ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(0, s.invalid.getValueNames().length);
256f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
257ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
258ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
259ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_invalidate() {
260bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
261f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom
262ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.invalid.isValid());
263ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.invalidate();
264ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.invalid.isValid());
265ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getSessionContext());
266ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
267ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.isValid());
268ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.server.invalidate();
269ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.server.isValid());
270ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.server.getSessionContext());
271ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
272ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.isValid());
273ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.client.invalidate();
274ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.client.isValid());
275ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.client.getSessionContext());
276f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom
277f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
278ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
279ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
280ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_isValid() {
281bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
282ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertFalse(s.invalid.isValid());
283ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.server.isValid());
284ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertTrue(s.client.isValid());
285f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
286ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
287ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
288ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_putValue() {
289bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
2908ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String key = "KEY";
2918ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String value = "VALUE";
292ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getValue(key));
293ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(0, s.invalid.getValueNames().length);
294ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.putValue(key, value);
295ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertSame(value, s.invalid.getValue(key));
296ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(1, s.invalid.getValueNames().length);
297ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(key, s.invalid.getValueNames()[0]);
298f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
299ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
300ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom
301ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    public void test_SSLSession_removeValue() {
302bcfb325d5b1f9529b439cc0805a1c140521510f7Brian Carlstrom        TestSSLSessions s = TestSSLSessions.create();
3038ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String key = "KEY";
3048ee2e66dc0ef38f4fbdf0fd649abc6e47876c9afBrian Carlstrom        String value = "VALUE";
305ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.putValue(key, value);
306ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(1, s.invalid.getValueNames().length);
307ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(key, s.invalid.getValueNames()[0]);
308ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        s.invalid.removeValue(key);
309ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertNull(s.invalid.getValue(key));
310ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom        assertEquals(0, s.invalid.getValueNames().length);
311f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8aBrian Carlstrom        s.close();
312ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom    }
313ebabb91c8c87ac2be2dca70ae343130f9755047fBrian Carlstrom}
314