diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..5983c41 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,57 @@ +name: Deploy GitHub Pages + +on: + push: + branches: ["main"] + paths: + - 'docs/**' + - '_config.yml' + - '.github/workflows/pages.yml' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.1' + bundler-cache: true + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v4 + + - name: Build with Jekyll + run: | + bundle add jekyll jekyll-theme-minimal jekyll-relative-links jekyll-seo-tag jekyll-sitemap + bundle exec jekyll build --source . --destination ./_site + env: + JEKYLL_ENV: production + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/docs/.jekyll-metadata b/docs/.jekyll-metadata new file mode 100644 index 0000000..b96d99a Binary files /dev/null and b/docs/.jekyll-metadata differ diff --git a/docs/2021-10-12_Update-vLEI-IIW_v1.1_final.pdf b/docs/2021-10-12_Update-vLEI-IIW_v1.1_final.pdf deleted file mode 100644 index e176ca4..0000000 Binary files a/docs/2021-10-12_Update-vLEI-IIW_v1.1_final.pdf and /dev/null differ diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 0000000..4826df5 --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +gem "jekyll", "~> 4.3" +gem "minima", "~> 2.5" +gem "jekyll-feed" +gem "jekyll-seo-tag" +gem "webrick" \ No newline at end of file diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock new file mode 100644 index 0000000..6210e36 --- /dev/null +++ b/docs/Gemfile.lock @@ -0,0 +1,173 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + base64 (0.3.0) + bigdecimal (3.2.2) + colorator (1.1.0) + concurrent-ruby (1.3.5) + csv (3.3.5) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.2) + ffi (1.17.2-aarch64-linux-gnu) + ffi (1.17.2-aarch64-linux-musl) + ffi (1.17.2-arm-linux-gnu) + ffi (1.17.2-arm-linux-musl) + ffi (1.17.2-arm64-darwin) + ffi (1.17.2-x86-linux-gnu) + ffi (1.17.2-x86-linux-musl) + ffi (1.17.2-x86_64-darwin) + ffi (1.17.2-x86_64-linux-gnu) + ffi (1.17.2-x86_64-linux-musl) + forwardable-extended (2.6.0) + google-protobuf (4.32.0) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-aarch64-linux-gnu) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-aarch64-linux-musl) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-x86-linux-gnu) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-x86-linux-musl) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-x86_64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-x86_64-linux-gnu) + bigdecimal + rake (>= 13) + google-protobuf (4.32.0-x86_64-linux-musl) + bigdecimal + rake (>= 13) + http_parser.rb (0.8.0) + i18n (1.14.7) + concurrent-ruby (~> 1.0) + jekyll (4.4.1) + addressable (~> 2.4) + base64 (~> 0.2) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.3, >= 0.3.6) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-sass-converter (3.1.0) + sass-embedded (~> 1.75) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.13.2) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + minima (2.5.2) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (6.0.2) + rake (13.3.0) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.1) + rouge (4.6.0) + safe_yaml (1.0.5) + sass-embedded (1.90.0) + google-protobuf (~> 4.31) + rake (>= 13) + sass-embedded (1.90.0-aarch64-linux-android) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-aarch64-linux-gnu) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-aarch64-linux-musl) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-arm-linux-androideabi) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-arm-linux-gnueabihf) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-arm-linux-musleabihf) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-arm64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-riscv64-linux-android) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-riscv64-linux-gnu) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-riscv64-linux-musl) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-x86_64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-x86_64-linux-android) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-x86_64-linux-gnu) + google-protobuf (~> 4.31) + sass-embedded (1.90.0-x86_64-linux-musl) + google-protobuf (~> 4.31) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.6.0) + webrick (1.9.1) + +PLATFORMS + aarch64-linux-android + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-androideabi + arm-linux-gnu + arm-linux-gnueabihf + arm-linux-musl + arm-linux-musleabihf + arm64-darwin + riscv64-linux-android + riscv64-linux-gnu + riscv64-linux-musl + ruby + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-android + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + jekyll (~> 4.3) + jekyll-feed + jekyll-seo-tag + minima (~> 2.5) + webrick + +BUNDLED WITH + 2.7.1 diff --git a/docs/Schema_Registry.md b/docs/Schema_Registry.md deleted file mode 100644 index bd6540a..0000000 --- a/docs/Schema_Registry.md +++ /dev/null @@ -1,56 +0,0 @@ -# verifiable LEI (vLEI) Ecosystem Governance Framework vLEI Credential Schema Registry -This Controlled Document will cover all policies regarding the publication of the official JSON Schema for the vLEI credentials. - -## Related Specifications -#### JSON Schema -JSON Schema 2020-12 -https://json-schema.org/draft/2020-12/release-notes.html - -#### ACDC -IETF ACDC (Authentic Chained Data Containers) Internet Draft -https://github.com/trustoverip/tswg-acdc-specification - -#### SAID -IETF SAID (Self-Addressing IDentifier) Internet Draft -https://github.com/WebOfTrust/ietf-said - -#### CESR -IETF CESR (Composable Event Streaming Representation) Internet Draft -https://github.com/WebOfTrust/ietf-cesr - -#### Semantic Versioning -Semantic Versioning Specification 2.0 -https://semver.org - -## Official vLEI Credential Schema - - -### Requirements - -A SAID is an encoded agile cryptographic digest of the contents of the schema. Any change to the schema results in a new SAID. Therefore each and every version of any schema has a universally unique SAID across all schema and all versions of all schema. Any copy of a schema that verifies against the SAID published in the following table can be assumed to be identical to any other copy that verifies to the same SAID by virtue of the strong collision resistance of the digest employed. The digest algorithm employed for generating schema SAIDS MUST have an approximate cryptographic strength of 128 bits. The SAID MUST be generated in compliance with the IETF-SAID internet draft specification and MUST be encoded using CESR. The CESR encoding indicates the type of cryptographic digest used to generate the SAID. The schema MUST be JSON-Schema 2020-12 compliant. The table below provides the normative SAIDs (Self-Addressing-IDentifiers) for each of the official schemas. - -### Versioning - -As ACDCs, the vLEI schema uses composition operators from JSON Schema. This allows extensibility in schema such that in many cases, newer schema versions may be backward compatible with older schema versions. A new schema version is considered backward incompatible with respect to a previous version of a schema when any instance of a vLEI credential that validates against the previous version of the schema may not be guaranteed to validate against the new version. As per the semantic versioning rules, a backward incompatible schema MUST have a higher MAJOR version number than any backward incompatible version. - -### Schema Table - -The following table provides, in descending order, row-by-row, the latest version, the SAID, and the type of each official schema, along with a URL. The URL is a network location where a copy of the schema may be obtained. Updated versions will be added to the top of the table upon designation by GLEIF as official. The version number for each schema follows the Semantic Versioning 2.0.0 specification. - - -| Version | SAID | Type | URL | -|-:|:-|:-|:-| -| `1.0.0` | `ELqriXX1-lbV9zgXP4BXxqJlpZTgFchll3cyjaCyVKiz` | QualifiedvLEIIssuervLEICredential | https://github.com/WebOfTrust/vLEI/blob/dev/schema/acdc/qualified-vLEI-issuer-vLEI-credential.json | -| `1.0.0` | `EK0jwjJbtYLIynGtmXXLO5MGJ7BDuX2vr2_MhM9QjAxZ` | LegalEntityvLEICredential | https://github.com/WebOfTrust/vLEI/blob/dev/schema/acdc/legal-entity-vLEI-credential.json | -| `1.0.0` | `EDqjl80uP0r_SNSp-yImpLGglTEbOwgO77wsOPjyRVKy` | OORAuthorizationvLEICredential | https://github.com/WebOfTrust/vLEI/blob/dev/schema/acdc/oor-authorization-vlei-credential.json | -| `1.0.0` | `EIL-RWno8cEnkGTi9cr7-PFg_IXTPx9fZ0r9snFFZ0nm` | LegalEntityOfficialOrganizationalRolevLEICredential | https://github.com/WebOfTrust/vLEI/blob/dev/schema/acdc/legal-entity-official-organizational-role-vLEI-credential.json | -| `1.0.0` | `ED_PcIn1wFDe0GB0W7Bk9I4Q_c9bQJZCM2w7Ex9Plsta` | ECRAuthorizationvLEICredential | https://github.com/WebOfTrust/vLEI/blob/dev/schema/acdc/ecr-authorization-vlei-credential.json | -| `1.0.0` | `EOhcE9MV90LRygJuYN1N0c5XXNFkzwFxUBfQ24v7qeEY` | LegalEntityEngagementContextRolevLEICredential | https://github.com/WebOfTrust/vLEI/blob/dev/schema/acdc/legal-entity-engagement-context-role-vLEI-credential.json | -| `1.0.0` | `EJEMDhCDi8gLqtaXrb36DRLHMfC1c08PqirQvdPPSG5u` | iXBRLDataAttestation | https://github.com/WebOfTrust/vLEI/blob/dev/schema/acdc/verifiable-ixbrl-report-attestation.json | - - - -## Informative Notes -At some time in the future, this registry document may be augmented with a live registry that follows the future ToIP Trust Registry Protocol specification. The current incomplete draft may be found here: -https://docs.google.com/document/d/1ZGXUB0oODHO66PQkO66-fbAu6f7sVVToOz3Q8RNG0fs/edit - diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..660e1f5 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,31 @@ +title: vLEI Ecosystem Credential Documentation +description: Documentation for the vLEI (verifiable Legal Entity Identifier) credential ecosystem implementation +theme: minima +baseurl: "" +url: "" + +plugins: + - jekyll-feed + - jekyll-seo-tag + +markdown: kramdown +kramdown: + syntax_highlighter: rouge + input: GFM + +# Suppress Sass deprecation warnings +sass: + quiet_deps: true + verbose: false + style: compressed + sourcemap: never + +# Additional settings to minimize output noise +quiet: true +incremental: true + +header_pages: + - index.md + - credentials.md + - vlei-credential-ecosystem.md + - vlei-dependency-graph.md \ No newline at end of file diff --git a/docs/_includes/head-custom.html b/docs/_includes/head-custom.html new file mode 100644 index 0000000..566af1d --- /dev/null +++ b/docs/_includes/head-custom.html @@ -0,0 +1,52 @@ + + + + \ No newline at end of file diff --git a/docs/_includes/header.html b/docs/_includes/header.html new file mode 100644 index 0000000..29a54be --- /dev/null +++ b/docs/_includes/header.html @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/docs/_includes/mermaid.html b/docs/_includes/mermaid.html new file mode 100644 index 0000000..223e3ca --- /dev/null +++ b/docs/_includes/mermaid.html @@ -0,0 +1,3 @@ +
+{{ include.content }} +
\ No newline at end of file diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 0000000..2b1eeb4 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,108 @@ + + + + + + + + {%- seo -%} + + {%- feed_meta -%} + + + + + + + + + + {%- include header.html -%} + +
+
+ {{ content }} +
+
+ + {%- include footer.html -%} + + + + \ No newline at end of file diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html new file mode 100644 index 0000000..92e72e0 --- /dev/null +++ b/docs/_layouts/page.html @@ -0,0 +1,14 @@ +--- +layout: default +--- +
+ +
+

{{ page.title | escape }}

