package org.cagrid.trust.service; import org.eclipse.jetty.http.ssl.SslContextFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.net.ssl.TrustManager; import java.security.KeyStore; import java.security.cert.CRL; import java.util.Collection; import java.util.Date; public class TrustServiceJettySSLContextFactory extends SslContextFactory { private Logger log; private TrustService trustService; public TrustServiceJettySSLContextFactory() { super(); log = LoggerFactory.getLogger(this.getClass().getName()); } public TrustServiceJettySSLContextFactory(boolean trustAll) { super(trustAll); log = LoggerFactory.getLogger(this.getClass().getName()); } public TrustServiceJettySSLContextFactory(String keyStorePath) { super(keyStorePath); log = LoggerFactory.getLogger(this.getClass().getName()); } @Override protected TrustManager[] getTrustManagers(KeyStore trustStore, Collection<? extends CRL> crls) throws Exception { if (getTrustService() == null) { log.warn("A trust service was not specified, using the default trust managers"); return super.getTrustManagers(trustStore, crls); } else if (getTrustService().getTrustManager() == null) { log.warn("The trust service did NOT provide a trust manager to use, using the default trust managers"); return super.getTrustManagers(trustStore, crls); } else { return new TrustManager[]{getTrustService().getTrustManager()}; } } public TrustService getTrustService() { return trustService; } public void setTrustService(TrustService trustService) { this.trustService = trustService; } }