1 package org.cacert.gigi.pages.account;
3 import java.io.IOException;
4 import java.io.PrintWriter;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.util.HashMap;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
14 import org.cacert.gigi.Certificate;
15 import org.cacert.gigi.Language;
16 import org.cacert.gigi.User;
17 import org.cacert.gigi.database.DatabaseConnection;
18 import org.cacert.gigi.output.ClientCSRGenerate;
19 import org.cacert.gigi.output.template.IterableDataset;
20 import org.cacert.gigi.pages.LoginPage;
21 import org.cacert.gigi.pages.Page;
23 public class MailCertificateAdd extends Page {
24 public static final String PATH = "/account/certs/email/new";
26 public MailCertificateAdd() {
27 super("Create Email certificate");
31 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
32 HashMap<String, Object> vars = new HashMap<String, Object>();
33 vars.put("CCA", "<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>");
35 User u = LoginPage.getUser(req);
37 PreparedStatement ps = DatabaseConnection.getInstance().prepare(
38 "SELECT `id`,`email` from `email` WHERE `memid`=? AND `deleted`=0");
39 ps.setInt(1, u.getId());
40 final ResultSet rs = ps.executeQuery();
41 vars.put("emails", new IterableDataset() {
44 public boolean next(Language l, Map<String, Object> vars) {
49 vars.put("id", rs.getString(1));
50 vars.put("value", rs.getString(2));
52 } catch (SQLException e) {
58 getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
60 } catch (SQLException e) {
66 public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
67 PrintWriter out = resp.getWriter();
68 if (req.getParameter("optionalCSR") == null || req.getParameter("optionalCSR").equals("")) {
69 out.println("csr missing");
70 ClientCSRGenerate.output(req, resp);
72 String csr = req.getParameter("optionalCSR");
73 if (!"on".equals(req.getParameter("CCA"))) {
77 Certificate c = new Certificate(LoginPage.getUser(req).getId(), "/commonName=CAcert WoT User", "sha256", csr);
81 resp.sendRedirect(MailCertificates.PATH + "/" + c.getSerial());
82 } catch (SQLException e) {
84 } catch (InterruptedException e) {