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 {
}
}
- 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());
}
}
- 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());