+
+ +
+ {{ content }} +
+ +
\ No newline at end of file diff --git a/docs/_site/assets/main.css b/docs/_site/assets/main.css new file mode 100644 index 0000000..9207862 --- /dev/null +++ b/docs/_site/assets/main.css @@ -0,0 +1 @@ +body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}body{font:400 16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";color:#111;background-color:#fdfdfd;-webkit-text-size-adjust:100%;-webkit-font-feature-settings:"kern" 1;-moz-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:normal;display:flex;min-height:100vh;flex-direction:column}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure,.highlight{margin-bottom:15px}main{display:block}img{max-width:100%;vertical-align:middle}figure>img{display:block}figcaption{font-size:14px}ul,ol{margin-left:30px}li>ul,li>ol{margin-bottom:0}h1,h2,h3,h4,h5,h6{font-weight:400}a{color:#2a7ae2;text-decoration:none}a:visited{color:rgb(22.9483471074,86.2541322314,168.5516528926)}a:hover{color:#111;text-decoration:underline}.social-media-list a:hover{text-decoration:none}.social-media-list a:hover .username{text-decoration:underline}blockquote{color:#828282;border-left:4px solid #e8e8e8;padding-left:15px;font-size:18px;letter-spacing:-1px;font-style:italic}blockquote>:last-child{margin-bottom:0}pre,code{font-size:15px;border:1px solid #e8e8e8;border-radius:3px;background-color:#eef}code{padding:1px 5px}pre{padding:8px 12px;overflow-x:auto}pre>code{border:0;padding-right:0;padding-left:0}.wrapper{max-width:-webkit-calc(800px - (30px * 2));max-width:calc(800px - 30px*2);margin-right:auto;margin-left:auto;padding-right:30px;padding-left:30px}@media screen and (max-width: 800px){.wrapper{max-width:-webkit-calc(800px - (30px));max-width:calc(800px - (30px));padding-right:15px;padding-left:15px}}.footer-col-wrapper:after,.wrapper:after{content:"";display:table;clear:both}.svg-icon{width:16px;height:16px;display:inline-block;fill:#828282;padding-right:5px;vertical-align:text-top}.social-media-list li+li{padding-top:5px}table{margin-bottom:30px;width:100%;text-align:left;color:rgb(62.9,62.9,62.9);border-collapse:collapse;border:1px solid #e8e8e8}table tr:nth-child(even){background-color:rgb(247.3,247.3,247.3)}table th,table td{padding:9.999999999px 15px}table th{background-color:hsl(0,0%,93.9803921569%);border:1px solid rgb(221.8,221.8,221.8);border-bottom-color:rgb(201.4,201.4,201.4)}table td{border:1px solid #e8e8e8}.site-header{border-top:5px solid rgb(66.25,66.25,66.25);border-bottom:1px solid #e8e8e8;min-height:55.95px;position:relative}.site-title{font-size:26px;font-weight:300;line-height:54px;letter-spacing:-1px;margin-bottom:0;float:left}.site-title,.site-title:visited{color:rgb(66.25,66.25,66.25)}.site-nav{float:right;line-height:54px}.site-nav .nav-trigger{display:none}.site-nav .menu-icon{display:none}.site-nav .page-link{color:#111;line-height:1.5}.site-nav .page-link:not(:last-child){margin-right:20px}@media screen and (max-width: 600px){.site-nav{position:absolute;top:9px;right:15px;background-color:#fdfdfd;border:1px solid #e8e8e8;border-radius:5px;text-align:right}.site-nav label[for=nav-trigger]{display:block;float:right;width:36px;height:36px;z-index:2;cursor:pointer}.site-nav .menu-icon{display:block;float:right;width:36px;height:26px;line-height:0;padding-top:10px;text-align:center}.site-nav .menu-icon>svg{fill:rgb(66.25,66.25,66.25)}.site-nav input~.trigger{clear:both;display:none}.site-nav input:checked~.trigger{display:block;padding-bottom:5px}.site-nav .page-link{display:block;margin-left:20px;padding:5px 10px}.site-nav .page-link:not(:last-child){margin-right:0}}.site-footer{border-top:1px solid #e8e8e8;padding:30px 0}.footer-heading{font-size:18px;margin-bottom:15px}.contact-list,.social-media-list{list-style:none;margin-left:0}.footer-col-wrapper{font-size:15px;color:#828282;margin-left:-15px}.footer-col{float:left;margin-bottom:15px;padding-left:15px}.footer-col-1{width:-webkit-calc(35% - (30px / 2));width:calc(35% - 30px/2)}.footer-col-2{width:-webkit-calc(20% - (30px / 2));width:calc(20% - 30px/2)}.footer-col-3{width:-webkit-calc(45% - (30px / 2));width:calc(45% - 30px/2)}@media screen and (max-width: 800px){.footer-col-1,.footer-col-2{width:-webkit-calc(50% - (30px / 2));width:calc(50% - 30px/2)}.footer-col-3{width:-webkit-calc(100% - (30px / 2));width:calc(100% - 30px/2)}}@media screen and (max-width: 600px){.footer-col{float:none;width:-webkit-calc(100% - (30px / 2));width:calc(100% - 30px/2)}}.page-content{padding:30px 0;flex:1}.page-heading{font-size:32px}.post-list-heading{font-size:28px}.post-list{margin-left:0;list-style:none}.post-list>li{margin-bottom:30px}.post-meta{font-size:14px;color:#828282}.post-link{display:block;font-size:24px}.post-header{margin-bottom:30px}.post-title{font-size:42px;letter-spacing:-1px;line-height:1}@media screen and (max-width: 800px){.post-title{font-size:36px}}.post-content{margin-bottom:30px}.post-content h2{font-size:32px}@media screen and (max-width: 800px){.post-content h2{font-size:28px}}.post-content h3{font-size:26px}@media screen and (max-width: 800px){.post-content h3{font-size:22px}}.post-content h4{font-size:20px}@media screen and (max-width: 800px){.post-content h4{font-size:18px}}.highlight{background:#fff}.highlighter-rouge .highlight{background:#eef}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:bold}.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}.wrapper{max-width:1140px}@media screen and (max-width: 1200px){.wrapper{max-width:1170px}}.post-content img,.page-content img{max-width:100%;height:auto;display:block;margin:2em auto}.full-width{width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;max-width:none} \ No newline at end of file diff --git a/docs/_site/assets/minima-social-icons.svg b/docs/_site/assets/minima-social-icons.svg new file mode 100644 index 0000000..fa7399f --- /dev/null +++ b/docs/_site/assets/minima-social-icons.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_site/auth-credential-schemas.svg b/docs/_site/auth-credential-schemas.svg new file mode 100644 index 0000000..8635698 --- /dev/null +++ b/docs/_site/auth-credential-schemas.svg @@ -0,0 +1 @@ +PersonQVILegal EntityPersonQVILegal EntityOOR Authorization FlowAuthorizes official role issuanceECR Authorization FlowAuthorizes engagement context role issuanceIncludes privacy disclaimerCredential IssuanceBased on received authorizationIssue OOR AuthorizationIssue ECR AuthorizationIssue OOR or ECR Credential \ No newline at end of file diff --git a/docs/_site/auth-credential-schemas/index.html b/docs/_site/auth-credential-schemas/index.html new file mode 100644 index 0000000..fc70b86 --- /dev/null +++ b/docs/_site/auth-credential-schemas/index.html @@ -0,0 +1,283 @@ + + + + + + + +Auth Credential Schemas | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

Auth Credential Schemas

+
+ +
+

Authorization vLEI Credential Schemas

+ +

The vLEI ecosystem uses authorization credentials issued by Legal Entities to QVIs to authorize the issuance of role credentials to individuals. There are two types of authorization credentials:

+ +

Authorization Credential Types

+ +

OOR Authorization Credential

+
    +
  • Purpose: Authorize issuance of Official Organizational Role (OOR) credentials
  • +
  • Schema SAID: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
  • +
  • Use Case: Permanent organizational roles (CEO, CFO, Director, etc.)
  • +
+ +

ECR Authorization Credential

+
    +
  • Purpose: Authorize issuance of Engagement Context Role (ECR) credentials
  • +
  • Schema SAID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
  • +
  • Use Case: Context-specific engagements (Project Lead, Consultant, etc.)
  • +
+ +

Authorization Credential Comparison

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureOOR AuthorizationECR Authorization
Schema SAIDEKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-EEH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
IssuerLegal EntityLegal Entity
RecipientQVIQVI
PurposeAuthorize OOR credential issuanceAuthorize ECR credential issuance
Role FieldofficialRoleengagementContextRole
Privacy DisclaimerNoYes
Use CasePermanent organizational rolesContext-specific engagements
+ +

Authorization Flow Overview

+ +
sequenceDiagram
+    participant LE as Legal Entity
+    participant QVI as QVI
+    participant Person as Person
+
+    rect rgb(240, 240, 255)
+        Note over LE,QVI: OOR Authorization Flow
+        LE->>QVI: Issue OOR Authorization
+        Note over QVI: Authorizes official role issuance
+    end
+    
+    rect rgb(240, 255, 240)
+        Note over LE,QVI: ECR Authorization Flow  
+        LE->>QVI: Issue ECR Authorization
+        Note over QVI: Authorizes engagement context role issuance
+        Note over QVI: Includes privacy disclaimer
+    end
+    
+    rect rgb(255, 240, 240)
+        Note over QVI,Person: Credential Issuance
+        QVI->>Person: Issue OOR or ECR Credential
+        Note over Person: Based on received authorization
+    end
+
+ +

Key Architectural Points

+ +
    +
  1. Both authorization types: +
      +
    • Are issued by Legal Entities to QVIs
    • +
    • Reference the LE credential in their edges
    • +
    • Use the I2I (issuer-to-issuer) operator
    • +
    • Share similar structure but different purposes
    • +
    +
  2. +
  3. Authorization enables credential issuance: +
      +
    • QVIs must hold valid authorization to issue role credentials
    • +
    • Authorization specifies the person and role being authorized
    • +
    • The issued credential chains back to the authorization
    • +
    +
  4. +
+ + + + + +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/credentials-issuance-schema.svg b/docs/_site/credentials-issuance-schema.svg new file mode 100644 index 0000000..c883b8c --- /dev/null +++ b/docs/_site/credentials-issuance-schema.svg @@ -0,0 +1 @@ +Person/Role HolderLegal EntityQualified vLEI IssuerGLEIFPerson/Role HolderLegal EntityQualified vLEI IssuerGLEIFFoundation LayerSchema: EBfdlu8R27Fbx...Contains LEI, grace periodLegal Entity LayerSchema: ENPXp1vQzRF6...Chains to QVI credentialContains entity LEIAuthorization LayerSchema: EKA57bKBKxr...Authorizes role issuanceSchema: EH6ekLjSr8V3...For engagement contextsRole Credential LayerSchema: EBNaNu-M9P5c...Official organizational roleChains to OOR AuthSchema: EEy9PkikFcANV1l7...Engagement context roleChains to ECR AuthIssue QVI vLEI CredentialIssue LE vLEI CredentialIssue OOR AuthorizationIssue ECR AuthorizationIssue OOR vLEI CredentialIssue ECR vLEI Credential \ No newline at end of file diff --git a/docs/_site/credentials-trust-chain.svg b/docs/_site/credentials-trust-chain.svg new file mode 100644 index 0000000..ad3bfd1 --- /dev/null +++ b/docs/_site/credentials-trust-chain.svg @@ -0,0 +1 @@ +

GLEIF
Root Authority

QVI vLEI
Credential

Legal Entity
vLEI Credential

OOR/ECR
Authorization

OOR vLEI
Credential

ECR vLEI
Credential

Issues

Authorizes

Enables

Permits

Permits

\ No newline at end of file diff --git a/docs/_site/credentials/index.html b/docs/_site/credentials/index.html new file mode 100644 index 0000000..ff44ba2 --- /dev/null +++ b/docs/_site/credentials/index.html @@ -0,0 +1,357 @@ + + + + + + + +Credentials | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

Credentials

+
+ +
+

vLEI Credential Ecosystem Overview

+ +

This document provides a comprehensive overview of the verifiable Legal Entity Identifier (vLEI) credential ecosystem implemented using KERI (Key Event Receipt Infrastructure) and ACDC (Authentic Chained Data Containers).

+ +

Credential Types

+ +

The vLEI ecosystem consists of six primary credential types that form a hierarchical trust chain:

+ +

1. QVI vLEI Credential

+ +
    +
  • Schema SAID: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
  • +
  • Issuer: GLEIF (Global Legal Entity Identifier Foundation)
  • +
  • Recipient: Qualified vLEI Issuers (QVIs)
  • +
  • Purpose: Authorizes QVIs to issue Legal Entity vLEI credentials
  • +
  • Key Data: LEI of the QVI organization, grace period (default 90 days)
  • +
+ + + +
    +
  • Schema SAID: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
  • +
  • Issuer: Qualified vLEI Issuer (QVI)
  • +
  • Recipient: Legal Entity (LE)
  • +
  • Purpose: Establishes the verified legal identity of an organization
  • +
  • Key Data: LEI of the legal entity, chains to QVI credential
  • +
+ +

3. OOR Authorization vLEI Credential

+ +
    +
  • Schema SAID: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
  • +
  • Issuer: Legal Entity (LE)
  • +
  • Recipient: Qualified vLEI Issuer (QVI)
  • +
  • Purpose: Authorizes QVI to issue Official Organizational Role credentials
  • +
  • Key Data: Person’s AID, role details, chains to LE credential
  • +
+ +

4. Official Organizational Role (OOR) vLEI Credential

+ +
    +
  • Schema SAID: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
  • +
  • Issuer: Qualified vLEI Issuer (QVI)
  • +
  • Recipient: Person/Role Holder
  • +
  • Purpose: Verifies a person’s official role within an organization
  • +
  • Key Data: Person’s legal name, official role title, LEI reference
  • +
+ +

5. ECR vLEI Credential

+ +
    +
  • Schema SAID: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw
  • +
  • Issuer: Qualified vLEI Issuer (QVI)
  • +
  • Recipient: Person/Role Holder
  • +
  • Purpose: Verifies a person’s engagement context role for specific interactions
  • +
  • Key Data: Person’s legal name, engagement role title, LEI reference, chains to ECR Auth
  • +
+ +

6. ECR Authorization vLEI Credential

+ +
    +
  • Schema SAID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
  • +
  • Issuer: Legal Entity (LE)
  • +
  • Recipient: Qualified vLEI Issuer (QVI)
  • +
  • Purpose: Authorizes QVI to issue Engagement Context Role credentials
  • +
  • Key Data: Similar to OOR Auth but for engagement-specific roles
  • +
  • Special Feature: Includes privacy disclaimer for IPEX/ACDC usage
  • +
+ +

Trust Chain Flow

+ +
flowchart TD
+    A[GLEIF<br/>Root Authority] -->|Issues| B[QVI vLEI<br/>Credential]
+    B -->|Authorizes| C[Legal Entity<br/>vLEI Credential]
+    C -->|Enables| D[OOR/ECR<br/>Authorization]
+    D -->|Permits| E[OOR vLEI<br/>Credential]
+    D -->|Permits| F[ECR vLEI<br/>Credential]
+    
+    style A fill:#ff9999
+    style B fill:#99ccff
+    style C fill:#99ff99
+    style D fill:#ffcc99
+    style E fill:#ff99ff
+    style F fill:#ccffcc
+
+ +

Credential Issuance Sequence

+ +
sequenceDiagram
+    participant GLEIF
+    participant QVI as Qualified vLEI Issuer
+    participant LE as Legal Entity
+    participant Person as Person/Role Holder
+    
+    rect rgb(240, 240, 255)
+        Note over GLEIF,QVI: Foundation Layer
+        GLEIF->>QVI: Issue QVI vLEI Credential
+        Note right of QVI: Schema: EBfdlu8R27Fbx...
+        Note right of QVI: Contains LEI, grace period
+    end
+    
+    rect rgb(240, 255, 240)
+        Note over QVI,LE: Legal Entity Layer
+        QVI->>LE: Issue LE vLEI Credential
+        Note right of LE: Schema: ENPXp1vQzRF6...
+        Note right of LE: Chains to QVI credential
+        Note right of LE: Contains entity LEI
+    end
+    
+    rect rgb(255, 240, 240)
+        Note over LE,QVI: Authorization Layer
+        LE->>QVI: Issue OOR Authorization
+        Note left of QVI: Schema: EKA57bKBKxr...
+        Note left of QVI: Authorizes role issuance
+        
+        LE->>QVI: Issue ECR Authorization
+        Note left of QVI: Schema: EH6ekLjSr8V3...
+        Note left of QVI: For engagement contexts
+    end
+    
+    rect rgb(255, 255, 240)
+        Note over QVI,Person: Role Credential Layer
+        QVI->>Person: Issue OOR vLEI Credential
+        Note right of Person: Schema: EBNaNu-M9P5c...
+        Note right of Person: Official organizational role
+        Note right of Person: Chains to OOR Auth
+        
+        QVI->>Person: Issue ECR vLEI Credential
+        Note right of Person: Schema: EEy9PkikFcANV1l7...
+        Note right of Person: Engagement context role
+        Note right of Person: Chains to ECR Auth
+    end
+
+ +

Key Architecture Features

+ +

Credential Chaining

+ +
    +
  • Each credential (except QVI) contains edges that reference its authorizing chained credential
  • +
  • Creates a verifiable chain of authority from GLEIF down to individual roles9
  • +
  • Enables cryptographic verification of the entire trust chain
  • +
+ +

SAID-Based References

+ +
    +
  • All credential components use Self-Addressing Identifiers (SAIDs)
  • +
  • Attributes and Rules can be either full objects or SAID string references
  • +
  • Enables efficient storage and transmission while maintaining integrity
  • +
+ +

Common Structure

+ +

All vLEI credentials share a common ACDC structure:

+ +
    +
  • v: Version string
  • +
  • d: Credential SAID
  • +
  • u: One-time use nonce (privacy-preserving metadata)
  • +
  • i: Issuer AID
  • +
  • ri: Credential status registry
  • +
  • s: Schema SAID
  • +
  • a: Attributes (content-specific)
  • +
  • e: Edges (chaining relationships)
  • +
  • r: Rules (usage and issuance disclaimers)
  • +
+ +

Authorization Pattern

+ +
    +
  • Legal Entities issue authorization credentials to QVIs
  • +
  • QVIs then issue role credentials to individuals
  • +
  • Separates official roles (OOR) from engagement context roles (ECR)
  • +
  • ECR includes additional privacy considerations for IPEX/ACDC usage
  • +
+ +

Verification Process

+ +

To verify any credential in the ecosystem:

+ +
    +
  1. Validate the credential structure against its schema SAID
  2. +
  3. Verify the issuer signature using KERI
  4. +
  5. Check the credential status via an Observor deployemt monitoring Transaction Event Log staus
  6. +
  7. Follow the edge references to validate the chain of authority
  8. +
  9. Verify each directed edge (chained credential) recursively up to GLEIF
  10. +
+ +

Use Cases

+ +
    +
  • Supply Chain Verification: Verify the legal identity of trading partners
  • +
  • Digital Identity: Establish organizational roles for digital interactions
  • +
  • Regulatory Compliance: Provide cryptographic proof of organizational authority
  • +
  • Selective Disclosure: Share only necessary identity attributes
  • +
  • Cross-Border Commerce: Enable trusted international business relationships
  • +
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/ecr-auth-credential-schema.svg b/docs/_site/ecr-auth-credential-schema.svg new file mode 100644 index 0000000..b86ec4c --- /dev/null +++ b/docs/_site/ecr-auth-credential-schema.svg @@ -0,0 +1 @@ +

ECRAuthvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

ECRAuthAttributes

+string d : Attributes block SAID

+string i : QVI Issuee AID

+string dt : Issuance date time

+string AID : Recipient AID

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string engagementContextRole : Role description

ECRAuthEdges

+string d : Edges block SAID

+LENode le : Legal Entity reference

LENode

+string n : LE credential SAID

+string s : Required schema SAID

+string o : Operator(I2I)

ECRAuthRules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

+PrivacyDisclaimer privacyDisclaimer

UsageDisclaimer

+string l : Legal language

IssuanceDisclaimer

+string l : Legal language

PrivacyDisclaimer

+string l : Privacy considerations text

Schema ID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes ECR credential issuance

Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, engagementContextRole

Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)

ECR Auth includes privacy\nconsiderations for IPEX/ACDC usage

contains

contains

contains

references

has

has

has

1
1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/_site/ecr-auth-credential-schema/index.html b/docs/_site/ecr-auth-credential-schema/index.html new file mode 100644 index 0000000..c419791 --- /dev/null +++ b/docs/_site/ecr-auth-credential-schema/index.html @@ -0,0 +1,341 @@ + + + + + + + +ECR Auth Credential Schema | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

ECR Auth Credential Schema

+
+ +
+

ECR Authorization vLEI Credential Schema

+ +

ECR Authorization vLEI Credential Structure

+ +
---
+config:
+  layout: elk
+---
+classDiagram
+    class ECRAuthvLEICredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : LE Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +a : Attributes
+        +e : Edges
+        +r : Rules
+    }
+
+    class ECRAuthAttributes {
+        +string d : Attributes block SAID
+        +string i : QVI Issuee AID
+        +string dt : Issuance date time
+        +string AID : Recipient AID
+        +string LEI : Legal Entity Identifier
+        +string personLegalName : Recipient name
+        +string engagementContextRole : Role description
+    }
+
+    class ECRAuthEdges {
+        +string d : Edges block SAID
+        +LENode le : Legal Entity reference
+    }
+
+    class LENode {
+        +string n : LE credential SAID
+        +string s : Required schema SAID
+        +string o : Operator (I2I)
+    }
+
+    class ECRAuthRules {
+        +string d : Rules block SAID
+        +UsageDisclaimer usageDisclaimer
+        +IssuanceDisclaimer issuanceDisclaimer
+        +PrivacyDisclaimer privacyDisclaimer
+    }
+
+    class UsageDisclaimer {
+        +string l : Legal language
+    }
+
+    class IssuanceDisclaimer {
+        +string l : Legal language
+    }
+
+    class PrivacyDisclaimer {
+        +string l : Privacy considerations text
+    }
+
+    ECRAuthvLEICredential --> "1" ECRAuthAttributes : contains
+    ECRAuthvLEICredential --> "1" ECRAuthEdges : contains
+    ECRAuthvLEICredential --> "1" ECRAuthRules : contains
+    ECRAuthEdges --> "1" LENode : references
+    ECRAuthRules --> "1" UsageDisclaimer : has
+    ECRAuthRules --> "1" IssuanceDisclaimer : has
+    ECRAuthRules --> "1" PrivacyDisclaimer : has
+
+    note for ECRAuthvLEICredential "Schema ID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes ECR credential issuance"
+    
+    note for ECRAuthAttributes "Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, engagementContextRole"
+    
+    note for LENode "Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)"
+    
+    note for PrivacyDisclaimer "ECR Auth includes privacy\nconsiderations for IPEX/ACDC usage"
+
+ +

Schema Details

+ +
    +
  • Schema SAID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
  • +
  • Version: 1.0.0
  • +
  • Issuer: Legal Entity
  • +
  • Recipient: QVI (Qualified vLEI Issuer)
  • +
  • Purpose: Authorize ECR credential issuance for engagement context roles
  • +
+ +

Key Characteristics

+ +
    +
  1. For engagement-specific or temporary roles +
      +
    • Examples: Project Lead, Consultant, Temporary Representative
    • +
    • Context-specific engagements
    • +
    +
  2. +
  3. Required Attributes: +
      +
    • i: QVI Issuee AID
    • +
    • dt: Issuance date time
    • +
    • AID: Recipient Person AID
    • +
    • LEI: Legal Entity Identifier
    • +
    • personLegalName: Recipient name
    • +
    • engagementContextRole: Engagement context role description
    • +
    +
  4. +
  5. Edge References: +
      +
    • Links to Legal Entity credential
    • +
    • Uses I2I (issuer-to-issuer) operator
    • +
    • LE Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
    • +
    +
  6. +
+ +

Authorization Flow

+ +
sequenceDiagram
+    participant LE as Legal Entity
+    participant QVI as QVI
+    participant Person as Person
+
+    rect rgb(240, 255, 240)
+        Note over LE,QVI: ECR Authorization Flow
+        LE->>QVI: Issue ECR Authorization
+        Note over QVI: Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
+        Note over QVI: Authorizes engagement context role issuance
+        Note over QVI: Includes privacy disclaimer
+    end
+    
+    rect rgb(255, 240, 240)
+        Note over QVI,Person: Credential Issuance
+        QVI->>Person: Issue ECR Credential
+        Note over Person: Based on received authorization
+    end
+
+ +

Rules and Disclaimers

+ +

The ECR Authorization credential includes:

+
    +
  • Usage Disclaimer: Legal language about credential usage
  • +
  • Issuance Disclaimer: Legal language about issuance terms
  • +
  • Privacy Disclaimer: Privacy considerations for IPEX/ACDC usage
  • +
+ +

The privacy disclaimer is unique to ECR Authorization, recognizing that engagement context roles may require additional privacy considerations for context-specific interactions.

+ +

Differences from OOR Authorization

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureECR AuthorizationOOR Authorization
Schema SAIDEH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14gEKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
Role FieldengagementContextRoleofficialRole
Privacy DisclaimerYesNo
Use CaseContext-specific engagementsPermanent organizational roles
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/ecr-credential-schema.svg b/docs/_site/ecr-credential-schema.svg new file mode 100644 index 0000000..6dcc550 --- /dev/null +++ b/docs/_site/ecr-credential-schema.svg @@ -0,0 +1 @@ +

ECRvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : Person Issuee AID

+string dt : Issuance date time

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string engagementContextRole : Engagement role title

Edges

+string d : Edges block SAID

+AuthNode auth : Authorization chain

AuthNode

+string n : ACDC SAID reference

+string s : Required schema SAID

+string o : Operator(I2I)

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw\nVersion: 1.0.0\nIssued by QVI to Engagement Context Representatives

Required fields:\ni, dt, LEI, personLegalName, engagementContextRole

Links to ECR Auth credential\nSchema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nOperator: I2I (issuer to issuer)

Standard vLEI disclaimers\nSame as other vLEI credentials

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/_site/ecr-credential-schema/index.html b/docs/_site/ecr-credential-schema/index.html new file mode 100644 index 0000000..78a8c5f --- /dev/null +++ b/docs/_site/ecr-credential-schema/index.html @@ -0,0 +1,274 @@ + + + + + + + +ECR Credential Schema | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

ECR Credential Schema

+
+ +
+

Engagement Context Role (ECR) vLEI Credential Schema

+ +

ECR vLEI Credential Structure

+ +
---
+config:
+  layout: elk
+---
+classDiagram
+    class ECRvLEICredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : QVI Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +a : Attributes
+        +e : Edges
+        +r : Rules
+    }
+
+    class Attributes {
+        +string d : Attributes block SAID
+        +string i : Person Issuee AID
+        +string dt : Issuance date time
+        +string LEI : Legal Entity Identifier
+        +string personLegalName : Recipient name
+        +string engagementContextRole : Engagement role title
+    }
+
+    class Edges {
+        +string d : Edges block SAID
+        +AuthNode auth : Authorization chain
+    }
+
+    class AuthNode {
+        +string n : ACDC SAID reference
+        +string s : Required schema SAID
+        +string o : Operator (I2I)
+    }
+
+    class Rules {
+        +string d : Rules block SAID
+        +UsageDisclaimer usageDisclaimer
+        +IssuanceDisclaimer issuanceDisclaimer
+    }
+
+    class UsageDisclaimer {
+        +string l : Legal language about usage
+    }
+
+    class IssuanceDisclaimer {
+        +string l : Legal language about issuance
+    }
+
+    ECRvLEICredential --> "1" Attributes : contains
+    ECRvLEICredential --> "1" Edges : contains
+    ECRvLEICredential --> "1" Rules : contains
+    Edges --> "1" AuthNode : references
+    Rules --> "1" UsageDisclaimer : has
+    Rules --> "1" IssuanceDisclaimer : has
+
+    note for ECRvLEICredential "Schema ID: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw\nVersion: 1.0.0\nIssued by QVI to Engagement Context Representatives"
+    
+    note for Attributes "Required fields:\ni, dt, LEI, personLegalName, engagementContextRole"
+    
+    note for AuthNode "Links to ECR Auth credential\nSchema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nOperator: I2I (issuer to issuer)"
+    
+    note for Rules "Standard vLEI disclaimers\nSame as other vLEI credentials"
+
+ +

Authorization Reference

+ +

The ECR vLEI Credential requires an ECR Authorization credential from the Legal Entity. For details on the ECR Authorization structure, see ECR Auth Credential Schema.

+ +

Key Characteristics

+ +
    +
  1. Purpose: ECR credentials are for specific engagement contexts rather than official organizational positions
  2. +
  3. Field Names: Uses engagementContextRole for the role description
  4. +
  5. Use Cases: Temporary or context-specific interactions, project-based roles, consultancy engagements
  6. +
+ +

Schema Details

+ +

ECR vLEI Credential

+
    +
  • Schema SAID: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw
  • +
  • Version: 1.0.0
  • +
  • Issuer: QVI (Qualified vLEI Issuer)
  • +
  • Recipient: Person with engagement context role
  • +
  • Authorization Required: ECR Auth credential from LE
  • +
+ +

Authorization Requirements

+
    +
  • The QVI must hold a valid ECR Authorization credential from the Legal Entity
  • +
  • Authorization Schema SAID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
  • +
  • See ECR Auth Credential Schema for full authorization details
  • +
+ +

Credential Flow

+ +
sequenceDiagram
+    participant LE as Legal Entity
+    participant QVI as QVI
+    participant Person as Person
+
+    LE->>QVI: Issue ECR Authorization
+    Note over QVI: See ECR Auth Schema documentation
+    
+    QVI->>Person: Issue ECR vLEI Credential
+    Note over Person: Schema: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw
+    Note over Person: Chains to ECR Auth via edges.auth
+
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/feed.xml b/docs/_site/feed.xml new file mode 100644 index 0000000..2ceb943 --- /dev/null +++ b/docs/_site/feed.xml @@ -0,0 +1 @@ +Jekyll2025-08-26T08:59:14-04:00http://localhost:4000/feed.xmlvLEI Ecosystem Credential DocumentationDocumentation for the vLEI (verifiable Legal Entity Identifier) credential ecosystem implementation \ No newline at end of file diff --git a/docs/_site/index.html b/docs/_site/index.html new file mode 100644 index 0000000..f543869 --- /dev/null +++ b/docs/_site/index.html @@ -0,0 +1,229 @@ + + + + + + + +Home | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

Home

+
+ +
+

vLEI Ecosystem Credential Documentation

+ +

This documentation covers the implementation of the GLEIF vLEI ecosystem using KERI (Key Event Receipt Infrastructure) and ACDC (Authentic Chained Data Containers).

+ +

Documentation Overview

+ +

Core Documentation

+ + +

Credential Schemas

+ + + +

Quick Start

+ +

The vLEI ecosystem implements a hierarchical trust model for organizational identity verification:

+ +
    +
  1. Root of Trust: GLEIF as the global authority
  2. +
  3. QVIs: Qualified vLEI Issuers authorized by GLEIF
  4. +
  5. Legal Entities: Organizations with vLEI credentials
  6. +
  7. Role Holders: Individuals with official organizational roles
  8. +
+ +

Key Features

+ +
    +
  • Cryptographic Verification: All credentials are cryptographically end verifiable using KERI
  • +
  • Chain of Authority: Clear delegation chains from GLEIF to individual role holders
  • +
  • Privacy-Preserving: Selective disclosure and compact credentials
  • +
  • Revocation Support: Transaction Event Logs capture issuance state
  • +
+ +

SVG Renderings

+ +

Some class diagrams render better using ELK but the config doesn’t seem to be picked up by Jekyll.

+ +

Available SVG Diagrams

+ + + +

Additional Resources

+ + + +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/legal-entity-credential-schema.svg b/docs/_site/legal-entity-credential-schema.svg new file mode 100644 index 0000000..5d32146 --- /dev/null +++ b/docs/_site/legal-entity-credential-schema.svg @@ -0,0 +1 @@ +

LegalEntityvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : LE Issuer AID

+string dt : Issuance date time

+string LEI : Legal Entity Identifier

Edges

+string d : Edges block SAID

+QVINode qvi : QVI reference

QVINode

+string n : Issuer credential SAID

+string s : Required schema SAID

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nVersion: 1.0.0\nIssued by QVI to Legal Entity

Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI

Links to QVI credential\nSchema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao

Can be either:\n- SAID string reference\n- Full object with disclaimers

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/_site/legal-entity-credential-schema/index.html b/docs/_site/legal-entity-credential-schema/index.html new file mode 100644 index 0000000..3c6e77c --- /dev/null +++ b/docs/_site/legal-entity-credential-schema/index.html @@ -0,0 +1,224 @@ + + + + + + + +Legal Entity Credential Schema | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

Legal Entity Credential Schema

+
+ +
+

Legal Entity vLEI Credential Schema

+ +
---
+config:
+  layout: elk
+---
+classDiagram
+    class LegalEntityvLEICredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : QVI Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +a : Attributes
+        +e : Edges
+        +r : Rules
+    }
+
+    class Attributes {
+        +string d : Attributes block SAID
+        +string i : LE Issuer AID
+        +string dt : Issuance date time
+        +string LEI : Legal Entity Identifier
+    }
+
+    class Edges {
+        +string d : Edges block SAID
+        +QVINode qvi : QVI reference
+    }
+
+    class QVINode {
+        +string n : Issuer credential SAID
+        +string s : Required schema SAID
+    }
+
+    class Rules {
+        +string d : Rules block SAID
+        +UsageDisclaimer usageDisclaimer
+        +IssuanceDisclaimer issuanceDisclaimer
+    }
+
+    class UsageDisclaimer {
+        +string l : Legal language about usage
+    }
+
+    class IssuanceDisclaimer {
+        +string l : Legal language about issuance
+    }
+
+    LegalEntityvLEICredential --> "1" Attributes : contains
+    LegalEntityvLEICredential --> "1" Edges : contains
+    LegalEntityvLEICredential --> "1" Rules : contains
+    Edges --> "1" QVINode : references
+    Rules --> "1" UsageDisclaimer : has
+    Rules --> "1" IssuanceDisclaimer : has
+
+    note for LegalEntityvLEICredential "Schema ID: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nVersion: 1.0.0\nIssued by QVI to Legal Entity"
+    
+    note for Attributes "Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI"
+    
+    note for Edges "Links to QVI credential\nSchema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao"
+    
+    note for Rules "Can be either:\n- SAID string reference\n- Full object with disclaimers"
+
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/oor-auth-credential-schema.svg b/docs/_site/oor-auth-credential-schema.svg new file mode 100644 index 0000000..6e34d0b --- /dev/null +++ b/docs/_site/oor-auth-credential-schema.svg @@ -0,0 +1 @@ +

OORAuthvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

OORAuthAttributes

+string d : Attributes block SAID

+string i : QVI Issuee AID

+string dt : Issuance date time

+string AID : Recipient AID

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string officialRole : Role description

OORAuthEdges

+string d : Edges block SAID

+LENode le : Legal Entity reference

LENode

+string n : LE credential SAID

+string s : Required schema SAID

+string o : Operator(I2I)

OORAuthRules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language

IssuanceDisclaimer

+string l : Legal language

Schema ID: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes OOR credential issuance

Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, officialRole

Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/_site/oor-auth-credential-schema/index.html b/docs/_site/oor-auth-credential-schema/index.html new file mode 100644 index 0000000..0310618 --- /dev/null +++ b/docs/_site/oor-auth-credential-schema/index.html @@ -0,0 +1,297 @@ + + + + + + + +OOR Auth Credential Schema | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

