From bcaca28103f4079e14bc2889f10c59d3a7c00228 Mon Sep 17 00:00:00 2001 From: Ivan Herman Date: Fri, 8 Sep 2023 14:37:14 +0200 Subject: [PATCH 1/2] Updated vocabulary and diagram --- vocab/security/template.html | 101 +++- vocab/security/vocabulary.svg | 914 ++++++++++++++++++---------------- vocab/security/vocabulary.yml | 6 + 3 files changed, 581 insertions(+), 440 deletions(-) diff --git a/vocab/security/template.html b/vocab/security/template.html index ce0af578..89e6f7b4 100644 --- a/vocab/security/template.html +++ b/vocab/security/template.html @@ -156,7 +156,7 @@

Specification of terms

using the draw.io (diagrams.net plugin for google). -->
-
Overview diagram of the vocabulary (without the deprecated items, the error codes, and xsd datatypes).
+
Overview diagram of the vocabulary (without the reserved and deprecated items, error codes, and `xsd` datatypes).
A separate, stand-alone SVG version of the diagram, as well as a textual description, are also available. @@ -244,8 +244,103 @@

Deprecated individuals

Diagram description

- Overview diagram of the vocabulary (without the deprecated items). -

t.b.d.

+ Overview diagram of the vocabulary (without the reserved and deprecated items, error codes, and `xsd` datatypes). +

+ The diagram uses boxes, ellipses, and connecting lines with different "styles" + (border color, end marker, line type) to differentiate their semantic meaning; + these styles identify Property, Class, or Datatype, via the shapes used for the + graph nodes, and Superclass, Domain Of, Range, or Contains, via the styles of the connecting lines. + These style names are used in the explanation text in what follows. +

+

+ The diagram is roughly divided in a left and a right section + (although there are some common nodes, see later). + To make this description easier, these will be referred to as the + "Proof Section" and the "Verification Section". + Each section contains, at the top, an ellipse, styled as Class, + and labeled as "Proof", respectively "VerificationMethod". +

+
+

Proof Section

+

+ The left side of the Proof Section contains another ellipse, + styled as Class and labeled as "ProofGraph", and connected + to the ellipse labeled as "Proof" with a connecting line styled as Contains. + There is also a box, styled as Property and labeled as "proof", + connected to the ellipse labeled as "ProofGraph" + with a connecting line styled as Range. +

+

+ There are two more ellipses in the Section, styled as Class + and labeled as "Ed25519Signature2020" and "DataIntegrityProof", + respectively, connected through a line styled as Superclass + to the ellipse labeled as "Proof". + The ellipse labeled as "DataIntegrityProof" is connected, with a connecting + line styled as Domain Of, to a box styled as Property, + and labeled as "cryptosuite". The latter is connected, with a connecting + line styled as Range, to a shape styled as Datatype and labeled as + "cryptosuiteString". +

+

+ The right side of the Section contains a column of labeled boxes, + all styled as Property. The labels, from top to + bottom, are "previousProof", "domain", "challenge", "proofPurpose", + "nonce", "created", "proofValue". + The ellipse labeled as "Proof" is connected to all of these with + connecting lines styled as Domain Of. + The box labeled as "previousProof" is also connected to the ellipse + labeled as "Proof" with a connecting line styled as Range. + The box labeled as "proofValue" is connected, with a connecting line + styled as Range, to a shape styled as Datatype and labeled as "multibase". + Finally, another box, styled as Property and labeled as "digestMultibase", + connects to the same Datatype shape with a connecting line styled as Range. +

+
+
+

VefiricationMethod Section

+ +

+ The right side of the Section contains a column of labeled boxes, + all styled as Property. The labels, from top to bottom, are + "verificationMethod", "authentication", "assertionMethod", + "capabilityDelegation", "capabilityInvocation", and "keyAgreement". All these + boxes are connected, with a connecting lines styled as Range, to + the ellipse labeled "VerificationMethod". +

+

+ The left side of the Section contains a column of three labeled + boxes, all styled as Property. The labels, from top to bottom, are + "expires", "controller", and "revoked". All these are connected, with + connecting lines styled as Domain Of, from the ellipse labeled "VerificationMethod". + Furthermore, the "expires" box is also connected, with a connecting line + styled as Domain Of, from the ellipse labeled "Proof" referred to in the Proof Section. +

+ +

+ The middle of the section contains three ellipses, styled as Class, labeled as + "Multikey, "Ed25519VerificationKey2020", and "JsonWebKey". They are all connected to + the ellipse labeled as "VerificationMethod" with a connecting line styled as Superclass. +

