blob: 6ca617776a94f9636760cce81347acc59f843d49 [file] [log] [blame]
package org.apache.harmony.xnet.tests.support;
import java.security.Principal;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSessionBindingEvent;
import javax.net.ssl.SSLSessionBindingListener;
import javax.net.ssl.SSLSessionContext;
import javax.security.cert.CertificateException;
import javax.security.cert.X509Certificate;
import javax.net.ssl.SSLSession;
import org.apache.harmony.security.tests.support.TestCertUtils;
public class mySSLSession implements SSLSession {
private byte[] idData;
private String nameHost = null;
private int namePort = -1;
private Hashtable table;
private boolean invalidateDone = false;
private Certificate[] certs = null;
private X509Certificate[] xCerts = null;
public mySSLSession(String host, int port, byte[] id) {
certs = null;
xCerts = null;
nameHost = host;
namePort = port;
idData = id;
table = new Hashtable();
}
public mySSLSession(X509Certificate[] xc) {
certs = TestCertUtils.getCertChain();
xCerts = xc;
}
public mySSLSession(Certificate[] xc) throws CertificateEncodingException, CertificateException {
certs = xc;
xCerts = new X509Certificate[xc.length];
int i = 0;
for (Certificate cert : xc) {
xCerts[i++] = X509Certificate.getInstance(cert.getEncoded());
}
}
public mySSLSession() {
}
public int getApplicationBufferSize() {
return 1234567;
}
public String getCipherSuite() {
return "SuiteName";
}
public long getCreationTime() {
return 1000l;
}
public byte[] getId() {
return idData;
}
public long getLastAccessedTime() {
return 2000l;
}
public Certificate[] getLocalCertificates() {
return null;
}
public Principal getLocalPrincipal() {
return null;
}
public int getPacketBufferSize() {
return 12345;
}
public Certificate[] getPeerCertificates() throws SSLPeerUnverifiedException {
if (certs == null) {
throw new SSLPeerUnverifiedException("peer not authenticated");
} else {
return certs;
}
}
public X509Certificate[] getPeerCertificateChain() throws SSLPeerUnverifiedException {
if(xCerts == null) {
throw new SSLPeerUnverifiedException("peer not authenticated");
} else {
return xCerts;
}
}
public String getPeerHost() {
return nameHost;
}
public int getPeerPort() {
return namePort;
}
public Principal getPeerPrincipal() throws SSLPeerUnverifiedException {
return null;
}
public String getProtocol() {
return "ProtocolName";
}
public SSLSessionContext getSessionContext() {
return null;
}
public void putValue(String s, Object obj) {
if(s == null || obj == null)
throw new IllegalArgumentException("arguments can not be null");
Object obj1 = table.put(s, obj);
if(obj1 instanceof SSLSessionBindingListener) {
SSLSessionBindingEvent sslsessionbindingevent = new SSLSessionBindingEvent(this, s);
((SSLSessionBindingListener)obj1).valueUnbound(sslsessionbindingevent);
}
if(obj instanceof SSLSessionBindingListener) {
SSLSessionBindingEvent sslsessionbindingevent1 = new SSLSessionBindingEvent(this, s);
((SSLSessionBindingListener)obj).valueBound(sslsessionbindingevent1);
}
}
public void removeValue(String s) {
if(s == null)
throw new IllegalArgumentException("argument can not be null");
Object obj = table.remove(s);
if(obj instanceof SSLSessionBindingListener) {
SSLSessionBindingEvent sslsessionbindingevent = new SSLSessionBindingEvent(this, s);
((SSLSessionBindingListener)obj).valueUnbound(sslsessionbindingevent);
}
}
public Object getValue(String s) {
if(s == null) {
throw new IllegalArgumentException("argument can not be null");
} else {
return table.get(s);
}
}
public String[] getValueNames() {
Vector vector = new Vector();
Enumeration enumeration = table.keys();
while (enumeration.hasMoreElements()) {
vector.addElement(enumeration.nextElement());
}
String as[] = new String[vector.size()];
vector.copyInto(as);
return as;
}
public void invalidate() {
invalidateDone = true;
}
public boolean isValid() {
return invalidateDone;
}
}