X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Foutput%2FCertificateIterable.java;h=afc883ff4a13544a04df6bcb6fd91d70c4965a23;hp=431b1c6ea4b924d4497ff8553012d1b699fa4fcc;hb=12323116dd560da2a348b4045dd8af20db764ea5;hpb=9bb5c53022eeb8cf8393a17c6676b88adce11cc9 diff --git a/src/org/cacert/gigi/output/CertificateIterable.java b/src/org/cacert/gigi/output/CertificateIterable.java index 431b1c6e..afc883ff 100644 --- a/src/org/cacert/gigi/output/CertificateIterable.java +++ b/src/org/cacert/gigi/output/CertificateIterable.java @@ -3,16 +3,21 @@ package org.cacert.gigi.output; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.cert.X509Certificate; +import java.util.Date; import java.util.Map; 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; +import org.cacert.gigi.util.CalendarUtil; public class CertificateIterable implements IterableDataset { private Certificate[] certificates; + public static final int EXPIRING_IN_DAYS = 14; + public CertificateIterable(Certificate[] certificates) { this.certificates = certificates; } @@ -25,22 +30,53 @@ public class CertificateIterable implements IterableDataset { return false; } Certificate c = certificates[i++]; - vars.put("state", l.getTranslation(c.getStatus().toString().toLowerCase())); + vars.put("state", c.getStatus()); vars.put("CN", c.getDistinguishedName()); vars.put("serial", c.getSerial()); vars.put("digest", c.getMessageDigest()); vars.put("profile", c.getProfile().getVisibleName()); - X509Certificate cert; try { - cert = c.cert(); - vars.put("issued", DateSelector.getDateFormat().format(cert.getNotBefore())); - vars.put("expire", DateSelector.getDateFormat().format(cert.getNotAfter())); + CertificateStatus st = c.getStatus(); + vars.put("revokable", st != CertificateStatus.REVOKED && st == CertificateStatus.ISSUED); + String issuedWarning = ""; + String expiredWarning = ""; + if (st == CertificateStatus.ISSUED || st == CertificateStatus.REVOKED) { + X509Certificate cert = c.cert(); + vars.put("issued", cert.getNotBefore()); + vars.put("expire", cert.getNotAfter()); + + if (cert.getNotBefore().after(new Date())) { + issuedWarning = "bg-warning"; + } + vars.put("classIssued", issuedWarning); + + if (cert.getNotAfter().before(CalendarUtil.timeDifferenceDays(EXPIRING_IN_DAYS))) { + expiredWarning = "bg-warning"; + } + if (cert.getNotAfter().before(new Date())) { + expiredWarning = "bg-danger"; + } + vars.put("classExpired", expiredWarning); + } 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", l.getTranslation("N/A")); + } } catch (IOException e) { e.printStackTrace(); } catch (GeneralSecurityException e) { e.printStackTrace(); } - vars.put("revoked", "TODO");// TODO output date + if (c.isLoginEnabled()) { + vars.put("login", l.getTranslation("No")); + } else { + vars.put("login", l.getTranslation("Yes")); + } return true; } }