- The API design is agnostic to both credential [=digital
- credential/presentation requests|presentation=] [=digital
- credential/exchange protocols=], credential [=digital credential/issuance
- request|issuance=] [=digital credential/issuance protocols|protocols=]
- and credential formats. However, to promote interoperability this
- document includes a [[[#protocol-registry]]].
+ The API design is agnostic to credential formats and includes support for
+ multiple [=digital credential/exchange protocols=]. See [[[#supported-protocols]]].
The API is designed to support the following goals:
@@ -524,8 +540,7 @@
A standardized protocol used for exchanging a [=digital credential=]
between a [=holder=] and a [=verifier=]. A protocol is identified by a
- [=digital credential/protocol identifier=]. See section also
- [[[#protocol-registry]]].
+ [=digital credential/protocol identifier=]. See [[[#supported-protocols]]].
Protocol identifier
@@ -544,7 +559,7 @@
A standardized protocol used for communication between an [=issuer=]
and a [=holder=] during the issuance of a [=digital credential=]. The
issuance protocol is identified by a [=digital credential/protocol
- identifier=]. See also section [[[#protocol-registry]]].
+ identifier=]. See [[[#supported-protocols]]].
Request coordinator
@@ -768,8 +783,7 @@
The {{DigitalCredentialCreateRequest/protocol}} member's value can be one
- of the well-defined protocol identifiers defined in
- [[[#protocol-registry]]] or a custom protocol identifier.
+ of the well-defined protocol identifiers defined in [[[#supported-protocols]]].
The `data` member
@@ -842,8 +856,7 @@
The {{DigitalCredentialCreateRequest/protocol}} member's value is be one
- of the well-defined keys defined in [[[#protocol-registry]]] or any other
- custom one.
+ of the well-defined keys defined in [[[#supported-protocols]]].
The `data` member
@@ -1125,181 +1138,88 @@
-
- Registry of protocols
+
+ Supported protocols
- Initiating the registration a protocol is done by filing an
- issue in our GitHub repository.
-
-
- The following is the registry of [=digital credential/exchange
- protocols=] and [=digital credential/issuance protocols=] that are
- supported by this specification.
-
-
- It is expected that this registry will be become a [=W3C registry=] in
- the future.
-
-
- General inclusion criteria
-
-
-
- To be included in the registry, the [=digital credential/exchange
- protocol=]:
-
MUST be defined in a specification which is freely and publicly
- available at the stable URL listed in the registry.
-
-
MUST define a representation, as either a [[WebIDL]] [=dictionary=]
- or a JSON object, of the [=digital credential/exchange protocol=] request
- structure (i.e., the [=dictionary=] which defines the semantics and
- validation of the {{DigitalCredentialGetRequest}}'s
- {{DigitalCredentialGetRequest/data}} member) and the [=digital
- credential/issuance protocol=] request structure (i.e., the
- [=dictionary=] which defines the semantics and validation of the
- {{DigitalCredentialCreateRequest}}'s
- {{DigitalCredentialCreateRequest/data}} member).
-
-
MUST define a representation, as either a [[WebIDL]] [=dictionary=]
- or a JSON object, of the [=digital credential/exchange protocol=]
- response structure (i.e., the [=dictionary=] which defines the semantics
- and validation of the {{DigitalCredential}}'s {{DigitalCredential/data}}
- member.
-
-
MUST define validation rules for members of the request and response
- structures.
-
MUST have implementation commitment from at least one browser engine,
- one credential provider/wallet, and one issuer or verifier (depending on
- the protocol type). Each component MUST be from independent
- organizations.
-
-
MUST have formally recorded consensus by the Federated Identity
- Working Group to be included in the registry.
-
-
-
- Presentation-specific inclusion criteria
-
-
- To be included as a presentation protocol in the registry (used with
- `navigator.credentials.get`), the [=digital credential/exchange
- protocol=]:
-
-
-
MUST support response encryption.
-
-
MUST encrypt any response containing personally identifiable
- information (PII).
-
-
-
- Change process
-
-
- To add a new [=digital credential/exchange protocol=] to the registry, or
- to update an existing one:
-
-
-
- Define a [=digital credential/protocol identifier=].
-
-
- The [=digital credential/protocol identifier=] MUST be a unique string
- that is not already in use in the registry. The [=digital
- credential/protocol identifier=] MUST uniquely define the set of
- required parameters and/or behavior that a digital credential provider
- implementation needs to support to successfully handle the request. If
- the set of required parameters or behaviors is updated in a way which
- would require a digital credential provider to also require an update
- to remain functional, a new protocol identifier MUST be assigned and be
- added to the registry.
-
-
- Specify a protocol
- type.
-
-
- The protocol type is either "Presentation" for presentation protocols
- used with `navigator.credentials.get` or "Issuance" for issuance
- protocols used with `navigator.credentials.create`.
-
-
- Describe the
- protocol.
-
-
- The description MUST be a brief summary of the protocol's purpose and
- use case.
-
-
- Provide a link to the
- specification.
-
-
- The specification MUST be a stable URL that points to the authoritative
- source for the protocol, including validation rules.
-
-
-
- [=User agents=] MUST support the following [=digital credential/exchange
- protocols=]:
+ The following [=digital credential/exchange protocols=] are supported
+ by this specification.
- Table of officially registered [=digital credential/exchange
- protocols=].
+ Table of supported [=digital credential/exchange protocols=]
- [=digital credential/Protocol identifier=]
+ Name