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 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SSLEngineTest extends TestCase { 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>SSLEngine()</code> constructor Assertion: creates 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * SSLEngine object with null host and -1 port 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test01() { 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(); 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(e.getPeerHost()); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-1, e.getPeerPort()); 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] suites = { "a", "b", "c" }; 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.setEnabledCipherSuites(suites); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getEnabledCipherSuites().length, suites.length); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>SSLEngine(String host, int port)</code> constructor 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test02() throws SSLException { 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 1010; 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(null, port); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(e.getPeerHost()); 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getPeerPort(), port); 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.beginHandshake(); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>SSLEngine(String host, int port)</code> constructor 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test03() { 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getPeerHost(), host); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getPeerPort(), port); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] suites = { "a", "b", "c" }; 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.setEnabledCipherSuites(suites); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getEnabledCipherSuites().length, suites.length); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.setUseClientMode(true); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(e.getUseClientMode()); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer src, ByteBuffer dst)</code> method 83e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertions: 84e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * throws IllegalArgumentException when src or dst is null 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws ReadOnlyBufferException when dst is ReadOnly byte buffer 868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when parameters are null 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and does not throw ReadOnlyBufferException if dst is read only byte buffer 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap01() throws SSLException { 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbN, bb); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bb, bbN); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb.asReadOnlyBuffer(); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", roBb.isReadOnly()); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bb, roBb); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer[] srcs, ByteBuffer dst)</code> method 1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: throws IllegalArgumentException when srcs or dst is null or 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * srcs contains null byte buffer; throws ReadOnlyBufferException when dst 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * is read only byte buffer 1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when dst is null or 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if srcs contains null elements It does not throw ReadOnlyBufferException 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * for read only dst 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap02() throws SSLException { 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbNA = null; 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { null, ByteBuffer.allocate(10), null }; 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbNA, bb); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown for null srcs byte buffer array"); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException ex) { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbA, bb); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbA, bbN); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb.asReadOnlyBuffer(); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[0] = ByteBuffer.allocate(100); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[2] = ByteBuffer.allocate(20); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", roBb.isReadOnly()); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbA, roBb); 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer src, ByteBuffer dst)</code> and 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>wrap(ByteBuffer[] srcs, ByteBuffer dst)</code> methods 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: these methods throw SSLException 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap03() throws SSLException { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbs = ByteBuffer.allocate(100); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbd = ByteBuffer.allocate(10); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine1(host, port); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(bbs, bbd); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.wrap(bbd, bbs); 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.wrap(new ByteBuffer[] { bbs }, bbd); 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes res = e.wrap(new ByteBuffer[] { bbd }, bbs); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer src, ByteBuffer dst)</code> method 1798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: encodes a buffer data into network data. 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap04() throws SSLException { 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 187e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.wrap(bb, ByteBuffer.allocate(10)); 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 192e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>wrap(ByteBuffer[] srcs, ByteBuffer dst)</code> method 1958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: encodes datas from buffers into network data. 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testWrap05() throws SSLException { 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { ByteBuffer.allocate(5), ByteBuffer.allocate(10), ByteBuffer.allocate(5) }; 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.wrap(bbA, bb); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, res.bytesConsumed()); 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(20, res.bytesProduced()); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 211e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer dst)</code> method 2148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 215e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertions: 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws IllegalArgumentException when src or dst is null 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * throws ReadOnlyBufferException when dst is read only byte buffer 2188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when parameters are null 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * and does not throw ReadOnlyBufferException if dst is read only byte buffer 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap01() throws SSLException { 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbN, bb); 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbN); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb.asReadOnlyBuffer(); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", roBb.isReadOnly()); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, roBb); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer[] dsts)</code> method 2418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertions: throws IllegalArgumentException if parameters are null or 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * when dsts contains null elements throws ReadOnlyBufferException when dsts 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contains read only elements 2458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check that implementation behavior follows RI: 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * jdk 1.5 does not throw IllegalArgumentException when src is null or 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if dsts contains null elements It does not throw ReadOnlyBufferException 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * when dsts contains read only elements 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap02() throws SSLException { 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbNA = null; 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { null, ByteBuffer.allocate(10), null }; 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbN = null; 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbNA); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException must be thrown for null dsts byte buffer array"); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException ex) { 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbA); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbN, bbA); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb1 = ByteBuffer.allocate(100); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer roBb = bb1.asReadOnlyBuffer(); 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[0] = bb1; 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bbA[2] = roBb; 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Not read only byte buffer", bbA[2].isReadOnly()); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bb, bbA); 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffersrc, ByteBuffer dst)</code> and 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>unwrap(ByteBuffer src, ByteBuffer[] dsts)</code> methods 2828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: these methods throw SSLException 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap03() throws SSLException { 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbs = ByteBuffer.allocate(100); 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bbd = ByteBuffer.allocate(10); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine1(); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbs, bbd); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.unwrap(bbd, bbs); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.unwrap(bbs, new ByteBuffer[] { bbd }); 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("SSLException must be thrown"); 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SSLException ex) { 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes res = e.unwrap(bbd, new ByteBuffer[] { bbs }); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 307e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer dst)</code> method 3108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 311e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertion: decodes network data into a data buffer. 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap04() throws SSLException { 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.unwrap(bb, ByteBuffer.allocate(10)); 319e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 323e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>unwrap(ByteBuffer src, ByteBuffer[] dsts)</code> method 3268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 327e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Assertion: 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * decode network data into data buffers. 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testUnwrap05() throws SSLException { 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = "new host"; 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port = 8080; 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer[] bbA = { ByteBuffer.allocate(100), ByteBuffer.allocate(10), ByteBuffer.allocate(100) }; 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer bb = ByteBuffer.allocate(10); 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngine e = new mySSLEngine(host, port); 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult res = e.unwrap(bb, bbA); 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, res.bytesConsumed()); 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, res.bytesProduced()); 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Additional class for verification SSLEngine constructors 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesclass mySSLEngine extends SSLEngine { 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean useClientMode; 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean needClientAuth; 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean enableSessionCreation; 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private boolean wantClientAuth; 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String[] enabledProtocols; 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String[] enabledCipherSuites; 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public mySSLEngine() { 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected mySSLEngine(String host, int port) { 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(host, port); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void beginHandshake() throws SSLException { 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String host = super.getPeerHost(); 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((host == null) || (host.length() == 0)) { 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException(""); 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void closeInbound() throws SSLException { 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void closeOutbound() { 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Runnable getDelegatedTask() { 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getEnabledCipherSuites() { 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return enabledCipherSuites; 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getEnabledProtocols() { 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return enabledProtocols; 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getEnableSessionCreation() { 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return enableSessionCreation; 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult.HandshakeStatus getHandshakeStatus() { 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return SSLEngineResult.HandshakeStatus.FINISHED; 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getNeedClientAuth() { 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return needClientAuth; 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLSession getSession() { 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getSupportedCipherSuites() { 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new String[0]; 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String[] getSupportedProtocols() { 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new String[0]; 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getUseClientMode() { 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return useClientMode; 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean getWantClientAuth() { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return wantClientAuth; 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean isInboundDone() { 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean isOutboundDone() { 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setEnabledCipherSuites(String[] suites) { 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabledCipherSuites = suites; 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setEnabledProtocols(String[] protocols) { 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enabledProtocols = protocols; 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setEnableSessionCreation(boolean flag) { 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enableSessionCreation = flag; 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setNeedClientAuth(boolean need) { 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes needClientAuth = need; 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setUseClientMode(boolean mode) { 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes useClientMode = mode; 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setWantClientAuth(boolean want) { 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes wantClientAuth = want; 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer[] dsts, 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int offset, int length) throws SSLException { 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new SSLEngineResult(SSLEngineResult.Status.OK, 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult.HandshakeStatus.FINISHED, 1, 2); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult wrap(ByteBuffer[] srcs, int offset, int length, 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteBuffer dst) throws SSLException { 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new SSLEngineResult(SSLEngineResult.Status.OK, 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SSLEngineResult.HandshakeStatus.FINISHED, 10, 20); 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLParameters getSSLParameters() { 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO Auto-generated method stub 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSSLParameters(SSLParameters sslP) { 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO Auto-generated method stub 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesclass mySSLEngine1 extends mySSLEngine { 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public mySSLEngine1() { 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public mySSLEngine1(String host, int port) { 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(host, port); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer dst) 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (src.limit() > dst.limit()) { 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.unwrap(src, dst); 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer[] dsts) 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (src.limit() > dsts[0].limit()) { 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.unwrap(src, dsts); 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult wrap(ByteBuffer[] srcs, ByteBuffer dst) 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (srcs[0].limit() > dst.limit()) { 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.wrap(srcs, dst); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SSLEngineResult wrap(ByteBuffer src, ByteBuffer dst) 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SSLException { 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (src.limit() > dst.limit()) { 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SSLException("incorrect limits"); 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.wrap(src, dst); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 553e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes} 554