001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.geronimo.console.keystores; 018 019 import org.apache.commons.logging.Log; 020 import org.apache.commons.logging.LogFactory; 021 import org.apache.geronimo.console.MultiPageModel; 022 023 import javax.portlet.ActionRequest; 024 import javax.portlet.ActionResponse; 025 import javax.portlet.PortletException; 026 import javax.portlet.RenderRequest; 027 import javax.portlet.RenderResponse; 028 import java.io.IOException; 029 030 /** 031 * Handler for changing keystore and private key passwords. 032 * 033 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $ 034 */ 035 public class ChangePasswordHandler extends BaseKeystoreHandler { 036 private final static Log log = LogFactory.getLog(ChangePasswordHandler.class); 037 public ChangePasswordHandler() { 038 super(CHANGE_PASSWORD, "/WEB-INF/view/keystore/changePassword.jsp"); 039 } 040 041 public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 042 String[] params = {ERROR_MSG, INFO_MSG, "keystore", "alias"}; 043 for(int i = 0; i < params.length; ++i) { 044 String value = request.getParameter(params[i]); 045 if(value != null) response.setRenderParameter(params[i], value); 046 } 047 return getMode(); 048 } 049 050 public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { 051 String[] params = {ERROR_MSG, INFO_MSG, "keystore", "alias"}; 052 for(int i = 0; i < params.length; ++i) { 053 String value = request.getParameter(params[i]); 054 if(value != null) request.setAttribute(params[i], value); 055 } 056 request.setAttribute("mode", getMode()+AFTER_ACTION); 057 } 058 059 public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 060 String keystore = request.getParameter("keystore"); 061 String alias = request.getParameter("alias"); 062 String password = request.getParameter("password"); 063 String newPassword = request.getParameter("newPassword"); 064 if(keystore == null || keystore.equals("")) { 065 return getMode(); 066 } else if(password == null) { 067 response.setRenderParameter("keystore", keystore); 068 if(alias != null && !alias.equals("")) { 069 response.setRenderParameter("alias", alias); 070 } 071 return getMode(); 072 } 073 KeystoreData data = ((KeystoreData) request.getPortletSession(true).getAttribute(KEYSTORE_DATA_PREFIX + keystore)); 074 try { 075 if(alias == null || alias.equals("")) { 076 // Keystore password is to be changed. 077 data.changeKeystorePassword(password.toCharArray(), newPassword.toCharArray()); 078 response.setRenderParameter("id", keystore); 079 response.setRenderParameter(INFO_MSG, "Password changed for keystore '"+keystore+"'."); 080 return VIEW_KEYSTORE+BEFORE_ACTION; 081 } else { 082 // Private key password is to be changed. 083 data.changeKeyPassword(alias, password.toCharArray(), newPassword.toCharArray()); 084 response.setRenderParameter("id", keystore); 085 response.setRenderParameter("alias", alias); 086 response.setRenderParameter(INFO_MSG, "Password changed for private key '"+alias+"'."); 087 return CERTIFICATE_DETAILS; 088 } 089 } catch (Exception e) { 090 String message = "Unable to change password for "+ (alias == null || alias.equals("") ? "keystore "+keystore : "private key "+alias) + "."; 091 response.setRenderParameter(ERROR_MSG, message+" "+e.toString()); 092 log.error(message, e); 093 return getMode()+BEFORE_ACTION; 094 } 095 } 096 }