Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
This specification describes a data model with which one or more recognized entities, such as one or more persons and/or organizations, can be described as known to perform specific actions, such as issuing or verifying a verifiable credential. The data model enables the publication or direct sharing of such information, providing a cryptographically-verifiable and privacy-preserving mechanism through which a holder can demonstrate that an entity whose credential they are using is recognized within a particular ecosystem. The specification is designed to interoperate with existing "trust infrastructures", such as X.509 certificate authority lists and ETSI Trust Service Lists, while enabling new decentralized ecosystems to be built using verifiable credentials.
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C standards and drafts index.
This is an experimental specification and is undergoing regular revisions. It is not fit for production deployment.
This document was published by the Verifiable Credentials Working Group as a Working Draft using the Recommendation track.
Publication as a Working Draft does not imply endorsement by W3C and its Members.
This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress.
This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent that the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This document is governed by the 18 August 2025 W3C Process Document.
The verifiable credential ecosystem relies on the ability of verifiers to determine whether a particular issuer is recognized to perform a particular action, such as issuing a certain type of verifiable credential. Historically, this determination has often been made through out-of-band processes, bilateral agreements, or proprietary registries that are difficult to discover, query, or reason about in an automated way. As verifiable credentials are increasingly deployed across sectors such as education, healthcare, financial services, and government, the need for a standardized, interoperable mechanism to express and communicate recognition of entities that perform known actions has become critical. Without such a mechanism, ecosystem participants are forced to build bespoke "trust infrastructure", leading to fragmentation, increased integration costs, and barriers to cross-border and cross-sector interoperability.
This specification addresses the challenge of expressing recognized entities,
such as people and organizations, and the actions they perform, such as issuing
and verifying, in a decentralized manner by defining a data model that any
entity can use to publish or share recognition information as a verifiable credential. Rather than mandating a single central registry, the model allows
any entity — a government body, an industry consortium, a standards
organization, or even a single individual — to issue a
RecognizedEntityCredential asserting that they know of one or more
entities that are recognized to perform specific actions. This design enables a
web of overlapping, competing, and complementary "trust registries" to coexist,
allowing ecosystem participants to choose the entities they trust and to reason
across multiple registries. The specification also supports interoperability
with existing "trust infrastructure", such as X.509 certificate authority lists
and ETSI Trust Service Lists, allowing existing recognized entity information to
be referenced and composed into new decentralized ecosystems.
This document builds on the verifiable credential data model to define
a specific application rather than modifying the Verifiable Credentials Data Model v2.0 itself.
It uses the linked-data foundation of JSON-LD to add a small number of new
types and properties alongside existing terms. A RecognizedEntityCredential
is thus an ordinary verifiable credential — issued, presented, and
verified using the same mechanisms as any other.
Readers who are interested in the variety of use cases supported by this specification are urged to read Section 2. Use Cases. The remainder of this document is organized into the following sections:
RecognizedEntity, RecognizedAction, and RecognizedEntityCredential
types along with their properties and worked examples.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, OPTIONAL, and SHOULD in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
A conforming document is any concrete expression of the data model that complies with the normative statements in this specification. Specifically, all relevant normative statements in Section 3. Data Model of this document MUST be enforced.
A conforming processor is any algorithm realized as software and/or hardware that generates or consumes a conforming document. Conforming processors MUST produce errors when non-conforming documents are consumed.
This document also contains examples that contain JSON and JSON-LD content. Some
of these examples contain characters that are invalid JSON, such as inline
comments (//) and the use of ellipsis (...) to denote
information that adds little value to the example. Implementers are cautioned to
remove this content if they desire to use the information as valid JSON or
JSON-LD.
This section describes a set of use cases that motivate the design of this specification.
A national education authority wants to publish the set of universities and colleges that it recognizes as legitimate institutions within its jurisdiction. The authority issues a single recognized entity credential that lists each recognized institution along with descriptive information such as its common name, legal name, logo, and website. This enables software to display trusted information — such as the university's name, logo, and website — about a recognized institution to an interested party, having confirmed in an automated and cryptographically-verifiable way that the institution is recognized by the national authority, without contacting the authority directly.
A national association of vital records agencies wants to publish not just which entities it recognizes — such as a city, regional, or provincial agency — but which specific verifiable credentials each entity is recognized to issue. For example, a particular regional office is recognized to issue birth certificates, marriage certificates, and death certificates for its jurisdiction. The association issues a recognized entity credential in which each recognized entity is associated with a recognized action describing the type of vital record it might issue and the schema that record conforms to. A verifier receiving a birth certificate can then confirm both that its issuer is a recognized jurisdiction and that the jurisdiction was recognized to issue that particular type of vital record.
Roughly five billion commercial invoices are exchanged annually among approximately 50 million trading entities worldwide. An exporter issues a commercial invoice as a verifiable credential and sends it to the importer. The importer, in turn, presents that invoice to the importing customs authority for border clearance and to a trade finance lender for documentary letter of credit settlement. Neither the customs authority nor the lender has a direct relationship with the exporter — they receive the invoice indirectly, through the importer, yet must determine whether the exporter is a legitimate registered entity.
Verification relies on two independent but linked credentials, issued at different times and with different lifecycles:
RecognizedEntityCredential issued by the national business register of the
exporting economy to the exporter — millions valid at any time, with lifecycles
spanning years to decades.
Upon receiving the invoice, the verifier resolves the exporter's DID,
discovers the linked RecognizedEntityCredential issued by the national
business register, and confirms that the DID in the invoice matches the subject
of that credential. This gives the customs authority or the lender both document
integrity — the invoice has not been tampered with — and identity integrity —
the issuer is a registered entity in the exporting economy — enabling
automated border clearance and automated trade finance due diligence without any
prior knowledge of the exporter.
A conformity assessment body (CAB) issues a certificate of conformity (CoC) as a verifiable credential attesting to the safety or quality performance of a specific product. The CoC accompanies the product through the supply chain to an importing market. However, the market surveillance authority in the importing country typically has no direct relationship with the CAB and cannot independently determine whether the certificate was issued by a genuinely accredited test laboratory.
When the national accreditation authority in the exporting country issues a
RecognizedEntityCredential to the CAB — attesting to the CAB's accreditation
scope — a linked verification chain becomes possible, analogous to the
cross-border trade case above:
RecognizedEntityCredential issued by the national accreditation authority to
the CAB, attesting that the CAB is accredited to perform conformity assessments
within a defined scope.
Upon receiving the CoC, the market surveillance authority resolves the CAB's
DID, discovers the linked RecognizedEntityCredential issued by the national
accreditation authority, and confirms that the DID in the certificate matches
the subject of that credential. This gives the authority both document
integrity — the CoC has not been tampered with — and identity integrity — the
issuer is a genuinely accredited CAB — enabling pre-clearance of goods at
the border without manual verification of the CAB's accreditation status.
There are multiple examples of federated identifiers in common usage. International Standard Book Numbers (ISBNs), Legal Entity identifiers (LEIs), BIC numbers for shipping containers, and the Internet's domain name system. In each case, a central authority assigns a prefix to a registrar who then assigns a range of identifiers that extend that original prefix to a third party. The third party can then extend the character string further to create the complete identifier.
Presented with such an identifier in a credential, a relying party might want to verify that it has been constructed by a party known to the federated identifier scheme owner, in full conformance with its operating procedures.
An example of such a scheme is GS1, the organization behind many of the world's barcodes. A detailed description of its use case is presented in the [Verifiable Credentials Use Cases](https://www.w3.org/TR/vc-use-cases/#chain-of-gs1-credentials-to-identify-a-trade-item) document [vc-use-cases].
The following sections outline the data model that is used by this specification for Verifiable Issuer and Verifier Lists.
The data model described in this section has been built using input from a variety of the prior art evaluated for this paper including input from the EBSI Trusted Issuer Registry, ETSI TS 119 612, eSSIF-Lab TRAIN, the Trust over IP Foundation Trust Registry Protocol, and Rebooting the Web of Trust input documents. The data model described in this section is capable of expressing many, but not all, of the concepts described in those other specifications.
The unified data model for this work can be represented as a list of service providers that represent entities or organizations that provide services such as credential issuance or validation. The data model also includes the details of the list operator description.
The properties in this section can be added to objects found in a
RecognizedEntityCredential as defined in Section
3.4 RecognizedEntityCredential. Each general property listed in
this section is OPTIONAL; none of the values are required to be provided by
an issuer.
| Property | Description |
|---|---|
| id | A URL that identifies the entity in a globally unambiguous way. The value for this property is defined in Section 4.4: Identifiers of the Verifiable Credentials Data Model v2.0 specification. |
| type |
The type of the entity. The value for this property is defined in
Section 4.5: Types
of the Verifiable Credentials Data Model v2.0 specification. The type property MUST be
RecognizedIssuer if the entity is an issuer of verifiable credentials.
|
| name | A human-readable name for the entity. The value for this property is defined in Section 4.6: Names and Descriptions of the Verifiable Credentials Data Model v2.0 specification. |
| legalName | The official legal name of an organization or entity, as registered with legal authorities, which can differ from the commonly used name. The value MUST be a one or more strings or language value objects, as described in Section 11.1: Language and Base Direction of the Verifiable Credentials Data Model v2.0 specification. An entity that has an official legal name in more than one language can express each of them by providing an array of language value objects. |
| image |
A link to a visual representation of the entity, such as a logo, photograph, or
icon. The value MUST be a URL, which includes values using the data: URL
scheme as described in [RFC2397].
|
| url | A URL pointing to the primary website or web resource associated with the entity. The value MUST be a URL. |
| sameAs | One or more URLs that refer to the same entity in other contexts or systems, enabling cross-reference and verification across different platforms. Each value MUST be a URL. |
| description | A human-readable description providing details about the entity. The value for this property is defined in Section 4.6: Names and Descriptions of the Verifiable Credentials Data Model v2.0 specification. |
| digestMultibase | One or more cryptographic digests used to verify the integrity of resources associated with the entity. The values for this property are defined in Section 5.3: Integrity of Related Resources of the Verifiable Credentials Data Model v2.0 specification. |
A recognized entity is any entity that is recognized
by an issuer of a RecognizedEntityCredential to perform a specific action.
| Property | Description |
|---|---|
| id | A URL that identifies the entity in a globally unambiguous way. The value for this property is defined in Section 4.4: Identifiers of the Verifiable Credentials Data Model v2.0 specification. |
| type |
The type property MUST be RecognizedEntity. The value for
this property is defined in
Section 4.5: Types
of the Verifiable Credentials Data Model v2.0 specification.
|
| recognizedTo | A specific action that the recognized entity is expected to perform as defined in Section 3.3 RecognizedAction. This property may occur more than once if the recognized entity is expected to perform more than one action. |
| recognizedIn |
An object that contains a reference to a document of recognized entities that
contains this particular recognized entity as well as the actions it is
known to perform. The id value of the object MUST be a
URL. The type value of the object MUST conform to the
type value space defined in
the Verifiable Credentials Data Model v2.0 specification and SHOULD be ExternalEntityList
or RecognizedEntityCredential.
|
Properties from Section 3.1 General Properties can be included in addition to the properties above.
A recognizedIn entry with a type property value of ExternalEntityList SHOULD conform
to a valid entity list specification. The origin of the list URL referenced by the
id property in this case establishes the root of trust for the list.
Examples of this are the X.509 Certificate Authority List, as specified in Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
and the European Union ETSI Trust Service List, as specified in Electronic Signatures and Infrastructures (ESI); Trusted Lists.
For the ExternalEntityList type, verifiers and credential consumers need to fetch the
entity list resource referenced by the id property in order to determine the entity list specification
that the resource complies with, determine if it supports that specification, and process/terminate accordingly.
A list with a type property value of RecognizedEntityCredential MUST conform
to Recognized Entities v1.0.
A recognized action is an action that a recognized entity is expected to perform.
| Property | Description |
|---|---|
| type |
The type property MUST be RecognizedAction.
|
| action |
A string that specifies the name of the action to be performed such as
issue or verify.
|
| recognizedBy | A URL, or object containing properties from Section 3.1 General Properties, of the entity that performed the task of recognizing. |
| outputValidation |
The value of the outputValidation
property MUST be one or more data
schemas that provide verifiers with enough information to determine whether
the provided data conforms to the provided schema(s). Each validator MUST
specify its type (for example, JsonSchema) and an id
property that MUST be a URL
identifying the schema file. The specific type definition determines the precise
contents of each data schema. If multiple schemas are present, validity is
determined according to the processing rules outlined by each associated type
property.
|
| validFrom |
The earliest point in time at which the recognized action is valid, that
is, the date and time from which the recognized entity is recognized to
perform the action. The value MUST be an
XML Schema dateTime
value expressed in UTC with no sub-second precision, for example
2025-01-01T00:00:00Z. This property is OPTIONAL; if absent, the validity
period of the enclosing recognized entity credential applies.
|
| validUntil |
The latest point in time at which the recognized action is valid, that
is, the date and time after which the recognized entity is no longer
recognized to perform the action. The value MUST be an
XML Schema dateTime
value expressed in UTC with no sub-second precision, for example
2030-01-01T00:00:00Z. This property is OPTIONAL; if absent, the validity
period of the enclosing recognized entity credential applies.
|
When a recognized entity credential is published, it MUST be a conforming verifiable credential, as defined in Verifiable Credentials Data Model v2.0, that expresses the data model specified in the section that follows. It describes the format of a verifiable credential that encapsulates the recognized entities.
A recognized entity is expressed inside a verifiable credential, enabling a holder to provide it directly to a verifier. This mechanism, sometimes called "certificate stapling", increases privacy for the holder by ensuring that the verifier does not need to contact the issuer to retrieve the recognized entity credential. Still, a verifier might choose to ignore the holder-provided recognized entity credential, even when its authenticity is verifiable, if, for instance, it desires a more recent version of the recognized entity credential.
| Property | Description |
|---|---|
| id |
A verifiable credential that contains a set of recognized entities MAY
express an id property to make its retrieval easier for other systems.
|
| type |
A verifiable credential that contains a set of recognized entities MUST
express a type property that includes the RecognizedEntityCredential
value.
|
| issuer |
The issuer of the verifiable credential as defined in the Verifiable
Credentials Data Model specification in
Section 4.76: Issuer. This object MAY also include other properties listed
in Section 3.1 General Properties. This object MAY include a recognizedIn
property, as defined in Section 3.2 RecognizedEntity, that references a
document of recognized entities in which the issuer itself appears; this
enables the credential-based discovery process described in Section
4.1 Credential-based Discovery, allowing a verifier to traverse the
recognition hierarchy until it reaches an issuer it recognizes.
|
| validFrom | The earliest point in time at which the credential is valid. This property is defined in the Verifiable Credentials Data Model specification in Section 4.6: Validity Period. |
| validUntil | The latest point in time at which the credential is valid. This property is defined in the Verifiable Credentials Data Model specification in Section 4.6: Validity Period. |
| credentialSubject |
A set of one or more RecognizedEntity objects as defined in
Section 3.2 RecognizedEntity.
|
The following examples demonstrate how recognized entity credentials can be employed in a variety of use cases. The first example below is used to publish information about a set of known universities in a particular nation.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:learning-commission.example",
"type": "RecognizedIssuer"
},
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2030-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:university.example",
"type": "RecognizedEntity",
"name": "Example Tech",
"legalName": "Example Polytechnic University",
"image": "https://university.example/logo.png",
"url": "https://www.university.example/",
"description": "A university providing a great education in Utopia Valley.",
}, {
"id": "did:web:college.example",
"type": "RecognizedEntity",
"name": "Exemplar Community College",
"legalName": "Community College of Examples and ",
"image": "https://college.example/graphics/ecc.png",
"url": "https://college.example/",
"description": "The backbone of learning in the Utopia community.",
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:accreditor.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
The following example demonstrates how different languages can be supported within a recognized entity credential:
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:learning-commission.example",
"type": "RecognizedIssuer"
},
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2030-01-01T00:00:00Z",
"credentialSubject": {
"id": "did:web:university.example",
"type": "RecognizedEntity",
"name": [
{"@value": "Example Tech", "@language": "en"},
{"@value": "Exemple Tech", "@language": "fr"},
{"@value": "エグザンプル工科大学", "@language": "ja"},
{"@value": "示例理工大学", "@language": "zh-Hans"},
{"@value": "مثال للتقنية", "@language": "ar", "@direction": "rtl"},
{"@value": "उदाहरण टेक", "@language": "hi"}
],
"legalName": [
{"@value": "Example Polytechnic University", "@language": "en"},
{"@value": "Université Polytechnique Exemple", "@language": "fr"},
{"@value": "例示理工科大学", "@language": "ja"},
{"@value": "レイジリコウカダイガク", "@language": "ja-Kana"},
{"@value": "示例理工科大学", "@language": "zh-Hans"},
{"@value": "جامعة مثال للعلوم التطبيقية", "@language": "ar", "@direction": "rtl"},
{"@value": "उदाहरण प्रौद्योगिकी विश्वविद्यालय", "@language": "hi"}
],
"image": "https://university.example/logo.png",
"url": "https://www.university.example/",
"description": [
{"@value": "A university providing a great education in Utopia Valley.",
"@language": "en"},
{"@value": "Une université offrant une excellente éducation dans la vallée d'Utopie.",
"@language": "fr"},
{"@value": "ユートピア渓谷で優れた教育を提供する大学です。",
"@language": "ja"},
{"@value": "一所在乌托邦谷提供优质教育的大学。",
"@language": "zh-Hans"},
{"@value": "جامعة تقدم تعليماً متميزاً في وادي يوتوبيا.",
"@language": "ar", "@direction": "rtl"},
{"@value": "यूटोपिया घाटी में उत्कृष्ट शिक्षा प्रदान करने वाला एक विश्वविद्यालय।",
"@language": "hi"}
]
},
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:accreditor.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "zE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdw"
}
}
The next example is used to publish information about a set of known issuers for a particular type of verifiable credential.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:learning-commission.example",
"type": "RecognizedIssuer"
},
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2030-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:university.example",
"type": "RecognizedEntity",
"name": "Example Tech",
"legalName": "Example Polytechnic University",
"image": "https://university.example/logo.png",
"url": "https://www.university.example/",
"description": "A university providing a great education in Utopia Valley.",
"recognizedTo": {
"type": "RecognizedAction",
"action": "issue",
"recognizedBy": "did:web:learning-commission.example",
"outputValidation": {
"id": "https://learning-commission.example/credentials/bachelors.json",
"type": "JsonSchema",
"digestMultibase": "uEiBZl963sknNAHgPyslVv6VztZpfWQoRvW1htfx-UwirFo",
}
}
}, {
"id": "did:web:college.example",
"type": "RecognizedEntity",
"name": "Exemplar Community College",
"legalName": "Community College of Examples and ",
"image": "https://college.example/graphics/ecc.png",
"url": "https://college.example/",
"description": "The backbone of learning in the Utopia community.",
"recognizedTo": {
"type": "RecognizedAction",
"action": "issue",
"recognizedBy": "did:web:learning-commission.example",
"outputValidation": {
"id": "https://learning-commission.example/credentials/associates.json",
"type": "JsonSchema",
"digestMultibase": "uEiWQoRvpfWW1htfsknNAHgPyslVv6VztZpfwirFoBZl963",
}
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:accreditor.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
The final example below is used to publish information about an entity that
publishes a European Union ETSI Trust Service List [ETSI-TRUST-LISTS]
using the generic ExternalEntityList type.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": "did:web:ec.europa.example",
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2030-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:ec.europa.example",
"type": "RecognizedEntity",
"name": "Utopian Commission",
"legalName": "The Utopian Commission",
"image": "https://ec.europa.example/logo.png",
"url": "https://ec.europa.example/",
"recognizedIn": {
"id": "https://ec.europa.example/tsl/lotl.xml",
"type": "ExternalEntityList"
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:ec.europa.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
This section describes algorithms that a verifier can use when processing verifiable credentials and recognized entity credentials defined by this specification. These algorithms separate discovery from validation.
Discovery locates the recognized entity credentials that might establish the recognition of an issuer. Section 4.1 Credential-based Discovery and Section 4.2 Identifier-based Discovery describe two mechanisms for doing so. A verifier MAY use any other mechanism, including receiving the recognized entity credentials directly from a holder as described in Section D.3 Holder-Based Delivery.
Locating a recognized entity credential does not establish that an issuer is recognized. A verifier that skips the checks in Section 4.3 Recognition Validation might accept a verifiable credential that is unrelated to the issuer in question, or one whose recognition chain never reaches an anchor that the verifier accepts.
Recognition validation, described in Section 4.3 Recognition Validation, determines whether the discovered verifiable credentials establish recognition. It applies the same way regardless of how they were discovered.
When identifiers for subjects, such as issuers, are compared for set membership or equivalence, simple string comparison is used. While it is possible to calculate the canonical form of an identifier in a scheme before performing a comparison, the canoncalization rules can vary between identifier schemes, leading to high levels of implementation complexity. To reduce the implementation burden, a choice was made to use simple string comparison instead. Simple string comparison can sometimes lead to non-equivalence between identifiers that are canonically the same, such as two HTTPS URLs that differ in a query parameter that results in the same document. This downside is the trade-off made to keep implementation burden low for identifier comparison.
Both processes assume that each verifiable credential has already been validated individually. That is: its proof verifies; it is within its validity period; and its status, if any, has been checked, according to Section 7.1: Verification and Appendix A: Validation of the Verifiable Credentials Data Model v2.0 specification. Those processes apply to any verifiable credential and are not restated here.
Credential-based discovery is the process by which a verifier that receives a verifiable credential from an unknown issuer locates a recognized entity credential that recognizes that issuer, and, if necessary, traverses a hierarchy of recognized entity credentials until it reaches one whose own issuer the verifier recognizes.
The mechanism relies on the recognizedIn property. When present on the
issuer object of a verifiable credential, including on the issuer object
of a recognized entity credential, the recognizedIn property references a
verifiable credential of recognized entities that lists that issuer as a
recognized entity. A verifier can fetch the referenced verifiable credential and inspect the issuer of that
verifiable credential. If the verifier recognizes that issuer,
discovery succeeds. If it does not, the verifier can follow the
recognizedIn property on the fetched verifiable credential's issuer
object to move one level up the hierarchy, repeating the process until it
reaches an issuer it recognizes or a configured limit is reached.
A holder MAY pre-fetch the recognized entity credentials along this hierarchy and provide them to the verifier alongside the verifiable credential, using the "certificate stapling" mechanism described in Section 3.4 RecognizedEntityCredential. When the holder provides these verifiable credentials, the verifier does not need to fetch them itself, provided that the verifier is satisfied with the freshness of the provided verifiable credentials. A verifier that requires more recent information MAY reject the holder-provided verifiable credentials or ignore them and fetch the recognized entity credentials directly.
To perform credential-based discovery on a verifiable credential
(credential) against a configured set of recognized issuers
(recognizedIssuers) and an optional set of holder-provided
verifiable credentials (providedDocuments), a verifier runs
the following algorithm. The algorithm returns a chain, which is a
list of verifiable credentials beginning with credential,
followed by each recognized entity credential found by following
recognizedIn references. The verifier then runs the algorithm in Section
4.3 Recognition Validation on the returned chain.
This algorithm stops once it reaches an issuer in recognizedIssuers, because there is no reason to retrieve more verifiable credentials after finding a candidate anchor. That test bounds retrieval, but it does not establish recognition. A chain that never reaches a member of recognizedIssuers is still returned, and Section 4.3 Recognition Validation rejects it.
This algorithm follows recognizedIn references and does not read
recognizedTo. It does not check whether an intermediate was allowed to
perform the action for which another entity was recognized. Section
4.3 Recognition Validation makes that check on the returned
chain.
issuer property of
current, and let issuerId be its identifier.
recognizedIn property, the recognition
hierarchy cannot be traversed any further, so return chain.
recognizedIn property and let
listId be its id.
The example below shows a diploma verifiable credential issued by a state
university whose own issuer object carries a recognizedIn property. A
verifier that does not directly recognize the state university can follow
that recognizedIn reference to the state's list of recognized universities,
issued by the state department of education, to determine whether the state
university is itself a recognized entity.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"ExampleDegreeCredential"
],
"issuer": {
"id": "did:web:university.example",
"name": "Example State University",
"recognizedIn": {
"id": "https://education.state.example/lists/recognized-universities.json",
"type": "RecognizedEntityCredential",
"name": "State List of Recognized Universities"
}
},
"validFrom": "2025-06-01T00:00:00Z",
"credentialSubject": {
"id": "did:example:student-123",
"name": "Alex Example",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science in Computer Science"
}
},
"proof": {
"type": "DataIntegrityProof",
"created": "2025-06-01T20:08:22Z",
"verificationMethod": "did:web:university.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
In this example, a verifier evaluating the diploma issued by
did:web:university.example inspects the credential's issuer object. If the
verifier already recognizes did:web:university.example, discovery
succeeds. If not, the verifier follows the recognizedIn reference on the
issuer object to
https://education.state.example/lists/recognized-universities.json and checks
whether that recognized entity credential lists Example State University as
a recognized entity. If the verifier recognizes the state department of
education that issued that list, discovery succeeds; otherwise, the verifier
continues up the recognition hierarchy via the list's own issuer object until
it reaches an issuer it recognizes, thereby completing the recognition
chain.
Identifier-based discovery is the process by which a
verifier that receives a verifiable credential from an unknown
issuer starts from the issuer's identifier, resolves that identifier to
a controlled identifier document, and uses a service declared in that
document to retrieve a verifiable presentation that might contain a
recognized entity credential recognizing the issuer. Whereas
credential-based discovery relies on a recognizedIn reference being
present on the issuer object, identifier-based discovery makes no such
assumption; it instead obtains recognition information by dereferencing the
issuer's identifier itself.
The mechanism relies on the issuer publishing recognition information at a
service endpoint that is discoverable from its identifier. The issuer's
identifier, typically expressed as the id of the issuer object (for example,
issuer.id), is a URL that can be resolved or dereferenced to a
controlled identifier document, such as a DID document. That document
MAY declare a service whose type array includes both WhoisService and
PathService; the service's serviceEndpoint identifies the location at which
the issuer publishes a verifiable presentation describing itself. The
published verifiable presentation is signed by the issuer and contains
verifiable credentials for which the issuer's identifier is the
credentialSubject. Among these MAY be a recognized entity credential in
which the issuer appears as a recognized entity.
A verifier that obtains a recognized entity credential this way
processes it exactly as in credential-based discovery. If the verifier
recognizes the issuer of that recognized entity credential, discovery
succeeds. If it does not, and the recognized entity credential carries a
recognizedIn property on its own issuer object, the verifier MAY
continue with credential-based discovery to traverse the recognition
hierarchy until it reaches an issuer it recognizes.
The diagram below shows the identifier-based discovery process from the verifier's perspective. The same steps repeat at each level of the hierarchy until a recognized trust anchor is reached.
To perform identifier-based discovery on a verifiable credential (credential) against a configured set of recognized issuers (recognizedIssuers), a verifier runs the following algorithm. The algorithm returns a list of candidate chains, where each chain is a list of verifiable credentials beginning with credential. The verifier then runs the algorithm in Section 4.3 Recognition Validation on the returned chains, which describes how to select among their results.
This algorithm assembles candidate chains and does not read recognizedTo.
Section 4.3 Recognition Validation checks each returned chain, including
whether every intermediate was allowed to perform the action for which
another entity was recognized. A candidate chain that fails that check is
not used, even though discovery returned it.
issuer property of
credential, and let issuerId be its identifier.
service array of
idDocument whose type includes both WhoisService and
PathService. If no such service is present, return chains;
identifier-based discovery is not supported for this issuer.
serviceEndpoint of service and
retrieve the verifiable presentation, presentation, published at
endpoint. If retrieval fails, return chains.
id of a
recognized entity in the credentialSubject. If candidates is
empty, return chains.
issuer object of
list contains a recognizedIn property, perform
credential-based discovery on list against
recognizedIssuers and append the chain consisting of
credential followed by the elements of the returned chain to
chains.
The example below shows a controlled identifier document for the issuer
did:web:university.example that declares a WhoisService. A verifier that
does not directly recognize the university resolves this document, retrieves the
verifiable presentation published at the service endpoint, and inspects the
recognized entity credentials it contains to determine whether the
university is recognized.
{
"@context": [
"https://www.w3.org/ns/cid/v1"
],
"id": "did:web:university.example",
"assertionMethod": [{
"id": "#issuance-key-1",
"type": "Multikey",
"controller": "did:web:university.example",
"publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
}],
"service": [{
"id": "#whois",
"type": ["WhoisService", "PathService"],
"serviceEndpoint": "https://university.example/whois.vp"
}]
}
The verifiable presentation retrieved from the serviceEndpoint is signed
by did:web:university.example and contains a recognized entity credential,
as shown below, issued by the state department of education that lists the
university as a recognized entity recognized to issue credentials
conforming to a computer science bachelor's degree schema. If the verifier
recognizes did:web:education.state.example, the issuer is recognized;
otherwise, the verifier establishes recognition through
credential-based discovery using the recognizedIn reference on that
credential's issuer object. Once recognition is established, the verifier
additionally determines whether the university is recognized to perform the
intended issue action and whether the diploma conforms to the schema named by
that recognized action's outputValidation.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"holder": "did:web:university.example",
"verifiableCredential": [{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:education.state.example",
"type": "RecognizedIssuer",
"name": "State Department of Education"
},
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2030-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:university.example",
"type": "RecognizedEntity",
"name": "Example State University",
"url": "https://www.university.example/",
"recognizedTo": {
"type": "RecognizedAction",
"action": "issue",
"recognizedBy": "did:web:education.state.example",
"outputValidation": {
"id": "https://education.state.example/credentials/cs-bachelors.json",
"type": "JsonSchema",
"digestMultibase": "uEiBZl963sknNAHgPyslVv6VztZpfWQoRvW1htfx-UwirFo"
}
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:education.state.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:10:00Z",
"verificationMethod": "did:web:university.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "authentication",
"proofValue": "z3FXQjBHwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoHPGByaH"
}
}
Recognition validation is the process by which a verifier determines whether a chain of verifiable credentials establishes that the issuer of a verifiable credential is recognized, and whether it is recognized to perform a particular action. The process does not depend on how the chain was obtained. A chain returned by credential-based discovery, a chain returned by identifier-based discovery, and a chain delivered by a holder as described in Section D.3 Holder-Based Delivery are all validated the same way.
This algorithm checks the relationships between the verifiable credentials in the chain. It does not check the internal validity of any individual verifiable credential, which Section 4. Algorithms assumes has already been established.
To perform recognition validation on a chain (chain) produced
by any discovery mechanism, for a specific action (action, for
example issue), against a configured set of recognized issuers
(recognizedIssuers), a verifier runs the following algorithm. The
algorithm returns a result with two boolean outcomes: entityRecognized,
indicating whether the issuer of the first verifiable credential in
chain is ultimately recognized by a member of
recognizedIssuers, and actionRecognized, indicating
whether that issuer is recognized to perform action and, where a
recognized action declares an outputValidation, whether the verifiable credential conforms to it.
false
and actionRecognized set to false.
validFrom property in chain
and end at the earliest validUntil property in chain. A
verifiable credential that expresses no validFrom property does not
constrain the start, and one that expresses no validUntil property does not
constrain the end. If window ends before it starts, no such period
exists, so return result.
credentialSubject of list contains a
recognized entity whose id is equal, using simple string comparison, to
the identifier of the issuer of subject. If it does not, the two
verifiable credentials are unrelated, so return result.
true.
credentialSubject of list whose
id is the identifier of the issuer of credential. Set
result.actionRecognized to true if any recognized action
declared by the recognizedTo property of entity meets all of the
following conditions.
action value is equal to action.
validFrom or validUntil property,
includes at least part of window.
outputValidation, or credential conforms to every
schema referenced by its outputValidation.
false, return result.
Otherwise, check each recognized entity credential in chain
after the second one. For each such verifiable credential,
outer, let inner be the verifiable credential that
precedes it in chain, and let intermediate be the
recognized entity in the credentialSubject of outer whose id
is the identifier of the issuer of inner. If no recognized action declared by the recognizedTo property of intermediate has
an action value equal to action, then the issuer of
inner recognized an entity to perform an action that it was not
itself recognized to perform. Set result.actionRecognized to false
and return result.
An intermediate that recognizes another entity to perform an action is
required to be allowed to perform that same action itself. This stops a
chain from granting an action that no intermediate was ever allowed to
perform. It does not separate performing an action from recognizing others
to perform it. An entity recognized to issue can recognize others to
issue, and this algorithm treats that as valid. An ecosystem that wants to
keep those two powers apart names separate actions for them, such as one
action for issuing and another for recognizing issuers, and the check above
then applies to each.
A result in which recognized is true and
actionRecognized is false means that the issuer is recognized
by an anchor that the verifier recognizes, but was not recognized to
perform the action in question, or produced a verifiable credential that
does not conform to the schema that the recognized action requires. A
verifier is expected to treat that outcome as a failure whenever the
action matters to the transaction.
A recognized entity credential that lacks a recognizedTo property for a
given recognized entity asserts that the entity is recognized, without
constraining the actions it performs. A verifier that requires an explicit
action to be recognized treats such a recognized entity credential as
producing an actionRecognized value of false.
A discovery mechanism can produce more than one candidate chain, as
identifier-based discovery does when an issuer publishes recognized entity credentials from more than one recognizing authority. A verifier
runs this algorithm on each candidate chain and uses the first result in which
both recognized and actionRecognized are true, falling
back to a result in which only recognized is true.
This section is non-normative.
This section details the general security considerations of deploying the Recognized Entities data model into production environments. Each consideration below summarizes a security threat identified for this specification. The full analysis of each threat, together with the responses to it, is provided in the Recognized Entities Threat Model v1.0.
Readers are urged to familiarize themselves with the general security and privacy advice provided in the Security Considerations and Privacy Considerations sections of the Verifiable Credentials Data Model v2.0 specification before reading this section. Implementers are expected to apply the general warnings provided in that specification to each specific feature provided by this specification.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
This section is non-normative.
This section details the general privacy considerations and specific privacy implications of deploying the Recognized Entities data model into production environments. Each threat summarized below is analyzed in full, together with the responses to it, in the Recognized Entities Threat Model v1.0.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
This section is non-normative.
This section details the market competition considerations of deploying the Recognized Entities data model into production environments. Each threat summarized below is analyzed in full, together with the responses to it, in the Recognized Entities Threat Model v1.0.
Failed to load the threat
model definitions (failed to fetch threat-model/threats/outline.yaml: 404 Not Found). If you are viewing this
document from a file:// URL, serve the directory over
HTTP instead (for example, npx http-server) so that
the YAML files can be fetched.
This section is non-normative.
This section demonstrates how the data model defined by this specification can be applied in existing credential ecosystems.
This entire example is currently under review by GS1 and might be changed based on input from that organization and others.
GS1 operates one of the world's largest federated identifier schemes, in which a Global Trade Item Number (GTIN) is composed of a GS1 Company Prefix, an item reference, and a check digit. The GS1 Global Office allocates GS1 Prefixes to GS1 Member Organizations; each Member Organization licenses GS1 Company Prefixes, which extend its GS1 Prefix, to its member companies; and each member company assigns item references to create GTINs for its trade items. A detailed description of this use case is available in the Chain of GS1 Credentials to Identify a Trade Item section of the [VC-USE-CASES] document. An example diagram of this scenario is shown below:
This appendix demonstrates how that delegation chain can be expressed using the
data model defined by this specification. Each level of the hierarchy publishes
a recognized entity credential describing the entities one level below it,
and each credential's issuer object carries a recognizedIn property
referencing the recognized entity credential one level above it. The
recognizedIn property plays a role analogous to the extendsCredential
property used in GS1's own credential chain: it allows a verifier to
traverse the hierarchy upward, using the credential-based discovery
algorithm described in Section 4.1 Credential-based Discovery, until it
reaches an issuer it recognizes. The examples below are illustrative;
GS1's production systems use their own credential types and schemas.
In the first example below, the GS1 Global Office publishes a recognized entity credential recognizing a Member Organization, GS1 Utopia, as the
licensee of GS1 Prefix 950. The outputValidation property constrains GS1
Utopia to issuing credentials that conform to a GS1 Company Prefix Licence
credential schema specific to GS1 Prefix 950.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2",
"https://ref.gs1.org/gs1/vc/licence-context"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:id.gs1.org",
"type": "RecognizedIssuer",
"name": "GS1 Global Office",
"url": "https://www.gs1.org/"
},
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2030-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:id.gs1utopia.example",
"type": "RecognizedEntity",
"name": "GS1 Utopia",
"legalName": "GS1 Utopia Member Organization",
"url": "https://gs1utopia.example/",
"description": "The GS1 Member Organization for Utopia, licensee of GS1 Prefix 950.",
"licenceValue": "950",
"recognizedTo": {
"type": "RecognizedAction",
"action": "issue",
"recognizedBy": "did:web:id.gs1.org",
"outputValidation": {
"id": "https://id.gs1.org/schemas/prefix-license/950.json",
"type": "JsonSchema",
"digestMultibase": "uEiBZl963sknNAHgPyslVv6VztZpfWQoRvW1htfx-UwirFo"
}
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:id.gs1.org#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
In the next example, GS1 Utopia publishes a recognized entity credential
recognizing one of its member companies, Healthy Tots, as the licensee of GS1
Company Prefix 9506000. Healthy Tots is recognized to issue key credentials
that conform to a schema specific to that company prefix. The issuer object
carries a recognizedIn property referencing the GS1 Global Office credential
from the previous example, allowing a verifier that does not directly
recognize GS1 Utopia to continue up the hierarchy.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2",
"https://ref.gs1.org/gs1/vc/licence-context"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:id.gs1utopia.example",
"type": "RecognizedIssuer",
"name": "GS1 Utopia",
"recognizedIn": {
"id": "https://id.gs1.org/lists/recognized-member-organizations.vc",
"type": "RecognizedEntityCredential",
"name": "GS1 Register of Member Organizations"
}
},
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2030-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:healthytots.example",
"type": "RecognizedEntity",
"name": "Healthy Tots",
"legalName": "Healthy Tots Baby Food, Inc.",
"url": "https://healthytots.example/",
"description": "A manufacturer of baby food, licensee of GS1 Company Prefix 9506000.",
"licenceValue": "9506000",
"recognizedTo": {
"type": "RecognizedAction",
"action": "issue",
"recognizedBy": "did:web:id.gs1utopia.example",
"outputValidation": {
"id": "https://id.gs1utopia.example/schemas/key-credential/9506000.json",
"type": "JsonSchema",
"digestMultibase": "uEiWQoRvpfWW1htfsknNAHgPyslVv6VztZpfwirFoBZl963"
}
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:id.gs1utopia.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
In the final example, Healthy Tots issues a key credential whose subject is a
GTIN expressed as a GS1 Digital Link URI. The GTIN 09506000134352 is
constructed from the GS1 Company Prefix 9506000 licensed in the previous
example. As in the diploma example in Section
4.1 Credential-based Discovery, the issuer object carries a
recognizedIn property referencing the GS1 Utopia credential from the
previous example.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2",
"https://ref.gs1.org/gs1/vc/declaration-context"
],
"type": [
"VerifiableCredential",
"KeyCredential"
],
"issuer": {
"id": "did:web:healthytots.example",
"name": "Healthy Tots",
"recognizedIn": {
"id": "https://id.gs1utopia.example/lists/recognized-companies.vc",
"type": "RecognizedEntityCredential",
"name": "GS1 Utopia Register of Licensed Companies"
}
},
"validFrom": "2026-01-15T00:00:00Z",
"credentialSubject": {
"id": "https://id.gs1.org/01/09506000134352",
"name": "Healthy Tots Apple & Carrot Puree"
},
"proof": {
"type": "DataIntegrityProof",
"created": "2026-01-15T09:30:00Z",
"verificationMethod": "did:web:healthytots.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
A verifier receiving the key credential — for example, an online
marketplace evaluating a product listing — processes the chain bottom-up using
credential-based discovery. If the verifier does not directly
recognize did:web:healthytots.example, it follows the recognizedIn
reference on the key credential's issuer object, verifies the proof on the
GS1 Utopia credential, and confirms that Healthy Tots appears there as a
recognized entity. It also confirms, via the recognizedTo property, that
Healthy Tots is recognized to issue and that the key credential conforms to
the schema referenced by outputValidation — the schema-level counterpart of
GS1's rule that an identification key be properly based on the licensed GS1
Company Prefix. If the verifier does not recognize GS1 Utopia either, it
repeats the process one level up, following the recognizedIn reference on
the GS1 Utopia credential's issuer object to the GS1 Global Office
credential. Because the GS1 Global Office is a well-known trust anchor,
discovery terminates there, completing a recognition chain from a single trade
item to the root of the GS1 federation. A holder, such as the product's
distributor, might staple all three credentials into a single presentation so
that the verifier does not need to fetch any of them.
Recognition validation then checks the assembled chain. Healthy Tots is
recognized to issue by GS1 Utopia, which is what the key credential needs.
GS1 Utopia is an intermediate in this chain, so it is checked as well: the
GS1 Global Office credential recognizes GS1 Utopia to issue, so GS1 Utopia
was allowed to perform the action it recognized Healthy Tots to perform. Had
the GS1 Global Office recognized GS1 Utopia to perform some or no other
action(s), the chain would be rejected even though every recognizedIn
reference resolves and every proof verifies.
This entire example is currently under review by UNTP and might be changed based on input from that group and others.
The United Nations Global Registrar Information Directory (GRID) is a publicly accessible digital directory, hosted by the United Nations under the auspices of UN/CEFACT, that lists authoritative registrars, including national business registers, land registers, and trademark registers, from participating UN Member States. GRID addresses a critical verification gap in global trade and public administration: when supply chain participants, customs authorities, or trade finance lenders receive trade-relevant verifiable credentials from a foreign entity, they typically have no direct relationship with that entity and cannot independently verify its legitimate registration. Because billions of trade documents are exchanged globally every year, manual verification is not feasible. GRID solves this by providing a trustworthy, scalable map of the world's authoritative registrars, enabling automated verification and mitigating the risks of impersonation and fraud.
The resulting verification chain involves three tiers of credential, each issued at a different time, with a different lifecycle, and by a different issuer:
RecognizedEntityCredential issued by the national registrar's DID to the
individual exporter, attesting that the exporter's DID is controlled by the
registered legal entity, with a lifecycle spanning years to decades and one
credential per registered entity.
RecognizedEntityCredential issued by GRID's DID to the national registrar,
attesting that the registrar is a recognized, sovereign authority, with a
lifecycle measured in decades. There are roughly one thousand such
authoritative national registers worldwide.
The discovery process runs from the trade document toward the trust anchor using
identifier-based discovery at each step, because publishing a single
credential that lists all registered entities in a national register, with
potentially two million entities updated hundreds of times per day, and tens of
millions of verifiers retrieving the list multiple times per day, might be a
scale that is impractical for the national register to achieve. Instead, each
registered entity holds its own individual RecognizedEntityCredential and
publishes it at a WhoisService endpoint in its DID document. The national
registrar likewise publishes the RecognizedEntityCredential that GRID issued
to it at its own WhoisService endpoint. This approach decentralizes the
publication of the list such that each recognized entity in the ecosystem
shares the burden of distributing the information. The diagram below illustrates
the relationships:
This appendix demonstrates how that three-tier chain can be expressed using
the data model defined by this specification. The GRID credential at the top
of the hierarchy is a RecognizedEntityCredential that recognizes national
registrars as recognized entities. Each national registrar then issues an
individual RecognizedEntityCredential to each of its registered members.
Each member exporter, and the national registrar itself, publishes its
credential at a WhoisService endpoint in its DID document, enabling
identifier-based discovery as described in Section
4.2 Identifier-based Discovery. The examples below are illustrative; UNTP's
production systems use vocabulary defined by the United Nations Transparency
Protocol [UNTP-DIA].
In the first example below, GRID publishes a RecognizedEntityCredential
recognizing the Utopian Business Register as an authoritative national
registrar. GRID's issuer DID is the trust anchor that verifiers configure
explicitly. The outputValidation property constrains the Utopian Business
Register to issuing credentials that conform to the UNTP-defined schema for
registrar-issued entity recognition credentials.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/recognized-entities/v1",
// highlighted text is from the UNTP vocabulary
"https://vocabulary.uncefact.org/untp/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:grid.un.org",
"type": "RecognizedIssuer",
"name": "United Nations Global Registrar Information Directory",
"url": "https://grid.un.org/"
},
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": "2035-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:register.business.utopia.example",
"type": "RecognizedEntity",
"name": "Utopian Business Register",
"legalName": "Utopian Ministry of Commerce, Business Registry",
"url": "https://register.business.utopia.example/",
"description": "The national authoritative business register for Utopia, operated by the Ministry of Commerce.",
"recognizedTo": {
"type": "RecognizedAction",
"action": "issue",
"recognizedBy": "did:web:grid.un.org",
"outputValidation": {
"id": "https://grid.un.org/schemas/erc-utopia.json",
"type": "JsonSchema",
"digestMultibase": "uEiBZl963sknNAHgPyslVv6VztZpfWQoRvW1htfx-UwirFo"
}
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:grid.un.org#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
The Utopian Business Register publishes that credential at its own
WhoisService endpoint, as shown in the DID document below. A verifier
performing identifier-based discovery on the Utopian Business Register's
DID resolves this document and retrieves the verifiable presentation at the
service endpoint, which contains the GRID-issued credential recognizing the
Utopian Business Register.
{
"@context": "https://www.w3.org/ns/did/v1.1",
"id": "did:web:register.business.utopia.example",
"assertionMethod": [{
"id": "#issuance-key-1",
"type": "Multikey",
"controller": "did:web:register.business.utopia.example",
"publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
}],
service": [{
"id": "#whois",
"type": ["WhoisService", "PathService"],
"serviceEndpoint": "https://register.business.utopia.example/whois.vp"
}]
}
In the next example, the Utopian Business Register issues a
RecognizedEntityCredential to one of its registered entities, ACME Exports
Ltd. The credential asserts that the company's corporate registration number,
UTB-2019-041872, is bound to the DID
did:web:acme-exports.utopia.example. Before issuing this credential, the
Utopian Business Register verified that ACME Exports controls that DID.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/recognized-entities/v1",
// highlighted text is from the UNTP vocabulary
"https://vocabulary.uncefact.org/untp/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:register.business.utopia.example",
"type": "RecognizedIssuer",
"name": "Utopian Business Register"
},
"validFrom": "2025-03-15T00:00:00Z",
"validUntil": "2030-03-15T00:00:00Z",
"credentialSubject": [{
"id": "did:web:acme-exports.utopia.example",
"type": ["RecognizedEntity", "Party"]
"name": "ACME Exports",
"legalName": "ACME Exports Ltd.",
"url": "https://acme-exports.utopia.example/",
"description": "A registered exporter in Utopia, corporate registration number UTB-2019-041872.",
"registeredId": "UTB-2019-041872",
"registrationCountry": "UTO"
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-04-10T20:08:22Z",
"verificationMethod": "did:web:register.business.utopia.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo
5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
ACME Exports publishes that credential at a WhoisService endpoint in its
own DID document, as shown below.
{
"@context": "https://www.w3.org/ns/did/v1.1",
"id": "did:web:acme-exports.utopia.example",
"assertionMethod": [{
"id": "#issuance-key-1",
"type": "Multikey",
"controller": "did:web:acme-exports.utopia.example",
"publicKeyMultibase": "z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6x5GGnsfSbwqbUXwo"
}],
"service": [{
"id": "#whois",
"type": ["WhoisService", "PathService"],
"serviceEndpoint": "https://acme-exports.utopia.example/whois.vp"
}]
}
In the final example, ACME Exports issues a commercial invoice as a verifiable credential using its registered DID as the issuer.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/recognized-entities/v1",
// highlighted text is from the UNTP vocabulary
"https://vocabulary.uncefact.org/untp/v2"
],
"type": [
"VerifiableCredential",
"CommercialInvoiceCredential"
],
"issuer": {
"id": "did:web:acme-exports.utopia.example",
"name": "ACME Exports"
},
"validFrom": "2026-05-01T00:00:00Z",
"validUntil": "2026-07-31T00:00:00Z",
"credentialSubject": {
"id": "https://acme-exports.utopia.example/invoices/INV-2026-00431",
"invoiceNumber": "INV-2026-00431",
"invoiceDate": "2026-05-01",
"seller": {
"id": "did:web:acme-exports.utopia.example",
"name": "ACME Exports Ltd.",
"registeredId": "UTB-2019-041872"
},
"buyer": {
"name": "Acme Importer GmbH",
"registeredId": "DE-HRB-123456"
},
"totalAmount": {
"value": "45200.00",
"currency": "USD"
}
},
"proof": {
"type": "DataIntegrityProof",
"created": "2026-05-01T10:15:00Z",
"verificationMethod": "did:web:acme-exports.utopia.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}
A verifier receiving the commercial invoice, such as an importing customs
authority or a trade finance lender, performs identifier-based discovery
to validate the invoice issuer. The verifier resolves
did:web:acme-exports.utopia.example to ACME's DID document, locates the
WhoisService endpoint, and retrieves the verifiable presentation published
there. That presentation, signed by ACME's DID, contains the
RecognizedEntityCredential issued by the Utopian Business Register in which
ACME appears as a recognized entity recognized to issue credentials
conforming to the UNTP commercial invoice schema. The verifier confirms
that the invoice's issuer.id matches the credentialSubject.id in that
credential and validates the outputValidation schema constraint against the
invoice.
If the verifier does not directly recognize the Utopian Business Register,
it performs identifier-based discovery on the Utopian Business Register's
DID in turn. The verifier resolves
did:web:register.business.utopia.example, locates its WhoisService
endpoint, and retrieves the verifiable presentation published there. That
presentation, signed by the Utopian Business Register's DID, contains the
RecognizedEntityCredential issued by GRID in which the Utopian Business
Register appears as a recognized entity. Because GRID is a well-known
trust anchor operated by the United Nations, discovery terminates there,
completing a recognition chain from the commercial invoice to the root of the
global trade identity infrastructure.
The registeredId and registrationCountry properties used in the examples
above are ecosystem-specific extensions defined by UNTP vocabulary [UNTP-DIA]
and carries the registrar-assigned corporate registration number and country.
Those properties are not defined by this specification; they appear in the
examples solely to illustrate the kind of information a registrar-issued
RecognizedEntityCredential might carry in practice.
This section is non-normative.
The credential-based discovery and identifier-based discovery processes
described in Section 4. Algorithms both require a verifier to retrieve
information from the network. Credential-based discovery fetches the
recognized entity credential named by a recognizedIn property, and
identifier-based discovery resolves the issuer's identifier and fetches a
verifiable presentation from a service endpoint. A verifier that is
offline, or that is unwilling to contact a third party during a transaction,
cannot perform either process.
In holder-based delivery, the holder supplies the recognized entity credential to the verifier alongside the verifiable credential it supports, using the "certificate stapling" mechanism described in Section 3.4 RecognizedEntityCredential. The holder provides every verifiable credential needed to establish the recognition chain, so the verifier evaluates the chain locally. Privacy for the holder improves as well, because no list publisher learns which issuer is being verified.
Holder-based delivery depends on each recognized entity holding a recognized entity credential of its own, rather than on a single verifiable credential that enumerates every entity in an ecosystem. A registration authority that issues one credential per registered entity, as in Section D.2 UN GRID Cross-Border Trade Example above, lets that entity present its own recognition information without contacting the authority.
The three ways of delivering a recognized entity credential to a
verifier disclose different amounts of information about the verification
itself. Holder-based delivery discloses the least, because the verifier
contacts no third party and no other party learns that the verification
occurred. Retrieval from a list publisher discloses more, because that publisher
learns that a verification is taking place or might soon, although a verifier
that retrieves an entire recognized entity credential rather than a per-entity
resource does not reveal which issuer it is checking. Retrieval from a
WhoisService endpoint, by a verifier, as described in Section
4.2 Identifier-based Discovery, discloses the most, because the endpoint
belongs to the issuer being verified and that issuer therefore learns of
every verification of its own verifiable credentials. Threat
T4: Privacy
Leakage via List Fetch describes this exposure and the measures that reduce
it.
In the scenario below, a mobile inspector verifies a food safety certificate at a remote processing facility where neither party has network connectivity. The diagram shows the whole flow, including the steps each party performs while still online.
Because neither party can retrieve anything during the exchange, both cache what they need in advance. The holder caches:
The verifier caches:
outputValidation property of a recognized action it intends to enforce, since those cannot be fetched while offline.
The verifier asks for both verifiable credentials using a
verifiable
presentation request, as defined in the VCALM v1.0 specification. The
acceptedIssuers property of a credentialQuery accepts an object containing a
recognizedIn property, which lets the verifier state that it will accept
any issuer recognized in a given recognized entity credential, rather
than having to enumerate individual issuers it already knows:
{
"query": [{
"type": "QueryByExample",
"credentialQuery": {
// shown to the facility operator by their wallet
"reason": "Please present a food safety certificate for this lot.",
"example": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "ExampleFoodSafetyCertificate"
},
// the verifier accepts any issuer recognized in the authority's
// recognized entity credential, and expects the holder to staple it
"acceptedIssuers": [{
"recognizedIn": {
"id": "https://food-safety.utopia.example/lists/processors.vc",
"type": "RecognizedEntityCredential"
}
}]
}
}],
// bind the response to this verifier and this exchange
"domain": "inspector.food-safety.utopia.example",
"challenge": "c31f9a84-8d20-11f1-b4e7-3f21c7d90e12"
}
The holder responds with the verifiable presentation shown below. It contains two verifiable credentials: the food safety certificate issued by the processing facility, and the recognized entity credential, issued by the national food safety authority, that recognizes the facility as an issuer of such certificates.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"holder": "did:web:processor.utopia.example",
"verifiableCredential": [{
// the credential that the verifier asked to see
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"ExampleFoodSafetyCertificate"
],
"issuer": {
"id": "did:web:processor.utopia.example",
"name": "Utopia Valley Food Processing"
},
"validFrom": "2026-08-01T00:00:00Z",
"validUntil": "2027-08-01T00:00:00Z",
"credentialSubject": {
"id": "https://processor.utopia.example/lots/2026-08-14-A",
"name": "Apple and Carrot Puree, Lot 2026-08-14-A"
},
"proof": {
"type": "DataIntegrityProof",
"created": "2026-08-14T09:12:00Z",
"verificationMethod": "did:web:processor.utopia.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z36XPGByaH3rvtKfwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}, {
// the stapled recognized entity credential, delivered by the
// holder so that the offline verifier does not need to fetch it
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": [
"VerifiableCredential",
"RecognizedEntityCredential"
],
"issuer": {
"id": "did:web:food-safety.utopia.example",
"type": "RecognizedIssuer",
"name": "Utopian Food Safety Authority"
},
"validFrom": "2026-01-01T00:00:00Z",
"validUntil": "2027-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:web:processor.utopia.example",
"type": "RecognizedEntity",
"name": "Utopia Valley Food Processing",
"legalName": "Utopia Valley Food Processing Cooperative",
"recognizedTo": {
"type": "RecognizedAction",
"action": "issue",
"recognizedBy": "did:web:food-safety.utopia.example",
"outputValidation": {
"id": "https://food-safety.utopia.example/schemas/certificate.json",
"type": "JsonSchema",
"digestMultibase": "uEiBZl963sknNAHgPyslVv6VztZpfWQoRvW1htfx-UwirFo"
}
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-01-02T14:30:00Z",
"verificationMethod": "did:web:food-safety.utopia.example#issuance-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "assertionMethod",
"proofValue": "z3FXQjBHwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJoH"
}
}],
"proof": {
"type": "DataIntegrityProof",
"created": "2026-08-20T11:05:00Z",
"verificationMethod": "did:web:processor.utopia.example#authentication-key-1",
"cryptosuite": "ecdsa-rdfc-2019",
"proofPurpose": "authentication",
// echoes the challenge and domain from the request above
"challenge": "c31f9a84-8d20-11f1-b4e7-3f21c7d90e12",
"domain": "inspector.food-safety.utopia.example",
"proofValue": "z58dRtaBHwoEQXsnUXUAjwd2Ceiqke1GPfjAPAFYoXKo5ftPdwE7QZ8Mw22SC5LSRQg1d8bhe3252hYJ"
}
}
The verifier evaluates the presentation without any network access. It
verifies the proof on the verifiable presentation, confirms that the
challenge and domain match the ones it issued, and verifies the proof on
each contained verifiable credential using its cached key material. It then
performs recognition validation, as described in Section
4.3 Recognition Validation, on the chain consisting of the food safety
certificate followed by the recognized entity credential. That process
confirms that the issuer of the certificate,
did:web:processor.utopia.example, appears as the id of a recognized entity in the credentialSubject of the recognized entity credential,
that the facility is recognized to issue credentials conforming to the schema
named by that recognized action's outputValidation, and that the chain
terminates at did:web:food-safety.utopia.example, an issuer that the
verifier has configured as an anchor.
Because recognition validation is independent of how the verifiable credentials were obtained, the verifier applies exactly the same process here as it would to a chain it had discovered for itself. Holder-based delivery changes only the discovery step.
This section is non-normative.
A verifier is not obliged to accept a holder-provided recognized entity credential. As noted in Section 3.4 RecognizedEntityCredential, a verifier that requires more recent information might ignore the provided verifiable credential and retrieve the recognized entity credential itself once it regains connectivity. An offline verifier cannot do so during the exchange, and therefore accepts a bounded staleness risk. Recognition might have been revoked after the holder cached its recognized entity credential, or after the verifier last refreshed its own cached data.
Deployments reduce that risk by configuring a maximum acceptable age for stapled recognized entity credentials, by issuing recognized entity credentials with validity periods appropriate to the expected offline interval, and by refreshing cached trust anchor and status information whenever connectivity is available. Related guidance is provided by threat T10: Stale Recognition Acceptance.
Every check the verifier performs in this example is cryptographic and local. Holder-based delivery changes how the recognized entity credential reaches the verifier, not the checks that the verifier performs on it. A holder cannot alter a recognized entity credential without invalidating its proof, although a holder does choose which verifiable credentials to present; see threat T8: Unvetted Recognized Entity Credential Propagation.
This section is non-normative.
This specification was designed with awareness of existing "trust
infrastructure" technologies, three of which are described below. The data model
defined in this specification is capable of expressing many of the concepts
found in these technologies and is designed to interoperate with them via the
recognizedIn property.
This section is non-normative.
The European Telecommunications Standards Institute (ETSI) defines a format for Trust Service Lists (TSLs) in [ETSI-TRUST-LISTS], which is used across the European Union to publish lists of trusted service providers — entities authorized to issue electronic signatures, seals, timestamps, and other trust services under the eIDAS regulation. Each EU member state publishes a national TSL, and the European Commission publishes a List of the Lists (LoTL) that references each national TSL, forming a well-defined, hierarchical trust federation.
ETSI Trust Service Lists share several conceptual goals with this specification: both describe entities that are recognized to perform specific actions, associate those entities with identifying metadata, and are intended to be consumed by relying parties during validation. However, this specification differs from ETSI Trust Service Lists in several key ways:
This section is non-normative.
X.509 [RFC5280] is a standard for public key infrastructure (PKI) that defines the format for certificates and certificate chains. Certificate Authorities (CAs) are entities trusted to issue X.509 certificates that bind a public key to an identity. Trust in a CA is typically established through inclusion in a browser or operating system trust store — a curated list of root CAs — or through a certificate chain that traces back to such a root.
X.509 CA infrastructure and this specification both address the problem of establishing whether a given entity can be relied upon to perform a specific action within a given context. However, this specification differs from X.509 CA lists in several key ways:
RecognizedEntityCredential and to share it within its
ecosystem without requiring approval from a central gatekeeper.
This section is non-normative.
ISO/IEC 18013-5 defines the mobile Driving License (mDL), a standard for expressing driver's licenses as mobile documents (mDocs). As part of that ecosystem, the standard defines a Verified Issuer Certificate Authority List (VICAL), which is a signed data structure containing a list of entities that are recognized as certificate authorities empowered to issue mDLs. A relying party uses the VICAL to determine whether the issuer of a presented mDL is trusted within its jurisdiction.
The VICAL concept and this specification share the goal of enabling relying parties to determine whether a credential issuer is recognized within a particular ecosystem. However, this specification differs from the mDL VICAL in several key ways:
RecognizedAction structure explicitly captures the actions a
recognized entity is authorized to perform and against which credential schemas,
enabling more fine-grained authorization.
This section is non-normative.
The Working Group thanks the following individuals for significant contributions to the community: TBD
The use cases in Section 2. Use Cases are derived from an earlier Recognized Actions Use Cases document, developed over the course of several years, that has since been retired and replaced by that section. The Working Group thanks the authors of that document for establishing the foundation on which the use cases in this specification are built (in alphabetical order): David Chadwick (Truetrust Ltd), Oskar van Deventer (TNO), Isaac Henderson Johnson Jeyakumar (Fraunhofer IAO, Germany), Rieks Joosten (TNO), Line Kofoed (Bloqzone), Manu Sporny (Digital Bazaar), Shigeya Suzuki (Keio University), and Konstantin Tsabolov (Spherity).
Work on this specification has been supported by the Rebooting the Web of Trust community facilitated by Christopher Allen, Joe Andrieu, and Erica Connell. The participants in the Internet Identity Workshop, facilitated by Phil Windley, Kaliya Young, Doc Searls, and Heidi Nobantu Saul, also supported the refinement of this work through numerous working sessions designed to educate about, debate on, and improve this specification.
The Working Group would like to thank the following individuals for reviewing and providing feedback on the specification (in alphabetical order):
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: