diff --git a/index.html b/index.html index e384a97..ee576cc 100644 --- a/index.html +++ b/index.html @@ -57,7 +57,8 @@ name: "Patrick St. Louis", url: "https://www.linkedin.com/in/patrick-stlouis/", company: "Open Security and Identity", - companyURL: "https://opsecid.ca/" + companyURL: "https://opsecid.ca/", + w3cid: 162334 }], authors: [{ @@ -100,9 +101,12 @@ alternateFormats: [ {uri: "diff-20111214.html", label: "diff to previous version"} ], */ localBiblio: { - ENTRY: { - title: "Example Title", - href: "https://website.example/document", + OCA: { + title: "Overlays Capture Architecture Specification", + href: "https://oca.colossi.network/specification/", + authors: ["Human Colossus Foundation"], + status: "Living Specification", + date: "2024" }, }, lint: {"no-unused-dfns": false}, @@ -278,9 +282,9 @@

The `renderMethod` Property

more rendering methods that can be used by software to express the [=verifiable credential=] using a visual, auditory, or haptic mechanism. Each `renderMethod` value MUST specify its `type`, for example, -`TemplateRenderMethod`. The precise contents of each rendering -hint is determined by the specific `renderMethod` `type` -definition. +`TemplateRenderMethod`, `OpenAttestationEmbeddedRenderer`, or `OCABundle`. +The precise contents of each rendering hint is determined by the specific +`renderMethod` `type` definition. @@ -948,6 +952,242 @@
Frame-to-Host Actions
+ +
+

OCABundle

+ +

+ OCABundle is used by an issuer to specify rendering instructions + based on an Overlays Capture Architecture (OCA) Bundle as defined in [[[OCA]]]. + OCA provides a standardized way to define schemas with semantic overlays that + enable multi-language support, data entry formats, sensitive data flagging, and + rich metadata for rendering verifiable credentials in a consistent and + interoperable manner. +

+ +

+ An OCA Bundle consists of a capture base that defines the core structure + and data types of the credential attributes, along with various overlays + that provide additional context such as labels, character encoding, format + specifications, entry codes, and information overlays. This layered approach + enables flexible and culturally-aware rendering of credentials while maintaining + data integrity. +

+ +

+ When OCA is used as a render method for [=verifiable credentials=], the capture + base in the OCA Bundle uses JSON paths (as defined in [[[RFC6901]]]) as attribute + names to reference properties from the root of the [=verifiable credential=] + document, and defines the data type for each attribute. For example, + an attribute named `/credentialSubject/degree/name` would reference the `name` + property within the nested `degree` object of the credential's `credentialSubject`. + The overlays then provide presentation metadata such as human-readable labels in + multiple languages, formatting rules for dates and numbers, constraints for data + entry, and descriptive information about each attribute. This separation allows + the same credential data to be rendered differently based on context, locale, or + user preferences while maintaining a consistent semantic foundation. +

+ +

+ When an [=issuer=] desires to specify OCA-based rendering instructions + for a [=verifiable credential=], they MAY add a `renderMethod` property + that uses the data model described below. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription
id +A REQUIRED [=string=] that follows the [[[URL]]] specification and, when fetched, +dereferences to an OCA Bundle in JSON format. The OCA Bundle contains the capture +base and associated overlays needed for rendering the credential. +
type +A REQUIRED [=string=] that MUST be the value `OCABundle`. +
name +An OPTIONAL human-readable [=string=] that can be displayed to provide a hint to +the type of rendering that will be performed. This property might be used in a +graphical interface that enables an individual to select between multiple +presentation modes. +
description +An OPTIONAL human-readable [=string=] that provides a more detailed description +of the OCA-based rendering method and when it might be useful. +
digestMultibase +An OPTIONAL multibase-encoded Multihash of the OCA Bundle. The multibase +value MUST be `u` (base64url-nopad) and the multihash value MUST be SHA-2 with +256 bits of output (0x12 in the multicodec table). This property can be used by +verifiers to ensure the integrity of the fetched OCA Bundle. +
version +An OPTIONAL [=string=] that specifies the OCA specification version that the +referenced OCA Bundle conforms to (e.g., "v2.0.0-rc1", "v2.0.0", "v1.0"). +This property helps renderers determine compatibility and select appropriate +processing logic for the OCA Bundle format. +
+ +

+ The data model shown above is expressed in a [=verifiable credential=] in + the example below. +

+ +
+{
+  "@context": [
+    "https://www.w3.org/ns/credentials/v2",
+    "https://www.w3.org/ns/credentials/examples/v2"
+  ],
+  "type": ["VerifiableCredential", "UniversityDegreeCredential"],
+  "issuer": {
+    "id": "https://example.edu/issuers/565049",
+    "name": "Example University"
+  },
+  "validFrom": "2024-01-01T00:00:00Z",
+  "credentialSubject": {
+    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
+    "degree": {
+      "type": "BachelorDegree",
+      "name": "Bachelor of Science and Arts",
+      "degreeType": "Undergraduate",
+      "major": "Computer Science"
+    }
+  },
+  "renderMethod": [{
+    "id": "https://example.edu/oca-bundles/degree-2024.json",
+    "type": "OCABundle",
+    "name": "University Degree Display",
+    "description": "Renders the degree credential with multi-language support",
+    "digestMultibase": "uEiC96D8xPcVfm...WNcMF4Kc-Yw",
+    "version": "v2.0.0-rc1"
+  }]
+}
+      
+ +

+ In this example, the OCA Bundle located at + `https://example.edu/oca-bundles/degree-2024.json` contains the capture + base and overlays necessary to render the credential. The bundle might + include label overlays for multiple languages, format overlays for date + and number formatting, and information overlays with descriptions of each + attribute. +

+ +

+ An example OCA Bundle structure for this credential might look like: +

+ +
+{
+  "bundle": {
+    "v": "OCAS11JSON000646_",
+    "digest": "EBfdlu8R27Fbx-ehrqwIxQ-na4B7A4LqidzXqj8gkzHp",
+    "capture_base": {
+      "digest": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq",
+      "type": "spec/capture_base/2.0.0",
+      "attributes": {
+        "/credentialSubject/degree/type": "Text",
+        "/credentialSubject/degree/name": "Text",
+        "/credentialSubject/degree/degreeType": "Text",
+        "/credentialSubject/degree/major": "Text"
+      },
+      "classification": ""
+    },
+    "overlays": [
+      {
+        "digest": "EMzAk6N2iI1K5EpS9YqU7WxTc8BvPq1RgFn0D4XyJwLz",
+        "type": "spec/overlays/meta/2.0.0",
+        "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq",
+        "name": "University Degree Credential",
+        "description": "Academic degree credential issued by universities"
+      },
+      {
+        "digest": "EJqWh3K9fF8H2BmP6VnR4TxQz5YsLm8NcDk7A1UvGtIw",
+        "type": "spec/overlays/label/2.0.0",
+        "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq",
+        "language": "en",
+        "attribute_labels": {
+          "/credentialSubject/degree/type": "Degree Type",
+          "/credentialSubject/degree/name": "Degree Name",
+          "/credentialSubject/degree/degreeType": "Degree Classification",
+          "/credentialSubject/degree/major": "Major"
+        }
+      },
+      {
+        "digest": "EKpXi4L0gG9I3CnQ7WoS5UyRa6ZtNo9OdEl8B2VwHuJx",
+        "type": "spec/overlays/label/2.0.0",
+        "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq",
+        "language": "fr",
+        "attribute_labels": {
+          "/credentialSubject/degree/type": "Type de diplôme",
+          "/credentialSubject/degree/name": "Nom du diplôme",
+          "/credentialSubject/degree/degreeType": "Classification du diplôme",
+          "/credentialSubject/degree/major": "Spécialisation"
+        }
+      },
+      {
+        "digest": "ELrYj5M1hH0J4DoR8XpT6VzSb7AuOp0QeFm9C3WxIvKy",
+        "type": "spec/overlays/information/2.0.0",
+        "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq",
+        "language": "en",
+        "attribute_information": {
+          "/credentialSubject/degree/type": "The type of academic degree awarded",
+          "/credentialSubject/degree/name": "The full official name of the degree",
+          "/credentialSubject/degree/degreeType": "Classification level (e.g., Undergraduate, Graduate)",
+          "/credentialSubject/degree/major": "The primary field of study"
+        }
+      },
+      {
+        "digest": "ENaZl7O3jJ2L6FqT0ZrV8XyUd9CwRs2ShGo1E5YzKxMa",
+        "type": "spec/overlays/sensitive/2.0.0",
+        "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq",
+        "attributes": [
+          "/credentialSubject/degree/name"
+        ]
+      }
+    ]
+  }
+}
+      
+ +

+ Implementers can use the OCA Bundle to generate appropriate user interfaces, + select language-specific labels, apply format specifications, and ensure + consistent rendering across different applications and platforms. +

+