From f8e05e4376e1d5f00c93307605eb768281ad240b Mon Sep 17 00:00:00 2001 From: Yuuta Liang Date: Tue, 28 Nov 2023 21:08:03 -0800 Subject: Add association tags and generate UML Signed-off-by: Yuuta Liang --- src/main/model/GroupObserver.java | 3 +++ src/main/model/asn1/ASN1Object.java | 3 +++ src/main/model/asn1/Encodable.java | 3 +++ src/main/model/asn1/Tag.java | 2 ++ src/main/model/ca/CertificationAuthority.java | 9 +++++++++ src/main/model/ca/Template.java | 2 ++ src/main/model/csr/Attribute.java | 3 +++ src/main/model/csr/Attributes.java | 2 ++ src/main/model/csr/CertificationRequest.java | 4 ++++ src/main/model/csr/CertificationRequestInfo.java | 8 ++++++++ src/main/model/csr/Values.java | 5 +++++ src/main/model/pki/AlgorithmIdentifier.java | 3 +++ src/main/model/pki/SubjectPublicKeyInfo.java | 3 +++ src/main/model/pki/cert/Certificate.java | 4 ++++ src/main/model/pki/cert/Extension.java | 4 ++++ src/main/model/pki/cert/Extensions.java | 5 +++++ src/main/model/pki/cert/TbsCertificate.java | 12 ++++++++++++ src/main/model/pki/cert/Validity.java | 3 +++ src/main/model/pki/crl/CertificateList.java | 4 ++++ src/main/model/pki/crl/CertificateListContent.java | 6 ++++++ src/main/model/pki/crl/RevokedCertificate.java | 4 ++++ src/main/model/x501/AttributeTypeAndValue.java | 3 +++ src/main/model/x501/Name.java | 2 ++ src/main/model/x501/RelativeDistinguishedName.java | 2 ++ 24 files changed, 99 insertions(+) (limited to 'src/main/model') diff --git a/src/main/model/GroupObserver.java b/src/main/model/GroupObserver.java index 41a9aac..8bef502 100644 --- a/src/main/model/GroupObserver.java +++ b/src/main/model/GroupObserver.java @@ -1,5 +1,7 @@ package model; +import annotations.Assoc; + import java.util.HashMap; import java.util.Map; @@ -10,6 +12,7 @@ public class GroupObserver implements Observer { /** * The map. Because Java doesn't have dependent maps, they are left here as unchecked. */ + @Assoc(partOf = true) private final Map map = new HashMap<>(); /** diff --git a/src/main/model/asn1/ASN1Object.java b/src/main/model/asn1/ASN1Object.java index ca10fa6..1e4d600 100644 --- a/src/main/model/asn1/ASN1Object.java +++ b/src/main/model/asn1/ASN1Object.java @@ -1,5 +1,6 @@ package model.asn1; +import annotations.Assoc; import model.asn1.exceptions.ParseException; import model.asn1.parsing.BytesReader; @@ -28,6 +29,7 @@ public class ASN1Object implements Encodable { public static final Tag TAG_SET = new Tag(TagClass.UNIVERSAL, true, 0x11); // The ASN.1 type tag. + @Assoc(partOf = true) private final Tag tag; // The value length for implementation parsing purposes (only available if the object is parsed) @@ -37,6 +39,7 @@ public class ASN1Object implements Encodable { private final Byte[] value; // The parent ASN.1 type tag, if required for EXPLICIT tagging with a CONTEXT SPECIFIC tag number. + @Assoc(lowerBond = 0, partOf = true) private final Tag parentTag; /** diff --git a/src/main/model/asn1/Encodable.java b/src/main/model/asn1/Encodable.java index 547029c..64d5f60 100644 --- a/src/main/model/asn1/Encodable.java +++ b/src/main/model/asn1/Encodable.java @@ -5,5 +5,8 @@ package model.asn1; */ @FunctionalInterface public interface Encodable { + /** + * EFFECTS: Encode the object into DER bytes. + */ Byte[] encodeDER(); } diff --git a/src/main/model/asn1/Tag.java b/src/main/model/asn1/Tag.java index 7fb8ae4..9b6a480 100644 --- a/src/main/model/asn1/Tag.java +++ b/src/main/model/asn1/Tag.java @@ -1,5 +1,6 @@ package model.asn1; +import annotations.Assoc; import model.asn1.exceptions.ParseException; import model.asn1.parsing.BytesReader; @@ -7,6 +8,7 @@ import model.asn1.parsing.BytesReader; * Represents the metadata (tag) of an ASN.1 type. */ public class Tag implements Encodable { + @Assoc(partOf = true) private final TagClass cls; private final boolean constructive; private final int number; diff --git a/src/main/model/ca/CertificationAuthority.java b/src/main/model/ca/CertificationAuthority.java index b118637..b724e83 100644 --- a/src/main/model/ca/CertificationAuthority.java +++ b/src/main/model/ca/CertificationAuthority.java @@ -1,5 +1,6 @@ package model.ca; +import annotations.Assoc; import model.Event; import model.EventLog; import model.Observer; @@ -44,21 +45,25 @@ public class CertificationAuthority { /** * The RSA2048 private key. */ + @Assoc(partOf = true, lowerBond = 0) private RSAPrivateKey key; /** * The public key. */ + @Assoc(partOf = true, lowerBond = 0) private RSAPublicKey publicKey; /** * The signed certificate. */ + @Assoc(partOf = true, lowerBond = 0) private Certificate certificate; /** * Signed certificates. */ + @Assoc(lowerBond = 0) private final List signed; /** @@ -69,16 +74,19 @@ public class CertificationAuthority { /** * Revoked certs. */ + @Assoc(lowerBond = 0) private final List revoked; /** * Certificate templates. */ + @Assoc(lowerBond = 0) private final List