]> WPIA git - gigi.git/commitdiff
Managing subject in self-generated certificates.
authorFelix Dörre <felix@dogcraft.de>
Tue, 8 Jul 2014 20:49:02 +0000 (22:49 +0200)
committerFelix Dörre <felix@dogcraft.de>
Tue, 8 Jul 2014 20:49:49 +0000 (22:49 +0200)
src/org/cacert/gigi/Certificate.java
util/org/cacert/gigi/util/SimpleSigner.java

index 43e6b87beead50bc97bebb664fc795d5de7b714d..11747bd5707880914149ccd449c57cae8f0fdbf8 100644 (file)
@@ -1,5 +1,11 @@
 package org.cacert.gigi;
 
 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;
 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(
                        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()) {
                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;
                }
                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;
                }
                if (rs.getTime(2) != null && rs.getTime(3) == null) {
                        return CertificateStatus.ISSUED;
                }
@@ -61,9 +67,10 @@ public class Certificate {
                        PreparedStatement inserter = DatabaseConnection
                                        .getInstance()
                                        .prepare(
                        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(1, csrName);
                        inserter.setString(2, md);
+                       inserter.setString(3, dn);
                        inserter.execute();
                        id = DatabaseConnection.lastInsertId(inserter);
                } catch (SQLException e) {
                        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;
        }
        public Certificate renew() {
                return null;
        }
index eb7073325db3ea607045d88b53a4cd89be34e7a2..7bee775a3c23b9428a8a613de716f1b54e6449e0 100644 (file)
@@ -24,7 +24,7 @@ public class SimpleSigner {
                DatabaseConnection.init(p);
 
                readyMail = DatabaseConnection.getInstance().prepare(
                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=''"//
                                                + " 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",//
                                        "-out", "../" + crt.getPath(),//
                                        "-days", "356",//
                                        "-batch",//
+                                       "-subj", rs.getString(3),//
                                        "-config", "selfsign.config"
 
                        };
                                        "-config", "selfsign.config"
 
                        };