aboutsummaryrefslogtreecommitdiff
path: root/src/test/model/ca/CertificationAuthorityTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/model/ca/CertificationAuthorityTest.java')
-rw-r--r--src/test/model/ca/CertificationAuthorityTest.java79
1 files changed, 73 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);
+ }
}