Author: markt
Date: Thu Sep 24 14:29:29 2015
New Revision: 1705070

URL: http://svn.apache.org/viewvc?rev=1705070&view=rev
Log:
Implement SSL request attributes.
Modified:
    tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties
    tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java

Modified: tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties?rev=1705070&r1=1705069&r2=1705070&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties Thu Sep 
24 14:29:29 2015
@@ -73,6 +73,7 @@ stream.write=Connection [{0}], Stream [{
 stream.outputBuffer.flush.debug=Connection [{0}], Stream [{1}], flushing 
output with buffer at position [{2}], writeInProgress [{3}] and closed [{4}]
 
 streamProcessor.httpupgrade.notsupported=HTTP upgrade is not supported within 
HTTP/2 streams
+streamProcessor.ssl.error=Unable to retrieve SSL request attributes
 
 streamStateMachine.debug.change=Connection [{0}], Stream [{1}], State changed 
from [{2}] to [{3}]
 streamStateMachine.invalidFrame=Connection [{0}], Stream [{1}], State [{2}], 
Frame type [{3}]

Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1705070&r1=1705069&r2=1705070&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Thu Sep 24 
14:29:29 2015
@@ -138,6 +138,54 @@ public class StreamProcessor extends Abs
             break;
         }
 
+        // SSL request attribute support
+        case REQ_SSL_ATTRIBUTE: {
+            try {
+                if (sslSupport != null) {
+                    Object sslO = sslSupport.getCipherSuite();
+                    if (sslO != null) {
+                        request.setAttribute(SSLSupport.CIPHER_SUITE_KEY, 
sslO);
+                    }
+                    sslO = sslSupport.getPeerCertificateChain();
+                    if (sslO != null) {
+                        request.setAttribute(SSLSupport.CERTIFICATE_KEY, sslO);
+                    }
+                    sslO = sslSupport.getKeySize();
+                    if (sslO != null) {
+                        request.setAttribute(SSLSupport.KEY_SIZE_KEY, sslO);
+                    }
+                    sslO = sslSupport.getSessionId();
+                    if (sslO != null) {
+                        request.setAttribute(SSLSupport.SESSION_ID_KEY, sslO);
+                    }
+                    sslO = sslSupport.getProtocol();
+                    if (sslO != null) {
+                        request.setAttribute(SSLSupport.PROTOCOL_VERSION_KEY, 
sslO);
+                    }
+                    request.setAttribute(SSLSupport.SESSION_MGR, sslSupport);
+                }
+            } catch (Exception e) {
+                log.warn(sm.getString("streamProcessor.ssl.error"), e);
+            }
+            break;
+        }
+        case REQ_SSL_CERTIFICATE: {
+            // No re-negotiation support in HTTP/2. Either the certificate is
+            // available or it isn't.
+            try {
+                if (sslSupport != null) {
+                    Object sslO = sslSupport.getCipherSuite();
+                    sslO = sslSupport.getPeerCertificateChain();
+                    if (sslO != null) {
+                        request.setAttribute(SSLSupport.CERTIFICATE_KEY, sslO);
+                    }
+                }
+            } catch (Exception e) {
+                log.warn(sm.getString("streamProcessor.ssl.error"), e);
+            }
+            break;
+        }
+
         // Servlet 3.0 asynchronous support
         case ASYNC_START: {
             asyncStateMachine.asyncStart((AsyncContextCallback) param);
@@ -219,8 +267,6 @@ public class StreamProcessor extends Abs
         case NB_WRITE_INTEREST:
         case REQUEST_BODY_FULLY_READ:
         case REQ_SET_BODY_REPLAY:
-        case REQ_SSL_ATTRIBUTE:
-        case REQ_SSL_CERTIFICATE:
         case RESET:
             log.info("TODO: Implement [" + actionCode + "] for HTTP/2");
             break;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to