X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2FRootCertPage.java;h=55e45003350a0aa86549c7678592bc99b867da30;hp=9d1d9c90eff4ec01f5f7ba1fc22adac68048a25e;hb=04dc0117995e534dfffcab544998c4ba77b9c434;hpb=189f4896bdfa004f3b6a8df7794cc9a2cf0ae09e diff --git a/src/club/wpia/gigi/pages/RootCertPage.java b/src/club/wpia/gigi/pages/RootCertPage.java index 9d1d9c90..55e45003 100644 --- a/src/club/wpia/gigi/pages/RootCertPage.java +++ b/src/club/wpia/gigi/pages/RootCertPage.java @@ -2,13 +2,13 @@ package club.wpia.gigi.pages; import java.io.IOException; import java.io.PrintWriter; +import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.LinkedList; import java.util.Map; @@ -16,11 +16,14 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import club.wpia.gigi.GigiApiException; import club.wpia.gigi.dbObjects.CACertificate; import club.wpia.gigi.localisation.Language; import club.wpia.gigi.output.template.Outputable; +import club.wpia.gigi.util.CertExporter; import club.wpia.gigi.util.HTMLEncoder; import club.wpia.gigi.util.PEM; +import club.wpia.gigi.util.ServerConstants; public class RootCertPage extends Page { @@ -30,6 +33,8 @@ public class RootCertPage extends Page { private final OutputableCertificate rootP; + private final String appName = ServerConstants.getAppName().toLowerCase(); + private class OutputableCertificate implements Outputable { private final CACertificate target; @@ -97,6 +102,7 @@ public class RootCertPage extends Page { public boolean beforeTemplate(HttpServletRequest req, HttpServletResponse resp) throws IOException { if (req.getParameter("pem") != null && root != null) { resp.setContentType("application/x-x509-ca-cert"); + resp.setHeader("Content-Disposition", "attachment; filename=\"" + appName + "_roots.crt\""); ServletOutputStream out = resp.getOutputStream(); try { out.println(PEM.encode("CERTIFICATE", root.getEncoded())); @@ -104,8 +110,23 @@ public class RootCertPage extends Page { e.printStackTrace(); } return true; + } else if (req.getParameter("bundle") != null && root != null) { + resp.setContentType("application/x-x509-ca-cert"); + resp.setHeader("Content-Disposition", "attachment; filename=\"" + appName + "_intermediate_bundle.p7b\""); + ServletOutputStream out = resp.getOutputStream(); + try { + CertExporter.writeCertBundle(out); + } catch (CertificateEncodingException e) { + e.printStackTrace(); + } catch (GeneralSecurityException e) { + e.printStackTrace(); + } catch (GigiApiException e) { + e.printStackTrace(); + } + return true; } else if (req.getParameter("cer") != null && root != null) { resp.setContentType("application/x-x509-ca-cert"); + resp.setHeader("Content-Disposition", "attachment; filename=\"" + appName + "_roots.cer\""); ServletOutputStream out = resp.getOutputStream(); try { out.write(root.getEncoded()); @@ -119,15 +140,22 @@ public class RootCertPage extends Page { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - HashMap map = new HashMap(); + Map map = Page.getDefaultVars(req); map.put("root", rootP); - getDefaultTemplate().output(resp.getWriter(), getLanguage(req), map); + map.put("bundle", appName + "_intermediate_bundle.p7b"); + + try { + map.put("fingerprintSHA1", rootP.target.getFingerprint("sha-1")); + map.put("fingerprintSHA256", rootP.target.getFingerprint("sha-256")); + } catch (GeneralSecurityException e) { + e.printStackTrace(); + } + getDefaultTemplate().output(resp.getWriter(), getLanguage(req), map); } @Override public boolean needsLogin() { return false; } - }