1 package club.wpia.gigi.output;
3 import java.io.IOException;
4 import java.security.GeneralSecurityException;
5 import java.security.cert.X509Certificate;
9 import club.wpia.gigi.GigiApiException;
10 import club.wpia.gigi.dbObjects.Certificate;
11 import club.wpia.gigi.dbObjects.Certificate.CertificateStatus;
12 import club.wpia.gigi.localisation.Language;
13 import club.wpia.gigi.output.template.IterableDataset;
14 import club.wpia.gigi.util.CalendarUtil;
16 public class CertificateIterable implements IterableDataset {
18 private Certificate[] certificates;
20 public static final int EXPIRING_IN_DAYS = 14;
22 public CertificateIterable(Certificate[] certificates) {
23 this.certificates = certificates;
29 public boolean next(Language l, Map<String, Object> vars) {
30 if (i >= certificates.length) {
33 Certificate c = certificates[i++];
34 vars.put("state", c.getStatus());
35 vars.put("CN", c.getDistinguishedName());
36 vars.put("serial", c.getSerial());
37 vars.put("digest", c.getMessageDigest());
38 vars.put("profile", c.getProfile().getVisibleName());
39 vars.put("description", c.getDescription());
40 CertificateStatus st = c.getStatus();
41 vars.put("revokable", st != CertificateStatus.REVOKED && st == CertificateStatus.ISSUED);
42 String issuedWarning = "";
43 String expiredWarning = "";
44 vars.put("issued", l.getTranslation("N/A"));
45 vars.put("expire", l.getTranslation("N/A"));
46 vars.put("classIssued", "");
47 vars.put("classExpired", "");
48 vars.put("revoked", l.getTranslation("N/A"));
51 if (st == CertificateStatus.ISSUED || st == CertificateStatus.REVOKED) {
52 X509Certificate cert = c.cert();
53 vars.put("issued", cert.getNotBefore());
54 vars.put("expire", cert.getNotAfter());
56 if (cert.getNotBefore().after(new Date())) {
57 issuedWarning = "bg-warning";
59 vars.put("classIssued", issuedWarning);
61 if (cert.getNotAfter().before(CalendarUtil.timeDifferenceDays(EXPIRING_IN_DAYS))) {
62 expiredWarning = "bg-warning";
64 if (cert.getNotAfter().before(new Date())) {
65 expiredWarning = "bg-danger";
67 vars.put("classExpired", expiredWarning);
70 if (st == CertificateStatus.REVOKED) {
71 vars.put("revoked", c.getRevocationDate());
73 } catch (GigiApiException e) {
75 } catch (IOException e) {
77 } catch (GeneralSecurityException e) {
80 vars.put("login", c.isLoginEnabled());