+ +

+ Two boxes, styled as Property and labeled, respectively, as "secretKeyMultibase" + and "publicKeyMultibase", are connected from the ellipse labeled as "Multikey" with + a connecting line styled as Domain Of. + Both these boxes are also connected, with connecting lines styled as Range, + to the shape styled as Datatype and labeled as "multibase", referred to in the Proof Section. +

+ +

+ Finally, two boxes, styled as Property and labeled, respectively, as "secretKeyJwk" + and "publicKeyJwk", are connected from the ellipse labeled as "JsonWebKey" with + a connecting line styled as Domain Of. + Both these boxes are also connected, with connecting lines styled as Range, to + a shape styled as Datatype and labeled as "rdf:JSON". +

+ +
+ +
diff --git a/vocab/security/vocabulary.svg b/vocab/security/vocabulary.svg index 9bcfce5c..6acf7e73 100644 --- a/vocab/security/vocabulary.svg +++ b/vocab/security/vocabulary.svg @@ -1,9 +1,25 @@ - - - + + + + -
+
+
+
+ + Graph containment + +
+
+
+ + Graph con... + + + + +
Class @@ -11,12 +27,12 @@
- Class + Class - + -
+
Property @@ -24,41 +40,43 @@
- Property + Property - - + + -
+
- Subclass + Superclass
- Subclass + Superclass - - + + -
+
Domain +
+ of
- Domain + Domain... - - + + -
+
Range @@ -66,714 +84,736 @@
- Range + Range - + -
-
-
- Datatype +
+
+
+ + Datatype +
- Datatype + Datatype - - + + -
+
-
- - - Proof - - +
+ + + VerificationMethod + +
- Proof + VerificationMethod
- - + + -
+
-
- - - DataIntegrityProof - - +
+ + + controller + +
- DataIntegrityProof + controller
- - + + -
+
-
- - - Ed25519Signature2020 - - +
+ + + revoked + +
- Ed25519Signature2020 + revoked
- - - - + + + + + + + + + + + + + + + + + + -
+
-
- - - domain - - +
+ + + Ed25519VerificationKey2020 + +
- domain + Ed25519VerificationKey2020
- - - - + + + + + + + + -
+
-
- - - challenge - - +
+ + + Proof + +
- challenge + Proof
- - - - - - + + -
+
-
- - - previousProof - - +
+ + + ProofGraph + +
- previousProof + ProofGraph
- - - - + + + + -
+
-
- - - proofPurpose - - +
+ + + proof + +
- proofPurpose + proof
- - - - + + + + -
+
-
- - - proofValue - - +
+ + + domain + +
- proofValue + domain
- - - - + + -
+
-
- - - expires - - +
+ + + challenge + +
- expires + challenge
- - - - + + -
+
-
- - - nonce -
-
-
+
+ + + previousProof + + +
+
+
+ + previousProof + +
+ + + + +
+
+
+ + + proofPurpose + +
+
- nonce + proofPurpose
- - + + -
+
-
- - - cryptosuite - - +
+ + + proofValue + +
- cryptosuite + proofValue
- - - - - - - - + + -
+
-
- - - Multikey - - +
+ + + expires + +
- Multikey + expires
- - - - + + -
+
-
- - - JsonWebKey - - +
+ + + nonce + +
- JsonWebKey + nonce
- - - - - + + -
+
-
- - - publicKeyJwk - - +
+ + + created + +
- publicKeyJwk + created
- - + + + + + + + + + + + + + + + + + + -
+
-
- - - secretKeyJwk - - +
+ + + DataIntegrityProof + +
- secretKeyJwk + DataIntegrityProof
- - - + + -
+
-
- - - publicKeyMultibase - - +
+ + + Ed25519Signature2020 + +
- publicKeyMultibase + Ed25519Signature2020
- - + + + + + + -
+
-
- - - secretKeyMultibase - - +
+ + + cryptosuite + +
- secretKeyMultibase + cryptosuite
- - - - - - - - - + -
+
-
- - - cryptosuiteString - +
+ + cryptosuiteString
- cryptosuiteString + cryptosuiteString
- - - - - -
-
-
- - - rdf:JSON - - -
-
-
-
- rdf:JSON -
- - - - + + + + + + - + -
+
-
- - +
+ + verificationMethod - - + +
- verificationMethod + verificationMethod
- - + + -
+
-
- - - VerificationMethod - - +
+ + + authentication + +
- VerificationMethod + authentication
- - + + -
+
-
- - - Ed25519VerificationKey2020 - - +
+ + + assertionMethod + +
- Ed25519VerificationKey2020 + assertionMethod
- - - - + + -
+
-
- - - controller - - +
+ + + capabilityDelegation + +
- controller + capabilityDelegation
- - + + -
+
-
- - - authentication - - +
+ + + capabilityInvocation + +
- authentication + capabilityInvocation
- - + + -
+
-
- - - assertionMethod - - +
+ + + keyAgreement + +
- assertionMethod + keyAgreement
- - + + -
+
-
- - - capabilityDelegation - +
+ + multibase
- capabilityDelegation + multibase
- - + + + + -
+
-
- - - capabilityInvocation - - +
+ + + Multikey + +
- capabilityInvocation + Multikey
- - + + + + + + + -
+
-
- - - keyAgreement - - +
+ + + JsonWebKey + +
- keyAgreement + JsonWebKey
- - - - + + + +
+
+
+ + rdf:JSON + +
+
+
+
+ rdf:JSON +
+ + + + + + + + + + + + +
+ -
+
-
- - - revoked -
-
-
+
+ + + publicKeyMultibase + +
- revoked - + publicKeyMultibase
- - - - - - - - - - - - - - - - - - - - -
-
-
- - - created -
-
-
+
+ + + +
+
+
+ + + secretKeyMultibase + +
- created - + secretKeyMultibase
- - - + + -
+
-
- - - ProofGraph - - +
+ + + secretKeyJwk + +
- ProofGraph + secretKeyJwk
- - + + -
+
-
- - - proof - - +
+ + + publicKeyJwk + +
- proof + publicKeyJwk
- - - - - - -
-
-
- - - contains + + + + + + + -
+
+
+ + + digestMultibase + - +
- - contains - + + digestMultibase + + + + diff --git a/vocab/security/vocabulary.yml b/vocab/security/vocabulary.yml index 1f817c2d..451339f9 100644 --- a/vocab/security/vocabulary.yml +++ b/vocab/security/vocabulary.yml @@ -305,6 +305,12 @@ property: defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-revoked domain: sec:VerificationMethod + - id: digestMultibase + label: Digest multibase + comment: (Feature at Risk) The Working Group is currently attempting to determine whether cryptographic hash expression formats can be unified across all of the VCWG core specifications. Candidates for this mechanism include `digestSRI` and `digestMultibase`. + range: multibase + defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-digestmultibase + # These are property specifications that have been defined in a CCG document and are in use; for the time being, these are considered as "reserved" - id: allowedAction From f50348fcf93451fd77a38a68a720df571c3037d3 Mon Sep 17 00:00:00 2001 From: Ivan Herman Date: Sat, 9 Sep 2023 09:00:13 +0200 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Ted Thibodeau Jr --- vocab/security/template.html | 92 ++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 40 deletions(-) diff --git a/vocab/security/template.html b/vocab/security/template.html index 89e6f7b4..2f502fd4 100644 --- a/vocab/security/template.html +++ b/vocab/security/template.html @@ -250,15 +250,15 @@

