diff options
Diffstat (limited to 'src/test/model/ca')
-rw-r--r-- | src/test/model/ca/CertificationAuthorityTest.java | 79 | ||||
-rw-r--r-- | src/test/model/ca/TemplateTest.java | 3 |
2 files changed, 76 insertions, 6 deletions
diff --git a/src/test/model/ca/CertificationAuthorityTest.java b/src/test/model/ca/CertificationAuthorityTest.java index 0a9a3eb..7a2e50c 100644 --- a/src/test/model/ca/CertificationAuthorityTest.java +++ b/src/test/model/ca/CertificationAuthorityTest.java @@ -1,5 +1,8 @@ package model.ca; +import model.GroupObserver; +import model.MockObserver; +import model.Observer; import model.asn1.ASN1Object; import model.asn1.ObjectIdentifier; import model.asn1.UtcTime; @@ -17,6 +20,11 @@ import ui.Utils; import java.math.BigInteger; import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.InvalidKeySpecException; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -302,6 +310,14 @@ public class CertificationAuthorityTest { private CertificationAuthority caWithPrivateKey; + private MockObserver<RSAPublicKey> obsPkey; + private MockObserver<Certificate> obsCrt; + private MockObserver<RevokedCertificate> obsRev; + private MockObserver<Template> obsTmp; + private MockObserver<AuditLogEntry> obsLog; + + private GroupObserver obs = new GroupObserver(); + private static Certificate getCert(String pem) throws ParseException { return new Certificate(new BytesReader(Utils.parsePEM(Utils.byteToByte(pem.getBytes(StandardCharsets.UTF_8)), "CERTIFICATE")), false); @@ -418,17 +434,15 @@ public class CertificationAuthorityTest { new Template(template.getName(), true, (Name) null, template.getValidity())); assertEquals(csr.getCertificationRequestInfo().getSubject().toString(), cert.getCertificate().getSubject().toString()); - assertEquals(60, - cert.getCertificate().getValidity().getNotAfter().getTimestamp().getDayOfYear() - - cert.getCertificate().getValidity().getNotBefore().getTimestamp().getDayOfYear()); + assertEquals(cert.getCertificate().getValidity().getNotBefore().getTimestamp(), + cert.getCertificate().getValidity().getNotAfter().getTimestamp().minusDays(60)); assertEquals(1, caWithPrivateKey.getSigned().size()); assertEquals(logCount + 1, caWithPrivateKey.getLogs().size()); Template tmp = new Template(template.getName(), true, "ABCC", template.getValidity()); cert = caWithPrivateKey.signCert(csr.getCertificationRequestInfo(), tmp); - assertEquals(60, - cert.getCertificate().getValidity().getNotAfter().getTimestamp().getDayOfYear() - - cert.getCertificate().getValidity().getNotBefore().getTimestamp().getDayOfYear()); + assertEquals(cert.getCertificate().getValidity().getNotBefore().getTimestamp(), + cert.getCertificate().getValidity().getNotAfter().getTimestamp().minusDays(60)); assertEquals(tmp.getSubject().toString(), cert.getCertificate().getSubject().toString()); assertEquals(2, caWithPrivateKey.getSigned().size()); assertEquals(logCount + 2, caWithPrivateKey.getLogs().size()); @@ -489,4 +503,57 @@ public class CertificationAuthorityTest { assertEquals(++logCount, ca.getLogs().size()); assertNull(ca.findTemplate(template.getName(), false)); } + + @Test + void testObservers() throws NoSuchAlgorithmException, InvalidKeySpecException, InvalidCAException, ParseException, + SignatureException, InvalidKeyException { + obs.register(RSAPublicKey.class, obsPkey = new MockObserver<>()); + obs.register(Certificate.class, obsCrt = new MockObserver<>()); + obs.register(RevokedCertificate.class, obsRev = new MockObserver<>()); + obs.register(Template.class, obsTmp = new MockObserver<>()); + obs.register(AuditLogEntry.class, obsLog = new MockObserver<>()); + ca.registerObserver(obs); + + ca.loadKey(KEY_N, KEY_P, KEY_E); + obsPkey.assertCalled(Observer.DIRECTION_CHANGE); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.signCSR(); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.installCertificate(crtNormal); + obsCrt.assertCalled(Observer.DIRECTION_CHANGE); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.addTemplate(template); + obsTmp.assertCalled(Observer.DIRECTION_ADD); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.removeTemplate(template); + obsTmp.assertCalled(Observer.DIRECTION_REMOVE); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.addTemplate(template); + obsTmp.assertCalled(Observer.DIRECTION_ADD); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.setTemplateEnable(template, true); + obsTmp.assertCalled(Observer.DIRECTION_CHANGE); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + final Certificate cert = ca.signCert(csr.getCertificationRequestInfo(), + new Template(template.getName(), true, (Name) null, template.getValidity())); + obsCrt.assertCalled(Observer.DIRECTION_ADD); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.revoke(new RevokedCertificate(ASN1Object.TAG_SEQUENCE, null, + cert.getCertificate().getSerialNumber(), + new UtcTime(UtcTime.TAG, null, ZonedDateTime.now(ZoneId.of("UTC"))), + Reason.KEY_COMPROMISE)); + obsRev.assertCalled(Observer.DIRECTION_ADD); + obsLog.assertCalled(Observer.DIRECTION_ADD); + + ca.signCRL(); + obsLog.assertCalled(Observer.DIRECTION_ADD); + } } diff --git a/src/test/model/ca/TemplateTest.java b/src/test/model/ca/TemplateTest.java index 1926078..774d38c 100644 --- a/src/test/model/ca/TemplateTest.java +++ b/src/test/model/ca/TemplateTest.java @@ -34,6 +34,9 @@ public class TemplateTest { new PrintableString(PrintableString.TAG, null, "CA"))})}), 123); assertEquals("CN=Test,C=CA", template.getSubject().toString()); + + template = new Template("123", true, (String) null, 123); + assertNull(template.getSubject()); } @Test |