package ui; import model.asn1.ASN1Object; import model.asn1.UtcTime; import model.asn1.exceptions.ParseException; import model.asn1.parsing.BytesReader; import model.ca.Template; import model.csr.CertificationRequest; import model.pki.cert.Certificate; import model.pki.crl.Reason; import model.pki.crl.RevokedCertificate; import java.io.*; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Optional; public class MainScreen implements UIHandler { private final JCA session; /** * EFFECTS: Init with the parent session. */ public MainScreen(JCA session) { this.session = session; } @Override public void help() { System.out.print("mgmt\tView and manage the CA certificate\n" + "issue\tIssue a certificate\n" + "show\tList all issued certificates\n" + "export\tExport a certificate to file (DER)\n" + "template\tManage templates\n" + "revoke\tRevoke a certificate\n" + "crl\t\tSign CRL\n" + "log\t\tView audit logs\n" + "exit\tExit\n" + "help\tPrint this message\n"); } @Override public void show() { session.getCa().getSigned().forEach(cert -> { System.out.printf("%s\t%d\t%s\n", cert.getCertificate().getSubject().toString(), cert.getCertificate().getSerialNumber().getLong(), session.getCa().getRevoked().stream().anyMatch(rev -> rev.getSerialNumber().getLong() == cert.getCertificate().getSerialNumber().getLong()) ? "REVOKED" : "OK"); }); } private CertificationRequest handleIssueInputCSR() { try { return new CertificationRequest(new BytesReader(session.handleInputPEM("CERTIFICATE REQUEST")), false); } catch (ParseException e) { System.out.println(e.getMessage()); return null; } } private void handleIssue(String... args) { if (!session.checkCA(true)) { return; } if (args.length <= 1) { System.out.println("Usage: issue