Implement setter for keyalias, not used yet
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 25 Nov 2008 18:00:43 +0000 (18:00 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 25 Nov 2008 18:00:43 +0000 (18:00 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@720553 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/coyote/http11/Http11NioProtocol.java
java/org/apache/tomcat/util/net/NioEndpoint.java

index a49567f..6315513 100644 (file)
@@ -545,6 +545,10 @@ public class Http11NioProtocol implements ProtocolHandler, MBeanRegistration
     public void setKeystore(String s) { setKeystoreFile(s);}
     public String getKeystore(){ return getKeystoreFile();}
     
+    public String getKeyAlias() { return ep.getKeyAlias();}
+    public void setKeyAlias(String s ) { ep.setKeyAlias(s);}
+
+    
     public String getAlgorithm() { return ep.getAlgorithm();}
     public void setAlgorithm(String s ) { ep.setAlgorithm(s);}
     
index ef2baa0..31eb7e0 100644 (file)
@@ -44,16 +44,20 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
+
+import javax.net.ssl.KeyManager;
 import javax.net.ssl.KeyManagerFactory;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLEngine;
 import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509KeyManager;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.apache.tomcat.util.net.JIoEndpoint.Worker;
 import org.apache.tomcat.util.net.SecureNioChannel.ApplicationBufferHandler;
+import org.apache.tomcat.util.net.jsse.JSSEKeyManager;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
@@ -571,6 +575,11 @@ public class NioEndpoint {
     }
     public void setKeystore(String s ) { setKeystoreFile(s);}
     public String getKeystore() { return getKeystoreFile();}
+
+    String keyAlias = null;
+    public String getKeyAlias() { return keyAlias;}
+    public void setKeyAlias(String s ) { keyAlias = s;}
+    
     
     protected String algorithm = "SunX509";
     public String getAlgorithm() { return algorithm;}
@@ -776,8 +785,8 @@ public class NioEndpoint {
             ks.load(new FileInputStream(getKeystoreFile()), passphrase);
             KeyStore ts = null;
             if (getTruststoreFile()==null) {
-                ts = KeyStore.getInstance(getKeystoreType());
-                ts.load(new FileInputStream(getKeystoreFile()), passphrase);
+//                ts = KeyStore.getInstance(getKeystoreType());
+//                ts.load(new FileInputStream(getKeystoreFile()), passphrase);
             }else {
                 ts = KeyStore.getInstance(ttype);
                 ts.load(new FileInputStream(getTruststoreFile()), tpassphrase);
@@ -790,7 +799,7 @@ public class NioEndpoint {
             tmf.init(ts);
 
             sslContext = SSLContext.getInstance(getSslProtocol());
-            sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+            sslContext.init(wrap(kmf.getKeyManagers()), tmf.getTrustManagers(), null);
         }
         
         if (oomParachute>0) reclaimParachute(true);
@@ -798,6 +807,20 @@ public class NioEndpoint {
         initialized = true;
 
     }
+    
+    public KeyManager[] wrap(KeyManager[] managers) {
+        return managers;
+//        if (managers==null) return null;
+//        KeyManager[] result = new KeyManager[managers.length];
+//        for (int i=0; i<result.length; i++) {
+//            if (managers[i] instanceof X509KeyManager && getKeyAlias()!=null) {
+//                result[i] = new JSSEKeyManager((X509KeyManager)managers[i],getKeyAlias());
+//            } else {
+//                result[i] = managers[i];
+//            }
+//        }
+//        return result;
+    }
 
 
     /**