001 /** 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one or more 004 * contributor license agreements. See the NOTICE file distributed with 005 * this work for additional information regarding copyright ownership. 006 * The ASF licenses this file to You under the Apache License, Version 2.0 007 * (the "License"); you may not use this file except in compliance with 008 * the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 package org.apache.geronimo.console.ca; 019 020 import javax.portlet.ActionResponse; 021 import javax.portlet.PortletRequest; 022 import javax.portlet.PortletSession; 023 024 import org.apache.commons.logging.Log; 025 import org.apache.commons.logging.LogFactory; 026 import org.apache.geronimo.console.MultiPageAbstractHandler; 027 import org.apache.geronimo.console.MultiPageModel; 028 import org.apache.geronimo.console.util.PortletManager; 029 import org.apache.geronimo.management.geronimo.CertificateRequestStore; 030 import org.apache.geronimo.management.geronimo.CertificateStore; 031 import org.apache.geronimo.management.geronimo.CertificationAuthority; 032 import org.apache.geronimo.management.geronimo.KeystoreException; 033 import org.apache.geronimo.management.geronimo.KeystoreInstance; 034 035 /** 036 * The base class for all handlers for CA portlet 037 * 038 * @version $Rev: 514091 $ $Date: 2007-03-03 01:26:39 -0500 (Sat, 03 Mar 2007) $ 039 */ 040 public abstract class BaseCAHandler extends MultiPageAbstractHandler { 041 private final static Log log = LogFactory.getLog(BaseCAHandler.class); 042 043 protected static final String INDEX_MODE = "index"; 044 protected static final String SETUPCA_MODE = "setupCA"; 045 protected static final String CONFIRM_CA_MODE = "confirmCA"; 046 protected static final String CADETAILS_MODE = "caDetails"; 047 protected static final String UNLOCKCA_MODE = "unlockCA"; 048 protected static final String PROCESS_CSR_MODE = "processCSR"; 049 protected static final String CERT_REQ_DETAILS_MODE = "certReqDetails"; 050 protected static final String CONFIRM_CLIENT_CERT_MODE = "confirmClientCert"; 051 protected static final String VIEW_CERT_MODE = "viewCert"; 052 protected static final String LIST_REQUESTS_ISSUE_MODE = "listRequestsIssue"; 053 protected static final String LIST_REQUESTS_VERIFY_MODE = "listRequestsVerify"; 054 protected static final String CONFIRM_CERT_REQ_MODE = "confirmCertReq"; 055 056 // Key algorithm for CA's keypair 057 protected static final String defaultKeyAlgorithm = "RSA"; 058 // CA's private key and self-signed certificate is stored under this keystore created using KeystoreManager 059 // Using FileKeystoreManager, the file willbe <server-base-dir>/var/security/keystores/<defaultCAKeystore> 060 protected static final String defaultCAKeystore = "ca-keystore"; 061 // CA's certificate store directory 062 protected static final String defaultCAStoreDir = "var/security/ca/certs"; 063 // Certificate request store directory 064 protected static final String defaultCSRStoreDir = "var/security/ca/requests"; 065 066 // Name of the attribute for error message to be displayed in a page 067 protected static final String ERROR_MSG = "errorMsg"; 068 // Name of the attribute for information message to be displayed in a page 069 protected static final String INFO_MSG = "infoMsg"; 070 071 /** 072 * Constructor 073 */ 074 protected BaseCAHandler(String mode, String viewName) { 075 super(mode, viewName); 076 } 077 078 public final static class CAModel implements MultiPageModel { 079 public CAModel(PortletRequest request) { 080 } 081 082 public void save(ActionResponse response, PortletSession session) { 083 } 084 } 085 086 /** 087 * This method returns CertificationAuthority GBbean. 088 * @param request PortletRequest to execute retrieve GBean 089 * @return null if a CA GBean is not running. 090 */ 091 protected CertificationAuthority getCertificationAuthority(PortletRequest request) { 092 Object[] cas = PortletManager.getManagementHelper(request).getGBeansImplementing(CertificationAuthority.class); 093 return (CertificationAuthority)(cas != null && cas.length > 0 ? cas[0] : null); 094 } 095 096 /** 097 * This methods creates CA's keystore using KeystoreManager. 098 * @param request PortletRequest to get KeystoreManager 099 * @param password Password for newly created Keystore 100 * @throws KeystoreException 101 */ 102 protected KeystoreInstance createCAKeystoreInstance(PortletRequest request, String password) throws KeystoreException { 103 return PortletManager.getCurrentServer(request).getKeystoreManager().createKeystore(defaultCAKeystore, password.toCharArray()); 104 } 105 106 /** 107 * This method returns CertificateRequestStore GBean. 108 * @param request PortletRequest to execute retrieve GBean 109 * @return null if a CertificateRequestStore GBean is not running. 110 */ 111 protected CertificateRequestStore getCertificateRequestStore(PortletRequest request) { 112 Object[] crs = PortletManager.getManagementHelper(request).getGBeansImplementing(CertificateRequestStore.class); 113 return (CertificateRequestStore)(crs != null && crs.length > 0 ? crs[0] : null); 114 } 115 116 /** 117 * This method returns CertificateStore GBean. 118 * @param request PortletRequest to execute retrieve GBean 119 * @return null if a CertificateStore GBean is not running. 120 */ 121 protected CertificateStore getCertificateStore(PortletRequest request) { 122 Object[] cs = PortletManager.getManagementHelper(request).getGBeansImplementing(CertificateStore.class); 123 return (CertificateStore)(cs != null && cs.length > 0 ? cs[0] : null); 124 } 125 }