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]>

Reply via email to