/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.harmony.xnet.tests.support;
import java.nio.ByteBuffer;
import java.security.KeyManagementException;
import java.security.SecureRandom;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContextSpi;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSessionContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
/**
* Additional class for verification of SSLContextSpi and SSLContext
* functionality
*
*/
public class MySSLContextSpi extends SSLContextSpi {
private boolean init = false;
protected void engineInit(KeyManager[] km, TrustManager[] tm,
SecureRandom sr) throws KeyManagementException {
if (sr == null) {
throw new KeyManagementException(
"secureRandom is null");
}
init = true;
}
protected SSLSocketFactory engineGetSocketFactory() {
if (!init) {
throw new RuntimeException("Not initialiazed");
}
return null;
}
protected SSLServerSocketFactory engineGetServerSocketFactory() {
if (!init) {
throw new RuntimeException("Not initialiazed");
}
return null;
}
protected SSLSessionContext engineGetServerSessionContext() {
if (!init) {
throw new RuntimeException("Not initialiazed");
}
return null;
}
protected SSLSessionContext engineGetClientSessionContext() {
if (!init) {
throw new RuntimeException("Not initialiazed");
}
return null;
}
protected SSLParameters engineGetDefaultSSLParameters() {
engineGetSocketFactory();
return null;
}
protected SSLParameters engineGetSupportedSSLParameters() {
engineGetSocketFactory();
return null;
}
/*
* FIXME: add these methods
*/
protected SSLEngine engineCreateSSLEngine(String host, int port) {
if (!init) {
throw new RuntimeException("Not initialiazed");
}
return new tmpSSLEngine(host, port);
}
protected SSLEngine engineCreateSSLEngine() {
if (!init) {
throw new RuntimeException("Not initialiazed");
}
return new tmpSSLEngine();
}
public class tmpSSLEngine extends SSLEngine {
String tmpHost;
int tmpPort;
public tmpSSLEngine() {
tmpHost = null;
tmpPort = 0;
}
public tmpSSLEngine(String host, int port) {
tmpHost = host;
tmpPort = port;
}
public String getPeerHost() {
return tmpHost;
}
public int getPeerPort() {
return tmpPort;
}
public void beginHandshake() throws SSLException { }
public void closeInbound() throws SSLException { }
public void closeOutbound() {}
public Runnable getDelegatedTask() { return null; }
public String[] getEnabledCipherSuites() { return null; }
public String[] getEnabledProtocols() {return null; }
public boolean getEnableSessionCreation() { return true; }
public SSLEngineResult.HandshakeStatus getHandshakeStatus() { return null; }
public boolean getNeedClientAuth() { return true; }
public SSLSession getSession() { return null; }
public String[] getSupportedCipherSuites() { return null; }
public String[] getSupportedProtocols() { return null; }
public boolean getUseClientMode() { return true; }
public boolean getWantClientAuth() { return true; }
public boolean isInboundDone() { return true; }
public boolean isOutboundDone() { return true; }
public void setEnabledCipherSuites(String[] suites) { }
public void setEnabledProtocols(String[] protocols) { }
public void setEnableSessionCreation(boolean flag) { }
public void setNeedClientAuth(boolean need) { }
public void setUseClientMode(boolean mode) { }
public void setWantClientAuth(boolean want) { }
public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer[] dsts,
int offset, int length) throws SSLException {
return null;
}
public SSLEngineResult wrap(ByteBuffer[] srcs, int offset,
int length, ByteBuffer dst) throws SSLException {
return null;
}
}
}