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 --- img/uml.all.pdf | Bin 0 -> 35510 bytes img/uml.assoc.pdf | Bin 0 -> 31783 bytes img/uml.type.pdf | Bin 0 -> 24371 bytes 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 ++ src/main/ui/gui/IssueDialog.java | 4 +++ src/main/ui/gui/MainUI.java | 34 +++++++++++++++++++++ src/main/ui/gui/RevokeDialog.java | 7 +++++ src/main/ui/gui/TemplateEditDialog.java | 2 ++ src/main/ui/gui/widgets/CertEditDialog.java | 6 ++++ src/main/ui/gui/widgets/CertTableModel.java | 3 ++ src/main/ui/gui/widgets/LogTableModel.java | 2 ++ src/main/ui/gui/widgets/QRPanel.java | 2 ++ src/main/ui/gui/widgets/TemplateTableModel.java | 2 ++ 36 files changed, 161 insertions(+) create mode 100644 img/uml.all.pdf create mode 100644 img/uml.assoc.pdf create mode 100644 img/uml.type.pdf diff --git a/img/uml.all.pdf b/img/uml.all.pdf new file mode 100644 index 0000000..5cd8cd5 Binary files /dev/null and b/img/uml.all.pdf differ diff --git a/img/uml.assoc.pdf b/img/uml.assoc.pdf new file mode 100644 index 0000000..39d5908 Binary files /dev/null and b/img/uml.assoc.pdf differ diff --git a/img/uml.type.pdf b/img/uml.type.pdf new file mode 100644 index 0000000..75855bf Binary files /dev/null and b/img/uml.type.pdf differ 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