You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2013/07/08 09:39:00 UTC

[1/2] git commit: Refactoring keystore.mgt component

Updated Branches:
  refs/heads/master c8d644bc3 -> dac65a596


Refactoring keystore.mgt component

Signed-off-by: Isuru <is...@wso2.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/9d00e6a8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/9d00e6a8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/9d00e6a8

Branch: refs/heads/master
Commit: 9d00e6a82705e3edb7bf1a396bf9d660a125ec58
Parents: c8d644b
Author: Udara Liyanage <ud...@wso2.com>
Authored: Mon Jul 8 12:35:23 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Mon Jul 8 13:06:57 2013 +0530

----------------------------------------------------------------------
 .../2.1.0/pom.xml                               | 127 ++++++++++
 .../stratos/keystore/mgt/KeyStoreGenerator.java | 229 +++++++++++++++++++
 .../keystore/mgt/KeyStoreMgtException.java      |  39 ++++
 .../keystore/mgt/KeystoreTenantMgtListener.java |  79 +++++++
 .../internal/KeyStoreMgtServiceComponent.java   |  87 +++++++
 .../keystore/mgt/util/RealmServiceHolder.java   |  33 +++
 .../mgt/util/RegistryServiceHolder.java         |  33 +++
 7 files changed, 627 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d00e6a8/components/org.apache.stratos.keystore.mgt/2.1.0/pom.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.keystore.mgt/2.1.0/pom.xml b/components/org.apache.stratos.keystore.mgt/2.1.0/pom.xml
