# Mermaid Support for Envelope ## by Wolf McNally, Blockchain Commons These examples compare a series of Gordian Envelopes output first in "envelope notation" and then in [Mermaid](https://mermaid-js.github.io/mermaid/#/) format. ### Plaintext ``` ``` ```mermaid graph LR 1["886a0c85<br/>#quot;Hello.#quot;"] style 1 stroke:blue,stroke-width:3.0px ``` * Leaf elements (elements having no children) have blue outlines. * CBOR leaf elements (like strings, but they can be of any complexity) are represented by rectangles. * The digests shown in each element are the first four bytes of the 32-byte digest associated with each element. * Every element you see is *itself* an envelope that can be extracted and manipulated. If two digests match, the contents of the envelopes they represent also necessarily match. ### Signed Plaintext ``` "Hello." [ verifiedBy: Signature ] ``` ```mermaid graph LR 1(("c3915ed3<br/>NODE")) 2["886a0c85<br/>#quot;Hello.#quot;"] 3(["5f656bf5<br/>ASSERTION"]) 4[/"d59f8c0f<br/>verifiedBy"/] 5["9f388294<br/>Signature"] 1 -->|subj| 2 1 --> 3 3 -->|pred| 4 3 -->|obj| 5 style 1 stroke:red,stroke-width:3.0px style 2 stroke:blue,stroke-width:3.0px style 3 stroke:red,stroke-width:3.0px style 4 stroke:blue,stroke-width:3.0px style 5 stroke:blue,stroke-width:3.0px linkStyle 0 stroke:red,stroke-width:2.0px linkStyle 1 stroke-width:2.0px linkStyle 2 stroke:green,stroke-width:2.0px linkStyle 3 stroke:blue,stroke-width:2.0px ``` * Internal elements (elements with children) are represented with red outlines. * A `NODE` element appears when one or more assertions are present on a subject. They are represented by circles. They have one arm for the `subject` and an additional arm for each assertion. * An `ASSERTION` element is represented by the Mermaid `stadium` shape, and has exactly two arms: `predicate` and `object`. * Well-known predicates like `verifiedBy` are represented by trapezoids, and are encoded as short integers. ### Encrypted Subject ``` ENCRYPTED [ "knows": "Bob" ] ``` ```mermaid graph LR 1(("e54d6fd3<br/>NODE")) 2>"27840350<br/>ENCRYPTED"] 3(["55560bdf<br/>ASSERTION"]) 4["7092d620<br/>#quot;knows#quot;"] 5["9a771715<br/>#quot;Bob#quot;"] 1 -->|subj| 2 1 --> 3 3 -->|pred| 4 3 -->|obj| 5 style 1 stroke:red,stroke-width:3.0px style 2 stroke:blue,stroke-width:3.0px,stroke-dasharray:5.0 5.0 style 3 stroke:red,stroke-width:3.0px style 4 stroke:blue,stroke-width:3.0px style 5 stroke:blue,stroke-width:3.0px linkStyle 0 stroke:red,stroke-width:2.0px linkStyle 1 stroke-width:2.0px linkStyle 2 stroke:green,stroke-width:2.0px linkStyle 3 stroke:blue,stroke-width:2.0px ``` * `ENCRYPTED` and `ELIDED` elements appear with dotted outlines in the Mermaid output, to indicate that they may be replaced with their unencrypted/unelided counterparts without invalidating the digest tree. * `ENCRYPTED` elements are represented by the Mermaid `asymmetric` shape. ### Elided Object ``` "Alice" [ "knows": ELIDED ] ``` ```mermaid graph LR 1(("e54d6fd3<br/>NODE")) 2["27840350<br/>#quot;Alice#quot;"] 3(["55560bdf<br/>ASSERTION"]) 4["7092d620<br/>#quot;knows#quot;"] 5{{"9a771715<br/>ELIDED"}} 1 -->|subj| 2 1 --> 3 3 -->|pred| 4 3 -->|obj| 5 style 1 stroke:red,stroke-width:3.0px style 2 stroke:blue,stroke-width:3.0px style 3 stroke:red,stroke-width:3.0px style 4 stroke:blue,stroke-width:3.0px style 5 stroke:blue,stroke-width:3.0px,stroke-dasharray:5.0 5.0 linkStyle 0 stroke:red,stroke-width:2.0px linkStyle 1 stroke-width:2.0px linkStyle 2 stroke:green,stroke-width:2.0px linkStyle 3 stroke:blue,stroke-width:2.0px ``` * `ELIDED` elements are represented by dotted hexagons. * Note that the digest of the element "Bob" in the previous example matches the digest of the elided element above. * Likewise, note that the digest of the subject "Alice" matches the encrypted version in the previous example. * In fact, *all* the digests in this envelope match those in the previous example, indicating that the unencrypted/unelided form of this envelope has the exact same content. ### Top-Level Assertion ``` "knows": "Bob" ``` ```mermaid graph LR 1(["55560bdf<br/>ASSERTION"]) 2["7092d620<br/>#quot;knows#quot;"] 3["9a771715<br/>#quot;Bob#quot;"] 1 -->|pred| 2 1 -->|obj| 3 style 1 stroke:red,stroke-width:3.0px style 2 stroke:blue,stroke-width:3.0px style 3 stroke:blue,stroke-width:3.0px linkStyle 0 stroke:green,stroke-width:2.0px linkStyle 1 stroke:blue,stroke-width:2.0px ``` * As mentioned previously, all of the element types are themselves envelopes, and can therefore stand alone. In this case, we have extracted a single assertion. ### Signed Subject ``` "Alice" [ "knows": "Bob" "knows": "Carol" verifiedBy: Signature ] ``` ```mermaid graph LR 1(("efed9563<br/>NODE")) 2["27840350<br/>#quot;Alice#quot;"] 3(["55560bdf<br/>ASSERTION"]) 4["7092d620<br/>#quot;knows#quot;"] 5["9a771715<br/>#quot;Bob#quot;"] 6(["71a30690<br/>ASSERTION"]) 7["7092d620<br/>#quot;knows#quot;"] 8["ad2c454b<br/>#quot;Carol#quot;"] 9(["dbb0ad16<br/>ASSERTION"]) 10[/"d59f8c0f<br/>verifiedBy"/] 11["858d19e2<br/>Signature"] 1 -->|subj| 2 1 --> 3 3 -->|pred| 4 3 -->|obj| 5 1 --> 6 6 -->|pred| 7 6 -->|obj| 8 1 --> 9 9 -->|pred| 10 9 -->|obj| 11 style 1 stroke:red,stroke-width:3.0px style 2 stroke:blue,stroke-width:3.0px style 3 stroke:red,stroke-width:3.0px style 4 stroke:blue,stroke-width:3.0px style 5 stroke:blue,stroke-width:3.0px style 6 stroke:red,stroke-width:3.0px style 7 stroke:blue,stroke-width:3.0px style 8 stroke:blue,stroke-width:3.0px style 9 stroke:red,stroke-width:3.0px style 10 stroke:blue,stroke-width:3.0px style 11 stroke:blue,stroke-width:3.0px linkStyle 0 stroke:red,stroke-width:2.0px linkStyle 1 stroke-width:2.0px linkStyle 2 stroke:green,stroke-width:2.0px linkStyle 3 stroke:blue,stroke-width:2.0px linkStyle 4 stroke-width:2.0px linkStyle 5 stroke:green,stroke-width:2.0px linkStyle 6 stroke:blue,stroke-width:2.0px linkStyle 7 stroke-width:2.0px linkStyle 8 stroke:green,stroke-width:2.0px linkStyle 9 stroke:blue,stroke-width:2.0px ``` * A signature signs only the digest of the subject, in this case "Alice". So in this case, the "knows" assertions are not signed. * Note that for every internal element, the children are displayed in the order that their digests are combined to form the parent's digest. In particular a `NODE`'s, `ASSERTION` elements are ordered by ascending digest value, so the order of the three assertion digests here: `3ed95464`, `55560bdf`, `71a30690` reflects that ascending order. ### Elided Assertions ``` "Alice" [ ELIDED (3) ] ``` ```mermaid graph LR 1(("efed9563<br/>NODE")) 2["27840350<br/>#quot;Alice#quot;"] 3{{"55560bdf<br/>ELIDED"}} 4{{"71a30690<br/>ELIDED"}} 5{{"dbb0ad16<br/>ELIDED"}} 1 -->|subj| 2 1 --> 3 1 --> 4 1 --> 5 style 1 stroke:red,stroke-width:3.0px style 2 stroke:blue,stroke-width:3.0px style 3 stroke:blue,stroke-width:3.0px,stroke-dasharray:5.0 5.0 style 4 stroke:blue,stroke-width:3.0px,stroke-dasharray:5.0 5.0 style 5 stroke:blue,stroke-width:3.0px,stroke-dasharray:5.0 5.0 linkStyle 0 stroke:red,stroke-width:2.0px linkStyle 1 stroke-width:2.0px linkStyle 2 stroke-width:2.0px linkStyle 3 stroke-width:2.0px ``` * This is the same envelope from the previous example with its assertions elided. Note that the digests at every level still present are all the same. ### Wrapped Then Signed ``` { "Alice" [ "knows": "Bob" "knows": "Carol" ] } [ verifiedBy: Signature ] ``` ```mermaid graph LR 1(("fde86f77<br/>NODE")) 2[/"3cc750a3<br/>WRAPPED"\] 3(("c733401e<br/>NODE")) 4["27840350<br/>#quot;Alice#quot;"] 5(["55560bdf<br/>ASSERTION"]) 6["7092d620<br/>#quot;knows#quot;"] 7["9a771715<br/>#quot;Bob#quot;"] 8(["71a30690<br/>ASSERTION"]) 9["7092d620<br/>#quot;knows#quot;"] 10["ad2c454b<br/>#quot;Carol#quot;"] 11(["ab430e79<br/>ASSERTION"]) 12[/"d59f8c0f<br/>verifiedBy"/] 13["2a13e7f6<br/>Signature"] 1 -->|subj| 2 2 -->|subj| 3 3 -->|subj| 4 3 --> 5 5 -->|pred| 6 5 -->|obj| 7 3 --> 8 8 -->|pred| 9 8 -->|obj| 10 1 --> 11 11 -->|pred| 12 11 -->|obj| 13 style 1 stroke:red,stroke-width:3.0px style 2 stroke:red,stroke-width:3.0px style 3 stroke:red,stroke-width:3.0px style 4 stroke:blue,stroke-width:3.0px style 5 stroke:red,stroke-width:3.0px style 6 stroke:blue,stroke-width:3.0px style 7 stroke:blue,stroke-width:3.0px style 8 stroke:red,stroke-width:3.0px style 9 stroke:blue,stroke-width:3.0px style 10 stroke:blue,stroke-width:3.0px style 11 stroke:red,stroke-width:3.0px style 12 stroke:blue,stroke-width:3.0px style 13 stroke:blue,stroke-width:3.0px linkStyle 0 stroke:red,stroke-width:2.0px linkStyle 1 stroke:red,stroke-width:2.0px linkStyle 2 stroke:red,stroke-width:2.0px linkStyle 3 stroke-width:2.0px linkStyle 4 stroke:green,stroke-width:2.0px linkStyle 5 stroke:blue,stroke-width:2.0px linkStyle 6 stroke-width:2.0px linkStyle 7 stroke:green,stroke-width:2.0px linkStyle 8 stroke:blue,stroke-width:2.0px linkStyle 9 stroke-width:2.0px linkStyle 10 stroke:green,stroke-width:2.0px linkStyle 11 stroke:blue,stroke-width:2.0px ``` * In this case the signature still only signs the subject, but the subject is an entire envelope that's been wrapped. * `WRAPPED` elements are represented by trapezoids. They have exactly one arm, which is the root of the wrapped envelope. ### Encrypt to Recipients ``` ENCRYPTED [ hasRecipient: SealedMessage hasRecipient: SealedMessage ] ``` ```mermaid graph TB 1(("fd42b5f0<br/>NODE")) 2>"886a0c85<br/>ENCRYPTED"] 3(["6c23d690<br/>ASSERTION"]) 4[/"f4af70d6<br/>hasRecipient"/] 5["b2aa6ce6<br/>SealedMessage"] 6(["f99f7424<br/>ASSERTION"]) 7[/"f4af70d6<br/>hasRecipient"/] 8["93c8e2de<br/>SealedMessage"] 1 -->|subj| 2 1 --> 3 3 -->|pred| 4 3 -->|obj| 5 1 --> 6 6 -->|pred| 7 6 -->|obj| 8 style 1 stroke:red,stroke-width:3.0px style 2 stroke:blue,stroke-width:3.0px,stroke-dasharray:5.0 5.0 style 3 stroke:red,stroke-width:3.0px style 4 stroke:blue,stroke-width:3.0px style 5 stroke:blue,stroke-width:3.0px style 6 stroke:red,stroke-width:3.0px style 7 stroke:blue,stroke-width:3.0px style 8 stroke:blue,stroke-width:3.0px linkStyle 0 stroke:red,stroke-width:2.0px linkStyle 1 stroke-width:2.0px linkStyle 2 stroke:green,stroke-width:2.0px linkStyle 3 stroke:blue,stroke-width:2.0px linkStyle 4 stroke-width:2.0px linkStyle 5 stroke:green,stroke-width:2.0px linkStyle 6 stroke:blue,stroke-width:2.0px ``` * Top-to-bottom layout is also supported. ### Complex Metadata ``` Digest(e8aa201d) [ "format": "EPUB" "work": CID(7fb90a9d) [ "author": CID(9c747ace) [ dereferenceVia: "LibraryOfCongress" hasName: "Ayn Rand" ] "isbn": "9780451191144" dereferenceVia: "LibraryOfCongress" hasName: "Atlas Shrugged" [ language: "en" ] hasName: "La rebelión de Atlas" [ language: "es" ] isA: "novel" ] dereferenceVia: "IPFS" ] ``` * **NOTE: Click the diagram to examine it in a larger window.** [![](https://mermaid.ink/img/pako:eNqdmOFu2zYQx1_F0L6kQNryjqRIekOBrsmAAEFSNNs-rN4HSqQcr46UyfLarO1T7RH2YpOoKKW8aNUtQAD7fPe_f-5HnpJ8TPLK-WSZrGt7e704f7MqF-0XHB2tEoWF81bL77L6-YuLy5PTVfLkSf85vl0lPmepkhLDxyebtd81R15biwzck1Xya5_Jj9pUBVJxn4uQ-vLq6vTNj2eXF23OvZx4-3yVFGAgT70NSc7Xvmi_y9z_vLGr5Pm9nGzVDDJnW72Q-M3v-6r59uz1D1f9q4fGadc4Ry1Tm7mpxqrNETrLwBVpJFdU9Y1tDgR119oWWZZJEeWevv7p-4NM07X21ipUCFOtgbVJ2lswmdGR3vuqfnegBwFHoZjzUvBHcEDHQ3GBkvl-LK_OTo5UkRlmTQQDAg0mTJa5NJ10Nh8HdDwyITUTUkY_xPkmq219d1m8qsp17Xe7w58o0IHCMM0YThrp8Didg0zTIlK3--a6qg8ldTekTEImucwfG5Jp1ThLrXQqfRiSyZVQNvdfhoRszpAQZg8J8f8NCQMtr4SAQuWTRgKtrIA09bI_6Nd2d2FvfOSgwySzTAAHHjl4eVcu3tjSHTYOdAz4XEvDJhurGY0DFGlyh8qYxxZJB8W0QEwqbOys2drd4uq63q_X_tAf7wmh496gn_LHAyEp0xyE7W_s1pbrvV1HBnnHRjCTSW3iyfjysGeAkQNDkzE12TPA0EYjl6KfyWb3MmoX9hdLU-d1HrUrqz_89rBjv8FAaenBTnacQYEHCkwA5u2BfYQC7yhIK9AxFu-2c7uofea3m7__KhfOLwKVA5siwLASBW_P1-SGnwNDdDCcw0K3A4ph_KtnfzOKjLFCTh4AIbp7Z6RDLUwkt9llh3RFxwW9dsK7uLNR3aWF9paDEIcLZ_H06YtPu33226cFRqEFvx9q-Py29u7TQsShqquQcUV6_8iKKlQcChU6rjD3T5qoAlgcCyUAwwMk8goYB9tnwvBsiLXEKNiLyXFdOqzyuE6Ngn3dYFzHJkwcbHfusHsjMYRRMIghjuv4sCrjOjEK9nVj85gOmy6uU6NgX6eHRRbTNnGwXUfDWorEOIyCQYyPJ8-HgxKb52IU7OvG5nk6LIi4To2CfZ0e7n9knps42F7f4RrHxxVGwSAmxuYFH65iXCdGwb7u3vyuudv69vTumrp655dt_nH_8un7jWuul_wZu_0Qp-KQmm33_iu5fL6sIMhKQm4634IiyGpCrplvARhBFwjUgIINCNyAAg4o5ICADijsQBOEDUEYGeEaAUWYQg8J9JBCDyn0kEAPKfSQQA8p9DiBHqfQ46SVSaDHKfQ4hR4n0OMUepxAj1PoCQI9QaEnKPQE5YlHoSfm0dtuyndXoWB6HPhY-jCR_8p5GET7V7EvZ4jyac-P5osZJiTVREo0oWaY0FQThmgCqPjm8AMyQKAShDkIgcwQqBC__D4wc356jm9D9Y2M6Btn3UMyR6RyxDkckcwRqRyRyBHncEQyR07lyOdw5PSFSuXI53DkZI6cypETOfI5HDmZo6ByFHM4CjJH8XWOyXFy4-sbu3HJMvnYCayS5tp3_z9cti-dL-x-26ySVfm5Td3fOtv4U7dpqjpZFna788eJ3TfV1V2ZPwT6rJONXdf25iF6a8tfqqp939T7_m2y_Jh8SJapemak4UwoBCZBw3FylyzZ5-Pkz5APn_8BeTlkaA)](https://mermaid.live/edit#pako:eNqdmOFu2zYQx1_F0L6kQNryjqRIekOBrsmAAEFSNNs-rN4HSqQcr46UyfLarO1T7RH2YpOoKKW8aNUtQAD7fPe_f-5HnpJ8TPLK-WSZrGt7e704f7MqF-0XHB2tEoWF81bL77L6-YuLy5PTVfLkSf85vl0lPmepkhLDxyebtd81R15biwzck1Xya5_Jj9pUBVJxn4uQ-vLq6vTNj2eXF23OvZx4-3yVFGAgT70NSc7Xvmi_y9z_vLGr5Pm9nGzVDDJnW72Q-M3v-6r59uz1D1f9q4fGadc4Ry1Tm7mpxqrNETrLwBVpJFdU9Y1tDgR119oWWZZJEeWevv7p-4NM07X21ipUCFOtgbVJ2lswmdGR3vuqfnegBwFHoZjzUvBHcEDHQ3GBkvl-LK_OTo5UkRlmTQQDAg0mTJa5NJ10Nh8HdDwyITUTUkY_xPkmq219d1m8qsp17Xe7w58o0IHCMM0YThrp8Didg0zTIlK3--a6qg8ldTekTEImucwfG5Jp1ThLrXQqfRiSyZVQNvdfhoRszpAQZg8J8f8NCQMtr4SAQuWTRgKtrIA09bI_6Nd2d2FvfOSgwySzTAAHHjl4eVcu3tjSHTYOdAz4XEvDJhurGY0DFGlyh8qYxxZJB8W0QEwqbOys2drd4uq63q_X_tAf7wmh496gn_LHAyEp0xyE7W_s1pbrvV1HBnnHRjCTSW3iyfjysGeAkQNDkzE12TPA0EYjl6KfyWb3MmoX9hdLU-d1HrUrqz_89rBjv8FAaenBTnacQYEHCkwA5u2BfYQC7yhIK9AxFu-2c7uofea3m7__KhfOLwKVA5siwLASBW_P1-SGnwNDdDCcw0K3A4ph_KtnfzOKjLFCTh4AIbp7Z6RDLUwkt9llh3RFxwW9dsK7uLNR3aWF9paDEIcLZ_H06YtPu33226cFRqEFvx9q-Py29u7TQsShqquQcUV6_8iKKlQcChU6rjD3T5qoAlgcCyUAwwMk8goYB9tnwvBsiLXEKNiLyXFdOqzyuE6Ngn3dYFzHJkwcbHfusHsjMYRRMIghjuv4sCrjOjEK9nVj85gOmy6uU6NgX6eHRRbTNnGwXUfDWorEOIyCQYyPJ8-HgxKb52IU7OvG5nk6LIi4To2CfZ0e7n9knps42F7f4RrHxxVGwSAmxuYFH65iXCdGwb7u3vyuudv69vTumrp655dt_nH_8un7jWuul_wZu_0Qp-KQmm33_iu5fL6sIMhKQm4634IiyGpCrplvARhBFwjUgIINCNyAAg4o5ICADijsQBOEDUEYGeEaAUWYQg8J9JBCDyn0kEAPKfSQQA8p9DiBHqfQ46SVSaDHKfQ4hR4n0OMUepxAj1PoCQI9QaEnKPQE5YlHoSfm0dtuyndXoWB6HPhY-jCR_8p5GET7V7EvZ4jyac-P5osZJiTVREo0oWaY0FQThmgCqPjm8AMyQKAShDkIgcwQqBC__D4wc356jm9D9Y2M6Btn3UMyR6RyxDkckcwRqRyRyBHncEQyR07lyOdw5PSFSuXI53DkZI6cypETOfI5HDmZo6ByFHM4CjJH8XWOyXFy4-sbu3HJMvnYCayS5tp3_z9cti-dL-x-26ySVfm5Td3fOtv4U7dpqjpZFna788eJ3TfV1V2ZPwT6rJONXdf25iF6a8tfqqp939T7_m2y_Jh8SJapemak4UwoBCZBw3FylyzZ5-Pkz5APn_8BeTlkaA) ### Verifiable Credential ``` { CID(4676635a) [ "certificateNumber": "123-456-789" "continuingEducationUnits": 1.5 "expirationDate": 2028-01-01 "firstName": "James" "issueDate": 2020-01-01 "lastName": "Maxwell" "photo": "This is James Maxwell's photo." "professionalDevelopmentHours": 15 "subject": "RF and Microwave Engineering" "topics": CBOR controller: "Example Electrical Engineering Board" isA: "Certificate of Completion" issuer: "Example Electrical Engineering Board" ] } [ note: "Signed by Example Electrical Engineering Board" verifiedBy: Signature ] ``` * **NOTE: Click the diagram to examine it in a larger window.** [![](https://mermaid.ink/img/pako:eNqtVttu20YQ_RWCfagD2M7eL2oRIIlVNEXjBHaKAo36sOQubbYSqVJUYjfJv5dLitJSNR1OUUOApdlzZg93Zs7yU5yW1sWz-KYy69vo56tFETV_-ORkEYtESS2o_j6pnj67fHMxX8RPnnTr5P3TRWwTK5GT3fqvV8_fvp1fLOLF4vcOQ32ORHJkGM8eyMHeN8vWUiYta5dfvro4YUIKQbl5soh3afhJg0OcCpNZ1eKeX1_Pr969enPZYHa5RIMxUmOLUtlivvlrW9bfrW_Luuy-7vPJBqqdlEkiUQB9d5tvoubzk1m5TfTa3H10y-W3m6hNcX6UQ3lN2HKtUsHHNOkG4xJBFBU22GhpNvVls8lRSoy8Li0NciSE75Qco7FXQFmmMmnpmAJM_BFjh4nlKsiZbzZbd2Hqf2mgDZ5wjFNku4oRRNAZws3nAGLt1hYhK1g2ujX3HUIynThHOlRaFnVVLpeuWsRP-2S-cAxRnrAkfOr5nVmtly6aL11aV3lqltG8uMkL56q8uIlelKayx-Kl18WYpELr8SNRbTcJjjVlwYZ1uc7TzXFKX0IimHF9mV--eHO1Xyao3VFYkWbOjO1IsD8JpRWhnHXPmG-eH46A-CJhTBxJbRIoeumqOs-aR69dVGbRy9IfSJ2XxZFIQlsVRugsNaPPTdppE5Y7g3Cwiy9KXmybQ53bbbNXk_-XIq-PT4Jwf2zECEyFaOn4nB9WhZfAeTPnwpFRCdIfhOYsVZSL3UE0jRi0A1H_WzsQ7TUJLJRuJn1ME_VT50RKNB1Mnbtb51V7Gg-MCcX-LDV2zmDVj4k6GhNK_P4GEcksTkf39xMnSIoMES4sy6H4l9tV4qpjCb6cJkUJE9wEPEzoGePiTCp9zGh91LJMSGX0qB4_jymznBIankeWVw-6FvVummROW6rD5m1d9BjbuqZDSCIlxagCP3PIJVRRHQ7oZpv80RT_KCfz9UsQ1wnKSIC--iEyhY1e52lVfjQfXNguxylaK3VaJITZ0YNhfkpTlWIjbHgw66rM3GbTNIpZXrgPblmuV66ofyy31fHzM19rlGQi0bxzE3wYIda6KiPNHYfEqJew1lWbeydTKepc9UPzTFnu7Iv7wxgxX0WbZoZR1HXVdX5TmHpbucOGrV2azBGK09H-ZMpvKHCWCCO6Ahdl7YKtfLkylmQI4yw4F7-hs1FyH_0XK4_Ozp599hX_HJHdOAchuuuUIMSCUMR3Lw7t-rpy9nMkwlDpGTJkqN21HjB0GGoZGIUUjPubOCBhMgh2NDqgsf4WDWl8EOxoYkCT_SUX0tQg2NF0SCOov6kCGsGDYEsjZECj_dUS0tgg2NH4gCb66yCkyUGwo6kBTfeOHdAoGgRbGsUhjfaSSUijg2BHGzQH7SWH7UHFINjRBh1Ce8lhj1A9CLY0NugShnuTCWiMDIIdjQat37hB7wohjQ-CHU0MaLKf7ZCmBsGOthO-qe-bycTN_6r8080a_Gn39exjbuvbGT1H67sQSqZD6XQo66HJcuu-guXT0wpAWgnAqukSNCAtRhAwoGiYQBJTCJgBVHBIYkjtsASoUJDEkPIRBBgjDEkMKR8BjB2BzB2BlI8IgArI6BFI-YgGuBVk-CikfBTimZDho5DyUYBvUsjwUUj5KMA6KWT4GKR8DOCdDDJ8DFI-BvBOBhk-BikfA3gngwwfm1a-ZV78ed0Sxu2TPATHMDiBwftCPobZ1--mcq6YkPSRIj6IFxNESKgIBRShJ4g4vLlMVYExUMb-HeZREAXrYFAdfIoOAdYhoTrUFB0aqoMgoI79m8yjIALWQaE62BQdHKxDQHXIKToUWIcG6ti_zzwKwlAdlEB1THFSCrZSCvVSOsVMKdhNKdRO6RQ_ZWA_ZVA_ZVP8lIH9lEH9lE3xUwb2U_Z1P41P45WrVia38Sz-5BMs4vrWrdwinjVfrcvMdlkv4kXxpYFu19bUbm7zuqziWWaWG3cam21dXt8X6T7QoS5yc1OZ1T66NsVvZdn8rqtt9zOefYrv4hk6je_jGdb0XCnFpeCYcYkk_XIa_90S8Jd_AN_xZGo)](https://mermaid.live/edit#pako:eNqtVttu20YQ_RWCfagD2M7eL2oRIIlVNEXjBHaKAo36sOQubbYSqVJUYjfJv5dLitJSNR1OUUOApdlzZg93Zs7yU5yW1sWz-KYy69vo56tFETV_-ORkEYtESS2o_j6pnj67fHMxX8RPnnTr5P3TRWwTK5GT3fqvV8_fvp1fLOLF4vcOQ32ORHJkGM8eyMHeN8vWUiYta5dfvro4YUIKQbl5soh3afhJg0OcCpNZ1eKeX1_Pr969enPZYHa5RIMxUmOLUtlivvlrW9bfrW_Luuy-7vPJBqqdlEkiUQB9d5tvoubzk1m5TfTa3H10y-W3m6hNcX6UQ3lN2HKtUsHHNOkG4xJBFBU22GhpNvVls8lRSoy8Li0NciSE75Qco7FXQFmmMmnpmAJM_BFjh4nlKsiZbzZbd2Hqf2mgDZ5wjFNku4oRRNAZws3nAGLt1hYhK1g2ujX3HUIynThHOlRaFnVVLpeuWsRP-2S-cAxRnrAkfOr5nVmtly6aL11aV3lqltG8uMkL56q8uIlelKayx-Kl18WYpELr8SNRbTcJjjVlwYZ1uc7TzXFKX0IimHF9mV--eHO1Xyao3VFYkWbOjO1IsD8JpRWhnHXPmG-eH46A-CJhTBxJbRIoeumqOs-aR69dVGbRy9IfSJ2XxZFIQlsVRugsNaPPTdppE5Y7g3Cwiy9KXmybQ53bbbNXk_-XIq-PT4Jwf2zECEyFaOn4nB9WhZfAeTPnwpFRCdIfhOYsVZSL3UE0jRi0A1H_WzsQ7TUJLJRuJn1ME_VT50RKNB1Mnbtb51V7Gg-MCcX-LDV2zmDVj4k6GhNK_P4GEcksTkf39xMnSIoMES4sy6H4l9tV4qpjCb6cJkUJE9wEPEzoGePiTCp9zGh91LJMSGX0qB4_jymznBIankeWVw-6FvVummROW6rD5m1d9BjbuqZDSCIlxagCP3PIJVRRHQ7oZpv80RT_KCfz9UsQ1wnKSIC--iEyhY1e52lVfjQfXNguxylaK3VaJITZ0YNhfkpTlWIjbHgw66rM3GbTNIpZXrgPblmuV66ofyy31fHzM19rlGQi0bxzE3wYIda6KiPNHYfEqJew1lWbeydTKepc9UPzTFnu7Iv7wxgxX0WbZoZR1HXVdX5TmHpbucOGrV2azBGK09H-ZMpvKHCWCCO6Ahdl7YKtfLkylmQI4yw4F7-hs1FyH_0XK4_Ozp599hX_HJHdOAchuuuUIMSCUMR3Lw7t-rpy9nMkwlDpGTJkqN21HjB0GGoZGIUUjPubOCBhMgh2NDqgsf4WDWl8EOxoYkCT_SUX0tQg2NF0SCOov6kCGsGDYEsjZECj_dUS0tgg2NH4gCb66yCkyUGwo6kBTfeOHdAoGgRbGsUhjfaSSUijg2BHGzQH7SWH7UHFINjRBh1Ce8lhj1A9CLY0NugShnuTCWiMDIIdjQat37hB7wohjQ-CHU0MaLKf7ZCmBsGOthO-qe-bycTN_6r8080a_Gn39exjbuvbGT1H67sQSqZD6XQo66HJcuu-guXT0wpAWgnAqukSNCAtRhAwoGiYQBJTCJgBVHBIYkjtsASoUJDEkPIRBBgjDEkMKR8BjB2BzB2BlI8IgArI6BFI-YgGuBVk-CikfBTimZDho5DyUYBvUsjwUUj5KMA6KWT4GKR8DOCdDDJ8DFI-BvBOBhk-BikfA3gngwwfm1a-ZV78ed0Sxu2TPATHMDiBwftCPobZ1--mcq6YkPSRIj6IFxNESKgIBRShJ4g4vLlMVYExUMb-HeZREAXrYFAdfIoOAdYhoTrUFB0aqoMgoI79m8yjIALWQaE62BQdHKxDQHXIKToUWIcG6ti_zzwKwlAdlEB1THFSCrZSCvVSOsVMKdhNKdRO6RQ_ZWA_ZVA_ZVP8lIH9lEH9lE3xUwb2U_Z1P41P45WrVia38Sz-5BMs4vrWrdwinjVfrcvMdlkv4kXxpYFu19bUbm7zuqziWWaWG3cam21dXt8X6T7QoS5yc1OZ1T66NsVvZdn8rqtt9zOefYrv4hk6je_jGdb0XCnFpeCYcYkk_XIa_90S8Jd_AN_xZGo) ### Warranty This is the same credential above that has been elided, had additional assertions added, and then been signed by the employer. ``` { { { CID(4676635a) [ "expirationDate": 2028-01-01 "firstName": "James" "lastName": "Maxwell" "subject": "RF and Microwave Engineering" isA: "Certificate of Completion" issuer: "Example Electrical Engineering Board" ELIDED (7) ] } [ note: "Signed by Example Electrical Engineering Board" verifiedBy: Signature ] } [ "employeeHiredDate": 2022-01-01 "employeeStatus": "active" ] } [ note: "Signed by Employer Corp." verifiedBy: Signature ] ``` * **NOTE: Click the diagram to examine it in a larger window.** [![](https://mermaid.ink/img/pako:eNqtVu9v2zYQ_VcM7UsKJCnJO5KiNxRoGw_r0F9IBgxYvQ-USCVaHduT5TRZmv99pGQllGcn4pAgQazzu-Mj37ujbpN8YWwyTs4rvbwYvT-dzkfuhx4cTBObE0g1hZ-y6uWrj59OJtPkxYv2e_bl5TTRNGU2zbD5_vfT158_T06myXT6Z4sBX4MaK43JyY4a6GsQsNwIVeypwX0NaWhm5c4awtcwmZHESrWnhvQ1MsmJRl7sqJF-cV8bAyhNu5W3704OUEghgOsX02RTRt3eOrochC5M2uAm79-d-JXu7jaHRg6--B1zleaCN5DXZ2eT09_effroymyWo9SBbCZYCsI0oB_-Xi_qH2d6VX_Ul7Z9ul-WMgdXSmpiWQj_oK-_2dlsGw2eJWCRFtLAbpbYQAwhRmCxG8I9BFGCUGpPFeH3isKIvLB6716l1ydVKQOOLfty9XqavOzo-rOnlFmWmyzY3Ftb1WVR5rq2o0Uxeru4XM5sXS7m29ttREHtDJTr3URZIwrnTnth2T6ijHqiimOeAhcboqu1rR64Mi8EEuAZZqEQk2vt2Y0mM5vXleM8G03m5-Xc2qqcn4_eLHRltmgz8JwEFanKMrmXE3qjiJwp6Clvr5dlpf1pnLjz2S7NvZsVtdZ1Z5PECEuPCHW_DyDhj00TJtHQfPexSU_RYCFkqtVeil6_HA0HBiHFoqx2mpkpz66wyoAK9f7VQVdbWGiEs4RIkkqxjwH4biI2gxQUBhVX6-wvp8d2Ta9hRrjKSMEC9OnPIz03ow9lXi2-6SsbKrhdoukwq0TG0KidZwfomcu80FLJvfICb2YXV0Wak7YPr9yCRWnNm5sH24HwtuNMaSnbmXJWns91va7sA6dGLF1YBjTP9y6Y-gUFLTKhRXv680Vtg6W8OgVmBaG0CE7HL2jNKLsZ_Q-vYyMjUJI5uxX7uKGXsVDIrOU89LpbbnFj7VntdrztEGxGI1U2S3noPp3X5dW29bDpOa4IzZyj9vLwPUcBNZUEd_D4pays2dF26NuOYU4l5LxrO7bVdijaoxCkIGavTCgH-QJ967EMWa43I-S_vkDVzBlMM5bnsG9BTp7wBafNqPfOMHK3L9rjqdykrpbH20N6dHT06rtvyO8jtpkDQQg25gtCuKEfhPiGShASm1eAICQ3N34QSoPQSIUPlHTXdgNfOmW_u9u5F1z4EpT10qD3hL0n3nsS3V0ZLiB7wXaBHknaY8lId48FRRjtBZsirMeSQXfVhGnYC7ZpPcpM9J5kdxmERdJesC3Sowykm-BBGtBesEmDHmWAQGM3RLthGhbhvWBbRPTSZDcSw7S0F2zTVOA7N6W6aRWkIe0FmzRkvTTohkuYhr1gm8aDXnCDoBsIYZrsBdu0tJemurYO0jjpBZs0viG-qm_csKbuf7X4ascOf9h-PPpWmvpiDMdkeR1C2XAoDIficCgfDhXDoXI4NO2g2Wxtn8CqJ7BdyOjVha4qfTPmx2Tk_nrqkOHkKI1gR1kMGJ5lL_gsVfizVInwB5UxRxVjEfosHmERHmExHmExHmERLc8wpjCPAYtnOdGIkcBiBGcqAgwRukKMrhCjKzxL70PElIcYwUHEgCN0hRhdIUZXjNAVY3TFGF0x5oqO6VeMkQ8j5jDGzGGMkQ9VxDsIiSjMh8k3K-dfz5qE_dZgu-A0Ds7i4BAHxzg4j4OLOHjnlccw6QDMvTPOK2vnQyR5xB-7E-gAGveva4-CYAgIh4B49LZF7LaHKESHSESjNWKxGrEhGj28Lg3mAbE8hoh3_8L0KEhEk5WxZIeIx6LFg1jxYIh4MKTBHt6FBpPFWLJDxINo8SBWPBgiHkSLh7Hi4RDxMLrzMLbzcEjnYfTYxNixiUPG5sPLz2Ae6kkeyWFyaatLXZpknNz6AtOkvrCXdpqM3UdjC72e1dNkOr9z0PXS6NpOTFkvqmRc6NnKHiZ6XS_Obub5faBFnZT6vNKX99Glnv-xWLjnulq3j8n4NrlOxuQwuUnGVMFxmqZcCk6RSyLh7jD5p0mgd_8CMWyxKw?type=png)](https://mermaid.live/edit#pako:eNqtVu9v2zYQ_VcM7UsKJCnJO5KiNxRoGw_r0F9IBgxYvQ-USCVaHduT5TRZmv99pGQllGcn4pAgQazzu-Mj37ujbpN8YWwyTs4rvbwYvT-dzkfuhx4cTBObE0g1hZ-y6uWrj59OJtPkxYv2e_bl5TTRNGU2zbD5_vfT158_T06myXT6Z4sBX4MaK43JyY4a6GsQsNwIVeypwX0NaWhm5c4awtcwmZHESrWnhvQ1MsmJRl7sqJF-cV8bAyhNu5W3704OUEghgOsX02RTRt3eOrochC5M2uAm79-d-JXu7jaHRg6--B1zleaCN5DXZ2eT09_effroymyWo9SBbCZYCsI0oB_-Xi_qH2d6VX_Ul7Z9ul-WMgdXSmpiWQj_oK-_2dlsGw2eJWCRFtLAbpbYQAwhRmCxG8I9BFGCUGpPFeH3isKIvLB6716l1ydVKQOOLfty9XqavOzo-rOnlFmWmyzY3Ftb1WVR5rq2o0Uxeru4XM5sXS7m29ttREHtDJTr3URZIwrnTnth2T6ijHqiimOeAhcboqu1rR64Mi8EEuAZZqEQk2vt2Y0mM5vXleM8G03m5-Xc2qqcn4_eLHRltmgz8JwEFanKMrmXE3qjiJwp6Clvr5dlpf1pnLjz2S7NvZsVtdZ1Z5PECEuPCHW_DyDhj00TJtHQfPexSU_RYCFkqtVeil6_HA0HBiHFoqx2mpkpz66wyoAK9f7VQVdbWGiEs4RIkkqxjwH4biI2gxQUBhVX6-wvp8d2Ta9hRrjKSMEC9OnPIz03ow9lXi2-6SsbKrhdoukwq0TG0KidZwfomcu80FLJvfICb2YXV0Wak7YPr9yCRWnNm5sH24HwtuNMaSnbmXJWns91va7sA6dGLF1YBjTP9y6Y-gUFLTKhRXv680Vtg6W8OgVmBaG0CE7HL2jNKLsZ_Q-vYyMjUJI5uxX7uKGXsVDIrOU89LpbbnFj7VntdrztEGxGI1U2S3noPp3X5dW29bDpOa4IzZyj9vLwPUcBNZUEd_D4pays2dF26NuOYU4l5LxrO7bVdijaoxCkIGavTCgH-QJ967EMWa43I-S_vkDVzBlMM5bnsG9BTp7wBafNqPfOMHK3L9rjqdykrpbH20N6dHT06rtvyO8jtpkDQQg25gtCuKEfhPiGShASm1eAICQ3N34QSoPQSIUPlHTXdgNfOmW_u9u5F1z4EpT10qD3hL0n3nsS3V0ZLiB7wXaBHknaY8lId48FRRjtBZsirMeSQXfVhGnYC7ZpPcpM9J5kdxmERdJesC3Sowykm-BBGtBesEmDHmWAQGM3RLthGhbhvWBbRPTSZDcSw7S0F2zTVOA7N6W6aRWkIe0FmzRkvTTohkuYhr1gm8aDXnCDoBsIYZrsBdu0tJemurYO0jjpBZs0viG-qm_csKbuf7X4ascOf9h-PPpWmvpiDMdkeR1C2XAoDIficCgfDhXDoXI4NO2g2Wxtn8CqJ7BdyOjVha4qfTPmx2Tk_nrqkOHkKI1gR1kMGJ5lL_gsVfizVInwB5UxRxVjEfosHmERHmExHmExHmERLc8wpjCPAYtnOdGIkcBiBGcqAgwRukKMrhCjKzxL70PElIcYwUHEgCN0hRhdIUZXjNAVY3TFGF0x5oqO6VeMkQ8j5jDGzGGMkQ9VxDsIiSjMh8k3K-dfz5qE_dZgu-A0Ds7i4BAHxzg4j4OLOHjnlccw6QDMvTPOK2vnQyR5xB-7E-gAGveva4-CYAgIh4B49LZF7LaHKESHSESjNWKxGrEhGj28Lg3mAbE8hoh3_8L0KEhEk5WxZIeIx6LFg1jxYIh4MKTBHt6FBpPFWLJDxINo8SBWPBgiHkSLh7Hi4RDxMLrzMLbzcEjnYfTYxNixiUPG5sPLz2Ae6kkeyWFyaatLXZpknNz6AtOkvrCXdpqM3UdjC72e1dNkOr9z0PXS6NpOTFkvqmRc6NnKHiZ6XS_Obub5faBFnZT6vNKX99Glnv-xWLjnulq3j8n4NrlOxuQwuUnGVMFxmqZcCk6RSyLh7jD5p0mgd_8CMWyxKw)