From d7ff9d5e217873609d79efe279f2634e3a3dd8b4 Mon Sep 17 00:00:00 2001 From: Yuuta Liang Date: Wed, 25 Oct 2023 03:30:45 +0800 Subject: Refactor: move all logics into CertificationAuthority Signed-off-by: Yuuta Liang --- src/main/model/ca/CertificationAuthority.java | 480 ++++++++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 src/main/model/ca/CertificationAuthority.java (limited to 'src/main/model/ca/CertificationAuthority.java') diff --git a/src/main/model/ca/CertificationAuthority.java b/src/main/model/ca/CertificationAuthority.java new file mode 100644 index 0000000..feb557c --- /dev/null +++ b/src/main/model/ca/CertificationAuthority.java @@ -0,0 +1,480 @@ +package model.ca; + +import model.asn1.*; +import model.asn1.exceptions.InvalidCAException; +import model.asn1.exceptions.ParseException; +import model.asn1.parsing.BytesReader; +import model.csr.*; +import model.pki.AlgorithmIdentifier; +import model.pki.SubjectPublicKeyInfo; +import model.pki.cert.Certificate; +import model.pki.cert.Extension; +import model.pki.cert.TbsCertificate; +import model.pki.cert.Validity; +import model.pki.crl.CertificateList; +import model.pki.crl.CertificateListContent; +import model.pki.crl.RevokedCertificate; +import model.x501.AttributeTypeAndValue; +import model.x501.Name; +import model.x501.RelativeDistinguishedName; +import ui.Utils; + +import java.math.BigInteger; +import java.security.*; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.RSAPrivateKeySpec; +import java.security.spec.RSAPublicKeySpec; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.*; +import java.util.stream.Stream; + +/** + * Holds a CA private key, its certificate, signed / revoked list, template list, and logs list. + */ +public class CertificationAuthority { + /** + * The RSA2048 private key. + */ + private RSAPrivateKey key; + + /** + * The public key. + */ + private RSAPublicKey publicKey; + + /** + * The signed certificate. + */ + private Certificate certificate; + + /** + * Signed certificates. + */ + private final List signed; + + /** + * The next serial number. + */ + private int serial; + + /** + * Revoked certs. + */ + private final List revoked; + + /** + * Certificate templates. + */ + private final List