]> WPIA git - gigi.git/blob - src/org/cacert/gigi/api/CreateCertificate.java
add: split API and add CATS import API
[gigi.git] / src / org / cacert / gigi / api / CreateCertificate.java
1 package org.cacert.gigi.api;
2
3 import java.io.IOException;
4 import java.security.GeneralSecurityException;
5
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 import org.cacert.gigi.GigiApiException;
10 import org.cacert.gigi.dbObjects.Certificate;
11 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
12 import org.cacert.gigi.dbObjects.Job;
13 import org.cacert.gigi.dbObjects.User;
14 import org.cacert.gigi.pages.account.certs.CertificateRequest;
15 import org.cacert.gigi.util.AuthorizationContext;
16 import org.cacert.gigi.util.PEM;
17
18 public class CreateCertificate extends APIPoint {
19
20     public static final String PATH = "/account/certs/new";
21
22     @Override
23     public void process(HttpServletRequest req, HttpServletResponse resp, User u) throws IOException {
24         String csr = req.getParameter("csr");
25         if (csr == null) {
26             resp.sendError(500, "Error, no CSR found");
27             return;
28         }
29         try {
30             CertificateRequest cr = new CertificateRequest(new AuthorizationContext(u, u), csr);
31             Certificate result = cr.draft();
32             Job job = result.issue(null, "2y", u);
33             job.waitFor(60000);
34             if (result.getStatus() != CertificateStatus.ISSUED) {
35                 resp.sendError(510, "Error, issuing timed out");
36                 return;
37             }
38             resp.getWriter().println(PEM.encode("CERTIFICATE", result.cert().getEncoded()));
39             return;
40         } catch (GeneralSecurityException e) {
41             e.printStackTrace();
42         } catch (GigiApiException e) {
43             e.printStackTrace();
44         } catch (InterruptedException e) {
45             e.printStackTrace();
46         }
47     }
48 }