bloritsch 01/11/01 08:27:58
Modified: src/org/apache/jmeter/util IaikSSLManager.java
JsseSSLManager.java SSLManager.java
Log:
Unify KeyStore Management
Revision Changes Path
1.6 +2 -64 jakarta-jmeter/src/org/apache/jmeter/util/IaikSSLManager.java
Index: IaikSSLManager.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/IaikSSLManager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- IaikSSLManager.java 2001/11/01 16:10:08 1.5
+++ IaikSSLManager.java 2001/11/01 16:27:58 1.6
@@ -61,9 +61,6 @@
import org.apache.jmeter.gui.GuiPackage;
import org.apache.jmeter.util.keystore.JmeterKeyStore;
-import javax.swing.*;
-import java.io.File;
-import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.security.KeyStore;
import java.security.PrivateKey;
@@ -77,7 +74,7 @@
* make a decision, it will pop open a dialog asking you for more information.
*
* @author <a href="[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.5 $ $Date: 2001/11/01 16:10:08 $
+ * @version CVS $Revision: 1.6 $ $Date: 2001/11/01 16:27:58 $
*/
public class IaikSSLManager extends SSLManager {
private SSLContext context;
@@ -98,67 +95,8 @@
* no PasswordEntryField available from JOptionPane.
*/
private KeyAndCert getKeyAndCert() {
- String password = this.defaultpw;
- JmeterKeyStore keyStore = null;
-
if (null == this.identity) {
- String defaultName =
JMeterUtils.getJMeterProperties().getProperty("user.home") + File.separator +
- ".keystore";
- String fileName =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStore", defaultName);
- System.setProperty("javax.net.ssl.keyStore", fileName);
-
- try {
- if (fileName.endsWith(".p12") || fileName.endsWith(".P12")) {
- System.out.println("KeyStore Type: PKCS 12");
- System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
- keyStore = JmeterKeyStore.getInstance("pkcs12");
- } else {
- keyStore = JmeterKeyStore.getInstance("JKS");
- System.out.println("KeyStore Type: JKS");
- }
- } catch (Exception e) {
-
JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
- e,
- JMeterUtils.getResString("ssl_error_title"),
- JOptionPane.ERROR_MESSAGE);
- keyStore = null;
- throw new RuntimeException("KeyStore Problem");
- }
-
- if (null == password) {
- if (null == defaultpw) {
- this.defaultpw =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStorePassword");
-
- if (null == defaultpw) {
- synchronized (this) {
- this.defaultpw =
JOptionPane.showInputDialog(GuiPackage.getInstance().getMainFrame(),
- JMeterUtils.getResString("ssl_pass_prompt"),
- JMeterUtils.getResString("ssl_pass_title"),
- JOptionPane.QUESTION_MESSAGE);
-
JMeterUtils.getJMeterProperties().setProperty("javax.net.ssl.keyStorePassword",
this.defaultpw);
- }
- }
- }
-
- password = this.defaultpw;
- System.setProperty("javax.net.ssl.keyStorePassword", password);
- }
-
- try {
- File initStore = new File(fileName);
-
- if (initStore.exists()) {
- try {
- keyStore.load(new FileInputStream(initStore), password);
- } catch (Exception e) {
- throw new RuntimeException("Can't load KeyStore!!! " +
e.getMessage());
- }
- } else {
- keyStore.load(null, password);
- }
- } catch (Exception e) {
- }
-
+ JmeterKeyStore keyStore = this.getKeyStore();
X509Certificate[] certs = keyStore.getCertificateChain();
PrivateKey key = keyStore.getPrivateKey();
System.out.println("Alias: " + keyStore.getAlias());
1.7 +8 -136 jakarta-jmeter/src/org/apache/jmeter/util/JsseSSLManager.java
Index: JsseSSLManager.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/JsseSSLManager.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JsseSSLManager.java 2001/11/01 16:10:08 1.6
+++ JsseSSLManager.java 2001/11/01 16:27:58 1.7
@@ -55,19 +55,18 @@
package org.apache.jmeter.util;
import com.sun.net.ssl.*;
-import org.apache.jmeter.gui.GuiPackage;
-import org.apache.jmeter.util.keystore.JmeterKeyStore;
-import javax.swing.*;
import java.io.File;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
-import java.security.*;
-import java.security.cert.Certificate;
+import java.security.SecureRandom;
+import java.security.Provider;
+import java.security.Principal;
+import java.security.PrivateKey;
+import java.security.KeyStore;
import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
+
+import org.apache.jmeter.util.keystore.JmeterKeyStore;
/**
* The SSLManager handles the KeyStore information for JMeter. Basically, it
@@ -77,18 +76,11 @@
* make a decision, it will pop open a dialog asking you for more information.
*
* @author <a href="[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.6 $ $Date: 2001/11/01 16:10:08 $
+ * @version CVS $Revision: 1.7 $ $Date: 2001/11/01 16:27:58 $
*/
public class JsseSSLManager extends SSLManager {
/** Cache the SecureRandom instance because it takes a long time to create */
private SecureRandom rand;
-
- /** Cache the KeyStore instance */
- private JmeterKeyStore keyStore;
- /** Cache the TrustStore instance */
- private KeyStore trustStore;
- /** Have the password available */
- private String defaultpw =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStorePassword");
/** Cache the Context so we can retrieve it from other places */
private SSLContext context = null;
@@ -105,126 +97,6 @@
HttpsURLConnection secureConn = (HttpsURLConnection) conn;
secureConn.setSSLSocketFactory(this.getContext().getSocketFactory());
}
- }
-
- /**
- * Opens and initializes the KeyStore. If the password for the KeyStore is
- * not set, this method will prompt you to enter it. Unfortunately, there is
- * no PasswordEntryField available from JOptionPane.
- */
- private JmeterKeyStore getKeyStore() {
- String password = this.defaultpw;
-
- if (null == this.keyStore) {
- String defaultName =
JMeterUtils.getJMeterProperties().getProperty("user.home") + File.separator +
- ".keystore";
- String fileName =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStore", defaultName);
- System.setProperty("javax.net.ssl.keyStore", fileName);
-
- try {
- if (fileName.endsWith(".p12") || fileName.endsWith(".P12")) {
- this.keyStore = JmeterKeyStore.getInstance("pkcs12");
- System.out.println("KeyStore Type: PKCS 12");
- System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
- } else {
- this.keyStore = JmeterKeyStore.getInstance("JKS");
- System.out.println("KeyStore Type: JKS");
- }
- } catch (Exception e) {
-
JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
- e,
- JMeterUtils.getResString("ssl_error_title"),
- JOptionPane.ERROR_MESSAGE);
- this.keyStore = null;
- throw new RuntimeException("KeyStore Problem");
- }
-
- if (null == password) {
- if (null == defaultpw) {
- this.defaultpw =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStorePassword");
-
- if (null == defaultpw) {
- synchronized (this) {
- this.defaultpw =
JOptionPane.showInputDialog(GuiPackage.getInstance().getMainFrame(),
- JMeterUtils.getResString("ssl_pass_prompt"),
- JMeterUtils.getResString("ssl_pass_title"),
- JOptionPane.QUESTION_MESSAGE);
-
JMeterUtils.getJMeterProperties().setProperty("javax.net.ssl.keyStorePassword",
this.defaultpw);
- }
- }
- }
-
- password = this.defaultpw;
- System.setProperty("javax.net.ssl.keyStorePassword", password);
- }
-
- try {
- File initStore = new File(fileName);
-
- if (initStore.exists()) {
- try {
- this.keyStore.load(new FileInputStream(initStore),
password);
- } catch (Exception e) {
- throw new RuntimeException("Can't load KeyStore!!! " +
e.getMessage());
- }
- } else {
- this.keyStore.load(null, password);
- }
- } catch (Exception e) {
- }
- }
-
- System.out.println("JmeterKeyStore type: " +
this.keyStore.getClass().toString());
-
- return this.keyStore;
- }
-
- /**
- * Opens and initializes the TrustStore.
- */
- private KeyStore getTrustStore() {
- if (null == this.trustStore) {
- String fileName =
JMeterUtils.getPropDefault("javax.net.ssl.trustStore", null);
- System.setProperty("javax.net.ssl.trustStore", fileName);
-
- try {
- if (fileName.endsWith(".iaik")) {
- this.trustStore = KeyStore.getInstance("IAIKKeyStore", "IAIK");
- }
- if (fileName.endsWith(".p12") || fileName.endsWith(".P12")) {
- this.trustStore = KeyStore.getInstance("pkcs12");
- System.out.println("KeyStore Type: PKCS 12");
- System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
- } else {
- this.trustStore = KeyStore.getInstance("JKS");
- System.out.println("KeyStore Type: JKS");
- }
- } catch (Exception e) {
-
JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
- e,
- JMeterUtils.getResString("ssl_error_title"),
- JOptionPane.ERROR_MESSAGE);
- this.trustStore = null;
- throw new RuntimeException("TrustStore Problem");
- }
-
- try {
- File initStore = new File(fileName);
-
- if (initStore.exists()) {
- try {
- this.trustStore.load(new FileInputStream(initStore),
"changeit".toCharArray());
- } catch (Exception e) {
- throw new RuntimeException("Can't load KeyStore!!! " +
e.getMessage());
- }
- } else {
- this.trustStore.load(null, "changeit".toCharArray());
- }
- } catch (Exception e) {
- }
- }
-
- return this.trustStore;
}
/**
1.10 +127 -13 jakarta-jmeter/src/org/apache/jmeter/util/SSLManager.java
Index: SSLManager.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/SSLManager.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SSLManager.java 2001/11/01 16:10:08 1.9
+++ SSLManager.java 2001/11/01 16:27:58 1.10
@@ -56,22 +56,14 @@
import java.io.File;
import java.io.FileInputStream;
-
import java.security.Provider;
import java.security.Security;
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.ResourceBundle;
-import java.net.URL;
+import java.security.KeyStore;
import java.net.HttpURLConnection;
-
import javax.swing.JOptionPane;
import org.apache.jmeter.gui.GuiPackage;
-
-import java.lang.reflect.Constructor;
+import org.apache.jmeter.util.keystore.JmeterKeyStore;
/**
* The SSLManager handles the KeyStore information for JMeter. Basically, it
@@ -81,7 +73,7 @@
* make a decision, it will pop open a dialog asking you for more information.
*
* @author <a href="[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.9 $ $Date: 2001/11/01 16:10:08 $
+ * @version CVS $Revision: 1.10 $ $Date: 2001/11/01 16:27:58 $
*/
public abstract class SSLManager {
/** Singleton instance of the manager */
@@ -90,6 +82,13 @@
private static boolean isSSLSupported = false;
private static Provider sslProvider = null;
+ /** Cache the KeyStore instance */
+ private JmeterKeyStore keyStore;
+ /** Cache the TrustStore instance */
+ private KeyStore trustStore;
+ /** Have the password available */
+ protected String defaultpw =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStorePassword");
+
/**
* Resets the SSLManager so that we can create a new one with a new keystore
*/
@@ -108,10 +107,125 @@
}
}
+
+ /**
+ * Opens and initializes the KeyStore. If the password for the KeyStore is
+ * not set, this method will prompt you to enter it. Unfortunately, there is
+ * no PasswordEntryField available from JOptionPane.
+ */
+ protected JmeterKeyStore getKeyStore() {
+ String password = this.defaultpw;
+
+ if (null == this.keyStore) {
+ String defaultName =
JMeterUtils.getJMeterProperties().getProperty("user.home") + File.separator +
+ ".keystore";
+ String fileName =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStore", defaultName);
+ System.setProperty("javax.net.ssl.keyStore", fileName);
+
+ try {
+ if (fileName.endsWith(".p12") || fileName.endsWith(".P12")) {
+ this.keyStore = JmeterKeyStore.getInstance("pkcs12");
+ System.out.println("KeyStore Type: PKCS 12");
+ System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
+ } else {
+ this.keyStore = JmeterKeyStore.getInstance("JKS");
+ System.out.println("KeyStore Type: JKS");
+ }
+ } catch (Exception e) {
+
JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
+ e,
+ JMeterUtils.getResString("ssl_error_title"),
+ JOptionPane.ERROR_MESSAGE);
+ this.keyStore = null;
+ throw new RuntimeException("KeyStore Problem");
+ }
+
+ if (null == password) {
+ if (null == defaultpw) {
+ this.defaultpw =
JMeterUtils.getJMeterProperties().getProperty("javax.net.ssl.keyStorePassword");
+
+ if (null == defaultpw) {
+ synchronized (this) {
+ this.defaultpw =
JOptionPane.showInputDialog(GuiPackage.getInstance().getMainFrame(),
+ JMeterUtils.getResString("ssl_pass_prompt"),
+ JMeterUtils.getResString("ssl_pass_title"),
+ JOptionPane.QUESTION_MESSAGE);
+
JMeterUtils.getJMeterProperties().setProperty("javax.net.ssl.keyStorePassword",
this.defaultpw);
+ }
+ }
+ }
+
+ password = this.defaultpw;
+ System.setProperty("javax.net.ssl.keyStorePassword", password);
+ }
+
+ try {
+ File initStore = new File(fileName);
+
+ if (initStore.exists()) {
+ try {
+ this.keyStore.load(new FileInputStream(initStore),
password);
+ } catch (Exception e) {
+ throw new RuntimeException("Can't load KeyStore!!! " +
e.getMessage());
+ }
+ } else {
+ this.keyStore.load(null, password);
+ }
+ } catch (Exception e) {
+ }
+ }
+
+ System.out.println("JmeterKeyStore type: " +
this.keyStore.getClass().toString());
+
+ return this.keyStore;
+ }
+
/**
- * Uniform method of getting the JMeterKeyStore input file
+ * Opens and initializes the TrustStore.
*/
- protected File getUserKeyStore() {
+ protected KeyStore getTrustStore() {
+ if (null == this.trustStore) {
+ String fileName =
JMeterUtils.getPropDefault("javax.net.ssl.trustStore", null);
+ System.setProperty("javax.net.ssl.trustStore", fileName);
+
+ try {
+ if (fileName.endsWith(".iaik")) {
+ this.trustStore = KeyStore.getInstance("IAIKKeyStore", "IAIK");
+ }
+ if (fileName.endsWith(".p12") || fileName.endsWith(".P12")) {
+ this.trustStore = KeyStore.getInstance("pkcs12");
+ System.out.println("KeyStore Type: PKCS 12");
+ System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
+ } else {
+ this.trustStore = KeyStore.getInstance("JKS");
+ System.out.println("KeyStore Type: JKS");
+ }
+ } catch (Exception e) {
+
JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
+ e,
+ JMeterUtils.getResString("ssl_error_title"),
+ JOptionPane.ERROR_MESSAGE);
+ this.trustStore = null;
+ throw new RuntimeException("TrustStore Problem");
+ }
+
+ try {
+ File initStore = new File(fileName);
+
+ if (initStore.exists()) {
+ try {
+ this.trustStore.load(new FileInputStream(initStore),
"changeit".toCharArray());
+ } catch (Exception e) {
+ throw new RuntimeException("Can't load KeyStore!!! " +
e.getMessage());
+ }
+ } else {
+ this.trustStore.load(null, "changeit".toCharArray());
+ }
+ } catch (Exception e) {
+ }
+ }
+
+ return this.trustStore;
}
/**
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>