OOR Auth Credential Schema

+
+ +
+

OOR Authorization vLEI Credential Schema

+ +

OOR Authorization vLEI Credential Structure

+ +
---
+config:
+  layout: elk
+---
+classDiagram
+    class OORAuthvLEICredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : LE Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +a : Attributes
+        +e : Edges
+        +r : Rules
+    }
+
+    class OORAuthAttributes {
+        +string d : Attributes block SAID
+        +string i : QVI Issuee AID
+        +string dt : Issuance date time
+        +string AID : Recipient AID
+        +string LEI : Legal Entity Identifier
+        +string personLegalName : Recipient name
+        +string officialRole : Role description
+    }
+
+    class OORAuthEdges {
+        +string d : Edges block SAID
+        +LENode le : Legal Entity reference
+    }
+
+    class LENode {
+        +string n : LE credential SAID
+        +string s : Required schema SAID
+        +string o : Operator (I2I)
+    }
+
+    class OORAuthRules {
+        +string d : Rules block SAID
+        +UsageDisclaimer usageDisclaimer
+        +IssuanceDisclaimer issuanceDisclaimer
+    }
+
+    class UsageDisclaimer {
+        +string l : Legal language
+    }
+
+    class IssuanceDisclaimer {
+        +string l : Legal language
+    }
+
+    OORAuthvLEICredential --> "1" OORAuthAttributes : contains
+    OORAuthvLEICredential --> "1" OORAuthEdges : contains
+    OORAuthvLEICredential --> "1" OORAuthRules : contains
+    OORAuthEdges --> "1" LENode : references
+    OORAuthRules --> "1" UsageDisclaimer : has
+    OORAuthRules --> "1" IssuanceDisclaimer : has
+
+    note for OORAuthvLEICredential "Schema ID: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes OOR credential issuance"
+    
+    note for OORAuthAttributes "Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, officialRole"
+    
+    note for LENode "Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)"
+
+ +

Schema Details

+ +
    +
  • Schema SAID: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
  • +
  • Version: 1.0.0
  • +
  • Issuer: Legal Entity
  • +
  • Recipient: QVI (Qualified vLEI Issuer)
  • +
  • Purpose: Authorize OOR credential issuance for official organizational roles
  • +
+ +

Key Characteristics

+ +
    +
  1. For permanent, official organizational positions +
      +
    • Examples: CEO, CFO, Director, Manager
    • +
    • Represents formal organizational hierarchy
    • +
    +
  2. +
  3. Required Attributes: +
      +
    • i: QVI Issuee AID
    • +
    • dt: Issuance date time
    • +
    • AID: Recipient Person AID
    • +
    • LEI: Legal Entity Identifier
    • +
    • personLegalName: Recipient name
    • +
    • officialRole: Official role description
    • +
    +
  4. +
  5. Edge References: +
      +
    • Links to Legal Entity credential
    • +
    • Uses I2I (issuer-to-issuer) operator
    • +
    • LE Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
    • +
    +
  6. +
+ +

Authorization Flow

+ +
sequenceDiagram
+    participant LE as Legal Entity
+    participant QVI as QVI
+    participant Person as Person
+
+    rect rgb(240, 240, 255)
+        Note over LE,QVI: OOR Authorization Flow
+        LE->>QVI: Issue OOR Authorization
+        Note over QVI: Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
+        Note over QVI: Authorizes official role issuance
+    end
+    
+    rect rgb(255, 240, 240)
+        Note over QVI,Person: Credential Issuance
+        QVI->>Person: Issue OOR Credential
+        Note over Person: Based on received authorization
+    end
+
+ +

Rules and Disclaimers

+ +

The OOR Authorization credential includes:

+
    +
  • Usage Disclaimer: Legal language about credential usage
  • +
  • Issuance Disclaimer: Legal language about issuance terms
  • +
+ +

Note: Unlike ECR Authorization, OOR Authorization does not include a privacy disclaimer as it is intended for official organizational roles that are typically public.

+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/oor-credential-schema.svg b/docs/_site/oor-credential-schema.svg new file mode 100644 index 0000000..77dcd9c --- /dev/null +++ b/docs/_site/oor-credential-schema.svg @@ -0,0 +1 @@ +

OORvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : Person Issuee AID

+string dt : Issuance date time

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string officialRole : Official role title

Edges

+string d : Edges block SAID

+AuthNode auth : Authorization chain

AuthNode

+string n : ACDC SAID reference

+string s : Required schema SAID

+string o : Operator(I2I)

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy\nVersion: 1.0.0\nIssued by QVI to Official Representatives

Required fields:\ni, dt, LEI, personLegalName, officialRole

Links to Auth credential\nSchema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nOperator: I2I (issuer to issuer)

Standard vLEI disclaimers\nSame as other vLEI credentials

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/_site/oor-credential-schema/index.html b/docs/_site/oor-credential-schema/index.html new file mode 100644 index 0000000..6c7daac --- /dev/null +++ b/docs/_site/oor-credential-schema/index.html @@ -0,0 +1,227 @@ + + + + + + + +OOR Credential Schema | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

OOR Credential Schema

+
+ +
+

Legal Entity Official Organizational Role vLEI Credential Schema

+ +
---
+config:
+  layout: elk
+---
+classDiagram
+    class OORvLEICredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : QVI Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +a : Attributes
+        +e : Edges
+        +r : Rules
+    }
+
+    class Attributes {
+        +string d : Attributes block SAID
+        +string i : Person Issuee AID
+        +string dt : Issuance date time
+        +string LEI : Legal Entity Identifier
+        +string personLegalName : Recipient name
+        +string officialRole : Official role title
+    }
+
+    class Edges {
+        +string d : Edges block SAID
+        +AuthNode auth : Authorization chain
+    }
+
+    class AuthNode {
+        +string n : ACDC SAID reference
+        +string s : Required schema SAID
+        +string o : Operator (I2I)
+    }
+
+    class Rules {
+        +string d : Rules block SAID
+        +UsageDisclaimer usageDisclaimer
+        +IssuanceDisclaimer issuanceDisclaimer
+    }
+
+    class UsageDisclaimer {
+        +string l : Legal language about usage
+    }
+
+    class IssuanceDisclaimer {
+        +string l : Legal language about issuance
+    }
+
+    OORvLEICredential --> "1" Attributes : contains
+    OORvLEICredential --> "1" Edges : contains
+    OORvLEICredential --> "1" Rules : contains
+    Edges --> "1" AuthNode : references
+    Rules --> "1" UsageDisclaimer : has
+    Rules --> "1" IssuanceDisclaimer : has
+
+    note for OORvLEICredential "Schema ID: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy\nVersion: 1.0.0\nIssued by QVI to Official Representatives"
+    
+    note for Attributes "Required fields:\ni, dt, LEI, personLegalName, officialRole"
+    
+    note for AuthNode "Links to Auth credential\nSchema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nOperator: I2I (issuer to issuer)"
+    
+    note for Rules "Standard vLEI disclaimers\nSame as other vLEI credentials"
+
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/qvi-credential-schema.svg b/docs/_site/qvi-credential-schema.svg new file mode 100644 index 0000000..6382518 --- /dev/null +++ b/docs/_site/qvi-credential-schema.svg @@ -0,0 +1 @@ +

QualifiedvLEIIssuerCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : GLEIF Issuee AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : QVI Issuee AID

+string dt : Issuance date time

+string LEI : LEI of Legal Entity

+int gracePeriod : Allocated grace period(default: 90)

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao\nVersion: 1.0.0\nIssued by GLEIF to QVIs

Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI

Can be either:\n- SAID string reference\n- Full object with disclaimers

contains

contains

has

has

1
1
1
1
\ No newline at end of file diff --git a/docs/_site/qvi-credential-schema/index.html b/docs/_site/qvi-credential-schema/index.html new file mode 100644 index 0000000..4950e99 --- /dev/null +++ b/docs/_site/qvi-credential-schema/index.html @@ -0,0 +1,208 @@ + + + + + + + +QVI Credential Schema | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

QVI Credential Schema

+
+ +
+
---
+config:
+  layout: elk
+---
+classDiagram
+    class QualifiedvLEIIssuerCredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : GLEIF Issuee AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +a : Attributes
+        +r : Rules
+    }
+
+    class Attributes {
+        +string d : Attributes block SAID
+        +string i : QVI Issuee AID
+        +string dt : Issuance date time
+        +string LEI : LEI of Legal Entity
+        +int gracePeriod : Allocated grace period (default: 90)
+    }
+
+    class Rules {
+        +string d : Rules block SAID
+        +UsageDisclaimer usageDisclaimer
+        +IssuanceDisclaimer issuanceDisclaimer
+    }
+
+    class UsageDisclaimer {
+        +string l : Legal language about usage
+    }
+
+    class IssuanceDisclaimer {
+        +string l : Legal language about issuance
+    }
+
+    QualifiedvLEIIssuerCredential --> "1" Attributes : contains
+    QualifiedvLEIIssuerCredential --> "1" Rules : contains
+    Rules --> "1" UsageDisclaimer : has
+    Rules --> "1" IssuanceDisclaimer : has
+
+    note for QualifiedvLEIIssuerCredential "Schema ID: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao\nVersion: 1.0.0\nIssued by GLEIF to QVIs"
+    
+    note for Attributes "Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI"
+    
+    note for Rules "Can be either:\n- SAID string reference\n- Full object with disclaimers"
+
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/vlei-credential-ecosystem.svg b/docs/_site/vlei-credential-ecosystem.svg new file mode 100644 index 0000000..6473447 --- /dev/null +++ b/docs/_site/vlei-credential-ecosystem.svg @@ -0,0 +1 @@ +

QVICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : GLEIF Issuee AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Rules r : Rules block

LECredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

OORCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

OORAuthCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

ECRAuthCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

QVIAttributes

+string i : QVI Issuee AID

+string dt : Issuance date time

+string LEI : LEI of the requesting Legal Entity

+int gracePeriod : Allocated grace period

LEAttributes

+string i : LE Issuer AID

+string dt : issuance date time

+string LEI : LE Issuer AID

OORAttributes

+string i : Person Issuee AID

+string dt : Issuance date time

+string LEI : LEI of the Legal Entity

+string personLegalName : Recipient name as provided during identity assurance

+string officialRole : Official role title

AuthAttributes

+string i : QVI Issuee AID

+string dt : Issuance date time

+string AID : AID of the intended recipient of the ECR credential

+string LEI : LEI of the requesting Legal Entity

+string personLegalName : Requested recipient name as provided during identity assurance

+string role : Requested role description

QVIEdge

+string n : Issuer credential SAID

+string s : SAID of required schema of the credential pointed to by this node

LEEdge

+string n : Issuer credential SAID

+string s : SAID of required schema of the credential pointed to by this node

AuthEdge

+string n : Issuer credential SAID

+string s : SAID of required schema of the credential pointed to by this node

+string o : Operator for this edge

Rules

+UsageDisclaimer usageDisclaimer : Usage Disclaimer

+IssuanceDisclaimer issuanceDisclaimer : Issuance Disclaimer

+PrivacyDisclaimer privacyDisclaimer : Privacy Disclaimer

QVI vLEI Credential
Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
Issued by: GLEIF → QVI

Legal Entity vLEI Credential
Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
Issued by: QVI → LE

Official Organizational Role
Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
Issued by: QVI → Person

OOR Authorization
Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
Issued by: LE → QVI

ECR Authorization
Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
Issued by: LE → QVI

contains

has

contains

chains to

has

contains

authorized by

has

contains

chains to

has

contains

chains to

has

requires - QVI must exist

requires - needs authorization

requires - LE must exist

requires - LE must exist

\ No newline at end of file diff --git a/docs/_site/vlei-credential-ecosystem/index.html b/docs/_site/vlei-credential-ecosystem/index.html new file mode 100644 index 0000000..8487b8b --- /dev/null +++ b/docs/_site/vlei-credential-ecosystem/index.html @@ -0,0 +1,374 @@ + + + + + + + +vLEI Credential Ecosystem | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

vLEI Credential Ecosystem

+
+ +
+

vLEI Credential Ecosystem - Dependencies and Schema Relationships

+ +
---
+config:
+  layout: elk
+---
+classDiagram
+    class QVICredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : GLEIF Issuee AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +Attributes a : Attributes block
+        +Rules r : Rules block
+    }
+    class LECredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : QVI Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +Attributes a : Attributes block
+        +Edges e : Edges block
+        +Rules r : Rules block
+    }
+    class OORCredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : QVI Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +Attributes a : Attributes block
+        +Edges e : Edges block
+        +Rules r : Rules block
+    }
+    class OORAuthCredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : LE Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +Attributes a : Attributes block
+        +Edges e : Edges block
+        +Rules r : Rules block
+    }
+    class ECRAuthCredential {
+        +string v : Version
+        +string d : Credential SAID
+        +string u : One time use nonce
+        +string i : LE Issuer AID
+        +string ri : Credential status registry
+        +string s : Schema SAID
+        +Attributes a : Attributes block
+        +Edges e : Edges block
+        +Rules r : Rules block
+    }
+    class QVIAttributes {
+        +string i : QVI Issuee AID
+        +string dt : Issuance date time
+        +string LEI : LEI of the requesting Legal Entity
+        +int gracePeriod : Allocated grace period
+    }
+    class LEAttributes {
+        +string i : LE Issuer AID
+        +string dt : issuance date time
+        +string LEI : LE Issuer AID
+    }
+    class OORAttributes {
+        +string i : Person Issuee AID
+        +string dt : Issuance date time
+        +string LEI : LEI of the Legal Entity
+        +string personLegalName : Recipient name as provided during identity assurance
+        +string officialRole : Official role title
+    }
+    class AuthAttributes {
+        +string i : QVI Issuee AID
+        +string dt : Issuance date time
+        +string AID : AID of the intended recipient of the ECR credential
+        +string LEI : LEI of the requesting Legal Entity
+        +string personLegalName : Requested recipient name as provided during identity assurance
+        +string role : Requested role description
+    }
+    class QVIEdge {
+        +string n : Issuer credential SAID
+        +string s : SAID of required schema of the credential pointed to by this node
+    }
+    class LEEdge {
+        +string n : Issuer credential SAID
+        +string s : SAID of required schema of the credential pointed to by this node
+    }
+    class AuthEdge {
+        +string n : Issuer credential SAID
+        +string s : SAID of required schema of the credential pointed to by this node
+        +string o : Operator for this edge
+    }
+    class Rules {
+        +UsageDisclaimer usageDisclaimer : Usage Disclaimer
+        +IssuanceDisclaimer issuanceDisclaimer : Issuance Disclaimer
+        +PrivacyDisclaimer privacyDisclaimer : Privacy Disclaimer
+    }
+    QVICredential --> QVIAttributes : contains
+    QVICredential --> Rules : has
+    LECredential --> LEAttributes : contains
+    LECredential --> QVIEdge : chains to
+    LECredential --> Rules : has
+    OORCredential --> OORAttributes : contains
+    OORCredential --> AuthEdge : authorized by
+    OORCredential --> Rules : has
+    OORAuthCredential --> AuthAttributes : contains
+    OORAuthCredential --> LEEdge : chains to
+    OORAuthCredential --> Rules : has
+    ECRAuthCredential --> AuthAttributes : contains
+    ECRAuthCredential --> LEEdge : chains to
+    ECRAuthCredential --> Rules : has
+    LECredential ..> QVICredential : requires - QVI must exist
+    OORCredential ..> OORAuthCredential : requires - needs authorization
+    OORAuthCredential ..> LECredential : requires - LE must exist
+    ECRAuthCredential ..> LECredential : requires - LE must exist
+    note for QVICredential "QVI vLEI Credential<br/>Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao<br/>Issued by: GLEIF → QVI"
+    note for LECredential "Legal Entity vLEI Credential<br/>Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY<br/>Issued by: QVI → LE"
+    note for OORCredential "Official Organizational Role<br/>Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy<br/>Issued by: QVI → Person"
+    note for OORAuthCredential "OOR Authorization<br/>Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E<br/>Issued by: LE → QVI"
+    note for ECRAuthCredential "ECR Authorization<br/>Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g<br/>Issued by: LE → QVI"
+
+
+ +

