From 6a986f7d7dd2de2e39a8070b32b651132e0da23a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Wed, 9 Jul 2014 09:18:24 +0200 Subject: [PATCH] Draft for client cert gen --- .../cacert/gigi/output/ClientCSRGenerate.java | 39 ++ .../gigi/output/ClientCSRGenerate.templ | 9 + .../gigi/output/ClientCSRGenerateIE.templ | 70 ++ .../pages/account/MailCertificateAdd.java | 2 + static/static/keygenIE.js | 611 ++++++++++++++++++ 5 files changed, 731 insertions(+) create mode 100644 src/org/cacert/gigi/output/ClientCSRGenerate.java create mode 100644 src/org/cacert/gigi/output/ClientCSRGenerate.templ create mode 100644 src/org/cacert/gigi/output/ClientCSRGenerateIE.templ create mode 100644 static/static/keygenIE.js diff --git a/src/org/cacert/gigi/output/ClientCSRGenerate.java b/src/org/cacert/gigi/output/ClientCSRGenerate.java new file mode 100644 index 00000000..aeb7d9b8 --- /dev/null +++ b/src/org/cacert/gigi/output/ClientCSRGenerate.java @@ -0,0 +1,39 @@ +package org.cacert.gigi.output; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.cacert.gigi.pages.Page; +import org.cacert.gigi.util.ServerConstants; + +public class ClientCSRGenerate { + static Template normal; + static Template IE; + static { + normal = new Template(new InputStreamReader( + ClientCSRGenerate.class + .getResourceAsStream("ClientCSRGenerate.templ"))); + IE = new Template(new InputStreamReader( + ClientCSRGenerate.class + .getResourceAsStream("ClientCSRGenerateIE.templ"))); + } + public static void output(HttpServletRequest req, HttpServletResponse resp) { + HashMap vars = new HashMap(); + vars.put("minsize", "2048"); + vars.put("normalhost", + "https://" + ServerConstants.getWwwHostNamePort()); + vars.put("securehost", + "https://" + ServerConstants.getSecureHostNamePort()); + vars.put("statichost", + "https://" + ServerConstants.getStaticHostNamePort()); + try { + normal.output(resp.getWriter(), Page.getLanguage(req), vars); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/org/cacert/gigi/output/ClientCSRGenerate.templ b/src/org/cacert/gigi/output/ClientCSRGenerate.templ new file mode 100644 index 00000000..a35e3f89 --- /dev/null +++ b/src/org/cacert/gigi/output/ClientCSRGenerate.templ @@ -0,0 +1,9 @@ + +

+

+ + + + +
+

diff --git a/src/org/cacert/gigi/output/ClientCSRGenerateIE.templ b/src/org/cacert/gigi/output/ClientCSRGenerateIE.templ new file mode 100644 index 00000000..3f3b6177 --- /dev/null +++ b/src/org/cacert/gigi/output/ClientCSRGenerateIE.templ @@ -0,0 +1,70 @@ + + +
+

+

+

Internet Options -> Security -> Trusted Websites", + click on "Custom Level", set "ActiveX control elements that are not marked as safe initialized on start + in scripts" to "Confirm" and click "OK". Now click "Sites", add "%s" and "%s" to your list of trusted + sites and make the changes come into effect by clicking "Close" and "OK".?>

+
+ + + + + + + + + + + + diff --git a/src/org/cacert/gigi/pages/account/MailCertificateAdd.java b/src/org/cacert/gigi/pages/account/MailCertificateAdd.java index b1c1d5c9..35899c5d 100644 --- a/src/org/cacert/gigi/pages/account/MailCertificateAdd.java +++ b/src/org/cacert/gigi/pages/account/MailCertificateAdd.java @@ -7,6 +7,7 @@ import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.cacert.gigi.output.ClientCSRGenerate; import org.cacert.gigi.pages.Page; public class MailCertificateAdd extends Page { @@ -29,6 +30,7 @@ public class MailCertificateAdd extends Page { if (req.getParameter("optionalCSR") == null || req.getParameter("optionalCSR").equals("")) { out.println("csr missing"); + ClientCSRGenerate.output(req, resp); } out.println("could now start processing the cert request"); } diff --git a/static/static/keygenIE.js b/static/static/keygenIE.js new file mode 100644 index 00000000..4c15b230 --- /dev/null +++ b/static/static/keygenIE.js @@ -0,0 +1,611 @@ +/* +LibreSSL - CAcert web application +Copyright (C) 2004-2012 CAcert Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +var CAcert_keygen_IE = function () { + + /// Makes a new DOM text node + var textnode = function (text) { + return document.createTextNode(text); + } + + /// makes a new

element + var paragraph = function (text) { + var paragraph = document.createElement("p"); + paragraph.appendChild(textnode(text)); + return paragraph; + } + + /// makes a new

 elemtent
+	var pre = function (text) {
+		var pre = document.createElement("pre");
+		pre.appendChild(textnode(text));
+		return pre;
+	}
+
+	/// makes a new