]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/IssueCertificateForm.java
New Signer Job Table.
[gigi.git] / src / org / cacert / gigi / pages / account / IssueCertificateForm.java
index e8e50001506da91a20f7bd7c88e7b1b8b7ab1267..29565e0ee038a4c5e61de7fa9c80d6f1035e93df 100644 (file)
@@ -15,8 +15,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import org.cacert.gigi.Certificate;
 import org.cacert.gigi.Digest;
 import org.cacert.gigi.Language;
@@ -39,6 +37,8 @@ import sun.security.pkcs10.PKCS10;
 public class IssueCertificateForm extends Form {
        User u;
        Digest selectedDigest = Digest.getDefault();
+       boolean login;
+       String csr;
 
        private final static Template t = new Template(IssueCertificateForm.class.getResource("IssueCertificateForm.templ"));
 
@@ -47,12 +47,18 @@ public class IssueCertificateForm extends Form {
                u = LoginPage.getUser(hsr);
        }
 
+       Certificate result;
+
+       public Certificate getResult() {
+               return result;
+       }
+
        @Override
        public boolean submit(PrintWriter out, HttpServletRequest req) {
                String csr = req.getParameter("CSR");
                String spkac = req.getParameter("spkac");
                try {
-                       if (csr != null && !"".equals(csr)) {
+                       if (csr != null) {
                                PKCS10 parsed = parseCSR(csr);
                                out.println(parsed.getSubjectName().getCommonName());
                                out.println(parsed.getSubjectName().getCountry());
@@ -73,7 +79,31 @@ public class IssueCertificateForm extends Form {
                                        out.println(epk.getParams().getCurve());
                                }
                                out.println("<br/>digest: sha256<br/>");
+                               this.csr = csr;
+                       } else if (spkac != null) {
 
+                       } else {
+                               login = "1".equals(req.getParameter("login"));
+                               String hashAlg = req.getParameter("hash_alg");
+                               if (hashAlg != null) {
+                                       selectedDigest = Digest.valueOf(hashAlg);
+                               }
+                               if (req.getParameter("CCA") == null) {
+                                       outputError(out, req, "You need to accept the CCA.");
+                                       return false;
+                               }
+                               System.out.println("issuing " + selectedDigest);
+                               result = new Certificate(LoginPage.getUser(req).getId(), "/commonName=CAcert WoT User",
+                                       selectedDigest.toString(), this.csr);
+                               try {
+                                       result.issue().waitFor(60000);
+                                       return true;
+                               } catch (SQLException e) {
+                                       e.printStackTrace();
+                               } catch (InterruptedException e) {
+                                       e.printStackTrace();
+                               }
+                               return false;
                        }
                } catch (IOException e) {
                        e.printStackTrace();
@@ -83,19 +113,6 @@ public class IssueCertificateForm extends Form {
                return false;
        }
 
-       private void issue(HttpServletRequest req, HttpServletResponse resp, String csr) throws IOException {
-               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();
-               }
-       }
-
        private PKCS10 parseCSR(String csr) throws IOException, GeneralSecurityException {
                csr = csr.replaceFirst("-----BEGIN (NEW )?CERTIFICATE REQUEST-----", "");
                csr = csr.replaceFirst("-----END (NEW )?CERTIFICATE REQUEST-----", "");