/* * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.synapse.transport.passthru.core.ssl; import org.apache.axiom.om.OMElement; import org.apache.axis2.AxisFault; import org.apache.axis2.description.Parameter; import org.apache.axis2.description.TransportInDescription; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpHost; import org.apache.synapse.transport.certificatevalidation.RevocationVerificationManager; import org.apache.synapse.transport.nhttp.config.ServerConnFactoryBuilder; import javax.xml.namespace.QName; import java.util.Iterator; public class SSLServerConnFactoryBuilder extends ServerConnFactoryBuilder { private final Log log = LogFactory.getLog(SSLServerConnFactoryBuilder.class); public SSLServerConnFactoryBuilder(TransportInDescription transportIn, HttpHost host) { super(transportIn, host); } public ServerConnFactoryBuilder parseSSL(OMElement keyStoreEl, OMElement trustStoreEl, OMElement clientAuthEl, OMElement httpsProtocolsEl, String sslProtocol, OMElement cvp) throws AxisFault { final String cvEnable = cvp != null ? cvp.getAttribute(new QName("enable")).getAttributeValue() : null; RevocationVerificationManager revocationVerifier = null; if ("true".equalsIgnoreCase(cvEnable)) { Iterator iterator = cvp.getChildElements(); String cacheDelayString = null; String cacheSizeString = null; while(iterator.hasNext()) { Object obj = iterator.next(); if (obj instanceof OMElement && ((OMElement) obj).getLocalName().equals("CacheSize")) { cacheSizeString = ((OMElement)obj).getText(); } else if (obj instanceof OMElement && ((OMElement) obj).getLocalName().equals("CacheDelay")) { cacheDelayString = ((OMElement)obj).getText(); } } Integer cacheSize = null; Integer cacheDelay = null; try { if (cacheDelayString != null && cacheSizeString != null) { cacheSize = new Integer(cacheSizeString); cacheDelay = new Integer(cacheDelayString); } } catch (NumberFormatException e) { log.error("Please specify correct Integer numbers for CacheDelay and CacheSize"); } revocationVerifier = new RevocationVerificationManager(cacheSize, cacheDelay); } ssl = createSSLContext(keyStoreEl, trustStoreEl, clientAuthEl, httpsProtocolsEl, revocationVerifier, sslProtocol); return this; } }