]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/MailCertificateAdd.java
Implement serial based retrival and certificate access control.
[gigi.git] / src / org / cacert / gigi / pages / account / MailCertificateAdd.java
index b1c1d5c9d7c89c048d5d0f8d583c80442bf4dd87..836f48c4f13c1ff1e035ff5a9f7accb4d20ee1e8 100644 (file)
@@ -2,11 +2,15 @@ package org.cacert.gigi.pages.account;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.sql.SQLException;
 import java.util.HashMap;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.cacert.gigi.Certificate;
+import org.cacert.gigi.output.ClientCSRGenerate;
+import org.cacert.gigi.pages.LoginPage;
 import org.cacert.gigi.pages.Page;
 
 public class MailCertificateAdd extends Page {
@@ -17,20 +21,35 @@ public class MailCertificateAdd extends Page {
        }
 
        @Override
-       public void doGet(HttpServletRequest req, HttpServletResponse resp)
-                       throws IOException {
+       public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
                HashMap<String, Object> vars = new HashMap<String, Object>();
+               vars.put("CCA", "<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>");
                getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
        }
+
        @Override
-       public void doPost(HttpServletRequest req, HttpServletResponse resp)
-                       throws IOException {
+       public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
                PrintWriter out = resp.getWriter();
-               if (req.getParameter("optionalCSR") == null
-                               || req.getParameter("optionalCSR").equals("")) {
+               if (req.getParameter("optionalCSR") == null || req.getParameter("optionalCSR").equals("")) {
                        out.println("csr missing");
+                       ClientCSRGenerate.output(req, resp);
+               }
+               String csr = req.getParameter("optionalCSR");
+               if (!"on".equals(req.getParameter("CCA"))) {
+                       // Error.
+                       return;
                }
-               out.println("could now start processing the cert request");
+               Certificate c = new Certificate(LoginPage.getUser(req).getId(), "/commonName=CAcert WoT User", "sha256", csr);
+               c.issue();
+               try {
+                       c.waitFor(60000);
+                       resp.sendRedirect(MailCertificates.PATH + "/" + c.getSerial());
+               } catch (SQLException e) {
+                       e.printStackTrace();
+               } catch (InterruptedException e) {
+                       e.printStackTrace();
+               }
+
        }
 
 }