diff --git a/framework/bundles/org.eclipse.ecf.ssl/src/org/eclipse/ecf/internal/ssl/SSLContextHelper.java b/framework/bundles/org.eclipse.ecf.ssl/src/org/eclipse/ecf/internal/ssl/SSLContextHelper.java index 7aea073cf6..1de579bb22 100644 --- a/framework/bundles/org.eclipse.ecf.ssl/src/org/eclipse/ecf/internal/ssl/SSLContextHelper.java +++ b/framework/bundles/org.eclipse.ecf.ssl/src/org/eclipse/ecf/internal/ssl/SSLContextHelper.java @@ -9,6 +9,7 @@ *****************************************************************************/ package org.eclipse.ecf.internal.ssl; +import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.*; import javax.net.ssl.SSLContext; @@ -21,31 +22,39 @@ public class SSLContextHelper { public static SSLContext getSSLContext(String protocols) { SSLContext resultContext = null; - if (protocols != null) { + try { + resultContext = SSLContext.getDefault(); + } catch (NoSuchAlgorithmException pkiNotAvailableERR) { + // TODO Auto-generated catch block + // e.printStackTrace(); - String[] httpsProtocols = protocols.split(","); - // trim to make sure - for (int i = 0; i < httpsProtocols.length; i++) - httpsProtocols[i] = httpsProtocols[i].trim(); - // Now put into defaultProtocolsList in order of jreProtocols - List splitProtocolsList = Arrays.asList(httpsProtocols); - List defaultProtocolsList = new ArrayList(); - for (String jreProtocol : jreProtocols) { - if (splitProtocolsList.contains(jreProtocol)) { - defaultProtocolsList.add(jreProtocol); - } - } - // In order of jre protocols, attempt to create and init SSLContext - for (String protocol : defaultProtocolsList) { - try { - resultContext = SSLContext.getInstance(protocol); - resultContext.init(null, new TrustManager[] { new ECFTrustManager() }, new SecureRandom()); - break; - } catch (Exception e) { - // just continue to look for SSLContexts with the next - // protocolName + if (protocols != null) { + + String[] httpsProtocols = protocols.split(","); + // trim to make sure + for (int i = 0; i < httpsProtocols.length; i++) + httpsProtocols[i] = httpsProtocols[i].trim(); + // Now put into defaultProtocolsList in order of jreProtocols + List splitProtocolsList = Arrays.asList(httpsProtocols); + List defaultProtocolsList = new ArrayList(); + for (String jreProtocol : jreProtocols) { + if (splitProtocolsList.contains(jreProtocol)) { + defaultProtocolsList.add(jreProtocol); + } } + // In order of jre protocols, attempt to create and init + // SSLContext + for (String protocol : defaultProtocolsList) { + try { + resultContext = SSLContext.getInstance(protocol); + resultContext.init(null, new TrustManager[] { new ECFTrustManager() }, new SecureRandom()); + break; + } catch (Exception e) { + // just continue to look for SSLContexts with the next + // protocolName + } + } } } return resultContext; diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java index dd5082530b..6ecf85f80f 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java @@ -21,11 +21,13 @@ import java.net.PasswordAuthentication; import java.net.URL; import java.net.URLConnection; +import java.security.NoSuchAlgorithmException; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import javax.net.ssl.SSLContext; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.ecf.core.security.Callback; @@ -97,6 +99,12 @@ public String getRemoteFileName() { protected void connect() throws IOException { setupTimeouts(); urlConnection = getRemoteFileURL().openConnection(); + try { + SSLContext.getDefault(); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } // set cache to off if using jar protocol // this is for addressing bug // https://bugs.eclipse.org/bugs/show_bug.cgi?id=235933