public class Certificate implements IdCachable {
+ public enum RevocationType implements DBEnum {
+ USER("user"), SUPPORT("support"), PING_TIMEOUT("ping_timeout");
+
+ private final String dbName;
+
+ private RevocationType(String dbName) {
+ this.dbName = dbName;
+ }
+
+ @Override
+ public String getDBName() {
+ return dbName;
+ }
+ }
+
public enum SANType implements DBEnum {
EMAIL("email"), DNS("DNS");
}
public synchronized CertificateStatus getStatus() {
- try (GigiPreparedStatement searcher = new GigiPreparedStatement("SELECT crt_name, created, revoked, serial, caid FROM certs WHERE id=?")) {
+ try (GigiPreparedStatement searcher = new GigiPreparedStatement("SELECT crt_name, created, `revoked`, serial, caid FROM certs LEFT JOIN `certsRevoked` ON `certs`.`id` = `certsRevoked`.`id` WHERE `certs`.id=?")) {
searcher.setInt(1, id);
GigiResultSet rs = searcher.executeQuery();
if ( !rs.next()) {
}
- public Job revoke() {
+ public Job revoke(RevocationType type) {
if (getStatus() != CertificateStatus.ISSUED) {
throw new IllegalStateException();
}
- return Job.revoke(this);
+ return Job.revoke(this, type);
}
public java.util.Date getRevocationDate() {
if (getStatus() == CertificateStatus.REVOKED) {
- try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT revoked FROM certs WHERE id=?")) {
+ try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT revoked FROM `certsRevoked` WHERE id=?")) {
prep.setInt(1, getId());
GigiResultSet res = prep.executeQuery();
if (res.next()) {