KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > keystore > actions > ShowKeyStoreDispatchAction


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sslexplorer.keystore.actions;
21
22 import java.io.File JavaDoc;
23 import java.io.FileOutputStream JavaDoc;
24 import java.security.KeyStore JavaDoc;
25 import java.security.PrivateKey JavaDoc;
26 import java.security.cert.X509Certificate JavaDoc;
27
28 import javax.servlet.http.HttpServletRequest JavaDoc;
29 import javax.servlet.http.HttpServletResponse JavaDoc;
30
31 import org.apache.commons.logging.Log;
32 import org.apache.commons.logging.LogFactory;
33 import org.apache.struts.Globals;
34 import org.apache.struts.action.ActionForm;
35 import org.apache.struts.action.ActionForward;
36 import org.apache.struts.action.ActionMapping;
37 import org.apache.struts.action.ActionMessage;
38 import org.apache.struts.action.ActionMessages;
39
40 import com.sslexplorer.core.CoreAttributeConstants;
41 import com.sslexplorer.core.CoreEvent;
42 import com.sslexplorer.core.CoreEventConstants;
43 import com.sslexplorer.core.CoreServlet;
44 import com.sslexplorer.core.CoreUtil;
45 import com.sslexplorer.core.FileDownloadPageInterceptListener;
46 import com.sslexplorer.keystore.CSRDownload;
47 import com.sslexplorer.keystore.forms.ShowKeyStoreForm;
48 import com.sslexplorer.policyframework.Permission;
49 import com.sslexplorer.policyframework.PolicyConstants;
50 import com.sslexplorer.security.Constants;
51 import com.sslexplorer.security.LogonControllerFactory;
52 import com.sslexplorer.security.SessionInfo;
53 import com.sslexplorer.table.actions.AbstractPagerAction;
54
55 /**
56  * Actions performed on the key stores
57  *
58  * @author James D Robinson <a HREF="mailto:james@3sp.com">&lt;james@3sp.com&gt;</a>
59  *
60  */

61 public class ShowKeyStoreDispatchAction extends AbstractPagerAction {
62
63     static Log log = LogFactory.getLog(ShowKeyStoreDispatchAction.class);
64
65
66     /**
67      * Construtor
68      */

69     public ShowKeyStoreDispatchAction() {
70         super(PolicyConstants.KEYSTORE_RESOURCE_TYPE, new Permission[] {
71             PolicyConstants.PERM_CHANGE
72         });
73     }
74
75     public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request,
76                     HttpServletResponse JavaDoc response) throws Exception JavaDoc {
77         return list(mapping, form, request, response);
78     }
79
80     /**
81      * @param mapping
82      * @param form
83      * @param request
84      * @param response
85      * @return ActionForward
86      * @throws Exception
87      */

88     public ActionForward selectKeyStore(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request,
89                     HttpServletResponse JavaDoc response) throws Exception JavaDoc {
90         return list(mapping, form, request, response);
91     }
92
93     /**
94      * @param mapping
95      * @param form
96      * @param request
97      * @param response
98      * @return ActionForward
99      * @throws Exception
100      */

