X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=util-testing%2Forg%2Fcacert%2Fgigi%2Fpages%2FManager.java;h=4028e0692ce174f9f723e287381f66a8a5cbb280;hp=5b16ce79ac435656ebc105be49f9a521c77d76b6;hb=5a9bbd07995a7266b90ecfa0163f67527a4bd87c;hpb=45e1a1b013c5dd3d4a84534d4aa8fad95cc27584 diff --git a/util-testing/org/cacert/gigi/pages/Manager.java b/util-testing/org/cacert/gigi/pages/Manager.java index 5b16ce79..4028e069 100644 --- a/util-testing/org/cacert/gigi/pages/Manager.java +++ b/util-testing/org/cacert/gigi/pages/Manager.java @@ -3,7 +3,12 @@ package org.cacert.gigi.pages; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Field; +import java.security.GeneralSecurityException; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.Signature; import java.sql.Date; +import java.util.Base64; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.HashMap; @@ -17,18 +22,25 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.GigiApiException; +import org.cacert.gigi.crypto.SPKAC; import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.database.GigiPreparedStatement; +import org.cacert.gigi.dbObjects.Certificate; +import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; +import org.cacert.gigi.dbObjects.Digest; import org.cacert.gigi.dbObjects.EmailAddress; import org.cacert.gigi.dbObjects.Group; +import org.cacert.gigi.dbObjects.Name; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.email.EmailProvider; import org.cacert.gigi.localisation.Language; -import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.IterableDataset; import org.cacert.gigi.output.template.Template; +import org.cacert.gigi.pages.account.certs.CertificateRequest; import org.cacert.gigi.util.Notary; +import sun.security.x509.X509Key; + public class Manager extends Page { public static final String PATH = "/manager"; @@ -56,6 +68,7 @@ public class Manager extends Page { String mail = "test-assurer" + i + "@example.com"; User u = User.getByEmail(mail); if (u == null) { + System.out.println("Creating assurer"); createUser(mail); u = User.getByEmail(mail); passCATS(u); @@ -115,24 +128,6 @@ public class Manager extends Page { } - public class ManagementForm extends Form { - - public ManagementForm(HttpServletRequest hsr) { - super(hsr); - } - - @Override - public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { - return false; - } - - @Override - protected void outputContent(PrintWriter out, Language l, Map vars) { - getDefaultTemplate().output(out, l, vars); - } - - } - public void batchCreateUsers(String mailPrefix, String domain, int amount, PrintWriter out) { try { @@ -155,14 +150,11 @@ public class Manager extends Page { private void createUser(String email) throws GigiApiException, IllegalAccessException { User u = new User(); - u.setFname("Först"); - u.setMname("Müddle"); - u.setLname("Läst"); - u.setSuffix("Süffix"); + u.setName(new Name("Först", "Läst", "Müddle", "Süffix")); u.setEmail(email); Calendar gc = GregorianCalendar.getInstance(); gc.set(1990, 0, 1); - u.setDob(new Date(gc.getTime().getTime())); + u.setDoB(new Date(gc.getTime().getTime())); u.setPreferredLocale(Locale.ENGLISH); u.insert("xvXV12°§"); EmailAddress ea = new EmailAddress(u, email); @@ -213,12 +205,60 @@ public class Manager extends Page { } try { for (int i = 0; i < getAssurers().length; i++) { - Notary.assure(getAssurers()[i], byEmail, byEmail.getName(), byEmail.getDob(), 10, "Testmanager Assure up code", "2014-11-06"); + Notary.assure(getAssurers()[i], byEmail, byEmail.getName(), byEmail.getDoB(), 10, "Testmanager Assure up code", "2014-11-06"); } } catch (GigiApiException e) { throw new Error(e); } resp.getWriter().println("User has been assured."); + } else if (req.getParameter("addEmail") != null) { + User u = User.getByEmail(req.getParameter("addEmailEmail")); + EmailAddress ea = new EmailAddress(u, req.getParameter("addEmailNew")); + try { + ea.insert(Language.getInstance(Locale.ENGLISH)); + String hash = (String) f.get(ea); + ea.verify(hash); + resp.getWriter().println("Email added and verified"); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + resp.getWriter().println("An internal error occured."); + } catch (IllegalAccessException e) { + e.printStackTrace(); + resp.getWriter().println("An internal error occured."); + } catch (GigiApiException e) { + e.format(resp.getWriter(), Language.getInstance(Locale.ENGLISH)); + } + } else if (req.getParameter("addCert") != null) { + User u = User.getByEmail(req.getParameter("addCertEmail")); + try { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); + kpg.initialize(4096); + KeyPair kp = kpg.generateKeyPair(); + SPKAC s = new SPKAC((X509Key) kp.getPublic(), "challange"); + Signature sign = Signature.getInstance("SHA512withRSA"); + sign.initSign(kp.getPrivate()); + + byte[] res = s.getEncoded(sign); + + CertificateRequest cr = new CertificateRequest(u, Base64.getEncoder().encodeToString(res), "challange"); + cr.update(CertificateRequest.DEFAULT_CN, Digest.SHA512.toString(), "client", null, "", "email:" + u.getEmail(), resp.getWriter(), req); + Certificate draft = cr.draft(); + draft.issue(null, "2y").waitFor(10000); + if (draft.getStatus() == CertificateStatus.ISSUED) { + resp.getWriter().println("added certificate"); + } else { + resp.getWriter().println("signer failed"); + } + } catch (GeneralSecurityException e1) { + e1.printStackTrace(); + resp.getWriter().println("error"); + } catch (GigiApiException e) { + e.format(resp.getWriter(), Language.getInstance(Locale.ENGLISH)); + } catch (InterruptedException e) { + e.printStackTrace(); + resp.getWriter().println("interrupted"); + } + } } @@ -248,6 +288,8 @@ public class Manager extends Page { } } + private Template form = new Template(Manager.class.getResource("Manager.templ")); + @Override public boolean needsLogin() { return false; @@ -263,6 +305,6 @@ public class Manager extends Page { return; } - new ManagementForm(req).output(resp.getWriter(), getLanguage(req), new HashMap()); + form.output(resp.getWriter(), getLanguage(req), new HashMap()); } }