package org.cacert.gigi.output;
-import java.sql.SQLException;
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+import java.security.cert.X509Certificate;
import java.util.Map;
-import org.cacert.gigi.Certificate;
+import org.cacert.gigi.dbObjects.Certificate;
+import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.output.template.IterableDataset;
public class CertificateIterable implements IterableDataset {
- Certificate[] certificates;
+ private Certificate[] certificates;
public CertificateIterable(Certificate[] certificates) {
this.certificates = certificates;
}
- int i = 0;
+ private int i = 0;
@Override
public boolean next(Language l, Map<String, Object> vars) {
return false;
}
Certificate c = certificates[i++];
- try {
- vars.put("state", l.getTranslation(c.getStatus().toString().toLowerCase()));
- } catch (SQLException e) {
- vars.put("state", "Failed");
- e.printStackTrace();
- }
+ vars.put("state", c.getStatus());
vars.put("CN", c.getDistinguishedName());
vars.put("serial", c.getSerial());
vars.put("digest", c.getMessageDigest());
-
- vars.put("issued", "TODO"); // TODO output dates
- vars.put("revoked", "TODO");
- vars.put("expire", "TODO");
+ vars.put("profile", c.getProfile().getVisibleName());
+ try {
+ CertificateStatus st = c.getStatus();
+ vars.put("revokable", st != CertificateStatus.REVOKED && st == CertificateStatus.ISSUED);
+ if (st == CertificateStatus.ISSUED || st == CertificateStatus.REVOKED) {
+ X509Certificate cert = c.cert();
+ vars.put("issued", cert.getNotBefore());
+ vars.put("expire", cert.getNotAfter());
+ } else {
+ vars.put("issued", l.getTranslation("N/A"));
+ vars.put("expire", l.getTranslation("N/A"));
+ }
+ if (st == CertificateStatus.REVOKED) {
+ vars.put("revoked", c.getRevocationDate());
+ } else {
+ vars.put("revoked", "n/a");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (GeneralSecurityException e) {
+ e.printStackTrace();
+ }
return true;
}
}