package org.eclipse.jetty.client;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.security.KeyStore;
import java.security.cert.CRL;
import java.util.Collection;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.ssl.SslConnector;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.util.security.CertificateUtils;
import org.eclipse.jetty.util.ssl.SslContextFactory;
public abstract class SslValidationTestBase //extends ContentExchangeTest
{
protected static Class<? extends SslConnector> __klass;
protected static int __konnector;
// certificate is valid until Jan 1, 2050
private String _keypath = MavenTestingUtils.getTargetFile("test-policy/validation/jetty-valid.keystore").getAbsolutePath();
private String _trustpath = MavenTestingUtils.getTargetFile("test-policy/validation/jetty-trust.keystore").getAbsolutePath();
private String _clientpath = MavenTestingUtils.getTargetFile("test-policy/validation/jetty-client.keystore").getAbsolutePath();
private String _crlpath = MavenTestingUtils.getTargetFile("test-policy/validation/crlfile.pem").getAbsolutePath();
private String _password = "OBF:1wnl1sw01ta01z0f1tae1svy1wml";
protected void configureServer(Server server)
throws Exception
{
// setProtocol("https");
//
// SslContextFactory srvFactory = new SslContextFactory() {
// @Override
// protected KeyStore getKeyStore(InputStream storeStream, String storePath, String storeType, String storeProvider, String storePassword) throws Exception
// {
// return CertificateUtils.getKeyStore(storeStream, storePath, storeType, storeProvider, storePassword);
// }
//
// @Override
// protected Collection<? extends CRL> loadCRL(String crlPath) throws Exception
// {
// return CertificateUtils.loadCRL(crlPath);
// }
// };
// srvFactory.setValidateCerts(true);
// srvFactory.setCrlPath(_crlpath);
// srvFactory.setNeedClientAuth(true);
//
// srvFactory.setKeyStorePath(_keypath);
// srvFactory.setKeyStorePassword(_password);
// srvFactory.setKeyManagerPassword(_password);
//
// srvFactory.setTrustStore(_trustpath);
// srvFactory.setTrustStorePassword(_password);
//
// Constructor<? extends SslConnector> constructor = __klass.getConstructor(SslContextFactory.class);
// SslConnector connector = constructor.newInstance(srvFactory);
// connector.setMaxIdleTime(5000);
// server.addConnector(connector);
//
// Handler handler = new TestHandler(getBasePath());
//
// ServletContextHandler root = new ServletContextHandler();
// root.setContextPath("/");
// root.setResourceBase(getBasePath());
// ServletHolder servletHolder = new ServletHolder( new DefaultServlet() );
// servletHolder.setInitParameter( "gzip", "true" );
// root.addServlet( servletHolder, "/*" );
//
// HandlerCollection handlers = new HandlerCollection();
// handlers.setHandlers(new Handler[]{handler, root});
// server.setHandler( handlers );
// }
//
// @Override
// protected void configureClient(HttpClient client)
// throws Exception
// {
// client.setConnectorType(__konnector);
//
// SslContextFactory cf = client.getSslContextFactory();
// cf.setValidateCerts(true);
// cf.setCrlPath(_crlpath);
//
// cf.setKeyStorePath(_clientpath);
// cf.setKeyStorePassword(_password);
// cf.setKeyManagerPassword(_password);
//
// cf.setTrustStore(_trustpath);
// cf.setTrustStorePassword(_password);
}
}