1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.xnet.tests.support; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.nio.ByteBuffer; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyManagementException; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SecureRandom; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.KeyManager; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLContextSpi; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLEngine; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLEngineResult; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLException; 280c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstromimport javax.net.ssl.SSLParameters; 290c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstromimport javax.net.ssl.SSLServerSocketFactory; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLSession; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLSessionContext; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLSocketFactory; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.TrustManager; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Additional class for verification of SSLContextSpi and SSLContext 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * functionality 38f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class MySSLContextSpi extends SSLContextSpi { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private boolean init = false; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void engineInit(KeyManager[] km, TrustManager[] tm, 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SecureRandom sr) throws KeyManagementException { 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (sr == null) { 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new KeyManagementException( 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "secureRandom is null"); 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project init = true; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected SSLSocketFactory engineGetSocketFactory() { 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!init) { 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new RuntimeException("Not initialiazed"); 55f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected SSLServerSocketFactory engineGetServerSocketFactory() { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!init) { 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new RuntimeException("Not initialiazed"); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected SSLSessionContext engineGetServerSessionContext() { 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!init) { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new RuntimeException("Not initialiazed"); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected SSLSessionContext engineGetClientSessionContext() { 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!init) { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new RuntimeException("Not initialiazed"); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 800c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom protected SSLParameters engineGetDefaultSSLParameters() { 810c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom engineGetSocketFactory(); 820c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom return null; 830c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 840c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 850c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom protected SSLParameters engineGetSupportedSSLParameters() { 860c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom engineGetSocketFactory(); 870c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom return null; 880c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom } 890c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FIXME: add these methods 92f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes */ 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected SSLEngine engineCreateSSLEngine(String host, int port) { 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!init) { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new RuntimeException("Not initialiazed"); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new tmpSSLEngine(host, port); 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected SSLEngine engineCreateSSLEngine() { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!init) { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new RuntimeException("Not initialiazed"); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new tmpSSLEngine(); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 106f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public class tmpSSLEngine extends SSLEngine { 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String tmpHost; 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int tmpPort; 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public tmpSSLEngine() { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmpHost = null; 112f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes tmpPort = 0; 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public tmpSSLEngine(String host, int port) { 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmpHost = host; 116f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes tmpPort = port; 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getPeerHost() { 119f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes return tmpHost; 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getPeerPort() { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return tmpPort; 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void beginHandshake() throws SSLException { } 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void closeInbound() throws SSLException { } 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void closeOutbound() {} 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Runnable getDelegatedTask() { return null; } 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getEnabledCipherSuites() { return null; } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getEnabledProtocols() {return null; } 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getEnableSessionCreation() { return true; } 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public SSLEngineResult.HandshakeStatus getHandshakeStatus() { return null; } 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getNeedClientAuth() { return true; } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public SSLSession getSession() { return null; } 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getSupportedCipherSuites() { return null; } 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String[] getSupportedProtocols() { return null; } 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getUseClientMode() { return true; } 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean getWantClientAuth() { return true; } 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isInboundDone() { return true; } 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isOutboundDone() { return true; } 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEnabledCipherSuites(String[] suites) { } 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEnabledProtocols(String[] protocols) { } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEnableSessionCreation(boolean flag) { } 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setNeedClientAuth(boolean need) { } 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setUseClientMode(boolean mode) { } 145f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes public void setWantClientAuth(boolean want) { } 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer[] dsts, 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int offset, int length) throws SSLException { 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 149f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public SSLEngineResult wrap(ByteBuffer[] srcs, int offset, 151f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes int length, ByteBuffer dst) throws SSLException { 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1550c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom} 156