new file mode 100644
index 0000000..9ec7760
--- /dev/null
+++ b/components/org.apache.stratos.keystore.mgt/2.1.0/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+# Copyright (c) 2008, 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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <parent>
+        <groupId>org.apache.stratos</groupId>
+        <artifactId>stratos-components-parent</artifactId>
+        <version>2.0.0</version>
+<relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.apache.stratos.keystore.mgt</artifactId>
+    <version>2.1.0</version>
+    <packaging>bundle</packaging>
+    <name>Apache Stratos - Keystore Generation and Management</name>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Name>${project.artifactId}</Bundle-Name>
+                        <Private-Package>
+                            org.apache.stratos.keystore.mgt.internal
+                        </Private-Package>
+                        <Export-Package>
+                            !org.apache.stratos.keystore.mgt.internal,
+                            org.apache.stratos.keystore.mgt.*,
+                        </Export-Package>
+                        <Import-Package>
+                            javax.servlet;version="${imp.pkg.version.javax.servlet}",
+                            javax.servlet.http;version="${imp.pkg.version.javax.servlet}",
+                            org.wso2.carbon.security.*,
+                            org.apache.lucene.*,
+                            *;resolution:=optional
+                        </Import-Package>
+                        <Embed-Dependency>
+                            bcprov-jdk15|naming-factory|naming-resources|commons-collections;scope=compile|runtime;inline=false
+                        </Embed-Dependency>
+                        <DynamicImport-Package>*</DynamicImport-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+        </dependency>
+	<dependency>
+            <groupId>commons-codec.wso2</groupId>
+            <artifactId>commons-codec</artifactId>
+		<version>1.4.0.wso2v1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.wso2.carbon</groupId>
+            <artifactId>org.wso2.carbon.registry.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.equinox</groupId>
+            <artifactId>javax.servlet</artifactId>
+	    <version>${version.javax.servlet}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2.wso2</groupId>
+            <artifactId>axis2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom.wso2</groupId>
+            <artifactId>axiom</artifactId>
+            <version>1.2.11.wso2v3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.stratos</groupId>
+            <artifactId>org.apache.stratos.common</artifactId>
+	    <version>2.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>bouncycastle</groupId>
+            <artifactId>bcprov-jdk15</artifactId>
+            <version>132</version>
+        </dependency>
+        <dependency>
+            <groupId>org.wso2.carbon</groupId>
+            <artifactId>org.wso2.carbon.security.mgt</artifactId>
+	    <version>${wso2carbon.version}</version>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <version.javax.servlet>3.0.0.v201112011016</version.javax.servlet>
+    </properties>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d00e6a8/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreGenerator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreGenerator.java b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreGenerator.java
new file mode 100644
index 0000000..b8e892e
--- /dev/null
+++ b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreGenerator.java
@@ -0,0 +1,229 @@
+/*
+*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you 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.stratos.keystore.mgt;
+
+import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.bouncycastle.jce.X509Principal;
+import org.bouncycastle.jce.X509V3CertificateGenerator;
+import org.wso2.carbon.core.RegistryResources;
+import org.wso2.carbon.core.util.CryptoUtil;
+import org.apache.stratos.keystore.mgt.util.RealmServiceHolder;
+import org.apache.stratos.keystore.mgt.util.RegistryServiceHolder;
+import org.wso2.carbon.registry.core.Resource;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.registry.core.session.UserRegistry;
+import org.wso2.carbon.security.SecurityConstants;
+import org.wso2.carbon.security.keystore.KeyStoreAdmin;
+import org.wso2.carbon.user.core.service.RealmService;
+
+import java.io.ByteArrayOutputStream;
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.KeyStore;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import java.util.Date;
+
+/**
+ * This class is used to generate a key store for a tenant and store it in the governance registry.
+ */
+public class KeyStoreGenerator {
+
+    private static Log log = LogFactory.getLog(KeyStoreGenerator.class);
+    private UserRegistry govRegistry;
+    private int tenantId;
+    private String tenantDomain;
+    private String password;
+
+
+    public KeyStoreGenerator(int  tenantId) throws KeyStoreMgtException {
+        try {
+            this.tenantId = tenantId;
+            this.tenantDomain = getTenantDomainName();
+            this.govRegistry = RegistryServiceHolder.getRegistryService().
+                    getGovernanceSystemRegistry(tenantId);
+            if(govRegistry == null){
+                log.error("Governance registry instance is null");
+                throw new KeyStoreMgtException("Governance registry instance is null");
+            }
+        } catch (RegistryException e) {
+            String errorMsg = "Error while obtaining the governance registry for tenant : " +
+                      tenantId;
+            log.error(errorMsg, e);
+            throw new KeyStoreMgtException(errorMsg, e);
+        }
+    }
+
+
+    /**
+     * This method first generates the keystore, then persist it in the gov.registry of that tenant
+     *
+     * @throws KeyStoreMgtException Error when generating or storing the keystore
+     */
+    public void generateKeyStore() throws KeyStoreMgtException {
+        try {
+            password = generatePassword();
+            KeyStore keyStore = KeyStore.getInstance("JKS");
+            keyStore.load(null, password.toCharArray());
+            X509Certificate pubCert = generateKeyPair(keyStore);
+            persistKeyStore(keyStore, pubCert);
+        } catch (Exception e) {
+            String msg = "Error while instantiating a keystore";
+            log.error(msg, e);
+            throw new KeyStoreMgtException(msg, e);
+        }
+    }
+
+    /**
+     * This method generates the keypair and stores it in the keystore
+     *
+     * @param keyStore A keystore instance
+     * @return Generated public key for the tenant
+     * @throws KeyStoreMgtException Error when generating key pair
+     */
+    private X509Certificate generateKeyPair(KeyStore keyStore) throws KeyStoreMgtException {
+        try {
+            CryptoUtil.getDefaultCryptoUtil();
+            //generate key pair
+            KeyPairGenerator keyPairGenerator = null;
+            keyPairGenerator = KeyPairGenerator.getInstance("RSA");
+            keyPairGenerator.initialize(1024);
+            KeyPair keyPair = keyPairGenerator.generateKeyPair();
+
+            // Common Name and alias for the generated certificate
+            String commonName = "CN=" + tenantDomain + ", OU=None, O=None L=None, C=None";
+
+            //generate certificates
+            X509V3CertificateGenerator v3CertGen = new X509V3CertificateGenerator();
+            v3CertGen.setSerialNumber(BigInteger.valueOf(new SecureRandom().nextInt()));
+            v3CertGen.setIssuerDN(new X509Principal(commonName));
+            v3CertGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30));
+            v3CertGen.setNotAfter(new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 365 * 10)));
+            v3CertGen.setSubjectDN(new X509Principal(commonName));
+            v3CertGen.setPublicKey(keyPair.getPublic());
+            v3CertGen.setSignatureAlgorithm("MD5WithRSAEncryption");
+            X509Certificate PKCertificate = v3CertGen.generateX509Certificate(keyPair.getPrivate());
+
+            //add private key to KS
+            keyStore.setKeyEntry(tenantDomain, keyPair.getPrivate(), password.toCharArray(),
+                                 new java.security.cert.Certificate[]{PKCertificate});
+            return PKCertificate;
+        } catch (Exception ex) {
+            String msg = "Error while generating the certificate for tenant :" +
+                         tenantDomain + ".";
+            log.error(msg, ex);
+            throw new KeyStoreMgtException(msg, ex);
+        }
+
+    }
+
+    /**
+     * Persist the keystore in the gov.registry
+     *
+     * @param keyStore created Keystore of the tenant
+     * @param PKCertificate pub. key of the tenant
+     * @throws KeyStoreMgtException Exception when storing the keystore in the registry
+     */
+    private void persistKeyStore(KeyStore keyStore, X509Certificate PKCertificate)
+            throws KeyStoreMgtException {
+        try {
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            keyStore.store(outputStream, password.toCharArray());
+            outputStream.flush();
+            outputStream.close();
+
+            String keyStoreName = generateKSNameFromDomainName();
+            // Use the keystore using the keystore admin
+            KeyStoreAdmin keystoreAdmin = new KeyStoreAdmin(tenantId, govRegistry);
+            keystoreAdmin.addKeyStore(outputStream.toByteArray(), keyStoreName,
+                                      password, " ", "JKS", password);
+            
+            //Create the pub. key resource
+            Resource pubKeyResource = govRegistry.newResource();
+            pubKeyResource.setContent(PKCertificate.getEncoded());
+            pubKeyResource.addProperty(SecurityConstants.PROP_TENANT_PUB_KEY_FILE_NAME_APPENDER,
+                                       generatePubKeyFileNameAppender());
+
+            govRegistry.put(RegistryResources.SecurityManagement.TENANT_PUBKEY_RESOURCE, pubKeyResource);
+
+            //associate the public key with the keystore
+            govRegistry.addAssociation(RegistryResources.SecurityManagement.KEY_STORES + "/" + keyStoreName,
+                                       RegistryResources.SecurityManagement.TENANT_PUBKEY_RESOURCE,
+                                       SecurityConstants.ASSOCIATION_TENANT_KS_PUB_KEY);
+
+        } catch (RegistryException e) {
+            String msg = "Error when writing the keystore/pub.cert to registry";
+            log.error(msg, e);
+            throw new KeyStoreMgtException(msg, e);
+        }
+        catch (Exception e) {
+            String msg = "Error when processing keystore/pub. cert to be stored in registry";
+            log.error(msg, e);
+            throw new KeyStoreMgtException(msg, e);
+        }
+    }
+
+    /**
+     * This method is used to generate a random password for the generated keystore
+     *
+     * @return generated password
+     */
+    private String generatePassword() {
+        SecureRandom random = new SecureRandom();
+        String randString = new BigInteger(130, random).toString(12);
+        return randString.substring(randString.length() - 10, randString.length());
+    }
+
+    /**
+     * This method is used to generate a file name appender for the pub. cert, e.g.
+     * example-com-343743.cert
+     * @return generated string to be used as a file name appender
+     */
+    private String generatePubKeyFileNameAppender(){
+        String uuid = UUIDGenerator.getUUID();
+        return uuid.substring(uuid.length() - 6, uuid.length()-1);
+    }
+
+    /**
+     * This method generates the key store file name from the Domain Name
+     * @return
+     */
+    private String generateKSNameFromDomainName(){
+        String ksName = tenantDomain.trim().replace(".", "-");
+        return (ksName + ".jks" );
+    }
+
+    private String getTenantDomainName() throws KeyStoreMgtException {
+        RealmService realmService = RealmServiceHolder.getRealmService();
+        if (realmService == null) {
+            String msg = "Error in getting the domain name, realm service is null.";
+            log.error(msg);
+            throw new KeyStoreMgtException(msg);
+        }
+        try {
+            return realmService.getTenantManager().getDomain(tenantId);
+        } catch (org.wso2.carbon.user.api.UserStoreException e) {
+            String msg = "Error in getting the domain name for the tenant id: " + tenantId;
+            log.error(msg, e);
+            throw new KeyStoreMgtException(msg, e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d00e6a8/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreMgtException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreMgtException.java b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreMgtException.java
new file mode 100644
index 0000000..de486f0
--- /dev/null
+++ b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeyStoreMgtException.java
@@ -0,0 +1,39 @@
+/*
+*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you 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.stratos.keystore.mgt;
+
+/**
+ * This class is used to wrap the exceptions thrown from stratos keystore mgt component.
+ */
+public class KeyStoreMgtException extends Exception {
+    public KeyStoreMgtException() {
+    }
+
+    public KeyStoreMgtException(String message) {
+        super(message);
+    }
+
+    public KeyStoreMgtException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public KeyStoreMgtException(Throwable cause) {
+        super(cause);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d00e6a8/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeystoreTenantMgtListener.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeystoreTenantMgtListener.java b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeystoreTenantMgtListener.java
new file mode 100644
index 0000000..b4eaf6c
--- /dev/null
+++ b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/KeystoreTenantMgtListener.java
@@ -0,0 +1,79 @@
+/*
+*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you 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.stratos.keystore.mgt;
+
+import org.apache.stratos.common.beans.TenantInfoBean;
+import org.apache.stratos.common.exception.StratosException;
+import org.apache.stratos.common.listeners.TenantMgtListener;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This class is used to listen to the tenant creation events and fire the keystore creation event
+ */
+public class KeystoreTenantMgtListener implements TenantMgtListener {
+
+    private static Log log = LogFactory.getLog(KeystoreTenantMgtListener.class);
+    private static final int EXEC_ORDER = 20;
+
+    /**
+     * Generate the keystore when a new tenant is registered.
+     * @param tenantInfo Information about the newly created tenant
+     */
+    public void onTenantCreate(TenantInfoBean tenantInfo) throws StratosException {
+        try {
+            KeyStoreGenerator ksGenerator = new KeyStoreGenerator(tenantInfo.getTenantId());
+            ksGenerator.generateKeyStore();
+        } catch (KeyStoreMgtException e) {
+            String message = "Error when generating the keystore";
+            log.error(message, e);
+            throw new StratosException(message, e);
+        }
+    }
+
+    public void onTenantUpdate(TenantInfoBean tenantInfo) throws StratosException {
+        // It is not required to implement this method for keystore mgt. 
+    }
+
+    public void onTenantRename(int tenantId, String oldDomainName,
+                             String newDomainName) throws StratosException {
+        // It is not required to implement this method for keystore mgt.
+    }
+
+    public int getListenerOrder() {
+        return EXEC_ORDER;
+    }
+
+    public void onTenantInitialActivation(int tenantId) throws StratosException {
+        // It is not required to implement this method for keystore mgt. 
+    }
+
+    public void onTenantActivation(int tenantId) throws StratosException {
+        // It is not required to implement this method for keystore mgt. 
+    }
+
+    public void onTenantDeactivation(int tenantId) throws StratosException {
+        // It is not required to implement this method for keystore mgt. 
+    }
+
+    public void onSubscriptionPlanChange(int tenentId, String oldPlan, 
+                                         String newPlan) throws StratosException {
+        // It is not required to implement this method for keystore mgt. 
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d00e6a8/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/internal/KeyStoreMgtServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/internal/KeyStoreMgtServiceComponent.java b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/internal/KeyStoreMgtServiceComponent.java
new file mode 100644
index 0000000..bc9b44f
--- /dev/null
+++ b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/internal/KeyStoreMgtServiceComponent.java
@@ -0,0 +1,87 @@
+/*
+*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you 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.stratos.keystore.mgt.internal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.osgi.service.component.ComponentContext;
+import org.wso2.carbon.registry.core.service.RegistryService;
+import org.wso2.carbon.user.core.service.RealmService;
+import org.apache.stratos.keystore.mgt.KeystoreTenantMgtListener;
+import org.apache.stratos.keystore.mgt.util.RealmServiceHolder;
+import org.apache.stratos.keystore.mgt.util.RegistryServiceHolder;
+
+/**
+ * @scr.component name="org.apache.stratos.keystore.mgt"
+ * immediate="true"
+ * @scr.reference name="registry.service"
+ * interface="org.wso2.carbon.registry.core.service.RegistryService" cardinality="1..1"
+ * policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService"
+ * @scr.reference name="user.realmservice.default" interface="org.wso2.carbon.user.core.service.RealmService"
+ * cardinality="1..1" policy="dynamic" bind="setRealmService"
+ * unbind="unsetRealmService"
+ */
+public class KeyStoreMgtServiceComponent {
+
+    private static Log log = LogFactory.getLog(KeyStoreMgtServiceComponent.class);
+
+
+    protected void activate(ComponentContext ctxt){
+        KeystoreTenantMgtListener keystoreTenantMgtListener = new KeystoreTenantMgtListener();
+        ctxt.getBundleContext().registerService(
+                org.apache.stratos.common.listeners.TenantMgtListener.class.getName(),
+                keystoreTenantMgtListener, null);
+        if (log.isDebugEnabled()) {
+            log.debug("*************Stratos Keystore mgt component is activated.**************");
+        }
+    }
+
+    protected void deactivate(ComponentContext ctxt) {
+        if(log.isDebugEnabled()){
+            log.debug("************Stratos keystore mgt component is decativated.*************");
+        }
+    }
+
+    protected void setRegistryService(RegistryService registryService){
+        RegistryServiceHolder.setRegistryService(registryService);
+        if (log.isDebugEnabled()) {
+            log.debug("Registry Service is set for KeyStoreMgtServiceComponent.");
+        }
+    }
+
+    protected void unsetRegistryService(RegistryService registryService){
+        RegistryServiceHolder.setRegistryService(null);
+        if(log.isDebugEnabled()){
+            log.debug("Registry Service is unset for KeyStoreMgtServiceComponent.");
+        }
+    }
+
+    protected void setRealmService(RealmService realmService){
+        RealmServiceHolder.setRealmService(realmService);
+        if (log.isDebugEnabled()) {
+            log.debug("Realm Service is set for KeyStoreMgtServiceComponent.");
+        }
+    }
+
+    protected void unsetRealmService(RealmService realmService){
+        RealmServiceHolder.setRealmService(null);
+        if(log.isDebugEnabled()){
+            log.debug("Realm Service is unset for KeyStoreMgtServiceComponent.");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d00e6a8/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RealmServiceHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RealmServiceHolder.java b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RealmServiceHolder.java
new file mode 100644
index 0000000..a1e6b16
--- /dev/null
+++ b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RealmServiceHolder.java
@@ -0,0 +1,33 @@
+/*
+*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you 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.stratos.keystore.mgt.util;
+
+import org.wso2.carbon.user.core.service.RealmService;
+
+public class RealmServiceHolder {
+
+    private static RealmService realmServiceService;
+
+    public static RealmService getRealmService() {
+        return realmServiceService;
+    }
+
+    public static void setRealmService(RealmService realmService) {
+        RealmServiceHolder.realmServiceService = realmService;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d00e6a8/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RegistryServiceHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RegistryServiceHolder.java b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RegistryServiceHolder.java
new file mode 100644
index 0000000..5b7ab4a
--- /dev/null
+++ b/components/org.apache.stratos.keystore.mgt/2.1.0/src/main/java/org/apache/stratos/keystore/mgt/util/RegistryServiceHolder.java
@@ -0,0 +1,33 @@
+/*
+*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+*  WSO2 Inc. licenses this file to you 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.stratos.keystore.mgt.util;
+
+import org.wso2.carbon.registry.core.service.RegistryService;
+
+public class RegistryServiceHolder {
+
+    private static RegistryService registryService;
+
+    public static RegistryService getRegistryService() {
+        return registryService;
+    }
+
+    public static void setRegistryService(RegistryService registryService) {
+        RegistryServiceHolder.registryService = registryService;
+    }
+}


[2/2] git commit: adding refactored keystore-mgt module

Posted by is...@apache.org.
adding refactored keystore-mgt module


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/dac65a59
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/dac65a59
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/dac65a59

Branch: refs/heads/master
Commit: dac65a596af628c2c2d4b86ffc50e1c62acb4934
Parents: 9d00e6a
Author: Isuru <is...@wso2.com>
Authored: Mon Jul 8 13:08:38 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Mon Jul 8 13:08:38 2013 +0530

----------------------------------------------------------------------
 components/pom.xml                              |   1 +
 .../org.wso2.carbon.keystore.mgt/2.1.0/pom.xml  | 117 ----------
 .../carbon/keystore/mgt/KeyStoreGenerator.java  | 229 -------------------
 .../keystore/mgt/KeyStoreMgtException.java      |  39 ----
 .../keystore/mgt/KeystoreTenantMgtListener.java |  79 -------
 .../internal/KeyStoreMgtServiceComponent.java   |  87 -------
 .../keystore/mgt/util/RealmServiceHolder.java   |  33 ---
 .../mgt/util/RegistryServiceHolder.java         |  33 ---
 8 files changed, 1 insertion(+), 617 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/pom.xml
----------------------------------------------------------------------
diff --git a/components/pom.xml b/components/pom.xml
index a4fea2d..e5ee9a3 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -68,6 +68,7 @@
 		<!-- COMMON -->
 		<module>org.apache.stratos.common/2.1.2</module>
 		<module>org.apache.stratos.tenant.dispatcher/2.1.0</module>
+		<module>org.apache.stratos.keystore.mgt/2.1.0</module>
 	    </modules>
 	    
 	    <build>

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/pom.xml
----------------------------------------------------------------------
diff --git a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/pom.xml b/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/pom.xml
deleted file mode 100644
index 9e855ce..0000000
--- a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/pom.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-# Copyright (c) 2008, 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.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <parent>
-        <groupId>org.wso2.carbon</groupId>
-        <artifactId>stratos-components</artifactId>
-        <version>2.1.0</version>
-<relativePath>../../pom.xml</relativePath>
-    </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>org.wso2.carbon.keystore.mgt</artifactId>
-    <packaging>bundle</packaging>
-    <name>WSO2 Stratos - Keystore Generation and Management</name>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-scr-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                
-                <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
-                        <Bundle-Name>${project.artifactId}</Bundle-Name>
-                        <Private-Package>
-                            org.wso2.carbon.keystore.mgt.internal                            
-                        </Private-Package>
-                        <Export-Package>
-                            !org.wso2.carbon.keystore.mgt.internal,
-                            org.wso2.carbon.keystore.mgt.*,
-                        </Export-Package>
-                        <Import-Package>
-                            javax.servlet;version="${imp.pkg.version.javax.servlet}",
-                            javax.servlet.http;version="${imp.pkg.version.javax.servlet}",
-                            org.wso2.carbon.security.*,
-                            org.apache.lucene.*,
-                            *;resolution:=optional
-                        </Import-Package>
-                        <Embed-Dependency>
-                            bcprov-jdk15|naming-factory|naming-resources|commons-collections;scope=compile|runtime;inline=false
-                        </Embed-Dependency>
-                        <DynamicImport-Package>*</DynamicImport-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-
-        </plugins>
-    </build>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-        </dependency>
-	<dependency>
-            <groupId>commons-codec.wso2</groupId>
-            <artifactId>commons-codec</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.wso2.carbon</groupId>
-            <artifactId>org.wso2.carbon.registry.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.equinox</groupId>
-            <artifactId>javax.servlet</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2.wso2</groupId>
-            <artifactId>axis2</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom.wso2</groupId>
-            <artifactId>axiom</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.wso2.carbon</groupId>
-            <artifactId>org.wso2.carbon.stratos.common</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>bouncycastle</groupId>
-            <artifactId>bcprov-jdk15</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.wso2.carbon</groupId>
-            <artifactId>org.wso2.carbon.security.mgt</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreGenerator.java
----------------------------------------------------------------------
diff --git a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreGenerator.java b/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreGenerator.java
deleted file mode 100644
index 9dc4a92..0000000
--- a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreGenerator.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
-*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. licenses this file to you 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.wso2.carbon.keystore.mgt;
-
-import org.apache.axiom.om.util.UUIDGenerator;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.bouncycastle.jce.X509Principal;
-import org.bouncycastle.jce.X509V3CertificateGenerator;
-import org.wso2.carbon.core.RegistryResources;
-import org.wso2.carbon.core.util.CryptoUtil;
-import org.wso2.carbon.keystore.mgt.util.RealmServiceHolder;
-import org.wso2.carbon.keystore.mgt.util.RegistryServiceHolder;
-import org.wso2.carbon.registry.core.Resource;
-import org.wso2.carbon.registry.core.exceptions.RegistryException;
-import org.wso2.carbon.registry.core.session.UserRegistry;
-import org.wso2.carbon.security.SecurityConstants;
-import org.wso2.carbon.security.keystore.KeyStoreAdmin;
-import org.wso2.carbon.user.core.service.RealmService;
-
-import java.io.ByteArrayOutputStream;
-import java.math.BigInteger;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.KeyStore;
-import java.security.SecureRandom;
-import java.security.cert.X509Certificate;
-import java.util.Date;
-
-/**
- * This class is used to generate a key store for a tenant and store it in the governance registry.
- */
-public class KeyStoreGenerator {
-
-    private static Log log = LogFactory.getLog(KeyStoreGenerator.class);
-    private UserRegistry govRegistry;
-    private int tenantId;
-    private String tenantDomain;
-    private String password;
-
-
-    public KeyStoreGenerator(int  tenantId) throws KeyStoreMgtException {
-        try {
-            this.tenantId = tenantId;
-            this.tenantDomain = getTenantDomainName();
-            this.govRegistry = RegistryServiceHolder.getRegistryService().
-                    getGovernanceSystemRegistry(tenantId);
-            if(govRegistry == null){
-                log.error("Governance registry instance is null");
-                throw new KeyStoreMgtException("Governance registry instance is null");
-            }
-        } catch (RegistryException e) {
-            String errorMsg = "Error while obtaining the governance registry for tenant : " +
-                      tenantId;
-            log.error(errorMsg, e);
-            throw new KeyStoreMgtException(errorMsg, e);
-        }
-    }
-
-
-    /**
-     * This method first generates the keystore, then persist it in the gov.registry of that tenant
-     *
-     * @throws KeyStoreMgtException Error when generating or storing the keystore
-     */
-    public void generateKeyStore() throws KeyStoreMgtException {
-        try {
-            password = generatePassword();
-            KeyStore keyStore = KeyStore.getInstance("JKS");
-            keyStore.load(null, password.toCharArray());
-            X509Certificate pubCert = generateKeyPair(keyStore);
-            persistKeyStore(keyStore, pubCert);
-        } catch (Exception e) {
-            String msg = "Error while instantiating a keystore";
-            log.error(msg, e);
-            throw new KeyStoreMgtException(msg, e);
-        }
-    }
-
-    /**
-     * This method generates the keypair and stores it in the keystore
-     *
-     * @param keyStore A keystore instance
-     * @return Generated public key for the tenant
-     * @throws KeyStoreMgtException Error when generating key pair
-     */
-    private X509Certificate generateKeyPair(KeyStore keyStore) throws KeyStoreMgtException {
-        try {
-            CryptoUtil.getDefaultCryptoUtil();
-            //generate key pair
-            KeyPairGenerator keyPairGenerator = null;
-            keyPairGenerator = KeyPairGenerator.getInstance("RSA");
-            keyPairGenerator.initialize(1024);
-            KeyPair keyPair = keyPairGenerator.generateKeyPair();
-
-            // Common Name and alias for the generated certificate
-            String commonName = "CN=" + tenantDomain + ", OU=None, O=None L=None, C=None";
-
-            //generate certificates
-            X509V3CertificateGenerator v3CertGen = new X509V3CertificateGenerator();
-            v3CertGen.setSerialNumber(BigInteger.valueOf(new SecureRandom().nextInt()));
-            v3CertGen.setIssuerDN(new X509Principal(commonName));
-            v3CertGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30));
-            v3CertGen.setNotAfter(new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 365 * 10)));
-            v3CertGen.setSubjectDN(new X509Principal(commonName));
-            v3CertGen.setPublicKey(keyPair.getPublic());
-            v3CertGen.setSignatureAlgorithm("MD5WithRSAEncryption");
-            X509Certificate PKCertificate = v3CertGen.generateX509Certificate(keyPair.getPrivate());
-
-            //add private key to KS
-            keyStore.setKeyEntry(tenantDomain, keyPair.getPrivate(), password.toCharArray(),
-                                 new java.security.cert.Certificate[]{PKCertificate});
-            return PKCertificate;
-        } catch (Exception ex) {
-            String msg = "Error while generating the certificate for tenant :" +
-                         tenantDomain + ".";
-            log.error(msg, ex);
-            throw new KeyStoreMgtException(msg, ex);
-        }
-
-    }
-
-    /**
-     * Persist the keystore in the gov.registry
-     *
-     * @param keyStore created Keystore of the tenant
-     * @param PKCertificate pub. key of the tenant
-     * @throws KeyStoreMgtException Exception when storing the keystore in the registry
-     */
-    private void persistKeyStore(KeyStore keyStore, X509Certificate PKCertificate)
-            throws KeyStoreMgtException {
-        try {
-            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-            keyStore.store(outputStream, password.toCharArray());
-            outputStream.flush();
-            outputStream.close();
-
-            String keyStoreName = generateKSNameFromDomainName();
-            // Use the keystore using the keystore admin
-            KeyStoreAdmin keystoreAdmin = new KeyStoreAdmin(tenantId, govRegistry);
-            keystoreAdmin.addKeyStore(outputStream.toByteArray(), keyStoreName,
-                                      password, " ", "JKS", password);
-            
-            //Create the pub. key resource
-            Resource pubKeyResource = govRegistry.newResource();
-            pubKeyResource.setContent(PKCertificate.getEncoded());
-            pubKeyResource.addProperty(SecurityConstants.PROP_TENANT_PUB_KEY_FILE_NAME_APPENDER,
-                                       generatePubKeyFileNameAppender());
-
-            govRegistry.put(RegistryResources.SecurityManagement.TENANT_PUBKEY_RESOURCE, pubKeyResource);
-
-            //associate the public key with the keystore
-            govRegistry.addAssociation(RegistryResources.SecurityManagement.KEY_STORES + "/" + keyStoreName,
-                                       RegistryResources.SecurityManagement.TENANT_PUBKEY_RESOURCE,
-                                       SecurityConstants.ASSOCIATION_TENANT_KS_PUB_KEY);
-
-        } catch (RegistryException e) {
-            String msg = "Error when writing the keystore/pub.cert to registry";
-            log.error(msg, e);
-            throw new KeyStoreMgtException(msg, e);
-        }
-        catch (Exception e) {
-            String msg = "Error when processing keystore/pub. cert to be stored in registry";
-            log.error(msg, e);
-            throw new KeyStoreMgtException(msg, e);
-        }
-    }
-
-    /**
-     * This method is used to generate a random password for the generated keystore
-     *
-     * @return generated password
-     */
-    private String generatePassword() {
-        SecureRandom random = new SecureRandom();
-        String randString = new BigInteger(130, random).toString(12);
-        return randString.substring(randString.length() - 10, randString.length());
-    }
-
-    /**
-     * This method is used to generate a file name appender for the pub. cert, e.g.
-     * example-com-343743.cert
-     * @return generated string to be used as a file name appender
-     */
-    private String generatePubKeyFileNameAppender(){
-        String uuid = UUIDGenerator.getUUID();
-        return uuid.substring(uuid.length() - 6, uuid.length()-1);
-    }
-
-    /**
-     * This method generates the key store file name from the Domain Name
-     * @return
-     */
-    private String generateKSNameFromDomainName(){
-        String ksName = tenantDomain.trim().replace(".", "-");
-        return (ksName + ".jks" );
-    }
-
-    private String getTenantDomainName() throws KeyStoreMgtException {
-        RealmService realmService = RealmServiceHolder.getRealmService();
-        if (realmService == null) {
-            String msg = "Error in getting the domain name, realm service is null.";
-            log.error(msg);
-            throw new KeyStoreMgtException(msg);
-        }
-        try {
-            return realmService.getTenantManager().getDomain(tenantId);
-        } catch (org.wso2.carbon.user.api.UserStoreException e) {
-            String msg = "Error in getting the domain name for the tenant id: " + tenantId;
-            log.error(msg, e);
-            throw new KeyStoreMgtException(msg, e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreMgtException.java
----------------------------------------------------------------------
diff --git a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreMgtException.java b/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreMgtException.java
deleted file mode 100644
index 040fb1f..0000000
--- a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeyStoreMgtException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. licenses this file to you 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.wso2.carbon.keystore.mgt;
-
-/**
- * This class is used to wrap the exceptions thrown from stratos keystore mgt component.
- */
-public class KeyStoreMgtException extends Exception {
-    public KeyStoreMgtException() {
-    }
-
-    public KeyStoreMgtException(String message) {
-        super(message);
-    }
-
-    public KeyStoreMgtException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public KeyStoreMgtException(Throwable cause) {
-        super(cause);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeystoreTenantMgtListener.java
----------------------------------------------------------------------
diff --git a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeystoreTenantMgtListener.java b/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeystoreTenantMgtListener.java
deleted file mode 100644
index 6262806..0000000
--- a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/KeystoreTenantMgtListener.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. licenses this file to you 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.wso2.carbon.keystore.mgt;
-
-import org.wso2.carbon.stratos.common.beans.TenantInfoBean;
-import org.wso2.carbon.stratos.common.exception.StratosException;
-import org.wso2.carbon.stratos.common.listeners.TenantMgtListener;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This class is used to listen to the tenant creation events and fire the keystore creation event
- */
-public class KeystoreTenantMgtListener implements TenantMgtListener {
-
-    private static Log log = LogFactory.getLog(KeystoreTenantMgtListener.class);
-    private static final int EXEC_ORDER = 20;
-
-    /**
-     * Generate the keystore when a new tenant is registered.
-     * @param tenantInfo Information about the newly created tenant
-     */
-    public void onTenantCreate(TenantInfoBean tenantInfo) throws StratosException {
-        try {
-            KeyStoreGenerator ksGenerator = new KeyStoreGenerator(tenantInfo.getTenantId());
-            ksGenerator.generateKeyStore();
-        } catch (KeyStoreMgtException e) {
-            String message = "Error when generating the keystore";
-            log.error(message, e);
-            throw new StratosException(message, e);
-        }
-    }
-
-    public void onTenantUpdate(TenantInfoBean tenantInfo) throws StratosException {
-        // It is not required to implement this method for keystore mgt. 
-    }
-
-    public void onTenantRename(int tenantId, String oldDomainName,
-                             String newDomainName) throws StratosException {
-        // It is not required to implement this method for keystore mgt.
-    }
-
-    public int getListenerOrder() {
-        return EXEC_ORDER;
-    }
-
-    public void onTenantInitialActivation(int tenantId) throws StratosException {
-        // It is not required to implement this method for keystore mgt. 
-    }
-
-    public void onTenantActivation(int tenantId) throws StratosException {
-        // It is not required to implement this method for keystore mgt. 
-    }
-
-    public void onTenantDeactivation(int tenantId) throws StratosException {
-        // It is not required to implement this method for keystore mgt. 
-    }
-
-    public void onSubscriptionPlanChange(int tenentId, String oldPlan, 
-                                         String newPlan) throws StratosException {
-        // It is not required to implement this method for keystore mgt. 
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/internal/KeyStoreMgtServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/internal/KeyStoreMgtServiceComponent.java b/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/internal/KeyStoreMgtServiceComponent.java
deleted file mode 100644
index 9b094a8..0000000
--- a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/internal/KeyStoreMgtServiceComponent.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. licenses this file to you 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.wso2.carbon.keystore.mgt.internal;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.osgi.service.component.ComponentContext;
-import org.wso2.carbon.registry.core.service.RegistryService;
-import org.wso2.carbon.user.core.service.RealmService;
-import org.wso2.carbon.keystore.mgt.KeystoreTenantMgtListener;
-import org.wso2.carbon.keystore.mgt.util.RealmServiceHolder;
-import org.wso2.carbon.keystore.mgt.util.RegistryServiceHolder;
-
-/**
- * @scr.component name="org.wso2.carbon.keystore.mgt"
- * immediate="true"
- * @scr.reference name="registry.service"
- * interface="org.wso2.carbon.registry.core.service.RegistryService" cardinality="1..1"
- * policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService"
- * @scr.reference name="user.realmservice.default" interface="org.wso2.carbon.user.core.service.RealmService"
- * cardinality="1..1" policy="dynamic" bind="setRealmService"
- * unbind="unsetRealmService"
- */
-public class KeyStoreMgtServiceComponent {
-
-    private static Log log = LogFactory.getLog(KeyStoreMgtServiceComponent.class);
-
-
-    protected void activate(ComponentContext ctxt){
-        KeystoreTenantMgtListener keystoreTenantMgtListener = new KeystoreTenantMgtListener();
-        ctxt.getBundleContext().registerService(
-                org.wso2.carbon.stratos.common.listeners.TenantMgtListener.class.getName(),
-                keystoreTenantMgtListener, null);
-        if (log.isDebugEnabled()) {
-            log.debug("*************Stratos Keystore mgt component is activated.**************");
-        }
-    }
-
-    protected void deactivate(ComponentContext ctxt) {
-        if(log.isDebugEnabled()){
-            log.debug("************Stratos keystore mgt component is decativated.*************");
-        }
-    }
-
-    protected void setRegistryService(RegistryService registryService){
-        RegistryServiceHolder.setRegistryService(registryService);
-        if (log.isDebugEnabled()) {
-            log.debug("Registry Service is set for KeyStoreMgtServiceComponent.");
-        }
-    }
-
-    protected void unsetRegistryService(RegistryService registryService){
-        RegistryServiceHolder.setRegistryService(null);
-        if(log.isDebugEnabled()){
-            log.debug("Registry Service is unset for KeyStoreMgtServiceComponent.");
-        }
-    }
-
-    protected void setRealmService(RealmService realmService){
-        RealmServiceHolder.setRealmService(realmService);
-        if (log.isDebugEnabled()) {
-            log.debug("Realm Service is set for KeyStoreMgtServiceComponent.");
-        }
-    }
-
-    protected void unsetRealmService(RealmService realmService){
-        RealmServiceHolder.setRealmService(null);
-        if(log.isDebugEnabled()){
-            log.debug("Realm Service is unset for KeyStoreMgtServiceComponent.");
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RealmServiceHolder.java
----------------------------------------------------------------------
diff --git a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RealmServiceHolder.java b/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RealmServiceHolder.java
deleted file mode 100644
index 719036a..0000000
--- a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RealmServiceHolder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. licenses this file to you 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.wso2.carbon.keystore.mgt.util;
-
-import org.wso2.carbon.user.core.service.RealmService;
-
-public class RealmServiceHolder {
-
-    private static RealmService realmServiceService;
-
-    public static RealmService getRealmService() {
-        return realmServiceService;
-    }
-
-    public static void setRealmService(RealmService realmService) {
-        RealmServiceHolder.realmServiceService = realmService;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dac65a59/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RegistryServiceHolder.java
----------------------------------------------------------------------
diff --git a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RegistryServiceHolder.java b/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RegistryServiceHolder.java
deleted file mode 100644
index ec00c2a..0000000
--- a/components/stratos/org.wso2.carbon.keystore.mgt/2.1.0/src/main/java/org/wso2/carbon/keystore/mgt/util/RegistryServiceHolder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. licenses this file to you 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.wso2.carbon.keystore.mgt.util;
-
-import org.wso2.carbon.registry.core.service.RegistryService;
-
-public class RegistryServiceHolder {
-
-    private static RegistryService registryService;
-
-    public static RegistryService getRegistryService() {
-        return registryService;
-    }
-
-    public static void setRegistryService(RegistryService registryService) {
-        RegistryServiceHolder.registryService = registryService;
-    }
-}