--- /dev/null
+package org.cacert.gigi.pages;
+
+import java.io.IOException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateEncodingException;
+import java.util.HashMap;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.util.PEM;
+
+public class RootCertPage extends Page {
+
+ private Certificate root;
+
+ public RootCertPage(KeyStore ks) {
+ super("Root Certificates");
+ try {
+ root = ks.getCertificate("root");
+ } catch (KeyStoreException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public boolean beforeTemplate(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ if (req.getParameter("pem") != null && root != null) {
+ resp.setContentType("application/x-x509-ca-cert");
+ ServletOutputStream out = resp.getOutputStream();
+ try {
+ out.println(PEM.encode("CERTIFICATE", root.getEncoded()));
+ } catch (CertificateEncodingException e) {
+ e.printStackTrace();
+ }
+ return true;
+ } else if (req.getParameter("cer") != null && root != null) {
+ resp.setContentType("application/x-x509-ca-cert");
+ ServletOutputStream out = resp.getOutputStream();
+ try {
+ out.write(root.getEncoded());
+ } catch (CertificateEncodingException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ getDefaultTemplate().output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
+
+ }
+
+ @Override
+ public boolean needsLogin() {
+ return false;
+ }
+
+}