package com.forgeessentials.remote;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
public class SSLContextHelper
{
private SSLContext sslCtx;
public SSLContext getSSLCtx()
{
return sslCtx;
}
public SSLContextHelper()
{
try
{
sslCtx = SSLContext.getDefault();
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
public void loadSSLCertificate(InputStream keystore, String storepass, String keypass) throws IOException, GeneralSecurityException
{
if (keystore == null)
throw new IOException("Invalid keystore");
// Load KeyStore
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(keystore, storepass.toCharArray());
// Init KeyManager
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, keypass.toCharArray());
// Init TrustManager
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
// Init SSLContext
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
sslCtx = ctx;
}
public void loadSSLCertificate(String filename, String storepass, String keypass) throws IOException, GeneralSecurityException
{
loadSSLCertificate(new FileInputStream(filename), storepass, keypass);
}
}