package org.ovirt.engine.core.vdsbroker.jsonrpc;
import java.security.GeneralSecurityException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.ovirt.engine.core.utils.crypt.EngineEncryptionUtils;
import org.ovirt.vdsm.jsonrpc.client.reactors.ManagerProvider;
/**
* Engine specific implementation of <code>ManagerProvider</code>
* which provides <code>KeyManager</code>s and <code>TrustManager</code>.
*
*/
public class EngineManagerProvider extends ManagerProvider {
private String sslProtocol;
public EngineManagerProvider(String sslProtocol) {
this.sslProtocol = sslProtocol;
}
@Override
public KeyManager[] getKeyManagers() throws GeneralSecurityException {
return EngineEncryptionUtils.getKeyManagers();
}
@Override
public TrustManager[] getTrustManagers() throws GeneralSecurityException {
return EngineEncryptionUtils.getTrustManagers();
}
@Override
public SSLContext getSSLContext() throws GeneralSecurityException {
final SSLContext context;
try {
context = SSLContext.getInstance(this.sslProtocol);
context.init(getKeyManagers(), getTrustManagers(), null);
} catch (KeyManagementException | NoSuchAlgorithmException ex) {
throw new RuntimeException(ex);
}
return context;
}
}