
org.ldaptive.ssl.DefaultSSLContextInitializer Maven / Gradle / Ivy
/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.ssl;
import java.security.GeneralSecurityException;
import java.security.KeyStore;
import java.util.Arrays;
import javax.net.ssl.KeyManager;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
/**
* Provides a default implementation of SSL context initializer which allows the setting of trust and key managers in
* order to create an SSL context.
*
* @author Middleware Services
*/
public class DefaultSSLContextInitializer extends AbstractSSLContextInitializer
{
/** Key managers. */
private KeyManager[] keyManagers;
/** Whether default trust managers should be created. */
private final boolean createDefaultTrustManagers;
/** Creates a new default ssl context initializer. Default trust managers will be produced. */
public DefaultSSLContextInitializer()
{
this(true);
}
/**
* Creates a new default ssl context initializer.
*
* @param defaultTrustManagers whether default trust managers should be created
*/
public DefaultSSLContextInitializer(final boolean defaultTrustManagers)
{
createDefaultTrustManagers = defaultTrustManagers;
}
@Override
protected TrustManager[] createTrustManagers()
throws GeneralSecurityException
{
if (createDefaultTrustManagers) {
final TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init((KeyStore) null);
return tmf.getTrustManagers();
}
return null;
}
@Override
public KeyManager[] getKeyManagers()
throws GeneralSecurityException
{
return keyManagers;
}
/**
* Sets the key managers.
*
* @param managers key managers
*/
public void setKeyManagers(final KeyManager... managers)
{
keyManagers = managers;
}
@Override
public String toString()
{
return
String.format(
"[%s@%d::trustManagers=%s, keyManagers=%s, createDefaultTrustManagers=%s]",
getClass().getName(),
hashCode(),
Arrays.toString(trustManagers),
Arrays.toString(keyManagers),
createDefaultTrustManagers);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy