* @param req the current request to be handled
* @exception ProtocolException thrown if the request url is malformed
*/
public void perform(RequestInterface req)
throws ProtocolException {
Request request = (Request)req;
if (ssl_enabled) {
// set request protocol to https
URL url = request.getURL();
try {
request.setURL(new URL("https", url.getHost(),
url.getPort(), url.getFile()));
// tk, 1 February 2004, added SSL client attributes
// according to Servlet v2.4 spec
SSLSession session = getSession(request);
if (null != session) {
String algorithm = session.getCipherSuite();
request.setState(ALGORITHM, algorithm);
Integer keysize = getKeySize(algorithm, session);
if (null != keysize) {
request.setState(KEYSIZE, keysize);
}
try {
Certificate[] chain = getPeerCertificates(session);
if (chain instanceof X509Certificate[]) {
X509Certificate[] x509chain;
x509chain = (X509Certificate[])chain;
request.setState(CERTCHAIN, x509chain);
request.setState(AuthFilter.STATE_AUTHTYPE,
CLIENT_CERT_AUTH);
if (x509chain.length > 0) {
request.setState(AuthFilter.STATE_AUTHUSER,
x509chain[0].getSubjectDN().getName());
}
}
} catch (SSLPeerUnverifiedException ex) {
if (debug) {