Diagram description

(border color, end marker, line type) to differentiate their semantic meaning; these styles identify Property, Class, or Datatype, via the shapes used for the graph nodes, and Superclass, Domain Of, Range, or Contains, via the styles of the connecting lines. - These style names are used in the explanation text in what follows. + These style names are used in the explanation text that follows, below.

- The diagram is roughly divided in a left and a right section - (although there are some common nodes, see later). - To make this description easier, these will be referred to as the + The diagram is roughly divided into left and right sections + (although there are some common nodes; see later). + To make this description easier to understand, these will be referred to as the "Proof Section" and the "Verification Section". - Each section contains, at the top, an ellipse, styled as Class, - and labeled as "Proof", respectively "VerificationMethod". + Each of these sections has an ellipse at the top, styled as Class, + and respectively labeled as "Proof" and "VerificationMethod".

Proof Section

@@ -271,15 +271,18 @@

Proof Section

with a connecting line styled as Range.

- There are two more ellipses in the Section, styled as Class + There are two more ellipses in this section, styled as Class and labeled as "Ed25519Signature2020" and "DataIntegrityProof", - respectively, connected through a line styled as Superclass - to the ellipse labeled as "Proof". - The ellipse labeled as "DataIntegrityProof" is connected, with a connecting - line styled as Domain Of, to a box styled as Property, - and labeled as "cryptosuite". The latter is connected, with a connecting - line styled as Range, to a shape styled as Datatype and labeled as - "cryptosuiteString". + each connected to the ellipse labeled as "Proof" + with connecting lines styled as Superclass. + The ellipse labeled as "DataIntegrityProof" is + also connected to a box styled as Property, + and labeled as "cryptosuite", with a connecting + line styled as Domain Of. The "cryptosuite" Property box + is connected to a shape + styled as Datatype and labeled as + "cryptosuiteString", with a connecting + line styled as Range.

