X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2FdbObjects%2FJob.java;h=a505eb41a05a7a70bbf5e3627361803be1185b14;hb=ca4076d5c14224220bc0074ed56c0754bb8248b2;hp=ea8fc97d560215facf75b73c94e99fea143a31da;hpb=bccd4cc0dba0f89aa045b113bac46eb8cc1dab4e;p=gigi.git diff --git a/src/club/wpia/gigi/dbObjects/Job.java b/src/club/wpia/gigi/dbObjects/Job.java index ea8fc97d..a505eb41 100644 --- a/src/club/wpia/gigi/dbObjects/Job.java +++ b/src/club/wpia/gigi/dbObjects/Job.java @@ -6,6 +6,7 @@ import club.wpia.gigi.GigiApiException; import club.wpia.gigi.database.DBEnum; import club.wpia.gigi.database.GigiPreparedStatement; import club.wpia.gigi.database.GigiResultSet; +import club.wpia.gigi.dbObjects.Certificate.RevocationType; import club.wpia.gigi.output.CertificateValiditySelector; public class Job implements IdCachable { @@ -31,7 +32,7 @@ public class Job implements IdCachable { } } - public synchronized static Job sign(Certificate targetId, Date start, String period) throws GigiApiException { + protected synchronized static Job sign(Certificate targetId, Date start, String period) throws GigiApiException { CertificateValiditySelector.checkValidityLength(period); try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `jobs` SET targetId=?, task=?::`jobType`, executeFrom=?, executeTo=?")) { ps.setInt(1, targetId.getId()); @@ -43,7 +44,23 @@ public class Job implements IdCachable { } } - public synchronized static Job revoke(Certificate targetId) { + protected synchronized static Job revoke(Certificate targetId, RevocationType type) { + return revoke(targetId, type, null, null, null); + } + + protected synchronized static Job revoke(Certificate targetId, String challenge, String signature, String message) { + return revoke(targetId, RevocationType.KEY_COMPROMISE, challenge, signature, message); + } + + private synchronized static Job revoke(Certificate targetId, RevocationType type, String challenge, String signature, String message) { + try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `certs` SET `revocationType`=?::`revocationType`, `revocationChallenge`=?, `revocationSignature`=?, `revocationMessage`=? WHERE id=?")) { + ps.setEnum(1, type); + ps.setString(2, challenge); + ps.setString(3, signature); + ps.setString(4, message); + ps.setInt(5, targetId.getId()); + ps.execute(); + } try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `jobs` SET targetId=?, task=?::`jobType`")) { ps.setInt(1, targetId.getId());