]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/MailCertificates.java
Extract certificate Display to template
[gigi.git] / src / org / cacert / gigi / pages / account / MailCertificates.java
index d65a3ef073e7c4864214744598a058a3cb68362c..775f527d993989b27d6653e9eab5bcc50c17cefb 100644 (file)
@@ -2,12 +2,12 @@ package org.cacert.gigi.pages.account;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.net.URLEncoder;
 import java.security.GeneralSecurityException;
 import java.security.cert.X509Certificate;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.Base64;
 import java.util.HashMap;
 
 import javax.servlet.ServletOutputStream;
@@ -18,13 +18,17 @@ import org.cacert.gigi.Certificate;
 import org.cacert.gigi.User;
 import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.output.CertificateTable;
+import org.cacert.gigi.output.template.Template;
 import org.cacert.gigi.pages.LoginPage;
 import org.cacert.gigi.pages.Page;
+import org.cacert.gigi.util.PEM;
 
 public class MailCertificates extends Page {
 
     CertificateTable myTable = new CertificateTable("mailcerts");
 
+    Template certDisplay = new Template(MailCertificates.class.getResource("CertificateDisplay.templ"));
+
     public static final String PATH = "/account/certs/email";
 
     public MailCertificates() {
@@ -58,7 +62,7 @@ public class MailCertificates extends Page {
         String serial = pi;
         try {
             Certificate c = Certificate.getBySerial(serial);
-            if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) {
+            if (c == null || getUser(req).getId() != c.getOwnerId()) {
                 resp.sendError(404);
                 return true;
             }
@@ -68,10 +72,7 @@ public class MailCertificates extends Page {
             }
             ServletOutputStream out = resp.getOutputStream();
             if (crt) {
-                out.println("-----BEGIN CERTIFICATE-----");
-                String block = Base64.getEncoder().encodeToString(cert.getEncoded()).replaceAll("(.{64})(?=.)", "$1\n");
-                out.println(block);
-                out.println("-----END CERTIFICATE-----");
+                out.println(PEM.encode("CERTIFICATE", cert.getEncoded()));
             } else if (cer) {
                 out.write(cert.getEncoded());
             }
@@ -102,33 +103,17 @@ public class MailCertificates extends Page {
                 resp.sendError(404);
                 return;
             }
-            out.print("<a href='");
-            out.print(serial);
-            out.print(".crt'>");
-            out.print(translate(req, "PEM encoded Certificate"));
-            out.println("</a><br/>");
-
-            out.print("<a href='");
-            out.print(serial);
-            out.print(".cer'>");
-            out.print(translate(req, "DER encoded Certificate"));
-            out.println("</a><br/>");
-            out.print("<a href='");
-            out.print(serial);
-            out.print(".cer?install'>");
-            out.print(translate(req, "Install into browser."));
-            out.println("</a><br/>");
-
-            out.println("<pre>");
+            HashMap<String, Object> vars = new HashMap<>();
+            vars.put("serial", URLEncoder.encode(serial, "UTF-8"));
             try {
-                X509Certificate cert = c.cert();
-                out.print(cert);
+                vars.put("cert", c.cert());
             } catch (GeneralSecurityException e) {
                 e.printStackTrace();
             } catch (SQLException e) {
                 e.printStackTrace();
             }
-            out.println("</pre>");
+            certDisplay.output(out, getLanguage(req), vars);
+
             return;
         }