]> WPIA git - gigi.git/blob - src/org/cacert/gigi/output/CertificateIterable.java
upd: added correct display of login and revoked status to status table
[gigi.git] / src / org / cacert / gigi / output / CertificateIterable.java
1 package org.cacert.gigi.output;
2
3 import java.io.IOException;
4 import java.security.GeneralSecurityException;
5 import java.security.cert.X509Certificate;
6 import java.util.Map;
7
8 import org.cacert.gigi.dbObjects.Certificate;
9 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
10 import org.cacert.gigi.localisation.Language;
11 import org.cacert.gigi.output.template.IterableDataset;
12
13 public class CertificateIterable implements IterableDataset {
14
15     private Certificate[] certificates;
16
17     public CertificateIterable(Certificate[] certificates) {
18         this.certificates = certificates;
19     }
20
21     private int i = 0;
22
23     @Override
24     public boolean next(Language l, Map<String, Object> vars) {
25         if (i >= certificates.length) {
26             return false;
27         }
28         Certificate c = certificates[i++];
29         vars.put("state", c.getStatus());
30         vars.put("CN", c.getDistinguishedName());
31         vars.put("serial", c.getSerial());
32         vars.put("digest", c.getMessageDigest());
33         vars.put("profile", c.getProfile().getVisibleName());
34         try {
35             CertificateStatus st = c.getStatus();
36             vars.put("revokable", st != CertificateStatus.REVOKED && st == CertificateStatus.ISSUED);
37             if (st == CertificateStatus.ISSUED || st == CertificateStatus.REVOKED) {
38                 X509Certificate cert = c.cert();
39                 vars.put("issued", cert.getNotBefore());
40                 vars.put("expire", cert.getNotAfter());
41             } else {
42                 vars.put("issued", l.getTranslation("N/A"));
43                 vars.put("expire", l.getTranslation("N/A"));
44             }
45             if (st == CertificateStatus.REVOKED) {
46                 vars.put("revoked", c.getRevocationDate());
47             } else {
48                 vars.put("revoked", l.getTranslation("N/A"));
49             }
50         } catch (IOException e) {
51             e.printStackTrace();
52         } catch (GeneralSecurityException e) {
53             e.printStackTrace();
54         }
55         if (c.isLoginEnabled()) {
56             vars.put("login", l.getTranslation("No"));
57         } else {
58             vars.put("login", l.getTranslation("Yes"));
59         }
60         return true;
61     }
62 }