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; } }