From 25310a5d257de7c257e270b5ce467b9ac42a3498 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sat, 16 Aug 2014 20:29:14 +0200 Subject: [PATCH] Adding a form element for selecting the certificate-valid-period. --- .../output/CertificateValiditySelector.java | 115 ++++++++++++++++++ .../pages/account/CertificateIssueForm.java | 5 + .../pages/account/CertificateIssueForm.templ | 6 + 3 files changed, 126 insertions(+) create mode 100644 src/org/cacert/gigi/output/CertificateValiditySelector.java diff --git a/src/org/cacert/gigi/output/CertificateValiditySelector.java b/src/org/cacert/gigi/output/CertificateValiditySelector.java new file mode 100644 index 00000000..95eaa09e --- /dev/null +++ b/src/org/cacert/gigi/output/CertificateValiditySelector.java @@ -0,0 +1,115 @@ +package org.cacert.gigi.output; + +import java.io.PrintWriter; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Map; +import java.util.TimeZone; + +import javax.servlet.http.HttpServletRequest; + +import org.cacert.gigi.localisation.Language; + +public class CertificateValiditySelector implements Outputable { + + SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); + + private static final int DAY = 1000 * 60 * 60 * 24; + + Date from; + + String val; + + public CertificateValiditySelector() { + fmt.setTimeZone(TimeZone.getTimeZone("UTC")); + + } + + @Override + public void output(PrintWriter out, Language l, Map vars) { + out.print(""); + + out.print(""); + + if (from == null) { + return; + } + // debug dummy output + Calendar c = GregorianCalendar.getInstance(); + c.setTime(from); + if ("6m".equals(val)) { + c.add(Calendar.MONTH, 6); + } else if ("1y".equals(val)) { + c.add(Calendar.YEAR, 1); + } else if ("2y".equals(val)) { + c.add(Calendar.YEAR, 2); + } + out.println("From: " + fmt.format(from)); + out.println("To: " + fmt.format(c.getTime())); + } + + private long getCurrentDayBase() { + long base = System.currentTimeMillis(); + base -= base % DAY; + base += DAY; + return base; + } + + public void update(HttpServletRequest r) { + String from = r.getParameter("validFrom"); + if (from == null || "now".equals(from)) { + this.from = null; + } else { + try { + this.from = fmt.parse(from); + } catch (ParseException e) { + e.printStackTrace(); + } + } + val = r.getParameter("validity"); + + } + +} diff --git a/src/org/cacert/gigi/pages/account/CertificateIssueForm.java b/src/org/cacert/gigi/pages/account/CertificateIssueForm.java index 184b8786..4c56dbdf 100644 --- a/src/org/cacert/gigi/pages/account/CertificateIssueForm.java +++ b/src/org/cacert/gigi/pages/account/CertificateIssueForm.java @@ -27,6 +27,7 @@ import org.cacert.gigi.GigiApiException; import org.cacert.gigi.User; import org.cacert.gigi.crypto.SPKAC; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.CertificateValiditySelector; import org.cacert.gigi.output.Form; import org.cacert.gigi.output.template.HashAlgorithms; import org.cacert.gigi.output.template.IterableDataset; @@ -108,6 +109,8 @@ public class CertificateIssueForm extends Form { Digest selectedDigest = Digest.getDefault(); + CertificateValiditySelector issueDate = new CertificateValiditySelector(); + boolean login; CertificateProfile profile = CertificateProfile.getById(1); @@ -230,6 +233,7 @@ public class CertificateIssueForm extends Form { } else { login = "1".equals(req.getParameter("login")); + issueDate.update(req); CN = req.getParameter("CN"); String hashAlg = req.getParameter("hash_alg"); if (hashAlg != null) { @@ -407,6 +411,7 @@ public class CertificateIssueForm extends Form { } vars2.put("CN", CN); + vars2.put("validity", issueDate); vars2.put("emails", content.toString()); vars2.put("hashs", new HashAlgorithms(selectedDigest)); vars2.put("profiles", new IterableDataset() { diff --git a/src/org/cacert/gigi/pages/account/CertificateIssueForm.templ b/src/org/cacert/gigi/pages/account/CertificateIssueForm.templ index 90aed06a..0c563669 100644 --- a/src/org/cacert/gigi/pages/account/CertificateIssueForm.templ +++ b/src/org/cacert/gigi/pages/account/CertificateIssueForm.templ @@ -52,6 +52,12 @@
+ + + + + + -- 2.39.2