The right side of the Section contains a column of labeled boxes, @@ -290,52 +293,61 @@

Proof Section

connecting lines styled as Domain Of. The box labeled as "previousProof" is also connected to the ellipse labeled as "Proof" with a connecting line styled as Range. - The box labeled as "proofValue" is connected, with a connecting line - styled as Range, to a shape styled as Datatype and labeled as "multibase". + The box labeled as "proofValue" is connected to a shape styled as Datatype + and labeled as "multibase", with a connecting line styled as Range. Finally, another box, styled as Property and labeled as "digestMultibase", - connects to the same Datatype shape with a connecting line styled as Range. + is connected to the same "multibase" Datatype shape with + a connecting line styled as Range.

-

VefiricationMethod Section

+

VerificationMethod Section

- The right side of the Section contains a column of labeled boxes, + The right side of this Section contains a column of labeled boxes, all styled as Property. The labels, from top to bottom, are "verificationMethod", "authentication", "assertionMethod", - "capabilityDelegation", "capabilityInvocation", and "keyAgreement". All these - boxes are connected, with a connecting lines styled as Range, to - the ellipse labeled "VerificationMethod". + "capabilityDelegation", "capabilityInvocation", and "keyAgreement". + Each of these boxes is connected to + the ellipse labeled "VerificationMethod", + with a connecting line styled as Range.

- The left side of the Section contains a column of three labeled + The left side of this Section contains a column of three labeled boxes, all styled as Property. The labels, from top to bottom, are - "expires", "controller", and "revoked". All these are connected, with - connecting lines styled as Domain Of, from the ellipse labeled "VerificationMethod". - Furthermore, the "expires" box is also connected, with a connecting line - styled as Domain Of, from the ellipse labeled "Proof" referred to in the Proof Section. + "expires", "controller", and "revoked". Each of these is connected + to the ellipse labeled "VerificationMethod", + with connecting lines styled as Domain Of. + The "expires" Property box is also connected to the ellipse + labeled "Proof" in the Proof Section, with a connecting line + styled as Domain Of.

- The middle of the section contains three ellipses, styled as Class, labeled as - "Multikey, "Ed25519VerificationKey2020", and "JsonWebKey". They are all connected to - the ellipse labeled as "VerificationMethod" with a connecting line styled as Superclass. + The middle of this section contains three ellipses, + styled as Class, and labeled as + "Multikey, "Ed25519VerificationKey2020", and "JsonWebKey". + Each of these is connected to + the ellipse labeled as "VerificationMethod" + with a connecting line styled as Superclass.

- Two boxes, styled as Property and labeled, respectively, as "secretKeyMultibase" - and "publicKeyMultibase", are connected from the ellipse labeled as "Multikey" with - a connecting line styled as Domain Of. - Both these boxes are also connected, with connecting lines styled as Range, - to the shape styled as Datatype and labeled as "multibase", referred to in the Proof Section. + Two boxes, styled as Property and labeled as "secretKeyMultibase" + and "publicKeyMultibase", are connected to the ellipse + labeled as "Multikey" with a connecting line styled as Domain Of. + Each of these boxes is also connected to the shape in the Proof + section styled as Datatype and labeled as "multibase", + with connecting lines styled as Range.

- Finally, two boxes, styled as Property and labeled, respectively, as "secretKeyJwk" - and "publicKeyJwk", are connected from the ellipse labeled as "JsonWebKey" with - a connecting line styled as Domain Of. - Both these boxes are also connected, with connecting lines styled as Range, to - a shape styled as Datatype and labeled as "rdf:JSON". + Finally, two boxes, styled as Property and labeled "secretKeyJwk" + and "publicKeyJwk", are connected to the ellipse labeled "JsonWebKey" + with a connecting line styled as Domain Of. + Each of these boxes is also connected to + a shape styled as Datatype and labeled as "rdf:JSON", + with connecting lines styled as Range.