billbarker    2003/07/22 20:52:59

  Modified:    util/java/org/apache/tomcat/util/net/jsse Tag: coyote_10
                        JSSE13Factory.java JSSESocketFactory.java
  Added:       util/java/org/apache/tomcat/util/net/jsse Tag: coyote_10
                        JSSE13SocketFactory.java
  Log:
  Porting non-Sun vendor re-factoring from HEAD branch.
  
  From the users list, it seems that there are people using IBM's JVM, so I'm porting 
this a bit earlier than I normally would (so it is easier for them to find).  However, 
since it's a pure re-factor, it shouldn't cause any problems.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +1 -1      
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/jsse/JSSE13Factory.java
  
  Index: JSSE13Factory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/jsse/JSSE13Factory.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- JSSE13Factory.java        1 Jul 2003 05:27:12 -0000       1.1.2.1
  +++ JSSE13Factory.java        23 Jul 2003 03:52:58 -0000      1.1.2.2
  @@ -77,7 +77,7 @@
       }
   
       public ServerSocketFactory getSocketFactory() {
  -     return new JSSESocketFactory();
  +     return new JSSE13SocketFactory();
       }
   
       public SSLSupport getSSLSupport(Socket socket) {
  
  
  
  1.1.2.4   +2 -86     
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
  
  Index: JSSESocketFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- JSSESocketFactory.java    1 Jul 2003 05:27:12 -0000       1.1.2.3
  +++ JSSESocketFactory.java    23 Jul 2003 03:52:58 -0000      1.1.2.4
  @@ -89,7 +89,7 @@
    * @author Stefan Freyr Stefansson
    * @author EKR -- renamed to JSSESocketFactory
    */
  -public class JSSESocketFactory
  +public abstract class JSSESocketFactory
       extends org.apache.tomcat.util.net.ServerSocketFactory
   {
       String keystoreType;
  @@ -146,91 +146,7 @@
       // -------------------- Internal methods
       /** Read the keystore, init the SSL socket factory
        */
  -    void initProxy() throws IOException {
  -     try {
  -         Security.addProvider (new sun.security.provider.Sun());
  -         Security.addProvider (new com.sun.net.ssl.internal.ssl.Provider());
  -
  -         // Please don't change the name of the attribute - other
  -         // software may depend on it ( j2ee for sure )
  -         String keystoreFile=(String)attributes.get("keystore");
  -         if( keystoreFile==null) keystoreFile=defaultKeystoreFile;
  -
  -         keystoreType=(String)attributes.get("keystoreType");
  -         if( keystoreType==null) keystoreType=defaultKeystoreType;
  -
  -         //determine whether we want client authentication
  -         // the presence of the attribute enables client auth
  -         String clientAuthStr=(String)attributes.get("clientauth");
  -         if(clientAuthStr != null){
  -             if(clientAuthStr.equals("true")){
  -                 clientAuth=true;
  -             } else if(clientAuthStr.equals("false")) {
  -                 clientAuth=false;
  -             } else {
  -                 throw new IOException("Invalid value '" +
  -                                       clientAuthStr + 
  -                                       "' for 'clientauth' parameter:");
  -             }
  -         }
  -
  -         String keyPass=(String)attributes.get("keypass");
  -         if( keyPass==null) keyPass=defaultKeyPass;
  -
  -         String keystorePass=(String)attributes.get("keystorePass");
  -         if( keystorePass==null) keystorePass=keyPass;
  -
  -         //protocol for the SSL ie - TLS, SSL v3 etc.
  -         String protocol = (String)attributes.get("protocol");
  -         if(protocol == null) protocol = defaultProtocol;
  -         
  -         //Algorithm used to encode the certificate ie - SunX509
  -         String algorithm = (String)attributes.get("algorithm");
  -         if(algorithm == null) algorithm = defaultAlgorithm;
  -         
  -         // You can't use ssl without a server certificate.
  -         // Create a KeyStore ( to get server certs )
  -         KeyStore kstore = initKeyStore( keystoreFile, keystorePass );
  -         
  -         // Create a SSLContext ( to create the ssl factory )
  -         // This is the only way to use server sockets with JSSE 1.0.1
  -         com.sun.net.ssl.SSLContext context = 
  -             com.sun.net.ssl.SSLContext.getInstance(protocol); //SSL
  -
  -         // Key manager will extract the server key
  -         com.sun.net.ssl.KeyManagerFactory kmf = 
  -             com.sun.net.ssl.KeyManagerFactory.getInstance(algorithm);
  -         kmf.init( kstore, keyPass.toCharArray());
  -
  -         //  set up TrustManager
  -         com.sun.net.ssl.TrustManager[] tm = null;
  -         String trustStoreFile = System.getProperty("javax.net.ssl.trustStore");
  -         String trustStorePassword =
  -             System.getProperty("javax.net.ssl.trustStorePassword");
  -         if ( trustStoreFile != null && trustStorePassword != null ){
  -            KeyStore trustStore = initKeyStore( trustStoreFile, trustStorePassword);
  -            
  -            com.sun.net.ssl.TrustManagerFactory tmf =
  -                com.sun.net.ssl.TrustManagerFactory.getInstance("SunX509");
  -
  -            tmf.init(trustStore);
  -            tm = tmf.getTrustManagers();
  -        }
  -
  -         // init context with the key managers
  -         context.init(kmf.getKeyManagers(), tm, 
  -                      new java.security.SecureRandom());
  -
  -         // create proxy
  -         sslProxy = context.getServerSocketFactory();
  -
  -         return;
  -     } catch(Exception e) {
  -         if( e instanceof IOException )
  -             throw (IOException)e;
  -         throw new IOException(e.getMessage());
  -     }
  -    }
  +    abstract void initProxy() throws IOException;
   
       public Socket acceptSocket(ServerSocket socket)
        throws IOException
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +88 -68    
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/jsse/JSSE13SocketFactory.java
  
  Index: JSSE13SocketFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/jsse/JSSE13SocketFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- JSSE13SocketFactory.java  18 Jul 2003 05:26:45 -0000      1.1
  +++ JSSE13SocketFactory.java  23 Jul 2003 03:52:58 -0000      1.1.2.1
  @@ -60,10 +60,10 @@
   
   import java.io.*;
   import java.net.*;
  -import java.util.Vector;
  +
   import java.security.KeyStore;
  +
   import java.security.Security;
  -import java.security.SecureRandom;
   import javax.net.ServerSocketFactory;
   import javax.net.ssl.SSLServerSocket;
   import javax.net.ssl.SSLSocket;
  @@ -90,77 +90,97 @@
    * @author EKR -- renamed to JSSESocketFactory
    * @author Bill Barker
    */
  -public class JSSE13SocketFactory extends JSSESocketFactory
  +public class JSSE13SocketFactory    extends JSSESocketFactory
   {
       public JSSE13SocketFactory () {
  -        super();
       }
  -
  -    /**
  -     * Reads the keystore and initializes the SSL socket factory.
  -     *
  -     * NOTE: This method is identical in functionality to the method of the
  -     * same name in JSSE14SocketFactory, except that this method is used with
  -     * JSSE 1.0.x (which is an extension to the 1.3 JVM), whereas the other is
  -     * used with JSSE 1.1.x (which ships with the 1.4 JVM). Therefore, this
  -     * method uses classes in com.sun.net.ssl, which have since moved to
  -     * javax.net.ssl, and explicitly registers the required security providers,
  -     * which come standard in a 1.4 JVM.
  +    
  +    // -------------------- Internal methods
  +    /** Read the keystore, init the SSL socket factory
        */
  -     void init() throws IOException {
  -        try {
  -            Security.addProvider (new sun.security.provider.Sun());
  -            Security.addProvider (new com.sun.net.ssl.internal.ssl.Provider());
  -
  -            String clientAuthStr = (String)attributes.get("clientauth");
  -            if (clientAuthStr != null){
  -                clientAuth = Boolean.valueOf(clientAuthStr).booleanValue();
  -            }
  +    void initProxy() throws IOException {
  +     try {
  +         Security.addProvider (new sun.security.provider.Sun());
  +         Security.addProvider (new com.sun.net.ssl.internal.ssl.Provider());
  +
  +         // Please don't change the name of the attribute - other
  +         // software may depend on it ( j2ee for sure )
  +         String keystoreFile=(String)attributes.get("keystore");
  +         if( keystoreFile==null) keystoreFile=defaultKeystoreFile;
  +
  +         keystoreType=(String)attributes.get("keystoreType");
  +         if( keystoreType==null) keystoreType=defaultKeystoreType;
  +
  +         //determine whether we want client authentication
  +         // the presence of the attribute enables client auth
  +         String clientAuthStr=(String)attributes.get("clientauth");
  +         if(clientAuthStr != null){
  +             if(clientAuthStr.equals("true")){
  +                 clientAuth=true;
  +             } else if(clientAuthStr.equals("false")) {
  +                 clientAuth=false;
  +             } else {
  +                 throw new IOException("Invalid value '" +
  +                                       clientAuthStr + 
  +                                       "' for 'clientauth' parameter:");
  +             }
  +         }
  +
  +         String keyPass=(String)attributes.get("keypass");
  +         if( keyPass==null) keyPass=defaultKeyPass;
  +
  +         String keystorePass=(String)attributes.get("keystorePass");
  +         if( keystorePass==null) keystorePass=keyPass;
  +
  +         //protocol for the SSL ie - TLS, SSL v3 etc.
  +         String protocol = (String)attributes.get("protocol");
  +         if(protocol == null) protocol = defaultProtocol;
  +         
  +         //Algorithm used to encode the certificate ie - SunX509
  +         String algorithm = (String)attributes.get("algorithm");
  +         if(algorithm == null) algorithm = defaultAlgorithm;
  +         
  +         // You can't use ssl without a server certificate.
  +         // Create a KeyStore ( to get server certs )
  +         KeyStore kstore = initKeyStore( keystoreFile, keystorePass );
  +         
  +         // Create a SSLContext ( to create the ssl factory )
  +         // This is the only way to use server sockets with JSSE 1.0.1
  +         com.sun.net.ssl.SSLContext context = 
  +             com.sun.net.ssl.SSLContext.getInstance(protocol); //SSL
  +
  +         // Key manager will extract the server key
  +         com.sun.net.ssl.KeyManagerFactory kmf = 
  +             com.sun.net.ssl.KeyManagerFactory.getInstance(algorithm);
  +         kmf.init( kstore, keyPass.toCharArray());
  +
  +         //  set up TrustManager
  +         com.sun.net.ssl.TrustManager[] tm = null;
  +         String trustStoreFile = System.getProperty("javax.net.ssl.trustStore");
  +         String trustStorePassword =
  +             System.getProperty("javax.net.ssl.trustStorePassword");
  +         if ( trustStoreFile != null && trustStorePassword != null ){
  +            KeyStore trustStore = initKeyStore( trustStoreFile, trustStorePassword);
               
  -            // SSL protocol variant (e.g., TLS, SSL v3, etc.)
  -            String protocol = (String)attributes.get("protocol");
  -            if (protocol == null) protocol = defaultProtocol;
  -            
  -            // Certificate encoding algorithm (e.g., SunX509)
  -            String algorithm = (String)attributes.get("algorithm");
  -            if (algorithm == null) algorithm = defaultAlgorithm;
  -
  -            // Set up KeyManager, which will extract server key
  -            com.sun.net.ssl.KeyManagerFactory kmf = 
  -                com.sun.net.ssl.KeyManagerFactory.getInstance(algorithm);
  -            String keystoreType = (String)attributes.get("keystoreType");
  -            if (keystoreType == null) {
  -                keystoreType = defaultKeystoreType;
  -            }
  -            String keystorePass = getKeystorePassword();
  -            kmf.init(getKeystore(keystoreType, keystorePass),
  -                     keystorePass.toCharArray());
  -
  -            // Set up TrustManager
  -            com.sun.net.ssl.TrustManager[] tm = null;
  -            KeyStore trustStore = getTrustStore(keystoreType);
  -            if (trustStore != null) {
  -                com.sun.net.ssl.TrustManagerFactory tmf =
  -                    com.sun.net.ssl.TrustManagerFactory.getInstance("SunX509");
  -                tmf.init(trustStore);
  -                tm = tmf.getTrustManagers();
  -            }
  -
  -            // Create and init SSLContext
  -            com.sun.net.ssl.SSLContext context = 
  -                com.sun.net.ssl.SSLContext.getInstance(protocol); 
  -            context.init(kmf.getKeyManagers(), tm, new SecureRandom());
  -
  -            // Create proxy
  -            sslProxy = context.getServerSocketFactory();
  -
  -            // Determine which cipher suites to enable
  -            enabledCiphers = getEnabledCiphers(sslProxy.getSupportedCipherSuites());
  -
  -        } catch(Exception e) {
  -            if( e instanceof IOException )
  -                throw (IOException)e;
  -            throw new IOException(e.getMessage());
  +            com.sun.net.ssl.TrustManagerFactory tmf =
  +                com.sun.net.ssl.TrustManagerFactory.getInstance("SunX509");
  +
  +            tmf.init(trustStore);
  +            tm = tmf.getTrustManagers();
           }
  +
  +         // init context with the key managers
  +         context.init(kmf.getKeyManagers(), tm, 
  +                      new java.security.SecureRandom());
  +
  +         // create proxy
  +         sslProxy = context.getServerSocketFactory();
  +
  +         return;
  +     } catch(Exception e) {
  +         if( e instanceof IOException )
  +             throw (IOException)e;
  +         throw new IOException(e.getMessage());
  +     }
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to