From 25ffe8fb84bc5a3b5b45a6b6b71f1963b038d43e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Thu, 4 Jun 2015 19:31:49 +0200 Subject: [PATCH] fix: send the correct CA in the simple Signer --- .../org/cacert/gigi/util/SimpleSigner.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/util-testing/org/cacert/gigi/util/SimpleSigner.java b/util-testing/org/cacert/gigi/util/SimpleSigner.java index d42ec94a..9cae722d 100644 --- a/util-testing/org/cacert/gigi/util/SimpleSigner.java +++ b/util-testing/org/cacert/gigi/util/SimpleSigner.java @@ -80,6 +80,8 @@ public class SimpleSigner { private static GigiPreparedStatement finishJob; + private static GigiPreparedStatement locateCA; + private static volatile boolean running = true; private static Thread runner; @@ -141,7 +143,7 @@ public class SimpleSigner { getSANSs = DatabaseConnection.getInstance().prepare("SELECT contents, type FROM subjectAlternativeNames " + // "WHERE certId=?"); - updateMail = DatabaseConnection.getInstance().prepare("UPDATE certs SET crt_name=?," + " created=NOW(), serial=?, caid=1 WHERE id=?"); + updateMail = DatabaseConnection.getInstance().prepare("UPDATE certs SET crt_name=?," + " created=NOW(), serial=?, caid=? WHERE id=?"); warnMail = DatabaseConnection.getInstance().prepare("UPDATE jobs SET warning=warning+1, state=IF(warning<3, 'open','error') WHERE id=?"); revoke = DatabaseConnection.getInstance().prepare("SELECT certs.id, certs.csr_name,jobs.id FROM jobs INNER JOIN certs ON jobs.targetId=certs.id" + " WHERE jobs.state='open' AND task='revoke'"); @@ -149,6 +151,8 @@ public class SimpleSigner { finishJob = DatabaseConnection.getInstance().prepare("UPDATE jobs SET state='done' WHERE id=?"); + locateCA = DatabaseConnection.getInstance().prepare("SELECT id FROM cacerts WHERE keyname=?"); + runner = new Thread() { @Override @@ -349,12 +353,19 @@ public class SimpleSigner { } try (InputStream is = new FileInputStream(crt)) { + locateCA.setString(1, ca); + GigiResultSet caRs = locateCA.executeQuery(); + if ( !caRs.next()) { + throw new Error("ca " + ca + " was not found"); + } + CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate crtp = (X509Certificate) cf.generateCertificate(is); BigInteger serial = crtp.getSerialNumber(); updateMail.setString(1, crt.getPath()); updateMail.setString(2, serial.toString(16)); - updateMail.setInt(3, id); + updateMail.setInt(3, caRs.getInt("id")); + updateMail.setInt(4, id); updateMail.execute(); finishJob.setInt(1, rs.getInt("jobid")); -- 2.39.2