From: Felix Dörre Date: Tue, 8 Jul 2014 20:49:02 +0000 (+0200) Subject: Managing subject in self-generated certificates. X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=3fcea04f8aeecdf2b8d4ef36498c65a4d271884b Managing subject in self-generated certificates. --- diff --git a/src/org/cacert/gigi/Certificate.java b/src/org/cacert/gigi/Certificate.java index 43e6b87b..11747bd5 100644 --- a/src/org/cacert/gigi/Certificate.java +++ b/src/org/cacert/gigi/Certificate.java @@ -1,5 +1,11 @@ package org.cacert.gigi; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.GeneralSecurityException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -33,7 +39,7 @@ public class Certificate { return CertificateStatus.DRAFT; } PreparedStatement searcher = DatabaseConnection.getInstance().prepare( - "SELECT csr_name, created, revoked FROM emailcerts WHERE id=?"); + "SELECT crt_name, created, revoked FROM emailcerts WHERE id=?"); searcher.setInt(1, id); ResultSet rs = searcher.executeQuery(); if (!rs.next()) { @@ -42,7 +48,7 @@ public class Certificate { if (rs.getString(2) == null) { return CertificateStatus.BEEING_ISSUED; } - csrName = rs.getString(1); + crtName = rs.getString(1); if (rs.getTime(2) != null && rs.getTime(3) == null) { return CertificateStatus.ISSUED; } @@ -61,9 +67,10 @@ public class Certificate { PreparedStatement inserter = DatabaseConnection .getInstance() .prepare( - "INSERT INTO emailcerts SET csr_name =?, md=?, subject='a', coll_found=0, crt_name=''"); + "INSERT INTO emailcerts SET csr_name =?, md=?, subject=?, coll_found=0, crt_name=''"); inserter.setString(1, csrName); inserter.setString(2, md); + inserter.setString(3, dn); inserter.execute(); id = DatabaseConnection.lastInsertId(inserter); } catch (SQLException e) { @@ -97,6 +104,21 @@ public class Certificate { } } + + public X509Certificate cert() throws IOException, GeneralSecurityException { + InputStream is = null; + X509Certificate crt = null; + try { + is = new FileInputStream(crtName); + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + crt = (X509Certificate) cf.generateCertificate(is); + } finally { + if (is != null) { + is.close(); + } + } + return crt; + } public Certificate renew() { return null; } diff --git a/util/org/cacert/gigi/util/SimpleSigner.java b/util/org/cacert/gigi/util/SimpleSigner.java index eb707332..7bee775a 100644 --- a/util/org/cacert/gigi/util/SimpleSigner.java +++ b/util/org/cacert/gigi/util/SimpleSigner.java @@ -24,7 +24,7 @@ public class SimpleSigner { DatabaseConnection.init(p); readyMail = DatabaseConnection.getInstance().prepare( - "SELECT id, csr_name FROM emailcerts" + "SELECT id, csr_name, subject FROM emailcerts" + " WHERE csr_name is not null"// + " AND created=0"// + " AND crt_name=''"// @@ -113,6 +113,7 @@ public class SimpleSigner { "-out", "../" + crt.getPath(),// "-days", "356",// "-batch",// + "-subj", rs.getString(3),// "-config", "selfsign.config" };