]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/MailCertificates.java
ADD: Mail delete
[gigi.git] / src / org / cacert / gigi / pages / account / MailCertificates.java
index e0dd947a06d3dfe37c47683f4c3ec9b8ee3e3b5a..de8c1ca010c1cde5d5fd2b7727896b3823cf6a81 100644 (file)
@@ -31,6 +31,7 @@ public class MailCertificates extends Page {
 
        @Override
        public boolean beforeTemplate(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+
                String pi = req.getPathInfo().substring(PATH.length());
                if (pi.length() == 0) {
                        return false;
@@ -38,23 +39,24 @@ public class MailCertificates extends Page {
                pi = pi.substring(1);
                boolean crt = false;
                boolean cer = false;
+               resp.setContentType("application/pkix-cert");
                if (pi.endsWith(".crt")) {
                        crt = true;
                        pi = pi.substring(0, pi.length() - 4);
+               } else if (pi.endsWith(".cer")) {
+                       if (req.getParameter("install") != null) {
+                               resp.setContentType("application/x-x509-user-cert");
+                       }
+                       cer = true;
+                       pi = pi.substring(0, pi.length() - 4);
                } else if (pi.endsWith(".cer")) {
                        cer = true;
                        pi = pi.substring(0, pi.length() - 4);
                }
-               int serial = 0;
-               try {
-                       serial = Integer.parseInt(pi);
-               } catch (NumberFormatException nfe) {
-                       resp.sendError(404);
-                       return true;
-               }
+               String serial = pi;
                try {
-                       Certificate c = new Certificate(serial);
-                       if (LoginPage.getUser(req).getId() != c.getOwnerId()) {
+                       Certificate c = Certificate.getBySerial(serial);
+                       if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) {
                                resp.sendError(404);
                                return true;
                        }
@@ -92,15 +94,8 @@ public class MailCertificates extends Page {
                if (pi.length() != 0) {
                        pi = pi.substring(1);
 
-                       int serial = 0;
-                       try {
-                               serial = Integer.parseInt(pi);
-                       } catch (NumberFormatException nfe) {
-                       }
-                       Certificate c = null;
-                       if (serial != 0) {
-                               c = new Certificate(serial);
-                       }
+                       String serial = pi;
+                       Certificate c = Certificate.getBySerial(serial);
                        if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) {
                                resp.sendError(404);
                                return;
@@ -116,6 +111,11 @@ public class MailCertificates extends Page {
                        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>");
                        try {