import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.database.GigiPreparedStatement;
import org.cacert.gigi.database.GigiResultSet;
+import org.cacert.gigi.output.template.Outputable;
+import org.cacert.gigi.output.template.TranslateCommand;
import org.cacert.gigi.util.KeyStorage;
-import org.cacert.gigi.util.Notary;
public class Certificate implements IdCachable {
this.owner = owner;
this.dn = dn;
if (dn.size() == 0) {
- throw new GigiApiException("DN must not be empty");
+ throw new GigiApiException("DN must not be empty.");
}
dnString = stringifyDN(dn);
this.md = md;
* This certificate is not in the database, has no id and only exists as
* this java object.
*/
- DRAFT(),
+ DRAFT("draft"),
/**
* The certificate has been signed. It is stored in the database.
* {@link Certificate#cert()} is valid.
*/
- ISSUED(),
+ ISSUED("issued"),
/**
* The certificate has been revoked.
*/
- REVOKED(),
+ REVOKED("revoked"),
/**
* If this certificate cannot be updated because an error happened in
* the signer.
*/
- ERROR();
+ ERROR("error");
- private CertificateStatus() {}
+ private final Outputable name;
+
+ private CertificateStatus(String codename) {
+ this.name = new TranslateCommand(codename);
+
+ }
+
+ public Outputable getName() {
+ return name;
+ }
}
if (getStatus() != CertificateStatus.DRAFT) {
throw new IllegalStateException();
}
- Notary.writeUserAgreement(actor, "CCA", "issue certificate", "", true, 0);
return Job.sign(this, start, period);
}
return null;
}
+
+ public void setLoginEnabled(boolean activate) {
+ if (activate) {
+ if ( !isLoginEnabled()) {
+ try (GigiPreparedStatement prep = new GigiPreparedStatement("INSERT INTO `logincerts` SET `id`=?")) {
+ prep.setInt(1, id);
+ prep.execute();
+ }
+ }
+ } else {
+ try (GigiPreparedStatement prep = new GigiPreparedStatement("DELETE FROM `logincerts` WHERE `id`=?")) {
+ prep.setInt(1, id);
+ prep.execute();
+ }
+ }
+ }
+
+ public boolean isLoginEnabled() {
+ try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT 1 FROM `logincerts` WHERE `id`=?")) {
+ prep.setInt(1, id);
+ GigiResultSet res = prep.executeQuery();
+ return res.next();
+ }
+ }
}