summaryrefslogtreecommitdiff
path: root/bkucommon/src/main/java/at/gv/egiz/bku/spring/InternalSSLSocketFactory.java
diff options
context:
space:
mode:
authortkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2013-11-11 20:52:36 +0000
committertkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2013-11-11 20:52:36 +0000
commit4af1d0a0d6fb6f4784067d320e42504922710788 (patch)
tree6cdb6232d5b326b49362a84a1d7b0e5b851e12b2 /bkucommon/src/main/java/at/gv/egiz/bku/spring/InternalSSLSocketFactory.java
parente409be78733ceb5a8f2cb98f774269ecc89dcfa1 (diff)
downloadmocca-4af1d0a0d6fb6f4784067d320e42504922710788.tar.gz
mocca-4af1d0a0d6fb6f4784067d320e42504922710788.tar.bz2
mocca-4af1d0a0d6fb6f4784067d320e42504922710788.zip
Allow to disable certain ciphersuites for SSL connections
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@1213 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'bkucommon/src/main/java/at/gv/egiz/bku/spring/InternalSSLSocketFactory.java')
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/spring/InternalSSLSocketFactory.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/spring/InternalSSLSocketFactory.java b/bkucommon/src/main/java/at/gv/egiz/bku/spring/InternalSSLSocketFactory.java
new file mode 100644
index 00000000..a9e96126
--- /dev/null
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/spring/InternalSSLSocketFactory.java
@@ -0,0 +1,83 @@
+package at.gv.egiz.bku.spring;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+
+public class InternalSSLSocketFactory extends SSLSocketFactory {
+
+ private SSLSocketFactory proxy;
+ private String[] suites;
+
+ public InternalSSLSocketFactory(SSLSocketFactory socketFactory,
+ String[] disabledSuites) {
+ this.proxy = socketFactory;
+ List<String> dSuites = Arrays.asList(disabledSuites);
+ List<String> suites = new ArrayList<String>(Arrays.asList(proxy.getDefaultCipherSuites()));
+ suites.removeAll(dSuites);
+ this.suites = suites.toArray(new String[suites.size()]);
+ }
+
+ @Override
+ public Socket createSocket(Socket s, String host, int port,
+ boolean autoClose) throws IOException {
+ Socket socket = proxy.createSocket(s, host, port, autoClose);
+ setCipherSuites(socket);
+ return socket;
+ }
+
+ @Override
+ public String[] getDefaultCipherSuites() {
+ return suites;
+ }
+
+ @Override
+ public String[] getSupportedCipherSuites() {
+ return proxy.getSupportedCipherSuites();
+ }
+
+ @Override
+ public Socket createSocket(String host, int port) throws IOException,
+ UnknownHostException {
+ Socket socket = proxy.createSocket(host, port);
+ setCipherSuites(socket);
+ return socket;
+ }
+
+ @Override
+ public Socket createSocket(InetAddress host, int port) throws IOException {
+ Socket socket = proxy.createSocket(host, port);
+ setCipherSuites(socket);
+ return socket;
+ }
+
+ @Override
+ public Socket createSocket(String host, int port, InetAddress localHost,
+ int localPort) throws IOException, UnknownHostException {
+ Socket socket = proxy.createSocket(host, port, localHost,
+ localPort);
+ setCipherSuites(socket);
+ return socket;
+ }
+
+ @Override
+ public Socket createSocket(InetAddress address, int port,
+ InetAddress localAddress, int localPort) throws IOException {
+ Socket socket = proxy.createSocket(address, port, localAddress,
+ localPort);
+ setCipherSuites(socket);
+ return socket;
+ }
+
+ private void setCipherSuites(Socket socket) {
+ if (socket instanceof SSLSocket)
+ ((SSLSocket) socket).setEnabledCipherSuites(suites);
+ }
+}