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.ca.helper;
019
020 import java.io.ByteArrayOutputStream;
021 import java.io.IOException;
022 import java.util.Properties;
023
024 import javax.servlet.ServletException;
025 import javax.servlet.http.HttpServletRequest;
026 import javax.servlet.http.HttpServletResponse;
027
028 import org.apache.geronimo.ca.helper.util.CAHelperUtils;
029
030 /**
031 * Servlet implementation class for Servlet: CertificateRequestServlet
032 *
033 * @version $Rev: 514091 $ $Date: 2007-03-03 01:26:39 -0500 (Sat, 03 Mar 2007) $
034 */
035 public class CertificateRequestServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
036 /* (non-Java-doc)
037 * @see javax.servlet.http.HttpServlet#HttpServlet()
038 */
039 public CertificateRequestServlet() {
040 super();
041 }
042
043 /* (non-Java-doc)
044 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
045 */
046 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
047 doPost(request, response);
048 }
049
050 /* (non-Java-doc)
051 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
052 */
053 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
054 // Retrieve the values submitted by the user
055 String reqCN = request.getParameter("reqCN");
056 String reqOU = request.getParameter("reqOU");
057 String reqO = request.getParameter("reqO");
058 String reqL = request.getParameter("reqL");
059 String reqST = request.getParameter("reqST");
060 String reqC = request.getParameter("reqC");
061 String spkac = request.getParameter("spkac");
062
063 if(spkac == null || spkac.equals("")) {
064 // browser did not generate SignedPublicKeyAndChallenge
065 throw new ServletException("Browser did not generate SignedPublicKeyAndChallenge. Resubmit your certificate request.");
066 }
067 // Create a Properties object with user supplied values
068 Properties csrProps = new Properties();
069 csrProps.setProperty("CN", reqCN);
070 csrProps.setProperty("OU", reqOU);
071 csrProps.setProperty("O", reqO);
072 csrProps.setProperty("L", reqL);
073 csrProps.setProperty("ST", reqST);
074 csrProps.setProperty("C", reqC);
075 csrProps.setProperty("SPKAC", spkac);
076
077 ByteArrayOutputStream baos = new ByteArrayOutputStream();
078 csrProps.store(baos, "Request received through CA Helper Application");
079 baos.close();
080
081 // Store the CSR in the Certificate Request Store.
082 String csrId = CAHelperUtils.getCertificateRequestStore().storeRequest(null, baos.toString());
083
084 // Display the CSR Id to the user and confirm the receipt of CSR
085 request.setAttribute("id", csrId);
086 getServletContext().getRequestDispatcher("/receivedCSR.jsp").forward(request, response);
087 }
088 }