101     public ActionForward confirmRemove(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
102                     throws Exception JavaDoc {
103         String JavaDoc sel = ((ShowKeyStoreForm)form).getSelectedItem();
104         System.out.println(sel);
105         return mapping.findForward("confirmRemoveCertificate");
106     }
107
108     /**
109      * @param mapping
110      * @param form
111      * @param request
112      * @param response
113      * @return ActionForward
114      * @throws Exception
115      */

116     public ActionForward remove(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
117     throws Exception JavaDoc {
118         ActionMessages msgs = new ActionMessages();
119         String JavaDoc sel = ((ShowKeyStoreForm)form).getSelectedItem();
120         ((ShowKeyStoreForm)form).getSelectedKeyStore().deleteCertificate(sel);
121         CoreServlet.getServlet().fireCoreEvent(
122                         new CoreEvent(this, CoreEventConstants.KEYSTORE_CERTIFICATE_DELETED, sel, LogonControllerFactory.getInstance().getSessionInfo(request))
123                         .addAttribute(CoreAttributeConstants.EVENT_ATTR_CERTIFICATE_ALIAS, sel));
124         msgs.add(Globals.MESSAGE_KEY, new ActionMessage("keyStore.certificates.remove.message.certificateRemoved", sel));
125         saveMessages(request, msgs);
126         ActionForward fwd = mapping.findForward("reload");
127         String JavaDoc orig = fwd.getPath();
128         fwd = mapping.findForward("restartRequired");
129         fwd = CoreUtil.addParameterToForward(fwd, "no", orig);
130         return fwd;
131     }
132
133     /**
134      * @param mapping
135      * @param form
136      * @param request
137      * @param response
138      * @return ActionForward
139      * @throws Exception
140      */

141     public ActionForward list(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
142                     throws Exception JavaDoc {
143         
144         response.setHeader("Cache-Control","no-cache");
145         response.setHeader("Pragma","must-revalidate");
146         CoreUtil.clearFlow(request);
147         
148         ((ShowKeyStoreForm) form).initialize(request.getSession());
149         return mapping.findForward("display");
150     }
151
152     /**
153      * @param mapping
154      * @param form
155      * @param request
156      * @param response
157      * @return ActionForward
158      * @throws Exception
159      */

160     public ActionForward exportCertificate(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request,
161                     HttpServletResponse JavaDoc response) throws Exception JavaDoc {
162         String JavaDoc sel = ((ShowKeyStoreForm) form).getSelectedItem();
163         KeyStore JavaDoc systemClientStore = ((ShowKeyStoreForm) form).getSelectedKeyStore().getKeyStore();
164         FileDownloadPageInterceptListener l = (FileDownloadPageInterceptListener) CoreUtil.getPageInterceptListenerById(request
165                         .getSession(), "fileDownload");
166         if (l == null) {
167             l = new FileDownloadPageInterceptListener();
168             CoreUtil.addPageInterceptListener(request.getSession(), l);
169         }
170         File JavaDoc clientCertFile = new File JavaDoc(CoreUtil.getTempDownloadDirectory(getSessionInfo(request)), sel + ".cer");
171         FileOutputStream JavaDoc out = new FileOutputStream JavaDoc(clientCertFile);
172         X509Certificate JavaDoc cert = (X509Certificate JavaDoc) systemClientStore.getCertificate(sel);
173         out.write(cert.getEncoded());
174         out.flush();
175         out.close();
176         l.addDownload(new CSRDownload(clientCertFile, clientCertFile.getName(), "application/octet-stream", mapping
177                         .findForward("success"), "exportCertificate.message", "keystore", sel));
178         return mapping.findForward("success");
179     }
180
181     /**
182      * @param mapping
183      * @param form
184      * @param request
185      * @param response
186      * @return ActionForward
187      * @throws Exception
188      */

189     public ActionForward exportPrivate(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request,
190                         HttpServletResponse JavaDoc response) throws Exception JavaDoc {
191         String JavaDoc sel = ((ShowKeyStoreForm) form).getSelectedItem();
192         
193         KeyStore JavaDoc systemClientStore = ((ShowKeyStoreForm) form).getSelectedKeyStore().getKeyStore();
194         FileDownloadPageInterceptListener l = (FileDownloadPageInterceptListener) CoreUtil.getPageInterceptListenerById(request
195                         .getSession(), "fileDownload");
196         if (l == null) {
197             l = new FileDownloadPageInterceptListener();
198             CoreUtil.addPageInterceptListener(request.getSession(), l);
199         }
200         File JavaDoc clientCertFile = new File JavaDoc(CoreUtil.getTempDownloadDirectory(getSessionInfo(request)), sel + ".p12");
201         FileOutputStream JavaDoc out = new FileOutputStream JavaDoc(clientCertFile);
202         char[] password = ((ShowKeyStoreForm) form).getSelectedKeyStore().getKeyStorePassword().toCharArray();
203         if (systemClientStore.isKeyEntry(sel)){
204             PrivateKey JavaDoc keypair = ((ShowKeyStoreForm) form).getSelectedKeyStore().getPrivateKey(sel,
205                             password);
206           KeyStore JavaDoc userStore = KeyStore.getInstance("PKCS12", "BC");
207           userStore.load(null, null);
208           userStore.setKeyEntry(sel, keypair, ((ShowKeyStoreForm) form).getPassword().toCharArray(), ((ShowKeyStoreForm) form).getSelectedKeyStore().getCertificateChain(sel));
209           userStore.store(out, ((ShowKeyStoreForm) form).getPassword().toCharArray());
210           out.close();
211         }
212         l.addDownload(new CSRDownload(clientCertFile, clientCertFile.getName(), "application/octet-stream", mapping.findForward("success"),
213                         "exportPrivateKey.message", "keystore", sel));
214         return mapping.findForward("success");
215     }
216
217     public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
218         return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT;
219     }
220
221     /**
222      * @param mapping
223      * @param form
224      * @param request
225      * @param response
226      * @return ActionForward
227      */

228     public ActionForward displayPromptForPrivateKeyPassphrase(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
229         return mapping.findForward("displayPromptForPrivateKeyPassphrase");
230     }
231     
232     /**
233      * Cancel and logout.
234      *
235      * @param mapping mappng
236      * @param form form
237      * @param request request
238      * @param response response
239      * @return forward
240      * @throws Exception
241      */

242     public ActionForward finished(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
243                     throws Exception JavaDoc {
244         return mapping.findForward("cancel");
245     }
246
247 }
248
Popular Tags