Credential Issuance Flow

+ +
sequenceDiagram
+    participant GLEIF
+    participant QVI as Qualified vLEI Issuer
+    participant LE as Legal Entity
+    participant Person as Person/Role Holder
+    
+    rect rgb(240, 240, 255)
+        Note over GLEIF,QVI: Foundation Layer
+        GLEIF->>QVI: Issue QVI vLEI Credential
+        Note right of QVI: Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
+    end
+    
+    rect rgb(240, 255, 240)
+        Note over QVI,LE: Legal Entity Layer
+        QVI->>LE: Issue LE vLEI Credential
+        Note right of LE: Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
+        Note right of LE: Chains to QVI credential
+    end
+    
+    rect rgb(255, 240, 240)
+        Note over LE,Person: Authorization Layer
+        LE->>QVI: Issue OOR Authorization
+        Note left of QVI: Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
+        Note left of QVI: Authorizes role issuance
+        
+        LE->>QVI: Issue ECR Authorization
+        Note left of QVI: Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
+        Note left of QVI: Authorizes context role
+    end
+    
+    rect rgb(255, 255, 240)
+        Note over QVI,Person: Role Credential Layer
+        QVI->>Person: Issue OOR vLEI Credential
+        Note right of Person: Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
+        Note right of Person: Chains to OOR Auth
+        QVI->>Person: Issue ECR vLEI Credential
+        Note right of Person: Schema: EEEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw
+        Note right of Person: Chains to ECR Auth
+        LE->>Person: Issue ECR vLEI Credential
+        Note right of Person: Schema: EEEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw
+    end
+
+ +

Key Design Patterns

+ +

1. Credential Chaining

+ +
    +
  • Each credential (except QVI) references its chained credentials through edges
  • +
  • Ensures verifiable chain of authority from GLEIF down to individual roles
  • +
+ +

2. Compact credentials

+ +
    +
  • Attributes and Rules can be either: +
      +
    • Full objects with all properties
    • +
    • SAIDs for compactness
    • +
    +
  • +
+ +

3. Common Rules Structure

+ +
    +
  • All credentials share similar disclaimer structure
  • +
  • ECR Authorization adds privacy disclaimer for IPEX/ACDC
  • +
+ +

4. Authorization Pattern

+ +
    +
  • Legal Entities authorize QVIs to issue role credentials
  • +
  • Separates OOR (official roles) from ECR (engagement context roles)
  • +
+ + + +
    +
  • Legal Entities can issue their own ECR credentials without a preceeding auth
  • +
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/_site/vlei-dependency-graph.svg b/docs/_site/vlei-dependency-graph.svg new file mode 100644 index 0000000..c787bb3 --- /dev/null +++ b/docs/_site/vlei-dependency-graph.svg @@ -0,0 +1 @@ +

GLEIF
Root Authority

QVI vLEI Credential
Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
Issued by: GLEIF

Legal Entity vLEI Credential
Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
Issued by: QVI

OOR Authorization Credential
Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
Issued by: Legal Entity

ECR Authorization Credential
Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
Issued by: Legal Entity

OOR vLEI Credential
Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
Issued by: QVI

ECR vLEI Credential
Schema: [ECR Schema]
Issued by: QVI

Person/Role Holder

issues

issues

authorizes via

authorizes via

enables issuance of

enables issuance of

issues with auth

issues with auth

held by

held by

edges.qvi references

edges.le references

edges.le references

edges.auth references

\ No newline at end of file diff --git a/docs/_site/vlei-dependency-graph/index.html b/docs/_site/vlei-dependency-graph/index.html new file mode 100644 index 0000000..198af60 --- /dev/null +++ b/docs/_site/vlei-dependency-graph/index.html @@ -0,0 +1,329 @@ + + + + + + + +vLEI Dependency Graph | vLEI Ecosystem Credential Documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

vLEI Dependency Graph

+
+ +
+

vLEI Credential Dependencies and Relationships

+ +

Dependency Graph

+ +
---
+config:
+  layout: elk
+---
+graph TD
+    %% Define nodes with schema IDs
+    GLEIF["GLEIF<br/>Root Authority"]
+    QVI["QVI vLEI Credential<br/>Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao<br/>Issued by: GLEIF"]
+    LE["Legal Entity vLEI Credential<br/>Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY<br/>Issued by: QVI"]
+    OORAuth["OOR Authorization Credential<br/>Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E<br/>Issued by: Legal Entity"]
+    ECRAuth["ECR Authorization Credential<br/>Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g<br/>Issued by: Legal Entity"]
+    OOR["OOR vLEI Credential<br/>Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy<br/>Issued by: QVI"]
+    ECR["ECR vLEI Credential<br/>Schema: [ECR Schema]<br/>Issued by: QVI"]
+    Person["Person/Role Holder"]
+
+    %% Define dependencies
+    GLEIF -->|issues| QVI
+    QVI -->|issues| LE
+    LE -->|authorizes via| OORAuth
+    LE -->|authorizes via| ECRAuth
+    OORAuth -->|enables issuance of| OOR
+    ECRAuth -->|enables issuance of| ECR
+    QVI -->|issues with auth| OOR
+    QVI -->|issues with auth| ECR
+    OOR -->|held by| Person
+    ECR -->|held by| Person
+
+    %% Edge dependencies (credential chaining)
+    LE -.->|edges.qvi references| QVI
+    OORAuth -.->|edges.le references| LE
+    ECRAuth -.->|edges.le references| LE
+    OOR -.->|edges.auth references| OORAuth
+
+    %% Styling
+    style GLEIF fill:#e1f5fe
+    style QVI fill:#fff3e0
+    style LE fill:#e8f5e9
+    style OORAuth fill:#fce4ec
+    style ECRAuth fill:#fce4ec
+    style OOR fill:#f3e5f5
+    style ECR fill:#f3e5f5
+    style Person fill:#e0e0e0
+
+ +

Credential Dependencies Table

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Credential TypeSchema SAIDIssuerRequired DependenciesEdge References
QVI vLEIEBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqaoGLEIFNone (Root)None
Legal Entity vLEIENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWYQVIQVI Credentialedges.qvi → QVI Schema
OOR AuthorizationEKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-ELegal EntityLE Credentialedges.le → LE Schema
ECR AuthorizationEH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14gLegal EntityLE Credentialedges.le → LE Schema
OOR vLEIEBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJyQVIOOR Authorizationedges.auth → OOR Auth Schema
ECR vLEIEEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jwQVIECR Authorizationedges.auth → ECR Auth Schema
+ +

Dependency Rules

+ +

1. Hierarchical Dependencies

+
    +
  • GLEIF is the root authority (no dependencies)
  • +
  • QVIs must have valid GLEIF-issued credentials
  • +
  • Legal Entities must have valid QVI-issued credentials
  • +
  • Role credentials require authorization from Legal Entities
  • +
+ +

2. Edge-Based Verification

+

Each credential (except QVI) contains an edges block that references “chained” (directed edge) credentials:

+ +
"edges": {
+  "chainedCredentialType": {
+    "n": "chained credential SAID",
+    "s": "chained schema SAID (constant)"
+  }
+}
+
+ +

3. Authorization Flow

+
sequenceDiagram
+    participant LE as Legal Entity
+    participant QVI as QVI
+    participant P as Person
+    
+    Note over LE,QVI: Authorization Phase
+    LE->>QVI: Issue OOR/ECR Authorization
+    Note right of QVI: Contains: AID, LEI, personLegalName, role
+    
+    Note over QVI,P: Issuance Phase
+    QVI->>P: Issue OOR/ECR Credential
+    Note right of P: Must reference authorization in edges
+
+ +

4. Validation Chain

+

To validate any credential, verifiers must:

+
    +
  1. Check the credential signature and status
  2. +
  3. Follow edge references up the chain
  4. +
  5. Validate each chained credential
  6. +
  7. Ensure unbroken chain to GLEIF root
  8. +
+ +

Critical Dependencies

+ +

For QVI Operations

+
    +
  • Required: Valid QVI vLEI Credential from GLEIF
  • +
  • Enables: Issuing LE credentials, OOR/ECR credentials (with auth)
  • +
+ + +
    +
  • Required: Valid LE vLEI Credential from QVI
  • +
  • Enables: Issuing OOR/ECR Authorization credentials
  • +
+ +

For Role Issuance

+
    +
  • Required: Valid Authorization credential from LE + Valid QVI credential
  • +
  • Enables: Issuing role credentials to persons
  • +
+ +
+ +
+
+
+ + + \ No newline at end of file diff --git a/docs/assets/main.scss b/docs/assets/main.scss new file mode 100644 index 0000000..4812ed5 --- /dev/null +++ b/docs/assets/main.scss @@ -0,0 +1,33 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +@import "minima"; + +// Override default content width +.wrapper { + max-width: calc(1200px - (30px * 2)); + @media screen and (max-width: 1200px) { + max-width: calc(1200px - (30px)); + } +} + +// Make images responsive and allow them to be larger +.post-content img, +.page-content img { + max-width: 100%; + height: auto; + display: block; + margin: 2em auto; +} + +// Optional: Full-width images with a class +.full-width { + width: 100vw; + position: relative; + left: 50%; + right: 50%; + margin-left: -50vw; + margin-right: -50vw; + max-width: none; +} \ No newline at end of file diff --git a/docs/auth-credential-schemas.md b/docs/auth-credential-schemas.md new file mode 100644 index 0000000..3691c2e --- /dev/null +++ b/docs/auth-credential-schemas.md @@ -0,0 +1,81 @@ +--- +layout: page +title: "Auth Credential Schemas" +permalink: /auth-credential-schemas/ +--- + +# Authorization vLEI Credential Schemas + +The vLEI ecosystem uses authorization credentials issued by Legal Entities to QVIs to authorize the issuance of role credentials to individuals. There are two types of authorization credentials: + +## Authorization Credential Types + +### [OOR Authorization Credential](/oor-auth-credential-schema/) +- **Purpose**: Authorize issuance of Official Organizational Role (OOR) credentials +- **Schema SAID**: `EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E` +- **Use Case**: Permanent organizational roles (CEO, CFO, Director, etc.) + +### [ECR Authorization Credential](/ecr-auth-credential-schema/) +- **Purpose**: Authorize issuance of Engagement Context Role (ECR) credentials +- **Schema SAID**: `EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g` +- **Use Case**: Context-specific engagements (Project Lead, Consultant, etc.) + +## Authorization Credential Comparison + +| Feature | OOR Authorization | ECR Authorization | +|---------|------------------|-------------------| +| **Schema SAID** | `EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E` | `EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g` | +| **Issuer** | Legal Entity | Legal Entity | +| **Recipient** | QVI | QVI | +| **Purpose** | Authorize OOR credential issuance | Authorize ECR credential issuance | +| **Role Field** | `officialRole` | `engagementContextRole` | +| **Privacy Disclaimer** | No | Yes | +| **Use Case** | Permanent organizational roles | Context-specific engagements | + +## Authorization Flow Overview + +```mermaid +sequenceDiagram + participant LE as Legal Entity + participant QVI as QVI + participant Person as Person + + rect rgb(240, 240, 255) + Note over LE,QVI: OOR Authorization Flow + LE->>QVI: Issue OOR Authorization + Note over QVI: Authorizes official role issuance + end + + rect rgb(240, 255, 240) + Note over LE,QVI: ECR Authorization Flow + LE->>QVI: Issue ECR Authorization + Note over QVI: Authorizes engagement context role issuance + Note over QVI: Includes privacy disclaimer + end + + rect rgb(255, 240, 240) + Note over QVI,Person: Credential Issuance + QVI->>Person: Issue OOR or ECR Credential + Note over Person: Based on received authorization + end +``` + +## Key Architectural Points + +1. **Both authorization types**: + - Are issued by Legal Entities to QVIs + - Reference the LE credential in their edges + - Use the I2I (issuer-to-issuer) operator + - Share similar structure but different purposes + +2. **Authorization enables credential issuance**: + - QVIs must hold valid authorization to issue role credentials + - Authorization specifies the person and role being authorized + - The issued credential chains back to the authorization + +## Related Documentation + +- [OOR Auth Credential Schema](/oor-auth-credential-schema/) - Detailed OOR authorization structure +- [ECR Auth Credential Schema](/ecr-auth-credential-schema/) - Detailed ECR authorization structure +- [OOR Credential Schema](/oor-credential-schema/) - OOR role credentials issued to persons +- [ECR Credential Schema](/ecr-credential-schema/) - ECR role credentials issued to persons \ No newline at end of file diff --git a/docs/auth-credential-schemas.svg b/docs/auth-credential-schemas.svg new file mode 100644 index 0000000..8635698 --- /dev/null +++ b/docs/auth-credential-schemas.svg @@ -0,0 +1 @@ +PersonQVILegal EntityPersonQVILegal EntityOOR Authorization FlowAuthorizes official role issuanceECR Authorization FlowAuthorizes engagement context role issuanceIncludes privacy disclaimerCredential IssuanceBased on received authorizationIssue OOR AuthorizationIssue ECR AuthorizationIssue OOR or ECR Credential \ No newline at end of file diff --git a/docs/credentials-issuance-schema.svg b/docs/credentials-issuance-schema.svg new file mode 100644 index 0000000..c883b8c --- /dev/null +++ b/docs/credentials-issuance-schema.svg @@ -0,0 +1 @@ +Person/Role HolderLegal EntityQualified vLEI IssuerGLEIFPerson/Role HolderLegal EntityQualified vLEI IssuerGLEIFFoundation LayerSchema: EBfdlu8R27Fbx...Contains LEI, grace periodLegal Entity LayerSchema: ENPXp1vQzRF6...Chains to QVI credentialContains entity LEIAuthorization LayerSchema: EKA57bKBKxr...Authorizes role issuanceSchema: EH6ekLjSr8V3...For engagement contextsRole Credential LayerSchema: EBNaNu-M9P5c...Official organizational roleChains to OOR AuthSchema: EEy9PkikFcANV1l7...Engagement context roleChains to ECR AuthIssue QVI vLEI CredentialIssue LE vLEI CredentialIssue OOR AuthorizationIssue ECR AuthorizationIssue OOR vLEI CredentialIssue ECR vLEI Credential \ No newline at end of file diff --git a/docs/credentials-trust-chain.svg b/docs/credentials-trust-chain.svg new file mode 100644 index 0000000..ad3bfd1 --- /dev/null +++ b/docs/credentials-trust-chain.svg @@ -0,0 +1 @@ +

GLEIF
Root Authority

QVI vLEI
Credential

Legal Entity
vLEI Credential

OOR/ECR
Authorization

OOR vLEI
Credential

ECR vLEI
Credential

Issues

Authorizes

Enables

Permits

Permits

