From c6ef422d99f565dda7e8eb56b58a0141a785b19f Mon Sep 17 00:00:00 2001 From: David McKnight Date: Mon, 5 Jan 2009 15:26:36 +0000 Subject: [PATCH] [259905][api] Provide a facility to use its own keystore --- .../core/util/ssl/DStoreSSLContext.java | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/internal/core/util/ssl/DStoreSSLContext.java b/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/internal/core/util/ssl/DStoreSSLContext.java index 197b2f5787e..e389d89c456 100644 --- a/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/internal/core/util/ssl/DStoreSSLContext.java +++ b/rse/plugins/org.eclipse.dstore.core/src/org/eclipse/dstore/internal/core/util/ssl/DStoreSSLContext.java @@ -13,12 +13,14 @@ * * Contributors: * David McKnight (IBM) - [225507][api][breaking] RSE dstore API leaks non-API types + * Noriaki Takatsu (IBM) - [259905][api] Provide a facility to use its own keystore *******************************************************************************/ package org.eclipse.dstore.internal.core.util.ssl; import java.security.KeyStore; +import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; @@ -29,20 +31,35 @@ import org.eclipse.dstore.core.util.ssl.IDataStoreTrustManager; public class DStoreSSLContext { + private static KeyManager[] _keyManagers; + public static void setKeyManager(KeyManager[] keyManagers) + { + _keyManagers = keyManagers; + } + public static SSLContext getServerSSLContext(String filePath, String password) { SSLContext serverContext = null; try { - KeyStore ks = DStoreKeyStore.getKeyStore(filePath, password); - String keymgrAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); - KeyManagerFactory kmf = KeyManagerFactory.getInstance(keymgrAlgorithm); - kmf.init(ks, password.toCharArray()); + if (_keyManagers == null) + { + KeyStore ks = DStoreKeyStore.getKeyStore(filePath, password); + String keymgrAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); + KeyManagerFactory kmf = KeyManagerFactory.getInstance(keymgrAlgorithm); + kmf.init(ks, password.toCharArray()); - serverContext = SSLContext.getInstance("SSL"); //$NON-NLS-1$ - serverContext.init(kmf.getKeyManagers(), null, null); + serverContext = SSLContext.getInstance("SSL"); //$NON-NLS-1$ + serverContext.init(kmf.getKeyManagers(), null, null); + } + else + { + serverContext = SSLContext.getInstance("SSL"); //$NON-NLS-1$ + serverContext.init(_keyManagers, null, null); + } + } catch (Exception e) { @@ -64,7 +81,7 @@ public class DStoreSSLContext mgrs[0] = trustManager; - clientContext.init(null, mgrs, null); + clientContext.init(_keyManagers, mgrs, null); } catch (Exception e) {