package org.jdiameter.client.impl.transport.tcp;
import org.jdiameter.client.api.io.NotInitializedException;
import static org.jdiameter.client.impl.helpers.Parameters.*;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.IOException;
/*
* Copyright (c) 2006 jDiameter.
* https://jdiameter.dev.java.net/
*
* License: GPL v3
*
* e-mail: erick.svenson@yahoo.com
*
*/
class TLSTransportClient extends TCPTransportClient {
private TLSClientConnection parentConnection;
/**
* Default constructor
*
* @param parenConnection connection created this transport
*/
TLSTransportClient(TLSClientConnection parenConnection) {
this.parentConnection = parenConnection;
}
public void initialize() throws IOException, NotInitializedException {
if (destAddress == null)
throw new NotInitializedException("Destination address is not set");
SSLSocketFactory cltFct = parentConnection.getSSLFactory();
SSLSocket sck = (SSLSocket) cltFct.createSocket(destAddress.getAddress(), destAddress.getPort());
sck.setEnableSessionCreation(parentConnection.getSSLConfig().getBooleanValue(SDEnableSessionCreation.ordinal(), true));
sck.setUseClientMode(!parentConnection.getSSLConfig().getBooleanValue(SDUseClientMode.ordinal(), true));
if (parentConnection.getSSLConfig().getStringValue(CipherSuites.ordinal(), "") != null) {
sck.setEnabledCipherSuites(parentConnection.getSSLConfig().getStringValue(CipherSuites.ordinal(), "").split(","));
}
socketChannel = sck.getChannel();
socketChannel.connect(destAddress);
socketChannel.configureBlocking(true);
parentConnection.onConnected();
}
public TCPClientConnection getParent() {
return parentConnection;
}
}