This is an experimental specification and is undergoing regular revisions. It is not fit for production deployment.
TBD
TBD: SIWE + CACAO + CapGrok description and reference to spec
TBD
The following sections outlines the data model for this document.
When a holder desires to indicate Holder Binding based on a
CACAO delegation, they MUST add a holderBinding
property
to a W3C Verifiable Presentation (VP) that uses the data model described
in this specification.
Property | Description |
---|---|
type |
The type property MUST be CacaoDelegationHolderBinding2022 .
|
cacaoDelegation |
The cacaoDelegation property MUST be a URI. If it is a URI,
it is expected that resolution of the URI results in a CACAO
serialized as base64url-encoded CARv1
which describes the delegation between the holder and the original subject
of the verifiable credentials.
|
If desired, it is expected that implementers would use the data URI scheme to
include the content of the IPLD object directly in the cacaoDelegation
property.
{ "holder": "did:key:1234:...", "holderBinding": { "type": "CacaoDelegationHolderBinding2022", // CACAO serialized as base64url-encoded CARv1 "cacaoDelegation": "data:;base64,uOqJlcm9vdHOB2CpY..." }, "verifiableCredentials": [ { // verifiable credential in JSON-LD form // with Data Integrity Proof } ] ... "proof": { "verificationMethod": "did:key:1234#key-1", "type": "Ed25519Signature2018", "jws": "...", ... } }
{ "holder": "did:key:1234:...", "holderBinding": { "type": "CacaoDelegationHolderBinding2022", // CID "cacaoDelegation": "ipfs://bafybeigdyr..." }, "verifiableCredentials": [ { // verifiable credential in JSON-LD form // with Data Integrity Proof } ] ... "proof": { "verificationMethod": "did:key:1234#key-1", "type": "Ed25519Signature2018", "jws": "...", ... } }
The following section outlines the algorithms that are used to generate and validate Holder Binding as described by this document.
The following process, or one generating the exact output, MUST be followed
when generating a holderBinding
property conformant with this
specification.
holderBinding
be the resulting Object that represents the
Holder Binding in the verifiable presentation.
verifiableCredentials
be the verifiable credentials
that are included in the verifialbe presentation which the holder
wishes to bind to the verifiable presentation.
capabilities
be an array of CapGrok that has a targeted action
present
for each bound verifiable credential using the
urn:capability:credentials:
namespace. The resource of the targeted action
is either the verifiable credential id
property, or
more generally the fully-qualified verifiable credential type
property
prepended by the string type:
.
capabilities
to produce a deterministic
human-readable statement. Let statement
be the resulting statement.
payload
be an IPLD Object
which contains the holder as the aud
property
and the subject of the verifiable credentials as the iss
property.
capabilities
in the resources
property
and statement
in the statement
property in the payload
.
cacaoDelegation
be the serialized base64url-encoded CARv1
containing the CACAO.
type
property in the holderBinding
Object with the value
set to CacaoDelegationHolderBinding2022
.
cacaoDelegation
property in the holderBinding
Object.
property.
The following process, or one generating the exact output, MUST be followed when validating a verifiable presentation:
verifiableCredentials
be the (sub-)set of verifiable credentials
in the verifiable presentation the verifier wishes to check
the holder binding for.
holderBinding
be the holderBinding
property
in the verifiable presentation. If the verifiablePresenation
has no holderBinding property, then stop processing, otherwise
continue with the next step.
type
in holderBinding
equals
CacaoDelegationHolderBinding2022
. If not, then stop processing,
otherwise continue with the next step.
cacaoDelegation
be the cacaoDelegation
property
in holderBinding
. If there is no such property, then stop processing,
otherwise continue with the next step.
cacaoDelegation
from base64url-encoded CARv1 into a
JSON Object and let cacao
be the JSON-encoded form of the decoded CACAO.
cacao
according to the CACAO type. If the
signature verification failed, stop processing, otherwise continue with the next step.
delegator
be the iss
property in the payload
property of cacao
and let delegee
be the aud
property in the payload
property of cacao
. If these are
not present, stop processing, otherwise contineue with the next step.
delegator
matches the id
property of the
credentialSubject
properties in the verifiable credentials
in verifiableCredentials
. If there is no id
property
in any of the verifiable credentials, stop processing, otherwise continue
with the next step.
delegee
matches the holder
property in the
verifiable presentation. If holder
is not present, or
it doesn't match, stop processing, otherwise continue with the next step.
capabilities
be the resouces
array in the cacao
.
If not present, stop processing, otherwise continue with the next step.
statement
be the statement
in the cacao
.
If not present, stop processing, otherwise continue with the next step.
statement
and let
statementCapGrok
be the resulting the statement.
statement
in the caaco
matches
statementCapGrok
. If it doesn't match, stop processing, otherwise
continue with the next step.
capabilities
that has an applicable targeted action present
for each verifiable credential
in verifiableCredentials
. A targeted action applies if 1)
the resouce of the targeted action matches the id
property of the
verifiable credential or 2) if any of the fully-qualified array items in type
prepended with the String type:
in the verifiable credential matches
the resource of the targeted action. If there is a verifiable credential that has
no applicable targeted action, stop processing, otherwise continue with the next step.
TBD
There are a number of security considerations that implementers should be aware of when processing data described by this specification. Ignoring or not understanding the implications of this section can result in security vulnerabilities.
While this section attempts to highlight a broad set of security considerations, it is not a complete list. Implementers are urged to seek the advice of security and cryptography professionals when implementing mission critical systems using the technology outlined in this specification.
Write security considerations.
There are a number of accessibility considerations implementers should be aware of when processing data described in this specification. As with any web standards or protocols implementation, ignoring accessibility issues makes this information unusable to a large subset of the population. It is important to follow accessibility guidelines and standards, such as [[WCAG21]], to ensure all people, regardless of ability, can make use of this data. This is especially important when establishing systems utilizing cryptography, which have historically created problems for assistive technologies.
This section details the general accessibility considerations to take into account when utilizing this data model.
Write accessibility considerations.
There are a number of internationalization considerations implementers should be aware of when publishing data described in this specification. As with any web standards or protocols implementation, ignoring internationalization makes it difficult for data to be produced and consumed across a disparate set of languages and societies, which would limit the applicability of the specification and significantly diminish its value as a standard.
This section outlines general internationalization considerations to take into account when utilizing this data model.
Write i18n considerations.