From: markt Date: Tue, 26 Jul 2011 20:56:27 +0000 (+0000) Subject: Fix SSL unit test failures with APR/native X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=f3c6cfc48dafa82ce788b70b714273a694b345eb;p=tomcat7.0 Fix SSL unit test failures with APR/native git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1151240 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/test/org/apache/tomcat/util/net/TesterSupport.java b/test/org/apache/tomcat/util/net/TesterSupport.java index 5564d506e..0a8c2e4e6 100644 --- a/test/org/apache/tomcat/util/net/TesterSupport.java +++ b/test/org/apache/tomcat/util/net/TesterSupport.java @@ -20,6 +20,9 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.NoSuchAlgorithmException; @@ -29,6 +32,8 @@ import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLServerSocketFactory; +import javax.net.ssl.SSLSocket; +import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; @@ -132,9 +137,9 @@ public final class TesterSupport { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(TesterSupport.getUser1KeyManagers(), TesterSupport.getTrustManagers(), - null); + null); javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory( - sc.getSocketFactory()); + new TesterSSLSocketFactory(sc.getSocketFactory())); } catch (Exception e) { e.printStackTrace(); } @@ -261,4 +266,67 @@ public final class TesterSupport { // NOOP - Trust everything } } + + private static class TesterSSLSocketFactory + extends SSLSocketFactory { + + private SSLSocketFactory factory; + + public TesterSSLSocketFactory(SSLSocketFactory factory) { + this.factory = factory; + } + + @Override + public String[] getDefaultCipherSuites() { + return factory.getDefaultCipherSuites(); + } + + @Override + public String[] getSupportedCipherSuites() { + return factory.getSupportedCipherSuites(); + } + + @Override + public Socket createSocket(Socket socket, String s, int i, boolean flag) + throws IOException { + SSLSocket result = + (SSLSocket) factory.createSocket(socket, s, i, flag); + result.setEnabledProtocols(new String[] { "SSLv3" } ); + return result; + } + + @Override + public Socket createSocket(String s, int i) throws IOException, + UnknownHostException { + SSLSocket result = (SSLSocket) factory.createSocket(s, i); + result.setEnabledProtocols(new String[] { "SSLv3" } ); + return result; + } + + @Override + public Socket createSocket(String s, int i, InetAddress inetaddress, + int j) throws IOException, UnknownHostException { + SSLSocket result = + (SSLSocket) factory.createSocket(s, i, inetaddress, j); + result.setEnabledProtocols(new String[] { "SSLv3" } ); + return result; + } + + @Override + public Socket createSocket(InetAddress inetaddress, int i) + throws IOException { + SSLSocket result = (SSLSocket) factory.createSocket(inetaddress, i); + result.setEnabledProtocols(new String[] { "SSLv3" } ); + return result; + } + + @Override + public Socket createSocket(InetAddress inetaddress, int i, + InetAddress inetaddress1, int j) throws IOException { + SSLSocket result = (SSLSocket) factory.createSocket( + inetaddress, i, inetaddress1, j); + result.setEnabledProtocols(new String[] { "SSLv3" } ); + return result; + } + } }