1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.xnet.tests.javax.net.ssl; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.ByteBuffer; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.ReadOnlyBufferException; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLEngine; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLParameters; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLEngineResult.HandshakeStatus; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLSession; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLEngineResult; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for SSLEngine class 34e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SSLEngineTest extends TestCase { 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>SSLEngine()</code> constructor Assertion: creates 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLEngine object with null host and -1 port 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test01() { 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(e.getPeerHost()); 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-1, e.getPeerPort()); 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] suites = { "a", "b", "c" }; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.setEnabledCipherSuites(suites); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getEnabledCipherSuites().length, suites.length); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>SSLEngine(String host, int port)</code> constructor 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test02() throws SSLException { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 1010; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(null, port); 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(e.getPeerHost()); 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getPeerPort(), port); 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.beginHandshake(); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>SSLEngine(String host, int port)</code> constructor 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test03() { 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getPeerHost(), host); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getPeerPort(), port); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] suites = { "a", "b", "c" }; 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.setEnabledCipherSuites(suites); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getEnabledCipherSuites().length, suites.length); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.setUseClientMode(true); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(e.getUseClientMode()); 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer src, ByteBuffer dst)</code> method 84e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertions: 85e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * throws IllegalArgumentException when src or dst is null 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws ReadOnlyBufferException when dst is ReadOnly byte buffer 87e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when parameters are null 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and does not throw ReadOnlyBufferException if dst is read only byte buffer 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap01() throws SSLException { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbN, bb); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bb, bbN); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb.asReadOnlyBuffer(); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", roBb.isReadOnly()); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bb, roBb); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer[] srcs, ByteBuffer dst)</code> method 110e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: throws IllegalArgumentException when srcs or dst is null or 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * srcs contains null byte buffer; throws ReadOnlyBufferException when dst 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * is read only byte buffer 114e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when dst is null or 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if srcs contains null elements It does not throw ReadOnlyBufferException 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * for read only dst 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap02() throws SSLException { 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbNA = null; 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { null, ByteBuffer.allocate(10), null }; 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbNA, bb); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown for null srcs byte buffer array"); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException ex) { 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbA, bb); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbA, bbN); 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb.asReadOnlyBuffer(); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[0] = ByteBuffer.allocate(100); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[2] = ByteBuffer.allocate(20); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", roBb.isReadOnly()); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbA, roBb); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer src, ByteBuffer dst)</code> and 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>wrap(ByteBuffer[] srcs, ByteBuffer dst)</code> methods 150e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: these methods throw SSLException 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap03() throws SSLException { 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbs = ByteBuffer.allocate(100); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbd = ByteBuffer.allocate(10); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine1(host, port); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbs, bbd); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.wrap(bbd, bbs); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(new ByteBuffer[] { bbs }, bbd); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes res = e.wrap(new ByteBuffer[] { bbd }, bbs); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer src, ByteBuffer dst)</code> method 180e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: encodes a buffer data into network data. 182e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap04() throws SSLException { 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 189e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.wrap(bb, ByteBuffer.allocate(10)); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 194e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer[] srcs, ByteBuffer dst)</code> method 197e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: encodes datas from buffers into network data. 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap05() throws SSLException { 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { ByteBuffer.allocate(5), ByteBuffer.allocate(10), ByteBuffer.allocate(5) }; 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.wrap(bbA, bb); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 213e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer dst)</code> method 216e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 217e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertions: 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws IllegalArgumentException when src or dst is null 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws ReadOnlyBufferException when dst is read only byte buffer 220e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when parameters are null 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and does not throw ReadOnlyBufferException if dst is read only byte buffer 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap01() throws SSLException { 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbN, bb); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbN); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb.asReadOnlyBuffer(); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", roBb.isReadOnly()); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, roBb); 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer[] dsts)</code> method 243e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: throws IllegalArgumentException if parameters are null or 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * when dsts contains null elements throws ReadOnlyBufferException when dsts 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contains read only elements 247e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when src is null or 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if dsts contains null elements It does not throw ReadOnlyBufferException 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * when dsts contains read only elements 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap02() throws SSLException { 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbNA = null; 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { null, ByteBuffer.allocate(10), null }; 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbNA); 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown for null dsts byte buffer array"); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException ex) { 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbA); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbN, bbA); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb1 = ByteBuffer.allocate(100); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb1.asReadOnlyBuffer(); 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[0] = bb1; 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[2] = roBb; 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", bbA[2].isReadOnly()); 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbA); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffersrc, ByteBuffer dst)</code> and 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>unwrap(ByteBuffer src, ByteBuffer[] dsts)</code> methods 284e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: these methods throw SSLException 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap03() throws SSLException { 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbs = ByteBuffer.allocate(100); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbd = ByteBuffer.allocate(10); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine1(); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbs, bbd); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.unwrap(bbd, bbs); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbs, new ByteBuffer[] { bbd }); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes res = e.unwrap(bbd, new ByteBuffer[] { bbs }); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 309e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer dst)</code> method 312e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 313e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertion: decodes network data into a data buffer. 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap04() throws SSLException { 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.unwrap(bb, ByteBuffer.allocate(10)); 321e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 325e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer[] dsts)</code> method 328e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 329e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertion: 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * decode network data into data buffers. 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap05() throws SSLException { 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { ByteBuffer.allocate(100), ByteBuffer.allocate(10), ByteBuffer.allocate(100) }; 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.unwrap(bb, bbA); 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Additional class for verification SSLEngine constructors 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesclass mySSLEngine extends SSLEngine { 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean useClientMode; 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean needClientAuth; 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean enableSessionCreation; 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean wantClientAuth; 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String[] enabledProtocols; 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String[] enabledCipherSuites; 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public mySSLEngine() { 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected mySSLEngine(String host, int port) { 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(host, port); 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void beginHandshake() throws SSLException { 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = super.getPeerHost(); 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((host == null) || (host.length() == 0)) { 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException(""); 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void closeInbound() throws SSLException { 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void closeOutbound() { 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Runnable getDelegatedTask() { 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getEnabledCipherSuites() { 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return enabledCipherSuites; 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getEnabledProtocols() { 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return enabledProtocols; 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getEnableSessionCreation() { 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return enableSessionCreation; 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult.HandshakeStatus getHandshakeStatus() { 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return SSLEngineResult.HandshakeStatus.FINISHED; 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getNeedClientAuth() { 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return needClientAuth; 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLSession getSession() { 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getSupportedCipherSuites() { 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new String[0]; 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getSupportedProtocols() { 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new String[0]; 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getUseClientMode() { 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return useClientMode; 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getWantClientAuth() { 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return wantClientAuth; 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean isInboundDone() { 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean isOutboundDone() { 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setEnabledCipherSuites(String[] suites) { 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabledCipherSuites = suites; 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setEnabledProtocols(String[] protocols) { 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabledProtocols = protocols; 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setEnableSessionCreation(boolean flag) { 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enableSessionCreation = flag; 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setNeedClientAuth(boolean need) { 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes needClientAuth = need; 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setUseClientMode(boolean mode) { 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes useClientMode = mode; 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setWantClientAuth(boolean want) { 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes wantClientAuth = want; 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer[] dsts, 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int offset, int length) throws SSLException { 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new SSLEngineResult(SSLEngineResult.Status.OK, 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult.HandshakeStatus.FINISHED, 1, 2); 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult wrap(ByteBuffer[] srcs, int offset, int length, 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer dst) throws SSLException { 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new SSLEngineResult(SSLEngineResult.Status.OK, 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult.HandshakeStatus.FINISHED, 10, 20); 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLParameters getSSLParameters() { 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO Auto-generated method stub 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSSLParameters(SSLParameters sslP) { 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO Auto-generated method stub 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesclass mySSLEngine1 extends mySSLEngine { 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public mySSLEngine1() { 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public mySSLEngine1(String host, int port) { 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(host, port); 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer dst) 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (src.limit() > dst.limit()) { 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.unwrap(src, dst); 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer[] dsts) 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (src.limit() > dsts[0].limit()) { 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.unwrap(src, dsts); 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult wrap(ByteBuffer[] srcs, ByteBuffer dst) 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (srcs[0].limit() > dst.limit()) { 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.wrap(srcs, dst); 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult wrap(ByteBuffer src, ByteBuffer dst) 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (src.limit() > dst.limit()) { 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.wrap(src, dst); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 555e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes} 556