/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright 2008 - 2009 Pentaho Corporation. All rights reserved. */ package org.pentaho.pac.server; import org.pentaho.pac.server.common.ConsoleProperties; /** * This class contains all parameters needed to create an SSL server or client socket. * */ public class SslParameters { private int sslPort; private String keyAlias; private String keyPassword; private String keyStore; private String keyStorePassword; private String keyStoreType = "JKS"; // type of the key store //$NON-NLS-1$ private String trustStore; private String trustStorePassword; private String trustStoreType = "JKS"; //$NON-NLS-1$ private String protocol = "TLS"; //$NON-NLS-1$ private String keyManagerFactoryAlgorithm = "SunX509"; // cert algorithm //$NON-NLS-1$ private String trustManagerFactoryAlgorithm = "SunX509"; // cert algorithm //$NON-NLS-1$ private boolean wantClientAuth; private boolean needClientAuth; public SslParameters() { } public SslParameters(ConsoleProperties properties) { String sslPort = properties.getProperty(ConsoleProperties.CONSOLE_SSL_PORT_NUMBER); setSslPort((sslPort != null && sslPort.length() > 0) ? Integer.parseInt(sslPort) : 0); setKeyAlias(properties.getProperty(ConsoleProperties.KEY_ALIAS)); setKeyPassword(properties.getProperty(ConsoleProperties.KEY_PASSWORD)); setKeyStore(properties.getProperty(ConsoleProperties.KEYSTORE)); setKeyStorePassword(properties.getProperty(ConsoleProperties.KEYSTORE_PASSWORD)); setTrustStore(properties.getProperty(ConsoleProperties.TRUSTSTORE)); setTrustStorePassword(properties.getProperty(ConsoleProperties.TRUSTSTORE_PASSWORD)); String needClientAuthValue = properties.getProperty(ConsoleProperties.NEED_CLIENT_AUTH); setNeedClientAuth((needClientAuthValue != null && needClientAuthValue.length() > 0) ? Boolean.parseBoolean(needClientAuthValue): false); String wantClientAuthValue = properties.getProperty(ConsoleProperties.WANT_CLIENT_AUTH); setWantClientAuth((wantClientAuthValue != null && wantClientAuthValue.length() > 0) ? Boolean.parseBoolean(wantClientAuthValue): false); } /** * @return the sslPort */ public int getSslPort() { return sslPort; } /** * @param sslPort * the sslPort to set */ public void setSslPort(int sslPort) { this.sslPort = sslPort; } /** * @return the keyAlias */ public String getKeyAlias() { return keyAlias; } /** * @param keyAlias * the keyAlias to set */ public void setKeyAlias(String keyAlias) { this.keyAlias = keyAlias; } /** * @return Returns the algorithm. */ public String getKeyManagerFactoryAlgorithm() { return keyManagerFactoryAlgorithm; } /** * @param algorithm * The algorithm to set. */ public void setKeyManagerFactoryAlgorithm(String algorithm) { this.keyManagerFactoryAlgorithm = algorithm; } /** * @return Returns the algorithm. */ public String getTrustManagerFactoryAlgorithm() { return trustManagerFactoryAlgorithm; } /** * @param algorithm * The algorithm to set. */ public void setTrustManagerFactoryAlgorithm(String algorithm) { this.trustManagerFactoryAlgorithm = algorithm; } /** * @return Returns the keyPassword. */ public String getKeyPassword() { return keyPassword; } /** * @param keyPassword * The keyPassword to set. */ public void setKeyPassword(String keyPassword) { this.keyPassword = keyPassword; } /** * @return Returns the keyStore. */ public String getKeyStore() { return keyStore; } /** * @param keyStore * The keyStore to set. */ public void setKeyStore(String keyStore) { this.keyStore = keyStore; } /** * @return Returns the keyStorePassword. */ public String getKeyStorePassword() { return keyStorePassword; } /** * @param keyStorePassword * The keyStorePassword to set. */ public void setKeyStorePassword(String keyStorePassword) { this.keyStorePassword = keyStorePassword; } /** * @return Returns the keyStoreType. */ public String getKeyStoreType() { return keyStoreType; } /** * @param keyStoreType * The keyStoreType to set. */ public void setKeyStoreType(String keyStoreType) { this.keyStoreType = keyStoreType; } /** * @return Returns the needClientAuth. */ public boolean isNeedClientAuth() { return needClientAuth; } /** * @param needClientAuth * The needClientAuth to set. */ public void setNeedClientAuth(boolean needClientAuth) { this.needClientAuth = needClientAuth; } /** * @return Returns the protocol. */ public String getProtocol() { return protocol; } /** * @param protocol * The protocol to set. */ public void setProtocol(String protocol) { this.protocol = protocol; } /** * @return Returns the wantClientAuth. */ public boolean isWantClientAuth() { return wantClientAuth; } /** * @param wantClientAuth * The wantClientAuth to set. */ public void setWantClientAuth(boolean wantClientAuth) { this.wantClientAuth = wantClientAuth; } /** * @return Returns the trustStore. */ public String getTrustStore() { return trustStore; } /** * @param trustStore * The trustStore to set. */ public void setTrustStore(String trustStore) { this.trustStore = trustStore; } /** * @return Returns the trustStorePassword. */ public String getTrustStorePassword() { return trustStorePassword; } /** * @param trustStorePassword * The trustStorePassword to set. */ public void setTrustStorePassword(String trustStorePassword) { this.trustStorePassword = trustStorePassword; } /** * @return Returns the trustStoreType. */ public String getTrustStoreType() { return trustStoreType; } /** * @param trustStoreType * The trustStoreType to set. */ public void setTrustStoreType(String trustStoreType) { this.trustStoreType = trustStoreType; } public boolean equals(Object o) { if (o == this) { return true; } if (!(o instanceof SslParameters)) { return false; } SslParameters s = (SslParameters) o; return eq(keyAlias, s.keyAlias) && eq(keyManagerFactoryAlgorithm, s.keyManagerFactoryAlgorithm) && eq(trustManagerFactoryAlgorithm, s.trustManagerFactoryAlgorithm) && eq(keyPassword, s.keyPassword) && eq(keyStore, s.keyStore) && eq(keyStorePassword, s.keyStorePassword) && eq(keyStoreType, s.keyStoreType) && needClientAuth == s.needClientAuth && eq(protocol, s.protocol) && eq(trustStore, s.trustStore) && eq(trustStorePassword, s.trustStorePassword) && eq(trustStoreType, s.trustStoreType) && wantClientAuth == s.wantClientAuth; } public int hashCode() { return Boolean.valueOf(needClientAuth).hashCode() ^ Boolean.valueOf(wantClientAuth).hashCode() ^ hash(new String[] {keyAlias, keyManagerFactoryAlgorithm, trustManagerFactoryAlgorithm, keyPassword, keyStore, keyStorePassword, keyStoreType, protocol, trustStore, trustStorePassword, trustStoreType}); } private static boolean eq(String s1, String s2) { return (s1 == null) ? s2 == null : s1.equals(s2); } private static int hash(String[] strings) { int result = 0; for (String s : strings) { result ^= hash(s); } return result; } private static int hash(String s) { return s != null ? s.hashCode() : 0; } }