\ No newline at end of file diff --git a/docs/credentials.md b/docs/credentials.md new file mode 100644 index 0000000..95d3d9f --- /dev/null +++ b/docs/credentials.md @@ -0,0 +1,182 @@ +--- +layout: page +title: "Credentials" +permalink: /credentials/ +--- + +# vLEI Credential Ecosystem Overview + +This document provides a comprehensive overview of the verifiable Legal Entity Identifier (vLEI) credential ecosystem implemented using KERI (Key Event Receipt Infrastructure) and ACDC (Authentic Chained Data Containers). + +## Credential Types + +The vLEI ecosystem consists of six primary credential types that form a hierarchical trust chain: + +### 1. QVI vLEI Credential + +- **Schema SAID**: `EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao` +- **Issuer**: GLEIF (Global Legal Entity Identifier Foundation) +- **Recipient**: Qualified vLEI Issuers (QVIs) +- **Purpose**: Authorizes QVIs to issue Legal Entity vLEI credentials +- **Key Data**: LEI of the QVI organization, grace period (default 90 days) + +### 2. Legal Entity vLEI Credential + +- **Schema SAID**: `ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY` +- **Issuer**: Qualified vLEI Issuer (QVI) +- **Recipient**: Legal Entity (LE) +- **Purpose**: Establishes the verified legal identity of an organization +- **Key Data**: LEI of the legal entity, chains to QVI credential + +### 3. OOR Authorization vLEI Credential + +- **Schema SAID**: `EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E` +- **Issuer**: Legal Entity (LE) +- **Recipient**: Qualified vLEI Issuer (QVI) +- **Purpose**: Authorizes QVI to issue Official Organizational Role credentials +- **Key Data**: Person's AID, role details, chains to LE credential + +### 4. Official Organizational Role (OOR) vLEI Credential + +- **Schema SAID**: `EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy` +- **Issuer**: Qualified vLEI Issuer (QVI) +- **Recipient**: Person/Role Holder +- **Purpose**: Verifies a person's official role within an organization +- **Key Data**: Person's legal name, official role title, LEI reference + +### 5. ECR vLEI Credential + +- **Schema SAID**: `EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw` +- **Issuer**: Qualified vLEI Issuer (QVI) +- **Recipient**: Person/Role Holder +- **Purpose**: Verifies a person's engagement context role for specific interactions +- **Key Data**: Person's legal name, engagement role title, LEI reference, chains to ECR Auth + +### 6. ECR Authorization vLEI Credential + +- **Schema SAID**: `EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g` +- **Issuer**: Legal Entity (LE) +- **Recipient**: Qualified vLEI Issuer (QVI) +- **Purpose**: Authorizes QVI to issue Engagement Context Role credentials +- **Key Data**: Similar to OOR Auth but for engagement-specific roles +- **Special Feature**: Includes privacy disclaimer for IPEX/ACDC usage + +## Trust Chain Flow + +```mermaid +flowchart TD + A[GLEIF
Root Authority] -->|Issues| B[QVI vLEI
Credential] + B -->|Authorizes| C[Legal Entity
vLEI Credential] + C -->|Enables| D[OOR/ECR
Authorization] + D -->|Permits| E[OOR vLEI
Credential] + D -->|Permits| F[ECR vLEI
Credential] + + style A fill:#ff9999 + style B fill:#99ccff + style C fill:#99ff99 + style D fill:#ffcc99 + style E fill:#ff99ff + style F fill:#ccffcc +``` + +## Credential Issuance Sequence + +```mermaid +sequenceDiagram + participant GLEIF + participant QVI as Qualified vLEI Issuer + participant LE as Legal Entity + participant Person as Person/Role Holder + + rect rgb(240, 240, 255) + Note over GLEIF,QVI: Foundation Layer + GLEIF->>QVI: Issue QVI vLEI Credential + Note right of QVI: Schema: EBfdlu8R27Fbx... + Note right of QVI: Contains LEI, grace period + end + + rect rgb(240, 255, 240) + Note over QVI,LE: Legal Entity Layer + QVI->>LE: Issue LE vLEI Credential + Note right of LE: Schema: ENPXp1vQzRF6... + Note right of LE: Chains to QVI credential + Note right of LE: Contains entity LEI + end + + rect rgb(255, 240, 240) + Note over LE,QVI: Authorization Layer + LE->>QVI: Issue OOR Authorization + Note left of QVI: Schema: EKA57bKBKxr... + Note left of QVI: Authorizes role issuance + + LE->>QVI: Issue ECR Authorization + Note left of QVI: Schema: EH6ekLjSr8V3... + Note left of QVI: For engagement contexts + end + + rect rgb(255, 255, 240) + Note over QVI,Person: Role Credential Layer + QVI->>Person: Issue OOR vLEI Credential + Note right of Person: Schema: EBNaNu-M9P5c... + Note right of Person: Official organizational role + Note right of Person: Chains to OOR Auth + + QVI->>Person: Issue ECR vLEI Credential + Note right of Person: Schema: EEy9PkikFcANV1l7... + Note right of Person: Engagement context role + Note right of Person: Chains to ECR Auth + end +``` + +## Key Architecture Features + +### Credential Chaining + +- Each credential (except QVI) contains edges that reference its authorizing chained credential +- Creates a verifiable chain of authority from GLEIF down to individual roles9 +- Enables cryptographic verification of the entire trust chain + +### SAID-Based References + +- All credential components use Self-Addressing Identifiers (SAIDs) +- Attributes and Rules can be either full objects or SAID string references +- Enables efficient storage and transmission while maintaining integrity + +### Common Structure + +All vLEI credentials share a common ACDC structure: + +- **v**: Version string +- **d**: Credential SAID +- **u**: One-time use nonce (privacy-preserving metadata) +- **i**: Issuer AID +- **ri**: Credential status registry +- **s**: Schema SAID +- **a**: Attributes (content-specific) +- **e**: Edges (chaining relationships) +- **r**: Rules (usage and issuance disclaimers) + +### Authorization Pattern + +- Legal Entities issue authorization credentials to QVIs +- QVIs then issue role credentials to individuals +- Separates official roles (OOR) from engagement context roles (ECR) +- ECR includes additional privacy considerations for IPEX/ACDC usage + +## Verification Process + +To verify any credential in the ecosystem: + +1. **Validate the credential structure** against its schema SAID +2. **Verify the issuer signature** using KERI +3. **Check the credential status** via an Observor deployemt monitoring Transaction Event Log staus +4. **Follow the edge references** to validate the chain of authority +5. **Verify each directed edge (chained credential)** recursively up to GLEIF + +## Use Cases + +- **Supply Chain Verification**: Verify the legal identity of trading partners +- **Digital Identity**: Establish organizational roles for digital interactions +- **Regulatory Compliance**: Provide cryptographic proof of organizational authority +- **Selective Disclosure**: Share only necessary identity attributes +- **Cross-Border Commerce**: Enable trusted international business relationships diff --git a/docs/ecr-auth-credential-schema.md b/docs/ecr-auth-credential-schema.md new file mode 100644 index 0000000..5597a77 --- /dev/null +++ b/docs/ecr-auth-credential-schema.md @@ -0,0 +1,152 @@ +--- +layout: page +title: "ECR Auth Credential Schema" +permalink: /ecr-auth-credential-schema/ +--- + +# ECR Authorization vLEI Credential Schema + +## ECR Authorization vLEI Credential Structure + +```mermaid +--- +config: + layout: elk +--- +classDiagram + class ECRAuthvLEICredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : LE Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +a : Attributes + +e : Edges + +r : Rules + } + + class ECRAuthAttributes { + +string d : Attributes block SAID + +string i : QVI Issuee AID + +string dt : Issuance date time + +string AID : Recipient AID + +string LEI : Legal Entity Identifier + +string personLegalName : Recipient name + +string engagementContextRole : Role description + } + + class ECRAuthEdges { + +string d : Edges block SAID + +LENode le : Legal Entity reference + } + + class LENode { + +string n : LE credential SAID + +string s : Required schema SAID + +string o : Operator (I2I) + } + + class ECRAuthRules { + +string d : Rules block SAID + +UsageDisclaimer usageDisclaimer + +IssuanceDisclaimer issuanceDisclaimer + +PrivacyDisclaimer privacyDisclaimer + } + + class UsageDisclaimer { + +string l : Legal language + } + + class IssuanceDisclaimer { + +string l : Legal language + } + + class PrivacyDisclaimer { + +string l : Privacy considerations text + } + + ECRAuthvLEICredential --> "1" ECRAuthAttributes : contains + ECRAuthvLEICredential --> "1" ECRAuthEdges : contains + ECRAuthvLEICredential --> "1" ECRAuthRules : contains + ECRAuthEdges --> "1" LENode : references + ECRAuthRules --> "1" UsageDisclaimer : has + ECRAuthRules --> "1" IssuanceDisclaimer : has + ECRAuthRules --> "1" PrivacyDisclaimer : has + + note for ECRAuthvLEICredential "Schema ID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes ECR credential issuance" + + note for ECRAuthAttributes "Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, engagementContextRole" + + note for LENode "Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)" + + note for PrivacyDisclaimer "ECR Auth includes privacy\nconsiderations for IPEX/ACDC usage" +``` + +## Schema Details + +- **Schema SAID**: `EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g` +- **Version**: 1.0.0 +- **Issuer**: Legal Entity +- **Recipient**: QVI (Qualified vLEI Issuer) +- **Purpose**: Authorize ECR credential issuance for engagement context roles + +## Key Characteristics + +1. **For engagement-specific or temporary roles** + - Examples: Project Lead, Consultant, Temporary Representative + - Context-specific engagements + +2. **Required Attributes**: + - `i`: QVI Issuee AID + - `dt`: Issuance date time + - `AID`: Recipient Person AID + - `LEI`: Legal Entity Identifier + - `personLegalName`: Recipient name + - `engagementContextRole`: Engagement context role description + +3. **Edge References**: + - Links to Legal Entity credential + - Uses I2I (issuer-to-issuer) operator + - LE Schema: `ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY` + +## Authorization Flow + +```mermaid +sequenceDiagram + participant LE as Legal Entity + participant QVI as QVI + participant Person as Person + + rect rgb(240, 255, 240) + Note over LE,QVI: ECR Authorization Flow + LE->>QVI: Issue ECR Authorization + Note over QVI: Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g + Note over QVI: Authorizes engagement context role issuance + Note over QVI: Includes privacy disclaimer + end + + rect rgb(255, 240, 240) + Note over QVI,Person: Credential Issuance + QVI->>Person: Issue ECR Credential + Note over Person: Based on received authorization + end +``` + +## Rules and Disclaimers + +The ECR Authorization credential includes: +- **Usage Disclaimer**: Legal language about credential usage +- **Issuance Disclaimer**: Legal language about issuance terms +- **Privacy Disclaimer**: Privacy considerations for IPEX/ACDC usage + +The privacy disclaimer is unique to ECR Authorization, recognizing that engagement context roles may require additional privacy considerations for context-specific interactions. + +## Differences from OOR Authorization + +| Feature | ECR Authorization | OOR Authorization | +|---------|------------------|-------------------| +| **Schema SAID** | `EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g` | `EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E` | +| **Role Field** | `engagementContextRole` | `officialRole` | +| **Privacy Disclaimer** | Yes | No | +| **Use Case** | Context-specific engagements | Permanent organizational roles | \ No newline at end of file diff --git a/docs/ecr-auth-credential-schema.svg b/docs/ecr-auth-credential-schema.svg new file mode 100644 index 0000000..b86ec4c --- /dev/null +++ b/docs/ecr-auth-credential-schema.svg @@ -0,0 +1 @@ +

ECRAuthvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

ECRAuthAttributes

+string d : Attributes block SAID

+string i : QVI Issuee AID

+string dt : Issuance date time

+string AID : Recipient AID

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string engagementContextRole : Role description

ECRAuthEdges

+string d : Edges block SAID

+LENode le : Legal Entity reference

LENode

+string n : LE credential SAID

+string s : Required schema SAID

+string o : Operator(I2I)

ECRAuthRules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

+PrivacyDisclaimer privacyDisclaimer

UsageDisclaimer

+string l : Legal language

IssuanceDisclaimer

+string l : Legal language

PrivacyDisclaimer

+string l : Privacy considerations text

Schema ID: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes ECR credential issuance

Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, engagementContextRole

Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)

ECR Auth includes privacy\nconsiderations for IPEX/ACDC usage

contains

contains

contains

references

has

has

has

1
1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/ecr-credential-schema.md b/docs/ecr-credential-schema.md new file mode 100644 index 0000000..41a3e3a --- /dev/null +++ b/docs/ecr-credential-schema.md @@ -0,0 +1,118 @@ +--- +layout: page +title: "ECR Credential Schema" +permalink: /ecr-credential-schema/ +--- + +# Engagement Context Role (ECR) vLEI Credential Schema + +## ECR vLEI Credential Structure + +```mermaid +--- +config: + layout: elk +--- +classDiagram + class ECRvLEICredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : QVI Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +a : Attributes + +e : Edges + +r : Rules + } + + class Attributes { + +string d : Attributes block SAID + +string i : Person Issuee AID + +string dt : Issuance date time + +string LEI : Legal Entity Identifier + +string personLegalName : Recipient name + +string engagementContextRole : Engagement role title + } + + class Edges { + +string d : Edges block SAID + +AuthNode auth : Authorization chain + } + + class AuthNode { + +string n : ACDC SAID reference + +string s : Required schema SAID + +string o : Operator (I2I) + } + + class Rules { + +string d : Rules block SAID + +UsageDisclaimer usageDisclaimer + +IssuanceDisclaimer issuanceDisclaimer + } + + class UsageDisclaimer { + +string l : Legal language about usage + } + + class IssuanceDisclaimer { + +string l : Legal language about issuance + } + + ECRvLEICredential --> "1" Attributes : contains + ECRvLEICredential --> "1" Edges : contains + ECRvLEICredential --> "1" Rules : contains + Edges --> "1" AuthNode : references + Rules --> "1" UsageDisclaimer : has + Rules --> "1" IssuanceDisclaimer : has + + note for ECRvLEICredential "Schema ID: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw\nVersion: 1.0.0\nIssued by QVI to Engagement Context Representatives" + + note for Attributes "Required fields:\ni, dt, LEI, personLegalName, engagementContextRole" + + note for AuthNode "Links to ECR Auth credential\nSchema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nOperator: I2I (issuer to issuer)" + + note for Rules "Standard vLEI disclaimers\nSame as other vLEI credentials" +``` + + +## Authorization Reference + +The ECR vLEI Credential requires an ECR Authorization credential from the Legal Entity. For details on the ECR Authorization structure, see [ECR Auth Credential Schema](/ecr-auth-credential-schema/). + +## Key Characteristics + +1. **Purpose**: ECR credentials are for specific engagement contexts rather than official organizational positions +2. **Field Names**: Uses `engagementContextRole` for the role description +3. **Use Cases**: Temporary or context-specific interactions, project-based roles, consultancy engagements + +## Schema Details + +### ECR vLEI Credential +- **Schema SAID**: `EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw` +- **Version**: 1.0.0 +- **Issuer**: QVI (Qualified vLEI Issuer) +- **Recipient**: Person with engagement context role +- **Authorization Required**: ECR Auth credential from LE + +### Authorization Requirements +- The QVI must hold a valid ECR Authorization credential from the Legal Entity +- Authorization Schema SAID: `EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g` +- See [ECR Auth Credential Schema](/ecr-auth-credential-schema/) for full authorization details + +## Credential Flow + +```mermaid +sequenceDiagram + participant LE as Legal Entity + participant QVI as QVI + participant Person as Person + + LE->>QVI: Issue ECR Authorization + Note over QVI: See ECR Auth Schema documentation + + QVI->>Person: Issue ECR vLEI Credential + Note over Person: Schema: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw + Note over Person: Chains to ECR Auth via edges.auth +``` \ No newline at end of file diff --git a/docs/ecr-credential-schema.svg b/docs/ecr-credential-schema.svg new file mode 100644 index 0000000..6dcc550 --- /dev/null +++ b/docs/ecr-credential-schema.svg @@ -0,0 +1 @@ +

ECRvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : Person Issuee AID

+string dt : Issuance date time

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string engagementContextRole : Engagement role title

Edges

+string d : Edges block SAID

+AuthNode auth : Authorization chain

