package org.jboss.net.ssl;
import java.io.IOException;
import java.security.KeyStore;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.net.ssl.TrustManager;
import javax.net.ssl.KeyManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.KeyManagerFactory;
import org.jboss.security.SecurityDomain;
import org.apache.tomcat.util.net.jsse.JSSE14SocketFactory;
public class JBossSocketFactory
extends JSSE14SocketFactory
{
private SecurityDomain securityDomain;
public JBossSocketFactory()
{
}
public void setAttribute(String name, Object value)
{
if (name.equalsIgnoreCase("securityDomain"))
{
try
{
setSecurityDomainName((String) value);
}
catch (Exception e)
{
IllegalArgumentException ex =
new IllegalArgumentException("Failed to set security domain");
ex.initCause(e);
throw ex;
}
}
super.setAttribute(name, value);
}
public void setSecurityDomainName(String jndiName)
throws NamingException, IOException
{
InitialContext iniCtx = new InitialContext();
securityDomain = (SecurityDomain) iniCtx.lookup(jndiName);
}
protected KeyStore getKeystore(String type, String pass)
throws IOException
{
return securityDomain.getKeyStore();
}
protected KeyStore getTrustStore(String type) throws IOException
{
return securityDomain.getTrustStore();
}
protected TrustManager[] getTrustManagers(String keystoreType, String algorithm)
throws Exception
{
TrustManagerFactory tmf = securityDomain.getTrustManagerFactory();
TrustManager[] trustMgrs = null;
if( tmf != null )
{
trustMgrs = tmf.getTrustManagers();
}
return trustMgrs;
}
protected KeyManager[] getKeyManagers(String keystoreType, String algorithm,
String keyAlias)
throws Exception
{
KeyManagerFactory kmf = securityDomain.getKeyManagerFactory();
KeyManager[] keyMgrs = null;
if( kmf != null )
{
keyMgrs = kmf.getKeyManagers();
}
return keyMgrs;
}
}