cvs diff -u jk_isapi_plugin.c

*****CVS exited normally with code 1*****

Index: jk_isapi_plugin.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/native/mod_jk/iis/jk_isapi_plugin.c,v
retrieving revision 1.6
diff -u -r1.6 jk_isapi_plugin.c
--- jk_isapi_plugin.c	2001/09/13 01:49:51	1.6
+++ jk_isapi_plugin.c	2001/09/17 21:51:45
@@ -60,6 +60,9 @@
  * Version:     $Revision: 1.6 $                                           *
  ***************************************************************************/
 
+// This define is needed to include wincrypt,h, needed to get client certificates
+#define _WIN32_WINNT 0x0400
+
 #include <httpext.h>
 #include <httpfilt.h>
 #include <wininet.h>
@@ -913,6 +916,7 @@
         for(i = 0 ; i < 9 ; i++) {
             GET_SERVER_VARIABLE_VALUE(ssl_env_names[i], ssl_env_values[i]);
             if(ssl_env_values[i]) {
+				jk_log(logger, JK_LOG_DEBUG, "SSL vars %s:%s.\n", ssl_env_names[i], ssl_env_values[i]);
                 num_of_vars++;
             }
         }
@@ -933,7 +937,28 @@
                 }
             }
             s->num_attributes = num_of_vars;
-        }
+ 			if (ssl_env_values[4] && ssl_env_values[4][0] == '1') {
+				CERT_CONTEXT_EX cc;
+				DWORD cc_sz = sizeof(cc);
+				cc.cbAllocated = sizeof(huge_buf);
+				cc.CertContext.pbCertEncoded = (BYTE*) huge_buf;
+				cc.CertContext.cbCertEncoded = 0;
+
+				if (private_data->lpEcb->ServerSupportFunction(private_data->lpEcb->ConnID,
+											 (DWORD)HSE_REQ_GET_CERT_INFO_EX,                               
+											 (LPVOID)&cc,NULL,NULL) != FALSE)
+				{
+					jk_log(logger, JK_LOG_DEBUG,"Client Certificate encoding:%d sz:%d flags:%ld\n",
+								cc.CertContext.dwCertEncodingType & X509_ASN_ENCODING ,
+								cc.CertContext.cbCertEncoded,
+								cc.dwCertificateFlags);
+					s->ssl_cert=jk_pool_alloc(&private_data->p, cc.CertContext.cbCertEncoded );
+					s->ssl_cert_len=cc.CertContext.cbCertEncoded;
+					memcpy(huge_buf,s->ssl_cert,cc.CertContext.cbCertEncoded);
+               
+				}
+			}
+       }
     }
 
     huge_buf_sz = sizeof(huge_buf);         