AuthNode

+string n : ACDC SAID reference

+string s : Required schema SAID

+string o : Operator(I2I)

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw\nVersion: 1.0.0\nIssued by QVI to Engagement Context Representatives

Required fields:\ni, dt, LEI, personLegalName, engagementContextRole

Links to ECR Auth credential\nSchema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g\nOperator: I2I (issuer to issuer)

Standard vLEI disclaimers\nSame as other vLEI credentials

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..42d7064 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,66 @@ +--- +layout: page +title: "Home" +permalink: / +--- + +# vLEI Ecosystem Credential Documentation + +This documentation covers the implementation of the GLEIF vLEI ecosystem using KERI (Key Event Receipt Infrastructure) and ACDC (Authentic Chained Data Containers). + +## Documentation Overview + +### Core Documentation +- [Credentials Overview](/credentials/) - Introduction to the credential types and their relationships +- [vLEI Credential Ecosystem](/vlei-credential-ecosystem/) - Detailed ecosystem architecture and workflows +- [Dependency Graph](/vlei-dependency-graph/) - Visual representation of credential dependencies + +### Credential Schemas + +- [Auth Credential Schema](/auth-credential-schemas/) - OOR and ECR authorization credentials +- [Legal Entity Credential](/legal-entity-credential-schema/) - LE credential schema details +- [QVI Credential](/qvi-credential-schema/) - Qualified vLEI Issuer credential schema +- [OOR Credential](/oor-credential-schema/) - Official Organizational Role credential schema +- [ECR Credential](/ecr-credential-schema/) - Engagement Context Role credential schema + +## Quick Start + +The vLEI ecosystem implements a hierarchical trust model for organizational identity verification: + +1. **Root of Trust**: GLEIF as the global authority +2. **QVIs**: Qualified vLEI Issuers authorized by GLEIF +3. **Legal Entities**: Organizations with vLEI credentials +4. **Role Holders**: Individuals with official organizational roles + +## Key Features + +- **Cryptographic Verification**: All credentials are cryptographically end verifiable using KERI +- **Chain of Authority**: Clear delegation chains from GLEIF to individual role holders +- **Privacy-Preserving**: Selective disclosure and compact credentials +- **Revocation Support**: Transaction Event Logs capture issuance state + +## SVG Renderings + +Some class diagrams render better using ELK but the config doesn't seem to be picked up by Jekyll. + +### Available SVG Diagrams + +- [Auth Credential Schemas](auth-credential-schemas.svg) - Authorization credential relationships +- [Credentials Issuance Schema](credentials-issuance-schema.svg) - Credential issuance process +- [Credentials Trust Chain](credentials-trust-chain.svg) - Trust chain visualization +- [ECR Auth Credential Schema](ecr-auth-credential-schema.svg) - ECR authorization credential structure +- [ECR Credential Schema](ecr-credential-schema.svg) - Engagement Context Role credential structure +- [Legal Entity Credential Schema](legal-entity-credential-schema.svg) - Legal Entity credential structure +- [OOR Auth Credential Schema](oor-auth-credential-schema.svg) - OOR authorization credential structure +- [OOR Credential Schema](oor-credential-schema.svg) - Official Organizational Role credential structure +- [QVI Credential Schema](qvi-credential-schema.svg) - Qualified vLEI Issuer credential structure +- [vLEI Credential Ecosystem](vlei-credential-ecosystem.svg) - Complete ecosystem overview +- [vLEI Dependency Graph](vlei-dependency-graph.svg) - Credential dependency relationships + + + +## Additional Resources + +- [KERI Specification](https://trustoverip.github.io/tswg-keri-specification/) +- [ACDC Specification](https://trustoverip.github.io/tswg-acdc-specification/) +- [CESR Specification](https://trustoverip.github.io/tswg-cesr-specification/) diff --git a/docs/legal-entity-credential-schema.md b/docs/legal-entity-credential-schema.md new file mode 100644 index 0000000..034e14a --- /dev/null +++ b/docs/legal-entity-credential-schema.md @@ -0,0 +1,72 @@ +--- +layout: page +title: "Legal Entity Credential Schema" +permalink: /legal-entity-credential-schema/ +--- + +# Legal Entity vLEI Credential Schema + +```mermaid +--- +config: + layout: elk +--- +classDiagram + class LegalEntityvLEICredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : QVI Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +a : Attributes + +e : Edges + +r : Rules + } + + class Attributes { + +string d : Attributes block SAID + +string i : LE Issuer AID + +string dt : Issuance date time + +string LEI : Legal Entity Identifier + } + + class Edges { + +string d : Edges block SAID + +QVINode qvi : QVI reference + } + + class QVINode { + +string n : Issuer credential SAID + +string s : Required schema SAID + } + + class Rules { + +string d : Rules block SAID + +UsageDisclaimer usageDisclaimer + +IssuanceDisclaimer issuanceDisclaimer + } + + class UsageDisclaimer { + +string l : Legal language about usage + } + + class IssuanceDisclaimer { + +string l : Legal language about issuance + } + + LegalEntityvLEICredential --> "1" Attributes : contains + LegalEntityvLEICredential --> "1" Edges : contains + LegalEntityvLEICredential --> "1" Rules : contains + Edges --> "1" QVINode : references + Rules --> "1" UsageDisclaimer : has + Rules --> "1" IssuanceDisclaimer : has + + note for LegalEntityvLEICredential "Schema ID: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nVersion: 1.0.0\nIssued by QVI to Legal Entity" + + note for Attributes "Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI" + + note for Edges "Links to QVI credential\nSchema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao" + + note for Rules "Can be either:\n- SAID string reference\n- Full object with disclaimers" +``` \ No newline at end of file diff --git a/docs/legal-entity-credential-schema.svg b/docs/legal-entity-credential-schema.svg new file mode 100644 index 0000000..5d32146 --- /dev/null +++ b/docs/legal-entity-credential-schema.svg @@ -0,0 +1 @@ +

LegalEntityvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : LE Issuer AID

+string dt : Issuance date time

+string LEI : Legal Entity Identifier

Edges

+string d : Edges block SAID

+QVINode qvi : QVI reference

QVINode

+string n : Issuer credential SAID

+string s : Required schema SAID

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nVersion: 1.0.0\nIssued by QVI to Legal Entity

Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI

Links to QVI credential\nSchema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao

Can be either:\n- SAID string reference\n- Full object with disclaimers

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/oor-auth-credential-schema.md b/docs/oor-auth-credential-schema.md new file mode 100644 index 0000000..1cd00c4 --- /dev/null +++ b/docs/oor-auth-credential-schema.md @@ -0,0 +1,133 @@ +--- +layout: page +title: "OOR Auth Credential Schema" +permalink: /oor-auth-credential-schema/ +--- + +# OOR Authorization vLEI Credential Schema + +## OOR Authorization vLEI Credential Structure + +```mermaid +--- +config: + layout: elk +--- +classDiagram + class OORAuthvLEICredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : LE Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +a : Attributes + +e : Edges + +r : Rules + } + + class OORAuthAttributes { + +string d : Attributes block SAID + +string i : QVI Issuee AID + +string dt : Issuance date time + +string AID : Recipient AID + +string LEI : Legal Entity Identifier + +string personLegalName : Recipient name + +string officialRole : Role description + } + + class OORAuthEdges { + +string d : Edges block SAID + +LENode le : Legal Entity reference + } + + class LENode { + +string n : LE credential SAID + +string s : Required schema SAID + +string o : Operator (I2I) + } + + class OORAuthRules { + +string d : Rules block SAID + +UsageDisclaimer usageDisclaimer + +IssuanceDisclaimer issuanceDisclaimer + } + + class UsageDisclaimer { + +string l : Legal language + } + + class IssuanceDisclaimer { + +string l : Legal language + } + + OORAuthvLEICredential --> "1" OORAuthAttributes : contains + OORAuthvLEICredential --> "1" OORAuthEdges : contains + OORAuthvLEICredential --> "1" OORAuthRules : contains + OORAuthEdges --> "1" LENode : references + OORAuthRules --> "1" UsageDisclaimer : has + OORAuthRules --> "1" IssuanceDisclaimer : has + + note for OORAuthvLEICredential "Schema ID: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes OOR credential issuance" + + note for OORAuthAttributes "Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, officialRole" + + note for LENode "Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)" +``` + +## Schema Details + +- **Schema SAID**: `EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E` +- **Version**: 1.0.0 +- **Issuer**: Legal Entity +- **Recipient**: QVI (Qualified vLEI Issuer) +- **Purpose**: Authorize OOR credential issuance for official organizational roles + +## Key Characteristics + +1. **For permanent, official organizational positions** + - Examples: CEO, CFO, Director, Manager + - Represents formal organizational hierarchy + +2. **Required Attributes**: + - `i`: QVI Issuee AID + - `dt`: Issuance date time + - `AID`: Recipient Person AID + - `LEI`: Legal Entity Identifier + - `personLegalName`: Recipient name + - `officialRole`: Official role description + +3. **Edge References**: + - Links to Legal Entity credential + - Uses I2I (issuer-to-issuer) operator + - LE Schema: `ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY` + +## Authorization Flow + +```mermaid +sequenceDiagram + participant LE as Legal Entity + participant QVI as QVI + participant Person as Person + + rect rgb(240, 240, 255) + Note over LE,QVI: OOR Authorization Flow + LE->>QVI: Issue OOR Authorization + Note over QVI: Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E + Note over QVI: Authorizes official role issuance + end + + rect rgb(255, 240, 240) + Note over QVI,Person: Credential Issuance + QVI->>Person: Issue OOR Credential + Note over Person: Based on received authorization + end +``` + +## Rules and Disclaimers + +The OOR Authorization credential includes: +- **Usage Disclaimer**: Legal language about credential usage +- **Issuance Disclaimer**: Legal language about issuance terms + +Note: Unlike ECR Authorization, OOR Authorization does not include a privacy disclaimer as it is intended for official organizational roles that are typically public. \ No newline at end of file diff --git a/docs/oor-auth-credential-schema.svg b/docs/oor-auth-credential-schema.svg new file mode 100644 index 0000000..6e34d0b --- /dev/null +++ b/docs/oor-auth-credential-schema.svg @@ -0,0 +1 @@ +

OORAuthvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

OORAuthAttributes

+string d : Attributes block SAID

+string i : QVI Issuee AID

+string dt : Issuance date time

+string AID : Recipient AID

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string officialRole : Role description

OORAuthEdges

+string d : Edges block SAID

+LENode le : Legal Entity reference

LENode

+string n : LE credential SAID

+string s : Required schema SAID

+string o : Operator(I2I)

OORAuthRules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language

IssuanceDisclaimer

+string l : Legal language

Schema ID: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nVersion: 1.0.0\nIssued by LE to QVI\nAuthorizes OOR credential issuance

Required fields:\ni (QVI AID), dt, AID (Person),\nLEI, personLegalName, officialRole

Links to LE credential\nSchema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY\nOperator: I2I (issuer to issuer)

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/oor-credential-schema.md b/docs/oor-credential-schema.md new file mode 100644 index 0000000..20e6be2 --- /dev/null +++ b/docs/oor-credential-schema.md @@ -0,0 +1,75 @@ +--- +layout: page +title: OOR Credential Schema +permalink: /oor-credential-schema/ +--- + +# Legal Entity Official Organizational Role vLEI Credential Schema + +```mermaid +--- +config: + layout: elk +--- +classDiagram + class OORvLEICredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : QVI Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +a : Attributes + +e : Edges + +r : Rules + } + + class Attributes { + +string d : Attributes block SAID + +string i : Person Issuee AID + +string dt : Issuance date time + +string LEI : Legal Entity Identifier + +string personLegalName : Recipient name + +string officialRole : Official role title + } + + class Edges { + +string d : Edges block SAID + +AuthNode auth : Authorization chain + } + + class AuthNode { + +string n : ACDC SAID reference + +string s : Required schema SAID + +string o : Operator (I2I) + } + + class Rules { + +string d : Rules block SAID + +UsageDisclaimer usageDisclaimer + +IssuanceDisclaimer issuanceDisclaimer + } + + class UsageDisclaimer { + +string l : Legal language about usage + } + + class IssuanceDisclaimer { + +string l : Legal language about issuance + } + + OORvLEICredential --> "1" Attributes : contains + OORvLEICredential --> "1" Edges : contains + OORvLEICredential --> "1" Rules : contains + Edges --> "1" AuthNode : references + Rules --> "1" UsageDisclaimer : has + Rules --> "1" IssuanceDisclaimer : has + + note for OORvLEICredential "Schema ID: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy\nVersion: 1.0.0\nIssued by QVI to Official Representatives" + + note for Attributes "Required fields:\ni, dt, LEI, personLegalName, officialRole" + + note for AuthNode "Links to Auth credential\nSchema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nOperator: I2I (issuer to issuer)" + + note for Rules "Standard vLEI disclaimers\nSame as other vLEI credentials" +``` \ No newline at end of file diff --git a/docs/oor-credential-schema.svg b/docs/oor-credential-schema.svg new file mode 100644 index 0000000..77dcd9c --- /dev/null +++ b/docs/oor-credential-schema.svg @@ -0,0 +1 @@ +

OORvLEICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+e : Edges

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : Person Issuee AID

+string dt : Issuance date time

+string LEI : Legal Entity Identifier

+string personLegalName : Recipient name

+string officialRole : Official role title

Edges

+string d : Edges block SAID

+AuthNode auth : Authorization chain

AuthNode

+string n : ACDC SAID reference

+string s : Required schema SAID

+string o : Operator(I2I)

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy\nVersion: 1.0.0\nIssued by QVI to Official Representatives

Required fields:\ni, dt, LEI, personLegalName, officialRole

Links to Auth credential\nSchema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E\nOperator: I2I (issuer to issuer)

Standard vLEI disclaimers\nSame as other vLEI credentials

contains

contains

contains

references

has

has

1
1
1
1
1
1
\ No newline at end of file diff --git a/docs/qvi-credential-schema.md b/docs/qvi-credential-schema.md new file mode 100644 index 0000000..8e7ad65 --- /dev/null +++ b/docs/qvi-credential-schema.md @@ -0,0 +1,56 @@ +--- +layout: page +title: "QVI Credential Schema" +permalink: /qvi-credential-schema/ +--- + +```mermaid +--- +config: + layout: elk +--- +classDiagram + class QualifiedvLEIIssuerCredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : GLEIF Issuee AID + +string ri : Credential status registry + +string s : Schema SAID + +a : Attributes + +r : Rules + } + + class Attributes { + +string d : Attributes block SAID + +string i : QVI Issuee AID + +string dt : Issuance date time + +string LEI : LEI of Legal Entity + +int gracePeriod : Allocated grace period (default: 90) + } + + class Rules { + +string d : Rules block SAID + +UsageDisclaimer usageDisclaimer + +IssuanceDisclaimer issuanceDisclaimer + } + + class UsageDisclaimer { + +string l : Legal language about usage + } + + class IssuanceDisclaimer { + +string l : Legal language about issuance + } + + QualifiedvLEIIssuerCredential --> "1" Attributes : contains + QualifiedvLEIIssuerCredential --> "1" Rules : contains + Rules --> "1" UsageDisclaimer : has + Rules --> "1" IssuanceDisclaimer : has + + note for QualifiedvLEIIssuerCredential "Schema ID: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao\nVersion: 1.0.0\nIssued by GLEIF to QVIs" + + note for Attributes "Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI" + + note for Rules "Can be either:\n- SAID string reference\n- Full object with disclaimers" +``` \ No newline at end of file diff --git a/docs/qvi-credential-schema.svg b/docs/qvi-credential-schema.svg new file mode 100644 index 0000000..6382518 --- /dev/null +++ b/docs/qvi-credential-schema.svg @@ -0,0 +1 @@ +

QualifiedvLEIIssuerCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : GLEIF Issuee AID

+string ri : Credential status registry

+string s : Schema SAID

+a : Attributes

+r : Rules

Attributes

+string d : Attributes block SAID

+string i : QVI Issuee AID

+string dt : Issuance date time

+string LEI : LEI of Legal Entity

+int gracePeriod : Allocated grace period(default: 90)

Rules

+string d : Rules block SAID

+UsageDisclaimer usageDisclaimer

+IssuanceDisclaimer issuanceDisclaimer

UsageDisclaimer

+string l : Legal language about usage

IssuanceDisclaimer

+string l : Legal language about issuance

Schema ID: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao\nVersion: 1.0.0\nIssued by GLEIF to QVIs

Can be either:\n- SAID string reference\n- Full object with properties\nRequired: i, dt, LEI

Can be either:\n- SAID string reference\n- Full object with disclaimers

contains

contains

has

has

1
1
1
1
\ No newline at end of file diff --git a/docs/vlei-credential-ecosystem.md b/docs/vlei-credential-ecosystem.md new file mode 100644 index 0000000..03e54aa --- /dev/null +++ b/docs/vlei-credential-ecosystem.md @@ -0,0 +1,210 @@ +--- +layout: page +title: vLEI Credential Ecosystem +permalink: /vlei-credential-ecosystem/ +--- + +# vLEI Credential Ecosystem - Dependencies and Schema Relationships + +```mermaid +--- +config: + layout: elk +--- +classDiagram + class QVICredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : GLEIF Issuee AID + +string ri : Credential status registry + +string s : Schema SAID + +Attributes a : Attributes block + +Rules r : Rules block + } + class LECredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : QVI Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +Attributes a : Attributes block + +Edges e : Edges block + +Rules r : Rules block + } + class OORCredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : QVI Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +Attributes a : Attributes block + +Edges e : Edges block + +Rules r : Rules block + } + class OORAuthCredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : LE Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +Attributes a : Attributes block + +Edges e : Edges block + +Rules r : Rules block + } + class ECRAuthCredential { + +string v : Version + +string d : Credential SAID + +string u : One time use nonce + +string i : LE Issuer AID + +string ri : Credential status registry + +string s : Schema SAID + +Attributes a : Attributes block + +Edges e : Edges block + +Rules r : Rules block + } + class QVIAttributes { + +string i : QVI Issuee AID + +string dt : Issuance date time + +string LEI : LEI of the requesting Legal Entity + +int gracePeriod : Allocated grace period + } + class LEAttributes { + +string i : LE Issuer AID + +string dt : issuance date time + +string LEI : LE Issuer AID + } + class OORAttributes { + +string i : Person Issuee AID + +string dt : Issuance date time + +string LEI : LEI of the Legal Entity + +string personLegalName : Recipient name as provided during identity assurance + +string officialRole : Official role title + } + class AuthAttributes { + +string i : QVI Issuee AID + +string dt : Issuance date time + +string AID : AID of the intended recipient of the ECR credential + +string LEI : LEI of the requesting Legal Entity + +string personLegalName : Requested recipient name as provided during identity assurance + +string role : Requested role description + } + class QVIEdge { + +string n : Issuer credential SAID + +string s : SAID of required schema of the credential pointed to by this node + } + class LEEdge { + +string n : Issuer credential SAID + +string s : SAID of required schema of the credential pointed to by this node + } + class AuthEdge { + +string n : Issuer credential SAID + +string s : SAID of required schema of the credential pointed to by this node + +string o : Operator for this edge + } + class Rules { + +UsageDisclaimer usageDisclaimer : Usage Disclaimer + +IssuanceDisclaimer issuanceDisclaimer : Issuance Disclaimer + +PrivacyDisclaimer privacyDisclaimer : Privacy Disclaimer + } + QVICredential --> QVIAttributes : contains + QVICredential --> Rules : has + LECredential --> LEAttributes : contains + LECredential --> QVIEdge : chains to + LECredential --> Rules : has + OORCredential --> OORAttributes : contains + OORCredential --> AuthEdge : authorized by + OORCredential --> Rules : has + OORAuthCredential --> AuthAttributes : contains + OORAuthCredential --> LEEdge : chains to + OORAuthCredential --> Rules : has + ECRAuthCredential --> AuthAttributes : contains + ECRAuthCredential --> LEEdge : chains to + ECRAuthCredential --> Rules : has + LECredential ..> QVICredential : requires - QVI must exist + OORCredential ..> OORAuthCredential : requires - needs authorization + OORAuthCredential ..> LECredential : requires - LE must exist + ECRAuthCredential ..> LECredential : requires - LE must exist + note for QVICredential "QVI vLEI Credential
Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
Issued by: GLEIF → QVI" + note for LECredential "Legal Entity vLEI Credential
Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
Issued by: QVI → LE" + note for OORCredential "Official Organizational Role
Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
Issued by: QVI → Person" + note for OORAuthCredential "OOR Authorization
Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
Issued by: LE → QVI" + note for ECRAuthCredential "ECR Authorization
Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
Issued by: LE → QVI" + +``` + +## Credential Issuance Flow + +```mermaid +sequenceDiagram + participant GLEIF + participant QVI as Qualified vLEI Issuer + participant LE as Legal Entity + participant Person as Person/Role Holder + + rect rgb(240, 240, 255) + Note over GLEIF,QVI: Foundation Layer + GLEIF->>QVI: Issue QVI vLEI Credential + Note right of QVI: Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao + end + + rect rgb(240, 255, 240) + Note over QVI,LE: Legal Entity Layer + QVI->>LE: Issue LE vLEI Credential + Note right of LE: Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY + Note right of LE: Chains to QVI credential + end + + rect rgb(255, 240, 240) + Note over LE,Person: Authorization Layer + LE->>QVI: Issue OOR Authorization + Note left of QVI: Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E + Note left of QVI: Authorizes role issuance + + LE->>QVI: Issue ECR Authorization + Note left of QVI: Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g + Note left of QVI: Authorizes context role + end + + rect rgb(255, 255, 240) + Note over QVI,Person: Role Credential Layer + QVI->>Person: Issue OOR vLEI Credential + Note right of Person: Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy + Note right of Person: Chains to OOR Auth + QVI->>Person: Issue ECR vLEI Credential + Note right of Person: Schema: EEEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw + Note right of Person: Chains to ECR Auth + LE->>Person: Issue ECR vLEI Credential + Note right of Person: Schema: EEEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw + end +``` + +## Key Design Patterns + +### 1. Credential Chaining + +- Each credential (except QVI) references its chained credentials through edges +- Ensures verifiable chain of authority from GLEIF down to individual roles + +### 2. Compact credentials + +- Attributes and Rules can be either: + - Full objects with all properties + - SAIDs for compactness + +### 3. Common Rules Structure + +- All credentials share similar disclaimer structure +- ECR Authorization adds privacy disclaimer for IPEX/ACDC + +### 4. Authorization Pattern + +- Legal Entities authorize QVIs to issue role credentials +- Separates OOR (official roles) from ECR (engagement context roles) + +### 5. Legal Entities as issues + +- Legal Entities can issue their own ECR credentials without a preceeding auth diff --git a/docs/vlei-credential-ecosystem.svg b/docs/vlei-credential-ecosystem.svg new file mode 100644 index 0000000..6473447 --- /dev/null +++ b/docs/vlei-credential-ecosystem.svg @@ -0,0 +1 @@ +

QVICredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : GLEIF Issuee AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Rules r : Rules block

LECredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

OORCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : QVI Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

OORAuthCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

ECRAuthCredential

+string v : Version

+string d : Credential SAID

+string u : One time use nonce

+string i : LE Issuer AID

+string ri : Credential status registry

+string s : Schema SAID

+Attributes a : Attributes block

+Edges e : Edges block

+Rules r : Rules block

QVIAttributes

+string i : QVI Issuee AID

+string dt : Issuance date time

+string LEI : LEI of the requesting Legal Entity

+int gracePeriod : Allocated grace period

LEAttributes

+string i : LE Issuer AID

+string dt : issuance date time

+string LEI : LE Issuer AID

OORAttributes

+string i : Person Issuee AID

+string dt : Issuance date time

+string LEI : LEI of the Legal Entity

+string personLegalName : Recipient name as provided during identity assurance

+string officialRole : Official role title

AuthAttributes

+string i : QVI Issuee AID

+string dt : Issuance date time

+string AID : AID of the intended recipient of the ECR credential

+string LEI : LEI of the requesting Legal Entity

+string personLegalName : Requested recipient name as provided during identity assurance

+string role : Requested role description

QVIEdge

+string n : Issuer credential SAID

+string s : SAID of required schema of the credential pointed to by this node

LEEdge

+string n : Issuer credential SAID

+string s : SAID of required schema of the credential pointed to by this node

AuthEdge

+string n : Issuer credential SAID

+string s : SAID of required schema of the credential pointed to by this node

+string o : Operator for this edge

Rules

+UsageDisclaimer usageDisclaimer : Usage Disclaimer

+IssuanceDisclaimer issuanceDisclaimer : Issuance Disclaimer

+PrivacyDisclaimer privacyDisclaimer : Privacy Disclaimer

QVI vLEI Credential
Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
Issued by: GLEIF → QVI

Legal Entity vLEI Credential
Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
Issued by: QVI → LE

Official Organizational Role
Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
Issued by: QVI → Person

OOR Authorization
Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
Issued by: LE → QVI

ECR Authorization
Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
Issued by: LE → QVI

contains

has

contains

chains to

has

contains

authorized by

has

contains

chains to

has

contains

chains to

has

requires - QVI must exist

requires - needs authorization

requires - LE must exist

requires - LE must exist

\ No newline at end of file diff --git a/docs/vlei-dependency-graph.md b/docs/vlei-dependency-graph.md new file mode 100644 index 0000000..5f71caf --- /dev/null +++ b/docs/vlei-dependency-graph.md @@ -0,0 +1,122 @@ +--- +layout: page +title: "vLEI Dependency Graph" +permalink: /vlei-dependency-graph/ +--- + +# vLEI Credential Dependencies and Relationships + +## Dependency Graph + +```mermaid +--- +config: + layout: elk +--- +graph TD + %% Define nodes with schema IDs + GLEIF["GLEIF
Root Authority"] + QVI["QVI vLEI Credential
Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
Issued by: GLEIF"] + LE["Legal Entity vLEI Credential
Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
Issued by: QVI"] + OORAuth["OOR Authorization Credential
Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
Issued by: Legal Entity"] + ECRAuth["ECR Authorization Credential
Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
Issued by: Legal Entity"] + OOR["OOR vLEI Credential
Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
Issued by: QVI"] + ECR["ECR vLEI Credential
Schema: [ECR Schema]
Issued by: QVI"] + Person["Person/Role Holder"] + + %% Define dependencies + GLEIF -->|issues| QVI + QVI -->|issues| LE + LE -->|authorizes via| OORAuth + LE -->|authorizes via| ECRAuth + OORAuth -->|enables issuance of| OOR + ECRAuth -->|enables issuance of| ECR + QVI -->|issues with auth| OOR + QVI -->|issues with auth| ECR + OOR -->|held by| Person + ECR -->|held by| Person + + %% Edge dependencies (credential chaining) + LE -.->|edges.qvi references| QVI + OORAuth -.->|edges.le references| LE + ECRAuth -.->|edges.le references| LE + OOR -.->|edges.auth references| OORAuth + + %% Styling + style GLEIF fill:#e1f5fe + style QVI fill:#fff3e0 + style LE fill:#e8f5e9 + style OORAuth fill:#fce4ec + style ECRAuth fill:#fce4ec + style OOR fill:#f3e5f5 + style ECR fill:#f3e5f5 + style Person fill:#e0e0e0 +``` + +## Credential Dependencies Table + +| Credential Type | Schema SAID | Issuer | Required Dependencies | Edge References | +|----------------|-------------|---------|----------------------|-----------------| +| **QVI vLEI** | `EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao` | GLEIF | None (Root) | None | +| **Legal Entity vLEI** | `ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY` | QVI | QVI Credential | edges.qvi → QVI Schema | +| **OOR Authorization** | `EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E` | Legal Entity | LE Credential | edges.le → LE Schema | +| **ECR Authorization** | `EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g` | Legal Entity | LE Credential | edges.le → LE Schema | +| **OOR vLEI** | `EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy` | QVI | OOR Authorization | edges.auth → OOR Auth Schema | +| **ECR vLEI** | `EEy9PkikFcANV1l7EHukCeXqrzT1hNZjGlUk7wuMO5jw` | QVI | ECR Authorization | edges.auth → ECR Auth Schema | + +## Dependency Rules + +### 1. **Hierarchical Dependencies** +- GLEIF is the root authority (no dependencies) +- QVIs must have valid GLEIF-issued credentials +- Legal Entities must have valid QVI-issued credentials +- Role credentials require authorization from Legal Entities + +### 2. **Edge-Based Verification** +Each credential (except QVI) contains an `edges` block that references "chained" (directed edge) credentials: + +```json +"edges": { + "chainedCredentialType": { + "n": "chained credential SAID", + "s": "chained schema SAID (constant)" + } +} +``` + +### 3. **Authorization Flow** +```mermaid +sequenceDiagram + participant LE as Legal Entity + participant QVI as QVI + participant P as Person + + Note over LE,QVI: Authorization Phase + LE->>QVI: Issue OOR/ECR Authorization + Note right of QVI: Contains: AID, LEI, personLegalName, role + + Note over QVI,P: Issuance Phase + QVI->>P: Issue OOR/ECR Credential + Note right of P: Must reference authorization in edges +``` + +### 4. **Validation Chain** +To validate any credential, verifiers must: +1. Check the credential signature and status +2. Follow edge references up the chain +3. Validate each chained credential +4. Ensure unbroken chain to GLEIF root + +## Critical Dependencies + +### For QVI Operations +- **Required**: Valid QVI vLEI Credential from GLEIF +- **Enables**: Issuing LE credentials, OOR/ECR credentials (with auth) + +### For Legal Entity Operations +- **Required**: Valid LE vLEI Credential from QVI +- **Enables**: Issuing OOR/ECR Authorization credentials + +### For Role Issuance +- **Required**: Valid Authorization credential from LE + Valid QVI credential +- **Enables**: Issuing role credentials to persons \ No newline at end of file diff --git a/docs/vlei-dependency-graph.svg b/docs/vlei-dependency-graph.svg new file mode 100644 index 0000000..c787bb3 --- /dev/null +++ b/docs/vlei-dependency-graph.svg @@ -0,0 +1 @@ +

GLEIF
Root Authority

QVI vLEI Credential
Schema: EBfdlu8R27Fbx-ehrqwImnK-8Cm79sqbAQ4MmvEAYqao
Issued by: GLEIF

Legal Entity vLEI Credential
Schema: ENPXp1vQzRF6JwIuS-mp2U8Uf1MoADoP_GqQ62VsDZWY
Issued by: QVI

OOR Authorization Credential
Schema: EKA57bKBKxr_kN7iN5i7lMUxpMG-s19dRcmov1iDxz-E
Issued by: Legal Entity

ECR Authorization Credential
Schema: EH6ekLjSr8V32WyFbGe1zXjTzFs9PkTYmupJ9H65O14g
Issued by: Legal Entity

OOR vLEI Credential
Schema: EBNaNu-M9P5cgrnfl2Fvymy4E_jvxxyjb70PRtiANlJy
Issued by: QVI

ECR vLEI Credential
Schema: [ECR Schema]
Issued by: QVI

Person/Role Holder

issues

issues

authorizes via

authorizes via

enables issuance of

enables issuance of

issues with auth

issues with auth

held by

held by

edges.qvi references

edges.le references

edges.le references

edges.auth references

\ No newline at end of file