Mercurial > hg > monetdb-java
changeset 800:09f463444dde monetdbs
TLS support in its most basic form
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Thu, 07 Dec 2023 11:21:39 +0100 (16 months ago) |
parents | 117e7917325d |
children | 88b3e8e89126 |
files | src/main/java/org/monetdb/mcl/net/MapiSocket.java src/main/java/org/monetdb/mcl/net/SecureSocket.java |
diffstat | 2 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/mcl/net/MapiSocket.java +++ b/src/main/java/org/monetdb/mcl/net/MapiSocket.java @@ -345,7 +345,7 @@ public final class MapiSocket { con = sock; } - private Socket wrapTLS(Socket sock, Target.Validated validated) throws MCLException { + private Socket wrapTLS(Socket sock, Target.Validated validated) throws IOException { if (validated.getTls()) return SecureSocket.wrap(validated, sock); return sock;
--- a/src/main/java/org/monetdb/mcl/net/SecureSocket.java +++ b/src/main/java/org/monetdb/mcl/net/SecureSocket.java @@ -1,9 +1,22 @@ package org.monetdb.mcl.net; +import org.monetdb.mcl.MCLException; + +import javax.net.ssl.SSLSocket; +import javax.net.ssl.SSLSocketFactory; +import java.io.IOException; import java.net.Socket; public class SecureSocket { - public static Socket wrap(Target.Validated validated, Socket sock) { - throw new MCLException("TLS connections (monetdbs://) are not supported yet"); + public static Socket wrap(Target.Validated validated, Socket inner) throws IOException { + SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); + String host = validated.connectTcp(); + int port = validated.connectPort(); + boolean autoclose = true; + SSLSocket sock = (SSLSocket) factory.createSocket(inner, host, port, autoclose); + sock.setUseClientMode(true); + + sock.startHandshake(); + return sock; } }