jfclere 01/09/18 05:29:30
Modified: src/share/org/apache/tomcat/modules/server Ajp13.java
Log:
Arrange "javax.servlet.request.X509Certificate" so that it follows the spec's
Note that it is only the first certificate of the chain.
Revision Changes Path
1.27 +22 -1
jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13.java
Index: Ajp13.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- Ajp13.java 2001/09/14 16:01:21 1.26
+++ Ajp13.java 2001/09/18 12:29:30 1.27
@@ -65,7 +65,11 @@
import java.io.OutputStream;
import java.net.Socket;
import java.util.Enumeration;
+import java.io.ByteArrayInputStream;
+import java.security.cert.X509Certificate;
+import java.security.cert.CertificateFactory;
+
import org.apache.tomcat.core.*;
import org.apache.tomcat.util.*;
import org.apache.tomcat.util.http.MimeHeaders;
@@ -376,8 +380,25 @@
case SC_A_SSL_CERT :
isSSL = true;
+ // Transform the string into certificate.
+ String certString = msg.getString();
+ byte[] certData = certString.getBytes();
+ ByteArrayInputStream bais = new ByteArrayInputStream(certData);
+
+ // Fill the first element.
+ X509Certificate jsseCerts[] = null;
+ try {
+ CertificateFactory cf =
+ CertificateFactory.getInstance("X.509");
+ X509Certificate cert = (X509Certificate)
+ cf.generateCertificate(bais);
+ jsseCerts = new X509Certificate[1];
+ jsseCerts[0] = cert;
+ } catch(java.security.cert.CertificateException e) {
+ d("Certificate convertion failed" + e );
+ }
req.setAttribute("javax.servlet.request.X509Certificate",
- msg.getString());
+ jsseCerts);
break;
case SC_A_SSL_CIPHER :