Skip to content

Commit 08c26d2

Browse files
author
Alex Gaetano Padula
committed
tls implementation
1 parent f0fa9cd commit 08c26d2

File tree

1 file changed

+39
-15
lines changed

1 file changed

+39
-15
lines changed

cursusdb.java

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020

2121
package cursusdbjava;
2222

23+
import javax.net.SocketFactory;
24+
import javax.net.ssl.SSLSocket;
25+
import javax.net.ssl.SSLSocketFactory;
2326
import java.io.*;
2427
import java.net.InetSocketAddress;
2528
import java.net.Socket;
@@ -41,7 +44,7 @@ static class Client {
4144

4245

4346
private Socket socket;
44-
47+
private SSLSocket secureSocket;
4548
// Constructor for CursusDB Client
4649
Client(String hostIn, int portIn, String usernameIn, String passwordIn, boolean tlsIn) {
4750
host = hostIn;
@@ -52,33 +55,54 @@ static class Client {
5255
}
5356

5457
void Connect() throws IOException {
55-
// Create new socket
56-
socket = new Socket();
5758

58-
// Connect to cluster
59-
socket.connect(new InetSocketAddress("0.0.0.0", port), 1000);
59+
if (tls) {
60+
SocketFactory factory = SSLSocketFactory.getDefault();
61+
secureSocket = (SSLSocket) factory.createSocket(host, port);
6062

61-
// Setup writer and reader
62-
reader = new DataInputStream(socket.getInputStream());
63-
writer = new DataOutputStream(socket.getOutputStream());
63+
secureSocket.setEnabledCipherSuites(new String[] { "TLS_AES_128_GCM_SHA256" });
64+
secureSocket.setEnabledProtocols(new String[] { "TLSv1.3" });
6465

65-
Base64.Encoder base64Encoder = Base64.getEncoder();
66-
String userPassEncoded = base64Encoder.encodeToString((username + "\\0" + password).getBytes());
66+
// Connect to cluster
67+
secureSocket.connect(new InetSocketAddress("0.0.0.0", port), 1000);
6768

68-
writer.writeBytes("Authentication: " + userPassEncoded + "\r\n");
69+
// Setup writer and reader
70+
reader = new DataInputStream(secureSocket.getInputStream());
71+
writer = new DataOutputStream(secureSocket.getOutputStream());
72+
} else {
73+
// Create new socket
74+
socket = new Socket();
6975

70-
String clusterResponse = reader.readLine();
71-
System.out.println(clusterResponse);
7276

77+
// Connect to cluster
78+
socket.connect(new InetSocketAddress("0.0.0.0", port), 1000);
79+
80+
// Setup writer and reader
81+
reader = new DataInputStream(socket.getInputStream());
82+
writer = new DataOutputStream(socket.getOutputStream());
83+
}
84+
85+
Base64.Encoder base64Encoder = Base64.getEncoder();
86+
String userPassEncoded = base64Encoder.encodeToString((username + "\\0" + password).getBytes());
7387

88+
writer.writeBytes("Authentication: " + userPassEncoded + "\r\n");
89+
90+
String clusterResponse = reader.readLine();
91+
92+
93+
System.out.println("Connected to cluster.");
7494

75-
System.out.println("Connected to cluster.");
7695
}
7796

7897
void Close() throws IOException {
7998
reader.close();
8099
writer.close();
81-
socket.close();
100+
101+
if (tls) {
102+
secureSocket.close();
103+
} else {
104+
socket.close();
105+
}
82106
System.out.println("Cluster connection closed.");
83107
}
84108

0 commit comments

Comments
 (0)