<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-oauth-sd-jwt-vc-15" submissionType="IETF" category="std" xml:lang="en" indexInclude="true">

<front>
<title abbrev="SD-JWT VC">SD-JWT-based Verifiable Digital Credentials (SD-JWT VC)</title><seriesInfo value="draft-ietf-oauth-sd-jwt-vc-15" stream="IETF" status="standard" name="Internet-Draft"/>
<author initials="O." surname="Terbu" fullname="Oliver Terbu"><organization>MATTR</organization><address><postal><street/>
</postal><email>oliver.terbu@mattr.global</email>
</address></author><author initials="D." surname="Fett" fullname="Daniel Fett"><organization>Authlete Inc.</organization><address><postal><street/>
</postal><email>mail@danielfett.de</email>
</address></author><author initials="B." surname="Campbell" fullname="Brian Campbell"><organization>Ping Identity</organization><address><postal><street/>
</postal><email>bcampbell@pingidentity.com</email>
</address></author><date/>
<area>Security</area>
<workgroup>Web Authorization Protocol</workgroup>
<keyword>security</keyword>
<keyword>oauth2</keyword>
<keyword>sd-jwt</keyword>

<abstract>
<t>This specification describes data formats as well as validation and processing
rules to express Verifiable Digital Credentials with JSON payloads with and without selective disclosure based on the SD-JWT <xref target="RFC9901"/> format.</t>
</abstract>

<note title="Discussion Venues" removeInRFC="true">
<t>Discussion of this document takes place on the
    Web Authorization Protocol Working Group mailing list (oauth@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.</t>
<t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/oauth-wg/oauth-sd-jwt-vc"/>.</t>
</note>
</front>

<middle>

<section anchor="introduction"><name>Introduction</name>

<section anchor="issuer-holder-verifier-model"><name>Issuer-Holder-Verifier Model</name>
<t>In the so-called Issuer-Holder-Verifier Model, Issuers issue Verifiable Digital Credentials to a
Holder, who can then present the credentials to Verifiers. Verifiable Digital
Credentials are cryptographically secured statements about a Subject, typically the Holder.</t>
<t><xref target="abstract-model"/> depicts the Issuer-Holder-Verifier model.</t>
<figure anchor="abstract-model"><name>Abstract Depiction of the Issuer-Holder-Verifier Model </name>
<sourcecode type="ascii-art"><![CDATA[         +------------+
         |            |
         |   Issuer   |
         |            |
         +------------+
               |
        Issues SD-JWT VC
               |
               v
         +------------+
         |            |
         |   Holder   |
         |            |
         +------------+
               |
       Presents SD-JWT VC
               |
               v
         +-------------+
         |             |-+
         |  Verifiers  | |-+
         |             | | |
         +-------------+ | |
           +-------------+ |
             +-------------+
]]>
</sourcecode>
</figure>
<t>Verifiers can check the authenticity of the data in Verifiable Digital Credentials.
Verifiers can also optionally enforce Key Binding, which requires the Holder to prove
they are the intended Holder of the Verifiable Digital Credential.
This proof is typically done by demonstrating possession of a cryptographic
key referenced in the credential. This process is further
described in <xref target="RFC9901"/>.</t>
</section>

<section anchor="sd-jwt-as-a-credential-format"><name>SD-JWT as a Credential Format</name>
<t>JSON Web Tokens (JWTs) <xref target="RFC7519"/> can in principle be used to express
Verifiable Digital Credentials in a way that is easy to understand and process as it
builds upon established web primitives.</t>
<t>Selective Disclosure JWT (SD-JWT) <xref target="RFC9901"/> is
a specification that introduces conventions to support selective disclosure for
JWTs: For an SD-JWT document, a Holder can decide which claims to release (within
bounds defined by the Issuer).</t>
<t>SD-JWT is a superset of JWT. It can also be used when there are no selectively
disclosable claims. Furthermore, SD-JWT supports JWS JSON serialization,
which is useful for long-term archiving and multi-signatures.
However, SD-JWT itself does not define
the claims that must be used within the payload or their semantics.</t>
<t>This specification uses SD-JWT and the well-established JWT content rules and
extensibility model as basis for representing Verifiable Digital Credentials with JSON
payloads. These Verifiable Digital Credentials are called SD-JWT VCs. The use of
selective disclosure in SD-JWT VCs is OPTIONAL.</t>
<t>SD-JWTs VC can contain claims that are registered in "JSON Web Token Claims"
registry as defined in <xref target="RFC7519"/>, as well as public and
private claims.</t>
</section>

<section anchor="requirements-notation-and-conventions"><name>Requirements Notation and Conventions</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 <xref target="RFC2119"/>.</t>
</section>

<section anchor="terms-and-definitions"><name>Terms and Definitions</name>
<t>This specification uses the terms "Holder", "Issuer", "Verifier", "Disclosure", "Selectively Disclosable JWT (SD-JWT)", "Key Binding",
"Key Binding JWT (KB-JWT)", "Selectively Disclosable JWT with Key Binding (SD-JWT+KB)" defined by
<xref target="RFC9901"/>.</t>

<dl spacing="compact">
<dt>Consumer:</dt>
<dd>An application using the Type Metadata specified in <xref target="type-metadata"/> is called a Consumer. This typically includes Issuers, Verifiers, and Holders.</dd>
<dt>Publisher:</dt>
<dd>An entity that publishes Type Metadata or other auxiliary documents referenced by an SD-JWT VC (for example via a <tt>vct</tt> URI), but that is not necessarily the Issuer of the SD-JWT VC. A Publisher can be a standardization body, community, ecosystem authority, or any other party defining credential types or associated metadata.</dd>
<dt>Verifiable Digital Credential:</dt>
<dd>An assertion with claims about a Subject that is cryptographically secured by an Issuer (usually by a digital signature).</dd>
<dt>SD-JWT-based Verifiable Digital Credential (SD-JWT VC):</dt>
<dd>A Verifiable Digital Credential encoded using the format defined in
<xref target="RFC9901"/>. It may or may not contain
selectively disclosable claims.
Note that the three-word term “Verifiable Digital Credential” is used to distinguish it from the W3C Verifiable Credentials Data Model
and to better align with preferred terminology emerging elsewhere (see, for example, <xref target="NIST-BLOG.VDCE"/>).
However, the “D” is omitted in the short form “SD-JWT VC” in order to preserve the name that has been widely
used to refer to this specification since its inception.</dd>
<dt>Unsecured Payload of an SD-JWT VC:</dt>
<dd>A JSON object containing all selectively disclosable and non-selectively disclosable claims
of the SD-JWT VC. The Unsecured Payload acts as the input JSON object to issue
an SD-JWT VC complying to this specification.</dd>
</dl>
</section>
</section>

<section anchor="scope"><name>Scope</name>
<t>This specification defines</t>

<ul spacing="compact">
<li>a data model and media types for Verifiable Digital Credentials based on SD-JWTs, and</li>
<li>validation and processing rules for Verifiers and Holders.</li>
</ul>
</section>

<section anchor="verifiable-digital-credentials-based-on-sd-jwt"><name>Verifiable Digital Credentials based on SD-JWT</name>
<t>This section defines encoding, validation and processing rules for SD-JWT VCs.</t>

<section anchor="media-type"><name>Media Type</name>
<t>SD-JWT VCs compliant with this specification MUST use the media type
<tt>application/dc+sd-jwt</tt>.</t>
<t>The base subtype name <tt>dc</tt> is meant to stand for "digital credential", which is
a term that is emerging as a conceptual synonym for "verifiable credential".</t>
</section>

<section anchor="data-format"><name>Data Format</name>
<t>Issuers MUST encode an SD-JWT VC using the SD-JWT format defined in Section 4
or Section 8 of <xref target="RFC9901"/>, where support for the JWS JSON Serialization is OPTIONAL.</t>
<t>Note that in some cases, an SD-JWT VC MAY have no selectively disclosable
claims, and therefore the encoded SD-JWT will not contain any Disclosures.</t>
<t>A presentation of an SD-JWT VC MUST be encoded as an SD-JWT or as an SD-JWT+KB defined in Section 4 or Section 8 of <xref target="RFC9901"/>. By default, the format defined in Section 4 of <xref target="RFC9901"/> is used, whereas support for the JWS JSON Serialization in Section 8 of <xref target="RFC9901"/> is OPTIONAL.</t>

<section anchor="jose-header"><name>JOSE Header</name>
<t>This section defines JWT header parameters for the SD-JWT component of the
SD-JWT VC.</t>
<t>The Issuer MUST include the <tt>typ</tt> header parameter in the SD-JWT. The <tt>typ</tt> value MUST
use <tt>dc+sd-jwt</tt>. This indicates that the payload of the SD-JWT contains plain
JSON and follows the rules defined in this specification. It further
indicates that the SD-JWT is an SD-JWT component of an SD-JWT VC.</t>
<t><xref target="decoded-header"/> is a non-normative example of a decoded SD-JWT header:</t>
<figure anchor="decoded-header"><name>Decoded SD-JWT VC Header </name>
<sourcecode type="json"><![CDATA[{
  "alg": "ES256",
  "typ": "dc+sd-jwt"
}
]]>
</sourcecode>
</figure>
<t>Note that this draft used <tt>vc+sd-jwt</tt> as the value of the <tt>typ</tt> header from its inception in July 2023 until November 2024 when it was changed to <tt>dc+sd-jwt</tt> to avoid conflict with the <tt>vc</tt> media type name registered by the W3C's Verifiable Credentials Data Model draft. In order to facilitate a minimally disruptive transition, it is RECOMMENDED that Verifiers and Holders accept both <tt>vc+sd-jwt</tt> and <tt>dc+sd-jwt</tt> as the value of the <tt>typ</tt> header for a reasonable transitional period.</t>
</section>

<section anchor="jwt-claims-set"><name>JWT Claims Set</name>
<t>This section defines the claims that can be included in the payload of
SD-JWT VCs.</t>

<section anchor="type-claim"><name>Verifiable Digital Credential Type - <tt>vct</tt> Claim</name>
<t>This specification defines the new JWT claim <tt>vct</tt> (for verifiable credential type). Its value MUST be a
case-sensitive string serving as an identifier
for the type of the SD-JWT VC. The <tt>vct</tt> value MUST be a Collision-Resistant
Name as defined in Section 2 of <xref target="RFC7515"/>.</t>
<t>A type is associated with rules defining which claims are permitted or required
to appear in the Unsecured Payload of the SD-JWT VC and whether selective disclosure
is permitted, necessary, or prohibited for those claims.</t>
<t>This specification does not define any <tt>vct</tt> values; instead
it is expected that ecosystems using SD-JWT VCs define such values including
the semantics of the respective claims and associated rules (e.g., policies for issuing and
validating credentials beyond what is defined in this specification).</t>
<t>For example, a value of <tt>https://credentials.example.com/identity_credential</tt> can be associated with rules
that define that at least the registered JWT claims <tt>given_name</tt>, <tt>family_name</tt>, <tt>birthdate</tt>, and <tt>address</tt>
must appear in the Unsecured Payload. Additionally, the registered JWT claims <tt>email</tt> and <tt>phone_number</tt>,
and the private claims <tt>is_over_18</tt>, <tt>is_over_21</tt>, and <tt>is_over_65</tt> may be used.
The type might also indicate that any of the aforementioned claims can be selectively disclosable.
The content in <xref target="example-with-vct"/> shows that <tt>vct</tt> value used to express the example type.</t>
<figure anchor="example-with-vct"><name>Example Unsecured Payload with <tt>vct</tt> </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://credentials.example.com/identity_credential",
  "given_name": "Russ",
  "family_name": "Lasky",
  "birthdate": "1983-07-29",
  "address": {
    "street_address": "285 W Huntington Dr.",
    "locality": "Arcadia",
    "region": "CA",
    "postal_code": "91007"
  },
  "email": "sorryfolks@ww.example",
  "exp": 1777707000,
  "cnf": {
    "jwk": {
      "kty": "EC", "crv": "P-256",
      "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
      "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
    }
  }
}
]]>
</sourcecode>
</figure>
<t>The <tt>vct</tt> value also effectively identifies the version of the credential type definition,
as it ties a particular instance of a credential to a specific structure, set of semantics, and rules.
When evolving a credential type without updating the version, changes to the structure or meaning of the associated claims
need to be made in a way that preserves compatibility with existing implementations.</t>
<t>If a change alters the meaning of existing content, adds new required claims, removes
previously required elements, or otherwise introduces incompatibilities, it is
generally advisable to treat that as a new version of the credential type and to
convey it using a new <tt>vct</tt> value. This allows different versions of a credential
type to coexist and helps ensure that participants interpret credentials consistently.
For example, if such a need came about for the hypothetical type <tt>urn:eudi:pid:aendgard:1</tt>,
a new version could be defined using a 'vct' of <tt>urn:eudi:pid:aendgard:2</tt>.</t>
</section>

<section anchor="claims"><name>Registered JWT Claims</name>
<t>SD-JWT VCs MAY use any claim registered in the "JSON Web Token Claims"
registry as defined in <xref target="RFC7519"/>.</t>
<t>The following registered JWT claims are used within the SD-JWT component of the SD-JWT VC and MUST NOT be included in the Disclosures, i.e., cannot be selectively disclosed:</t>

<ul spacing="compact">
<li><tt>iss</tt>: OPTIONAL. As defined in <xref target="RFC7519" sectionFormat="of" section="4.1.1"/> this claim explicitly indicates the Issuer of the Verifiable Digital Credential
when it is not conveyed by other means (e.g., the subject of the end-entity certificate of an <tt>x5c</tt> header).</li>
<li><tt>nbf</tt>: OPTIONAL. The time before which the Verifiable Digital Credential MUST NOT be
accepted before validating. See <xref target="RFC7519"/> for more information.</li>
<li><tt>exp</tt>: OPTIONAL. The expiry time of the Verifiable Digital Credential after which the
Verifiable Digital Credential is no longer valid. See <xref target="RFC7519"/> for more
information.</li>
<li><tt>cnf</tt>: OPTIONAL unless cryptographic Key Binding is to be supported, in which case it is REQUIRED. Contains the confirmation method identifying the proof of possession key as defined in <xref target="RFC7800"/>. It is RECOMMENDED that this contains a JWK as defined in Section 3.2 of <xref target="RFC7800"/>. For proof of cryptographic Key Binding, the KB-JWT in the presentation of the SD-JWT MUST be secured by the key identified in this claim.</li>
<li><tt>vct</tt>: REQUIRED. The type of the Verifiable Digital Credential, e.g.,
<tt>https://credentials.example.com/identity_credential</tt>, as defined in <xref target="type-claim"/>.</li>
<li><tt>vct#integrity</tt>: OPTIONAL. The hash of the Type Metadata document to provide integrity as defined in <xref target="document-integrity"/>.</li>
<li><tt>status</tt>: OPTIONAL. The information on how to read the status of the Verifiable
Credential. See <xref target="I-D.ietf-oauth-status-list"/>
for more information. When the <tt>status</tt> claim is present and using the <tt>status_list</tt> mechanism, the associated Status List Token MUST be in JWT format.</li>
</ul>
<t>The following registered JWT claims are used within the SD-JWT component of the SD-JWT VC and MAY be included in Disclosures, i.e., can be selectively disclosed:</t>

<ul spacing="compact">
<li><tt>sub</tt>: OPTIONAL. The identifier of the Subject of the Verifiable Digital Credential.
The Issuer MAY use it to provide the Subject
identifier known by the Issuer. There is no requirement for a binding to
exist between <tt>sub</tt> and <tt>cnf</tt> claims.</li>
<li><tt>iat</tt>: OPTIONAL. The time of issuance of the Verifiable Digital Credential. See
  <xref target="RFC7519"/> for more information.</li>
</ul>
</section>

<section anchor="public-and-private-jwt-claims"><name>Public and Private JWT claims</name>
<t>Additionally, any public and private claims as defined in Sections 4.2 and 4.3 of
<xref target="RFC7519"/> MAY be used.</t>
<t>Binary data in claims SHOULD be encoded as data URIs as defined in <xref target="RFC2397"/>. Exceptions can be made when data formats are used that already define a text encoding suitable for use in JSON or where an established text encoding is commonly used. For example, images would make use of data URIs, whereas hash digests in base64 encoding do not need to be encoded as such.</t>
<t>An example of a claim containing binary data encoded as a data URI is shown in <xref target="ExamplePID"/>.</t>
</section>

<section anchor="sd-jwt-vc-without-selectively-disclosable-claims"><name>SD-JWT VC without Selectively Disclosable Claims</name>
<t>An SD-JWT VC MAY have no selectively disclosable claims.
In that case, the SD-JWT VC MUST NOT contain the <tt>_sd</tt> claim in the JWT body. It also
MUST NOT have any Disclosures.</t>
</section>
</section>
</section>

<section anchor="vc-sd-jwt-example"><name>Example</name>

<section anchor="issuance"><name>Issuance</name>
<t><xref target="user-claims1"/> is a non-normative example of the user data of an Unsecured Payload of an
SD-JWT VC.</t>
<figure anchor="user-claims1"><name>Unsecured Payload </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://credentials.example.com/identity_credential",
  "given_name": "John",
  "family_name": "Doe",
  "email": "johndoe@example.com",
  "phone_number": "+1-202-555-0101",
  "address": {
    "street_address": "123 Main St",
    "locality": "Anytown",
    "region": "Anystate",
    "country": "US"
  },
  "birthdate": "1940-01-01",
  "is_over_18": true,
  "is_over_21": true,
  "is_over_65": true
}
]]>
</sourcecode>
</figure>
<t><xref target="sd-jwt-payload1"/> below shows how the Unsecured Payload
above can be used in an SD-JWT where the resulting SD-JWT VC contains
only claims about the Subject that are selectively disclosable:</t>
<figure anchor="sd-jwt-payload1"><name>Unsecured Payload </name>
<sourcecode type="json"><![CDATA[{
  "_sd": [
    "09vKrJMOlyTWM0sjpu_pdOBVBQ2M1y3KhpH515nXkpY",
    "2rsjGbaC0ky8mT0pJrPioWTq0_daw1sX76poUlgCwbI",
    "EkO8dhW0dHEJbvUHlE_VCeuC9uRELOieLZhh7XbUTtA",
    "IlDzIKeiZdDwpqpK6ZfbyphFvz5FgnWa-sN6wqQXCiw",
    "JzYjH4svliH0R3PyEMfeZu6Jt69u5qehZo7F7EPYlSE",
    "PorFbpKuVu6xymJagvkFsFXAbRoc2JGlAUA2BA4o7cI",
    "TGf4oLbgwd5JQaHyKVQZU9UdGE0w5rtDsrZzfUaomLo",
    "jdrTE8YcbY4EifugihiAe_BPekxJQZICeiUQwY9QqxI",
    "jsu9yVulwQQlhFlM_3JlzMaSFzglhQG0DpfayQwLUK4"
  ],
  "iss": "https://example.com/issuer",
  "iat": 1683000000,
  "exp": 1883000000,
  "vct": "https://credentials.example.com/identity_credential",
  "_sd_alg": "sha-256",
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
      "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
    }
  }
}
]]>
</sourcecode>
</figure>
<t>Note that a <tt>cnf</tt> claim has been added to the SD-JWT payload to express the
confirmation method of the Key Binding.</t>
<t>The following are the Disclosures belonging to the SD-JWT payload above:</t>
<t><strong>Claim <tt>given_name</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>jsu9yVulwQQlhFlM_3JlzMaSFzglhQG0DpfayQwLUK4</tt></li>
<li>Disclosure:<br/>
<tt>WyIyR0xDNDJzS1F2ZUNmR2ZyeU5STjl3IiwgImdpdmVuX25hbWUiLCAiSm9o</tt><br/>
<tt>biJd</tt></li>
<li>Contents:
<tt>["2GLC42sKQveCfGfryNRN9w", "given_name", "John"]</tt></li>
</ul>
<t><strong>Claim <tt>family_name</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>TGf4oLbgwd5JQaHyKVQZU9UdGE0w5rtDsrZzfUaomLo</tt></li>
<li>Disclosure:<br/>
<tt>WyJlbHVWNU9nM2dTTklJOEVZbnN4QV9BIiwgImZhbWlseV9uYW1lIiwgIkRv</tt><br/>
<tt>ZSJd</tt></li>
<li>Contents:
<tt>["eluV5Og3gSNII8EYnsxA_A", "family_name", "Doe"]</tt></li>
</ul>
<t><strong>Claim <tt>email</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>JzYjH4svliH0R3PyEMfeZu6Jt69u5qehZo7F7EPYlSE</tt></li>
<li>Disclosure:<br/>
<tt>WyI2SWo3dE0tYTVpVlBHYm9TNXRtdlZBIiwgImVtYWlsIiwgImpvaG5kb2VA</tt><br/>
<tt>ZXhhbXBsZS5jb20iXQ</tt></li>
<li>Contents:
<tt>["6Ij7tM-a5iVPGboS5tmvVA", "email", "johndoe@example.com"]</tt></li>
</ul>
<t><strong>Claim <tt>phone_number</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>PorFbpKuVu6xymJagvkFsFXAbRoc2JGlAUA2BA4o7cI</tt></li>
<li>Disclosure:<br/>
<tt>WyJlSThaV205UW5LUHBOUGVOZW5IZGhRIiwgInBob25lX251bWJlciIsICIr</tt><br/>
<tt>MS0yMDItNTU1LTAxMDEiXQ</tt></li>
<li>Contents:
<tt>["eI8ZWm9QnKPpNPeNenHdhQ", "phone_number",</tt><br/>
<tt>"+1-202-555-0101"]</tt></li>
</ul>
<t><strong>Claim <tt>address</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>IlDzIKeiZdDwpqpK6ZfbyphFvz5FgnWa-sN6wqQXCiw</tt></li>
<li>Disclosure:<br/>
<tt>WyJRZ19PNjR6cUF4ZTQxMmExMDhpcm9BIiwgImFkZHJlc3MiLCB7InN0cmVl</tt><br/>
<tt>dF9hZGRyZXNzIjogIjEyMyBNYWluIFN0IiwgImxvY2FsaXR5IjogIkFueXRv</tt><br/>
<tt>d24iLCAicmVnaW9uIjogIkFueXN0YXRlIiwgImNvdW50cnkiOiAiVVMifV0</tt></li>
<li>Contents:
<tt>["Qg_O64zqAxe412a108iroA", "address", {"street_address":</tt><br/>
<tt>"123 Main St", "locality": "Anytown", "region": "Anystate",</tt><br/>
<tt>"country": "US"}]</tt></li>
</ul>
<t><strong>Claim <tt>birthdate</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>jdrTE8YcbY4EifugihiAe_BPekxJQZICeiUQwY9QqxI</tt></li>
<li>Disclosure:<br/>
<tt>WyJBSngtMDk1VlBycFR0TjRRTU9xUk9BIiwgImJpcnRoZGF0ZSIsICIxOTQw</tt><br/>
<tt>LTAxLTAxIl0</tt></li>
<li>Contents:
<tt>["AJx-095VPrpTtN4QMOqROA", "birthdate", "1940-01-01"]</tt></li>
</ul>
<t><strong>Claim <tt>is_over_18</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>09vKrJMOlyTWM0sjpu_pdOBVBQ2M1y3KhpH515nXkpY</tt></li>
<li>Disclosure:<br/>
<tt>WyJQYzMzSk0yTGNoY1VfbEhnZ3ZfdWZRIiwgImlzX292ZXJfMTgiLCB0cnVl</tt><br/>
<tt>XQ</tt></li>
<li>Contents:
<tt>["Pc33JM2LchcU_lHggv_ufQ", "is_over_18", true]</tt></li>
</ul>
<t><strong>Claim <tt>is_over_21</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>2rsjGbaC0ky8mT0pJrPioWTq0_daw1sX76poUlgCwbI</tt></li>
<li>Disclosure:<br/>
<tt>WyJHMDJOU3JRZmpGWFE3SW8wOXN5YWpBIiwgImlzX292ZXJfMjEiLCB0cnVl</tt><br/>
<tt>XQ</tt></li>
<li>Contents:
<tt>["G02NSrQfjFXQ7Io09syajA", "is_over_21", true]</tt></li>
</ul>
<t><strong>Claim <tt>is_over_65</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>EkO8dhW0dHEJbvUHlE_VCeuC9uRELOieLZhh7XbUTtA</tt></li>
<li>Disclosure:<br/>
<tt>WyJsa2x4RjVqTVlsR1RQVW92TU5JdkNBIiwgImlzX292ZXJfNjUiLCB0cnVl</tt><br/>
<tt>XQ</tt></li>
<li>Contents:
<tt>["lklxF5jMYlGTPUovMNIvCA", "is_over_65", true]</tt></li>
</ul>
<t>The SD-JWT and the Disclosures would then be serialized by the Issuer into the format shown in <xref target="issuance1"/> below for issuance to the Holder.</t>
<figure anchor="issuance1"><name>SD-JWT VC </name>
<sourcecode type="txt"><![CDATA[eyJhbGciOiAiRVMyNTYiLCAidHlwIjogImRjK3NkLWp3dCIsICJraWQiOiAiZG9jLXNp
Z25lci0wNS0yNS0yMDIyIn0.eyJfc2QiOiBbIjA5dktySk1PbHlUV00wc2pwdV9wZE9C
VkJRMk0xeTNLaHBINTE1blhrcFkiLCAiMnJzakdiYUMwa3k4bVQwcEpyUGlvV1RxMF9k
YXcxc1g3NnBvVWxnQ3diSSIsICJFa084ZGhXMGRIRUpidlVIbEVfVkNldUM5dVJFTE9p
ZUxaaGg3WGJVVHRBIiwgIklsRHpJS2VpWmREd3BxcEs2WmZieXBoRnZ6NUZnbldhLXNO
NndxUVhDaXciLCAiSnpZakg0c3ZsaUgwUjNQeUVNZmVadTZKdDY5dTVxZWhabzdGN0VQ
WWxTRSIsICJQb3JGYnBLdVZ1Nnh5bUphZ3ZrRnNGWEFiUm9jMkpHbEFVQTJCQTRvN2NJ
IiwgIlRHZjRvTGJnd2Q1SlFhSHlLVlFaVTlVZEdFMHc1cnREc3JaemZVYW9tTG8iLCAi
amRyVEU4WWNiWTRFaWZ1Z2loaUFlX0JQZWt4SlFaSUNlaVVRd1k5UXF4SSIsICJqc3U5
eVZ1bHdRUWxoRmxNXzNKbHpNYVNGemdsaFFHMERwZmF5UXdMVUs0Il0sICJpc3MiOiAi
aHR0cHM6Ly9leGFtcGxlLmNvbS9pc3N1ZXIiLCAiaWF0IjogMTY4MzAwMDAwMCwgImV4
cCI6IDE4ODMwMDAwMDAsICJ2Y3QiOiAiaHR0cHM6Ly9jcmVkZW50aWFscy5leGFtcGxl
LmNvbS9pZGVudGl0eV9jcmVkZW50aWFsIiwgIl9zZF9hbGciOiAic2hhLTI1NiIsICJj
bmYiOiB7Imp3ayI6IHsia3R5IjogIkVDIiwgImNydiI6ICJQLTI1NiIsICJ4IjogIlRD
QUVSMTladnUzT0hGNGo0VzR2ZlNWb0hJUDFJTGlsRGxzN3ZDZUdlbWMiLCAieSI6ICJa
eGppV1diWk1RR0hWV0tWUTRoYlNJaXJzVmZ1ZWNDRTZ0NGpUOUYySFpRIn19fQ.qfdiO
sW6aUA59AhQ6Uo4tfWea7rTgZK8_SRtL3TYRLBqr2LwPrUkXjeeIGzZtk6jLCFN1s9hW
vzJWzUszLeTPw~WyIyR0xDNDJzS1F2ZUNmR2ZyeU5STjl3IiwgImdpdmVuX25hbWUiLC
AiSm9obiJd~WyJlbHVWNU9nM2dTTklJOEVZbnN4QV9BIiwgImZhbWlseV9uYW1lIiwgI
kRvZSJd~WyI2SWo3dE0tYTVpVlBHYm9TNXRtdlZBIiwgImVtYWlsIiwgImpvaG5kb2VA
ZXhhbXBsZS5jb20iXQ~WyJlSThaV205UW5LUHBOUGVOZW5IZGhRIiwgInBob25lX251b
WJlciIsICIrMS0yMDItNTU1LTAxMDEiXQ~WyJRZ19PNjR6cUF4ZTQxMmExMDhpcm9BIi
wgImFkZHJlc3MiLCB7InN0cmVldF9hZGRyZXNzIjogIjEyMyBNYWluIFN0IiwgImxvY2
FsaXR5IjogIkFueXRvd24iLCAicmVnaW9uIjogIkFueXN0YXRlIiwgImNvdW50cnkiOi
AiVVMifV0~WyJBSngtMDk1VlBycFR0TjRRTU9xUk9BIiwgImJpcnRoZGF0ZSIsICIxOT
QwLTAxLTAxIl0~WyJQYzMzSk0yTGNoY1VfbEhnZ3ZfdWZRIiwgImlzX292ZXJfMTgiLC
B0cnVlXQ~WyJHMDJOU3JRZmpGWFE3SW8wOXN5YWpBIiwgImlzX292ZXJfMjEiLCB0cnV
lXQ~WyJsa2x4RjVqTVlsR1RQVW92TU5JdkNBIiwgImlzX292ZXJfNjUiLCB0cnVlXQ~
]]>
</sourcecode>
</figure>
</section>

<section anchor="presentation"><name>Presentation</name>
<t><xref target="presentation1"/> below is an example of a presentation of the SD-JWT shown in <xref target="vc-sd-jwt-example"/> including a KB-JWT.
In this presentation, the Holder provides only the Disclosures for the <tt>address</tt> and <tt>is_over_65</tt> claims.
Other claims are not disclosed to the Verifier.</t>
<figure anchor="presentation1"><name>Presented SD-JWT+KB </name>
<sourcecode type="txt"><![CDATA[eyJhbGciOiAiRVMyNTYiLCAidHlwIjogImRjK3NkLWp3dCIsICJraWQiOiAiZG9jLXNp
Z25lci0wNS0yNS0yMDIyIn0.eyJfc2QiOiBbIjA5dktySk1PbHlUV00wc2pwdV9wZE9C
VkJRMk0xeTNLaHBINTE1blhrcFkiLCAiMnJzakdiYUMwa3k4bVQwcEpyUGlvV1RxMF9k
YXcxc1g3NnBvVWxnQ3diSSIsICJFa084ZGhXMGRIRUpidlVIbEVfVkNldUM5dVJFTE9p
ZUxaaGg3WGJVVHRBIiwgIklsRHpJS2VpWmREd3BxcEs2WmZieXBoRnZ6NUZnbldhLXNO
NndxUVhDaXciLCAiSnpZakg0c3ZsaUgwUjNQeUVNZmVadTZKdDY5dTVxZWhabzdGN0VQ
WWxTRSIsICJQb3JGYnBLdVZ1Nnh5bUphZ3ZrRnNGWEFiUm9jMkpHbEFVQTJCQTRvN2NJ
IiwgIlRHZjRvTGJnd2Q1SlFhSHlLVlFaVTlVZEdFMHc1cnREc3JaemZVYW9tTG8iLCAi
amRyVEU4WWNiWTRFaWZ1Z2loaUFlX0JQZWt4SlFaSUNlaVVRd1k5UXF4SSIsICJqc3U5
eVZ1bHdRUWxoRmxNXzNKbHpNYVNGemdsaFFHMERwZmF5UXdMVUs0Il0sICJpc3MiOiAi
aHR0cHM6Ly9leGFtcGxlLmNvbS9pc3N1ZXIiLCAiaWF0IjogMTY4MzAwMDAwMCwgImV4
cCI6IDE4ODMwMDAwMDAsICJ2Y3QiOiAiaHR0cHM6Ly9jcmVkZW50aWFscy5leGFtcGxl
LmNvbS9pZGVudGl0eV9jcmVkZW50aWFsIiwgIl9zZF9hbGciOiAic2hhLTI1NiIsICJj
bmYiOiB7Imp3ayI6IHsia3R5IjogIkVDIiwgImNydiI6ICJQLTI1NiIsICJ4IjogIlRD
QUVSMTladnUzT0hGNGo0VzR2ZlNWb0hJUDFJTGlsRGxzN3ZDZUdlbWMiLCAieSI6ICJa
eGppV1diWk1RR0hWV0tWUTRoYlNJaXJzVmZ1ZWNDRTZ0NGpUOUYySFpRIn19fQ.qfdiO
sW6aUA59AhQ6Uo4tfWea7rTgZK8_SRtL3TYRLBqr2LwPrUkXjeeIGzZtk6jLCFN1s9hW
vzJWzUszLeTPw~WyJsa2x4RjVqTVlsR1RQVW92TU5JdkNBIiwgImlzX292ZXJfNjUiLC
B0cnVlXQ~WyJRZ19PNjR6cUF4ZTQxMmExMDhpcm9BIiwgImFkZHJlc3MiLCB7InN0cmV
ldF9hZGRyZXNzIjogIjEyMyBNYWluIFN0IiwgImxvY2FsaXR5IjogIkFueXRvd24iLCA
icmVnaW9uIjogIkFueXN0YXRlIiwgImNvdW50cnkiOiAiVVMifV0~eyJhbGciOiAiRVM
yNTYiLCAidHlwIjogImtiK2p3dCJ9.eyJub25jZSI6ICIxMjM0NTY3ODkwIiwgImF1ZC
I6ICJodHRwczovL2V4YW1wbGUuY29tL3ZlcmlmaWVyIiwgImlhdCI6IDE3NzIxMzA3Mz
UsICJzZF9oYXNoIjogIkJnMm1pTm9lWlFqai1mVDhaQkl4ai12d0JpY21QTkhzV3hhUm
VGdWhmcW8ifQ.vg9LjRVDgcSL-S7IiigI6xbVjH8jfz3WHZNIWXWRplcaZ46EjRuKk3j
SeofmOMAajV1dqAuuSpYLMVIJ1nBJWg
]]>
</sourcecode>
</figure>
<t>After validation, the Verifier will have the processed SD-JWT payload in <xref target="verified-payload1"/> below available for further handling.</t>
<figure anchor="verified-payload1"><name>Verified SD-JWT Payload </name>
<sourcecode type="json"><![CDATA[{
  "iss": "https://example.com/issuer",
  "iat": 1683000000,
  "exp": 1883000000,
  "vct": "https://credentials.example.com/identity_credential",
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
      "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
    }
  },
  "is_over_65": true,
  "address": {
    "street_address": "123 Main St",
    "locality": "Anytown",
    "region": "Anystate",
    "country": "US"
  }
}
]]>
</sourcecode>
</figure>
<t>The example in <xref target="presentation2"/> below shows a presentation of a (similar but different) SD-JWT without a
KB-JWT.</t>
<figure anchor="presentation2"><name>Presented SD-JWT </name>
<sourcecode type="txt"><![CDATA[eyJhbGciOiAiRVMyNTYiLCAidHlwIjogImRjK3NkLWp3dCJ9.eyJfc2QiOiBbIjA5dkt
ySk1PbHlUV00wc2pwdV9wZE9CVkJRMk0xeTNLaHBINTE1blhrcFkiLCAiMnJzakdiYUM
wa3k4bVQwcEpyUGlvV1RxMF9kYXcxc1g3NnBvVWxnQ3diSSIsICJFa084ZGhXMGRIRUp
idlVIbEVfVkNldUM5dVJFTE9pZUxaaGg3WGJVVHRBIiwgIklsRHpJS2VpWmREd3BxcEs
2WmZieXBoRnZ6NUZnbldhLXNONndxUVhDaXciLCAiSnpZakg0c3ZsaUgwUjNQeUVNZmV
adTZKdDY5dTVxZWhabzdGN0VQWWxTRSIsICJQb3JGYnBLdVZ1Nnh5bUphZ3ZrRnNGWEF
iUm9jMkpHbEFVQTJCQTRvN2NJIiwgIlRHZjRvTGJnd2Q1SlFhSHlLVlFaVTlVZEdFMHc
1cnREc3JaemZVYW9tTG8iLCAiamRyVEU4WWNiWTRFaWZ1Z2loaUFlX0JQZWt4SlFaSUN
laVVRd1k5UXF4SSIsICJqc3U5eVZ1bHdRUWxoRmxNXzNKbHpNYVNGemdsaFFHMERwZmF
5UXdMVUs0Il0sICJpc3MiOiAiaHR0cHM6Ly9leGFtcGxlLmNvbS9pc3N1ZXIiLCAiaWF
0IjogMTY4MzAwMDAwMCwgImV4cCI6IDE4ODMwMDAwMDAsICJ2Y3QiOiAiaHR0cHM6Ly9
jcmVkZW50aWFscy5leGFtcGxlLmNvbS9pZGVudGl0eV9jcmVkZW50aWFsIiwgIl9zZF9
hbGciOiAic2hhLTI1NiJ9.08Ot7q_Gb-__FtijpjjyxOkMA6okV5ClWR64vjMKJNALsW
acl4wvdXscQwHLZAGLJc6UJafcw7dPujzcF_Nf0A~WyJsa2x4RjVqTVlsR1RQVW92TU5
JdkNBIiwgImlzX292ZXJfNjUiLCB0cnVlXQ~WyJRZ19PNjR6cUF4ZTQxMmExMDhpcm9B
IiwgImFkZHJlc3MiLCB7InN0cmVldF9hZGRyZXNzIjogIjEyMyBNYWluIFN0IiwgImxv
Y2FsaXR5IjogIkFueXRvd24iLCAicmVnaW9uIjogIkFueXN0YXRlIiwgImNvdW50cnki
OiAiVVMifV0~
]]>
</sourcecode>
</figure>
<t>The Verifier will have the following processed SD-JWT payload shown in <xref target="verified-payload2"/> after validation.</t>
<figure anchor="verified-payload2"><name>Processed SD-JWT Payload </name>
<sourcecode type="json"><![CDATA[{
  "iss": "https://example.com/issuer",
  "iat": 1683000000,
  "exp": 1883000000,
  "vct": "https://credentials.example.com/identity_credential",
  "is_over_65": true,
  "address": {
    "street_address": "123 Main St",
    "locality": "Anytown",
    "region": "Anystate",
    "country": "US"
  }
}
]]>
</sourcecode>
</figure>
</section>
</section>

<section anchor="vc-sd-jwt-verification-and-processing"><name>Verification and Processing</name>
<t>The recipient (Holder or Verifier) of an SD-JWT VC MUST process and verify an
SD-JWT VC as described in Section 7 of <xref target="RFC9901"/>.
The check in point 2.c of Section 7.1 of <xref target="RFC9901"/>,
which validates the Issuer and ensures that the signing key belongs to the Issuer,
MUST be satisfied by determining and validating the public verification key used to verify the Issuer-signed JWT,
employing an Issuer Signature Mechanism (defined in <xref target="ism"/>) that is permitted for the Issuer according to policy.</t>
<t>If Key Binding is required (refer to the security considerations in Section 9.5 of <xref target="RFC9901"/>), the Verifier MUST verify the KB-JWT
according to Section 7.3 of <xref target="RFC9901"/>. To verify
the KB-JWT, the <tt>cnf</tt> claim of the SD-JWT MUST be used.</t>
<t>If there are no selectively disclosable claims, there is no need to process the
<tt>_sd</tt> claim nor any Disclosures.</t>
<t>If <tt>status</tt> is present in the verified payload of the SD-JWT, the status SHOULD
be checked. Verifier policy decides whether to reject or accept a presentation of
a SD-JWT VC based on the status of the Verifiable Digital Credential.</t>
<t>Additional validation rules MAY apply, but their use is out of the scope of this
specification.</t>
</section>

<section anchor="ism"><name>Issuer Signature Mechanisms</name>
<t>An Issuer Signature Mechanism defines how a Verifier determines the appropriate key and associated procedure for
verifying the signature of an Issuer-signed JWT.
This allows for flexibility in supporting different trust anchoring systems and key resolution methods
without changing the core processing model.</t>
<t>A recipient MUST determine and validate the public verification key for the Issuer-signed JWT using
a supported Issuer Signature Mechanism that is permitted for the given Issuer according to policy.
This specification defines the following two Issuer Signature Mechanisms:</t>

<ul>
<li><t>JWT VC Issuer Metadata: A mechanism to retrieve the Issuer's public key using web-based resolution. When the value of the <tt>iss</tt> claim of the Issuer-signed JWT is an HTTPS URI, the recipient obtains the public key using the keys from JWT VC Issuer Metadata as defined in <xref target="jwt-vc-issuer-metadata"/>.</t>
</li>
<li><t>X.509 Certificates: A mechanism to retrieve the Issuer's public key using the X.509 certificate chain in the SD-JWT header. When the protected header of the Issuer-signed JWT contains the <tt>x5c</tt> parameter, the recipient uses the public key from the end-entity certificate of the certificates from that <tt>x5c</tt> parameter and validates the X.509 certificate chain accordingly. In this case, the Issuer of the Verifiable Digital Credential is the subject of the end-entity certificate.</t>
</li>
</ul>
<t>To enable different trust anchoring systems or key resolution methods, separate specifications or ecosystem regulations
may define additional Issuer Signature Mechanisms may complement or override the mechanisms defined above; however, the specifics of such mechanisms are out of scope for this specification.
See <xref target="ecosystem-verification-rules"/> for related security considerations.</t>
<t>If a recipient cannot validate that the public verification key corresponds the Issuer of the Issuer-signed JWT using a permitted Issuer Signature Mechanism, the SD-JWT VC MUST be rejected.</t>
</section>
</section>

<section anchor="jwt-vc-issuer-metadata"><name>JWT VC Issuer Metadata</name>
<t>This specification defines the JWT VC Issuer Metadata to retrieve the JWT VC
Issuer Metadata configuration of the Issuer of the SD-JWT VC. The Issuer
is identified by the <tt>iss</tt> claim in the JWT. Use of the JWT VC Issuer Metadata
is OPTIONAL.</t>
<t>Issuers publishing JWT VC Issuer Metadata MUST make a JWT VC Issuer Metadata
configuration available at the location formed by inserting the well-known string
<tt>/.well-known/jwt-vc-issuer</tt> between the host component and the path
component (if any) of the <tt>iss</tt> claim value in the JWT. The <tt>iss</tt> MUST
be a case-sensitive URL using the HTTPS scheme that contains scheme, host and,
optionally, port number and path components, but no query or fragment
components.</t>

<section anchor="jwt-vc-issuer-metadata-request"><name>JWT VC Issuer Metadata Request</name>
<t>A JWT VC Issuer Metadata configuration MUST be queried using an HTTP <tt>GET</tt> request
at the path defined in <xref target="jwt-vc-issuer-metadata"/>.</t>
<t><xref target="GET"/> below is a non-normative example of an HTTP request for the JWT VC Issuer
Metadata configuration when <tt>iss</tt> is set to <tt>https://example.com</tt>:</t>
<figure anchor="GET"><name>Example HTTP Request for JWT VC Issuer Metadata </name>
<sourcecode type="http"><![CDATA[GET /.well-known/jwt-vc-issuer HTTP/1.1
Host: example.com
]]>
</sourcecode>
</figure>
<t>If the <tt>iss</tt> value contains a path component, any terminating <tt>/</tt> MUST be
removed before inserting <tt>/.well-known/</tt> and the well-known URI suffix
between the host component and the path component.</t>
<t><xref target="GET1234"/> below is a non-normative example of an HTTP request for the JWT VC Issuer
Metadata configuration when <tt>iss</tt> is set to <tt>https://example.com/tenant/1234</tt>:</t>
<figure anchor="GET1234"><name>Example HTTP Request for JWT VC Issuer Metadata </name>
<artwork><![CDATA[GET /.well-known/jwt-vc-issuer/tenant/1234 HTTP/1.1
Host: example.com
]]>
</artwork>
</figure>
</section>

<section anchor="jwt-vc-issuer-metadata-response"><name>JWT VC Issuer Metadata Response</name>
<t>A successful response MUST use an HTTP <tt>200</tt> status code and return the JWT VC Issuer
Metadata configuration using the <tt>application/json</tt> content type.</t>
<t>An error response MUST use the applicable HTTP status code value.</t>
<t>This specification defines the following JWT VC Issuer Metadata configuration
parameters:</t>

<ul spacing="compact">
<li><tt>issuer</tt>: REQUIRED. The Issuer identifier, which MUST be identical to the <tt>iss</tt>
value in the JWT.</li>
<li><tt>jwks_uri</tt>: OPTIONAL. URL string referencing the Issuer's JSON Web Key (JWK) Set
<xref target="RFC7517"/> document which contains the Issuer's public keys. The value of
this field MUST point to a valid JWK Set document.</li>
<li><tt>jwks</tt>: OPTIONAL. Issuer's JSON Web Key Set <xref target="RFC7517"/> document value, which
contains the Issuer's public keys. The value of this field MUST be a JSON
object containing a valid JWK Set.</li>
</ul>
<t>JWT VC Issuer Metadata MUST include either <tt>jwks_uri</tt> or <tt>jwks</tt> in their JWT VC
Issuer Metadata, but not both.</t>
<t>It is RECOMMENDED that the Issuer-signed JWT contains a <tt>kid</tt> JWT header parameter that can
be used to look up the public key in the JWK Set included by value or referenced
in the JWT VC Issuer Metadata.</t>
<t><xref target="example-metadata-jwks"/> below is an example of a JWT VC Issuer Metadata configuration
including <tt>jwks</tt>:</t>
<figure anchor="example-metadata-jwks"><name>Example Metadata with a JSON Web Key Set </name>
<artwork><![CDATA[{
   "issuer":"https://example.com",
   "jwks":{
      "keys":[
         {
            "kid":"doc-signer-05-25-2022",
            "kty": "EC", "crv": "P-256",
            "x": "b28d4MwZMjw8-00CG4xfnn9SLMVMM19SlqZpVb_uNtQ",
            "y": "Xv5zWwuoaTgdS6hV43yI6gBwTnjukmFQQnJ_kCxzqk8"
         },
         {
            "kid":"doc-signer-06-05-2025",
            "kty": "EC", "crv": "P-256",
            "x":"DfjUx4WHBds61vGbqUQhsy3FGX13fAS13QWh2EHIkX8",
            "y":"NfqJt9Kp0EA93xq9ysO80DRZ_hCGlISz-pYLgv4RFvg"
         }
      ]
   }
}
]]>
</artwork>
</figure>
<t><xref target="example-metadata-jwks-uri"/> below is an example of a JWT VC Issuer Metadata
configuration including <tt>jwks_uri</tt>:</t>
<figure anchor="example-metadata-jwks-uri"><name>Example Metadata with a JSON Web Key Set URI </name>
<artwork><![CDATA[{
   "issuer":"https://example.com",
   "jwks_uri":"https://jwt-vc-issuer.example.com/my_public_keys.jwks"
}
]]>
</artwork>
</figure>
<t>Additional JWT VC Issuer Metadata configuration parameters MAY also be used.</t>
</section>

<section anchor="jwt-vc-issuer-metadata-validation"><name>JWT VC Issuer Metadata Validation</name>
<t>The <tt>issuer</tt> value returned MUST be identical to the <tt>iss</tt> value of the
Issuer-signed JWT. If these values are not identical, the data contained in the response
MUST NOT be used.</t>
</section>
</section>

<section anchor="type-metadata"><name>SD-JWT VC Type Metadata</name>
<t>An SD-JWT VC type, i.e., the <tt>vct</tt> value, is associated with Type Metadata defining, for example, information about the type and how credentials are displayed.</t>
<t>This section defines Type Metadata that can be associated with a type of an SD-JWT VC, as well as a method for retrieving the Type Metadata and processing rules. This Type Metadata is intended to be used, among other things, for the following purposes:</t>

<ul spacing="compact">
<li>Developers of Issuers and Verifiers can use the Type Metadata to understand the
semantics of the type and the associated rules. While in some cases,
Issuers are the parties that define types, this is
not always the case. For example, a type can be defined by a
standardization body or a community.</li>
<li>Verifiers can use the Type Metadata to determine whether a credential is valid
according to the rules of the type. For example, a Verifier can check
whether a credential contains all required claims and whether the claims
are selectively disclosable.</li>
<li>Holders can use the metadata to display the credential in a way that is
consistent with the intent of the provider of the Type Metadata.</li>
</ul>
<t>Type Metadata can be retrieved as described in <xref target="retrieving-type-metadata"/>.</t>

<section anchor="type-metadata-example"><name>Type Metadata Example</name>
<t>All examples in this section are non-normative. This section only shows
excerpts, the full examples can be found in <xref target="ExampleTypeMetadata"/>.</t>
<t>The following in <xref target="example-with-vct-for-type-metadata"/> is an example
of an SD-JWT VC payload, containing a <tt>vct</tt> claim
with the value <tt>https://betelgeuse.example.com/education_credential/v42</tt>.</t>
<figure anchor="example-with-vct-for-type-metadata"><name>Example SD-JWT VC Payload with <tt>vct</tt> Claim </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://betelgeuse.example.com/education_credential/v42",
  "vct#integrity": "sha256-1odmyxoVQCuQx8SAym8rWHXba41fM/Iv/V1H8VHGN00=",
  ...
}
]]>
</sourcecode>
</figure>
<t>Type Metadata for the type <tt>https://betelgeuse.example.com/education_credential/v42</tt>
can be retrieved using various mechanisms as described in
<xref target="retrieving-type-metadata"/>. For this example, the <tt>vct</tt> value is a URL as defined in
<xref target="retrieval-from-vct-claim"/> and the Type Metadata document in <xref target="example-type-metadata-document"/> is
retrieved from it:</t>
<figure anchor="example-type-metadata-document"><name>Example Type Metadata Document </name>
<sourcecode type="json"><![CDATA[{
  "vct":"https://betelgeuse.example.com/education_credential/v42",
  "name":"Betelgeuse Education Credential - Version 42",
  "description":"This is our education credential. Don't panic.",
  "extends":"https://galaxy.example.com/galactic-education-credential/v2",
  "extends#integrity":"sha256-ilOUJsTultOwLfz7QUcFALaRa3BP/jelX1ds04kB9yU="
}
]]>
</sourcecode>
</figure>
<t>Note: The hash of the Type Metadata document shown in the second example must be equal
to the one in the <tt>vct#integrity</tt> claim in the SD-JWT VC payload,
<tt>1odmyxoVQCuQx8SAym8rWHXba41fM/Iv/V1H8VHGN00=</tt> (see <xref target="document-integrity"/> for details).</t>
</section>

<section anchor="type-metadata-format"><name>Type Metadata Format</name>
<t>The Type Metadata document MUST be a JSON object. The following properties are
defined:</t>

<ul spacing="compact">
<li><tt>vct</tt>: REQUIRED. The verifiable digital credential type described by this type metadata document.</li>
<li><tt>name</tt>: OPTIONAL. A human-readable name for the type, intended for developers reading
the JSON document.</li>
<li><tt>description</tt>: OPTIONAL. A human-readable description for the type, intended for
developers reading the JSON document.</li>
<li><tt>extends</tt>: OPTIONAL. A URI of another type that this type extends, as described in
<xref target="extending-type-metadata"/>.</li>
<li><tt>display</tt>: An array of objects containing display information for the type, as described
in <xref target="display-metadata"/>. This property is OPTIONAL.</li>
<li><tt>claims</tt>: An array of objects containing claim information for the type, as described in
<xref target="claim-metadata"/>. This property is OPTIONAL.</li>
</ul>
<t>Additionally, <tt>extends#integrity</tt> MAY be present as defined in <xref target="document-integrity"/>.</t>
<t>A Type Metadata document MAY contain additional top level or subordinate properties.
Consumers MUST ignore properties that are not understood.</t>
<t>An example of a Type Metadata document is shown in <xref target="ExampleTypeMetadata"/>.</t>
</section>

<section anchor="retrieving-type-metadata"><name>Retrieving Type Metadata</name>
<t>A Consumer retrieving Type Metadata MUST ensure that the <tt>vct</tt> value in the
SD-JWT VC payload is identical to the <tt>vct</tt> value in the reference to the Type
Metadata (either in the SD-JWT VC itself or in an <tt>extends</tt> property in a Type
Metadata document).</t>
<t>The following sections define methods to retrieve Type Metadata.</t>

<section anchor="retrieval-from-vct-claim"><name>From a URL in the <tt>vct</tt> Claim</name>
<t>A URI in the <tt>vct</tt> claim can be used to express a type. If the
type is a URL using the HTTPS scheme, Type Metadata MAY be retrieved from it.</t>
<t>The Type Metadata is retrieved using the HTTP GET method.
A successful response MUST use an HTTP <tt>200</tt> status code and return a JSON
object as defined in <xref target="type-metadata-format"/> using the <tt>application/json</tt> content type.
An error response MUST use the applicable HTTP status code value.</t>
<t>If the claim <tt>vct#integrity</tt> is present in the SD-JWT VC, its value
<tt>vct#integrity</tt> MUST be an "integrity metadata" string as defined in <xref target="document-integrity"/>.</t>
</section>

<section anchor="retrieval-from-registry"><name>From a Registry</name>
<t>A Consumer MAY use a registry to retrieve Type Metadata for a SD-JWT VC type,
e.g., if the type is not an HTTPS URL or if the Consumer does not have
access to the URL. A Consumer needs to trust the registry to provide correct Type Metadata for the type.</t>
<t>The registry MUST provide the Type Metadata in the same format as described in
<xref target="type-metadata-format"/>.</t>
</section>

<section anchor="defined-retrieval-method"><name>Using a Defined Retrieval Method</name>
<t>Ecosystems MAY define additional methods for retrieving Type Metadata. For example, a
standardization body or a community MAY define a service which has to be used to
retrieve Type Metadata based on a URN in the <tt>vct</tt> claim.</t>
</section>

<section anchor="retrieval-from-local-cache"><name>From a Local Cache</name>
<t>A Consumer MAY cache Type Metadata for a SD-JWT VC type. If a hash for integrity
protection is present in the Type Metadata as defined in <xref target="document-integrity"/>, the Consumer MAY assume that the Type Metadata is static and can be cached
indefinitely. Otherwise, the Consumer MUST use the <tt>Cache-Control</tt>
header of the HTTP response to determine how long the metadata can be cached.</t>
</section>
</section>

<section anchor="extending-type-metadata"><name>Extending Type Metadata</name>
<t>An SD-JWT VC type can extend another type. The extended type is identified by the URI in
the <tt>extends</tt> property. Consumers MUST retrieve and process
Type Metadata for the extended type before processing the Type Metadata for the extending
type.</t>
<t>The extended type MAY itself extend another type. This can be used to create a
chain or hierarchy of types. The security considerations described in
<xref target="circular-extends"/> apply in order to avoid problems with circular dependencies.</t>
<t>Processing details when extending type metadata are described in
<xref target="display-metadata-extends"/> and <xref target="claim-metadata-extends"/>.</t>
</section>
</section>

<section anchor="document-integrity"><name>Document Integrity</name>
<t>The <tt>vct</tt> claim in the SD-JWT VC as defined in <xref target="claims"/> and various URIs in the
Type Metadata MAY be accompanied by a respective claim suffixed with
<tt>#integrity</tt>, in particular:</t>

<ul spacing="compact">
<li><tt>extends</tt> as defined in <xref target="extending-type-metadata"/>, and</li>
<li><tt>uri</tt> as used in three places in <xref target="rendering-metadata"/>.</li>
</ul>
<t>The value MUST be an "integrity metadata" string as defined in Section 3 of
<xref target="W3C.SRI"/>. If an integrity property is present for a particular claim, the
Consumer of the respective document MUST verify the integrity of the retrieved
document as defined in Section 3.3.5 of <xref target="W3C.SRI"/>.</t>
</section>

<section anchor="display-metadata"><name>Display Metadata</name>
<t>The <tt>display</tt> property is an array containing display information for the type.
The array MUST contain an object for each locale that is supported by the
type. The consuming application MUST use the language tag it considers most
appropriate for the user.</t>
<t>The objects in the array have the following properties:</t>

<ul spacing="compact">
<li><tt>locale</tt>: A language tag as defined in Section 2 of <xref target="RFC5646"/>. This property is REQUIRED.</li>
<li><tt>name</tt>: A human-readable name for the type, intended for end users. This
property is REQUIRED.</li>
<li><tt>description</tt>: A human-readable description for the type, intended for end
users. This property is OPTIONAL.</li>
<li><tt>rendering</tt>: An object containing rendering information for the type, as
described in <xref target="rendering-metadata"/>. This property is OPTIONAL.</li>
</ul>

<section anchor="rendering-metadata"><name>Rendering Metadata</name>
<t>The <tt>rendering</tt> property is an object containing rendering information for the
type. The object MUST contain a property for each rendering method that is
supported by the type. The property name MUST be a rendering method identifier
and the property value MUST be an object containing the properties defined for
the rendering method.</t>

<section anchor="rendering-method-simple"><name>Rendering Method "simple"</name>
<t>The <tt>simple</tt> rendering method is intended for use in applications that do not
support SVG rendering. The object contains the following properties:</t>

<ul spacing="compact">
<li><tt>logo</tt>: An object containing information about the logo to be displayed for
the type, as described in <xref target="logo-metadata"/>. This property is OPTIONAL.</li>
<li><tt>background_image</tt>: An object containing information about the background image to be displayed for
the type, as described in <xref target="background-image-metadata"/>. This property is OPTIONAL.</li>
<li><tt>background_color</tt>: An RGB color value as defined in <xref target="W3C.CSS-COLOR"/> for the background of the credential.
This property is OPTIONAL.</li>
<li><tt>text_color</tt>: An RGB color value as defined in <xref target="W3C.CSS-COLOR"/> value for the text of the credential. This property
is OPTIONAL.</li>
</ul>

<section anchor="logo-metadata"><name>Logo Metadata</name>
<t>The <tt>logo</tt> property is an object containing information about the logo to be
displayed for the type. The object contains the following properties:</t>

<ul spacing="compact">
<li><tt>uri</tt>: A URI pointing to the logo image. This property is REQUIRED.</li>
<li><tt>uri#integrity</tt>: An "integrity metadata" string as described in
<xref target="document-integrity"/>. This property is OPTIONAL.</li>
<li><tt>alt_text</tt>: A string containing alternative text for the logo image. This
property is OPTIONAL.</li>
</ul>
</section>

<section anchor="background-image-metadata"><name>Background Image Metadata</name>
<t>The <tt>background_image</tt> property is an object containing information about the background image to be
displayed for the type. The object contains the following properties:</t>

<ul spacing="compact">
<li><tt>uri</tt>: A URI pointing to the background image. This property is REQUIRED.</li>
<li><tt>uri#integrity</tt>: An "integrity metadata" string as described in
<xref target="document-integrity"/>. This property is OPTIONAL.</li>
</ul>
</section>
</section>

<section anchor="rendering-method-svg"><name>Rendering Method "svg_templates"</name>
<t>The <tt>svg_templates</tt> rendering method is intended for use in applications that
support SVG rendering. svg_templates MUST contain an array of objects containing
information about the SVG templates available for the type. Each object contains
the following properties:</t>

<ul spacing="compact">
<li><tt>uri</tt>: A URI pointing to the SVG template. This property is REQUIRED.</li>
<li><tt>uri#integrity</tt>: An "integrity metadata" string as described in
<xref target="document-integrity"/>. This property is OPTIONAL.</li>
<li><tt>properties</tt>: An object containing properties for the SVG template, as
described in <xref target="svg-template-properties"/>. This property is REQUIRED if more than
one SVG template is present, otherwise it is OPTIONAL.</li>
</ul>

<section anchor="svg-template-properties"><name>SVG Template Properties</name>
<t>The <tt>properties</tt> property is an object containing properties for the SVG
template. Consuming applications MUST use these properties to find the best SVG
template available for display to the user based on the display properties
(landscape/portrait) and user preferences (color scheme, contrast). The object
MUST contain at least one of the following properties:</t>

<ul spacing="compact">
<li><tt>orientation</tt>: The orientation for which the SVG template is optimized, with
valid values being <tt>portrait</tt> and <tt>landscape</tt>. This property is OPTIONAL.</li>
<li><tt>color_scheme</tt>: The color scheme for which the SVG template is optimized, with
valid values being <tt>light</tt> and <tt>dark</tt>. This property is OPTIONAL.</li>
<li><tt>contrast</tt>: The contrast for which the SVG template is optimized, with valid
values being <tt>normal</tt> and <tt>high</tt>. This property is OPTIONAL.</li>
</ul>
</section>

<section anchor="svg-rendering"><name>SVG Rendering</name>
<t>A consuming application MUST preprocess the SVG template by replacing placeholders
in the SVG template with properly escaped values of the claims in the credential. The
placeholders MUST be defined in the SVG template using the syntax
<tt>{{svg_id}}</tt>, where <tt>svg_id</tt> is an identifier defined in the claim metadata as
described in <xref target="claim-metadata"/>.</t>
<t>Placeholders MUST only be used in the text content of the SVG template and MUST NOT
be used in any other part of the SVG template, e.g., in attributes or comments.</t>
<t>A consuming application MUST ensure that all special characters in the claim
values are properly escaped before inserting them into the SVG template. At
least the following characters MUST be escaped:</t>

<ul spacing="compact">
<li><tt>&amp;</tt> as <tt>&amp;amp;</tt></li>
<li><tt>&lt;</tt> as <tt>&amp;lt;</tt></li>
<li><tt>&gt;</tt> as <tt>&amp;gt;</tt></li>
<li><tt>"</tt> as <tt>&amp;quot;</tt></li>
<li><tt>'</tt> as <tt>&amp;apos;</tt></li>
</ul>
<t>If the <tt>svg_id</tt> is not present in the claim metadata, the consuming application
SHOULD reject and not render the SVG template. If the <tt>svg_id</tt> is present in the
claim metadata, but the claim is not present in the credential, the placeholder
MUST be replaced with an empty string or a string appropriate to indicate that
the value is absent.</t>
<t>The non-normative example below in <xref target="example-svg-template"/> shows a minimal SVG with one placeholder
using the <tt>svg_id</tt> value <tt>address_street_address</tt> which is defined in the
example in <xref target="ExampleTypeMetadata"/>.</t>
<figure anchor="example-svg-template"><name>Example SVG Template with Placeholder </name>
<sourcecode type="svg"><![CDATA[<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
  <text x="10" y="20">Street address: {{address_street_address}}</text>
</svg>
]]>
</sourcecode>
</figure>
<t>When rendering the SVG template, the consuming application MUST ensure that
malicious metadata providers or issuers cannot inject executable code into the SVG
template and thereby compromise the security of the consuming application. The
consuming application MUST NOT execute any code in the SVG template. If code
execution cannot be prevented reliably, the SVG display MUST be sandboxed.</t>
<t>Furthermore, consuming applications MUST ensure that references to external
resources (images, etc.) from within the SVG cannot be used to track users or
the usage of credentials.</t>
</section>
</section>
</section>

<section anchor="display-metadata-extends"><name>Extending Display Metadata</name>
<t>When an SD-JWT VC type extends another type as described in
<xref target="extending-type-metadata"/>, the <tt>display</tt> metadata remains valid for the
inheriting type unless that type defines its own <tt>display</tt> property, in which
case the original display metadata is ignored.</t>
<t>Note that this does not affect the <tt>display</tt> properties in the claim metadata.
Rules for these are defined in <xref target="claim-metadata-extends"/>.</t>
</section>
</section>

<section anchor="claim-metadata"><name>Claim Metadata</name>
<t>The <tt>claims</tt> property is an array of objects containing information about
particular claims for displaying and validating the claims.</t>
<t>The array MAY contain an object for each claim that is supported by the type.
Each object contains the following properties:</t>

<ul spacing="compact">
<li><tt>path</tt>: An array indicating the claim or claims that are being addressed, as
described below. This property is REQUIRED.</li>
<li><tt>display</tt>: An array containing display information for the claim or claims that are being addressed, as
described in <xref target="claim-display-metadata"/>. This property is OPTIONAL.</li>
<li><tt>mandatory</tt>: A boolean indicating that the claim must be present in the issued
credential. This property is OPTIONAL. If omitted, the default value is <tt>false</tt>. See
<xref target="claim-mandatory-metadata"/> for details.</li>
<li><tt>sd</tt>: A string indicating whether the claim is selectively disclosable, as
described in <xref target="claim-selective-disclosure-metadata"/>. This property is OPTIONAL.</li>
<li><tt>svg_id</tt>: A string defining the ID of the claim for reference in the SVG
template, as described in <xref target="svg-rendering"/>. The ID MUST be unique within the
type metadata. It MUST consist of only alphanumeric characters and underscores
and MUST NOT start with a digit. This property is OPTIONAL.</li>
</ul>

<section anchor="claim-path"><name>Claim Path</name>
<t>The <tt>path</tt> property MUST be a non-empty array of strings, <tt>null</tt> values, or
non-negative integers. It is used to select a particular claim in the credential
or a set of claims. A string indicates that the respective key is to be
selected, a <tt>null</tt> value indicates that all elements of the currently selected
array(s) are to be selected, and a non-negative integer indicates that the
respective index in an array is to be selected.</t>

<section anchor="example"><name>Example</name>
<t><xref target="example-credential-for-claim-path"/> shows a non-normative, reduced example of a credential.</t>
<figure anchor="example-credential-for-claim-path"><name>Example Credential for Claim Path </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://betelgeuse.example.com/education_credential/v42",
  "name": "Arthur Dent",
  "address": {
    "street_address": "42 Market Street",
    "city": "Milliways",
    "postal_code": "12345"
  },
  "degrees": [
    {
      "type": "Bachelor of Science",
      "university": "University of Betelgeuse"
    },
    {
      "type": "Master of Science",
      "university": "University of Betelgeuse"
    }
  ],
  "nationalities": ["British", "Betelgeusian"]
}
]]>
</sourcecode>
</figure>
<t>The following shows examples of <tt>path</tt> values and the respective selected
claims in the credential above:</t>

<ul spacing="compact">
<li><tt>["name"]</tt>: The claim <tt>name</tt> with the value <tt>Arthur Dent</tt> is selected.</li>
<li><tt>["address"]</tt>: The claim <tt>address</tt> with its sub-claims as the value is selected.</li>
<li><tt>["address", "street_address"]</tt>: The claim <tt>street_address</tt> with the value
<tt>42 Market Street</tt> is selected.</li>
<li><tt>["degrees", null, "type"]</tt>: All <tt>type</tt> claims in the <tt>degrees</tt> array are
selected.</li>
</ul>
<t>The example in <xref target="ExampleTypeMetadata"/> shows how the <tt>path</tt> can be used to
address arrays and their elements.</t>
</section>

<section anchor="processing-of-path"><name>Processing of <tt>path</tt></name>
<t>In detail, the array components of <tt>path</tt> are processed from left to right as follows:</t>

<ol spacing="compact">
<li>Select the root element of the credential, i.e., the top-level JSON object.</li>
<li><t>Process the <tt>path</tt> components from left to right:</t>

<ol spacing="compact">
<li>If the <tt>path</tt> component is a string, select the element in the respective
key in the currently selected element(s). If any of the currently
selected element(s) is not an object, abort processing and return an
error. If the key does not exist in any element currently selected,
remove that element from the selection.</li>
<li>If the <tt>path</tt> component is <tt>null</tt>, select all elements of the currently
selected array(s). If any of the currently selected element(s) is not an
array, abort processing and return an error.</li>
<li>If the <tt>path</tt> component is a non-negative integer, select the element at
the respective index in the currently selected array(s). If any of the
currently selected element(s) is not an array, abort processing and
return an error. If the index does not exist in a selected array, remove
that array from the selection.</li>
<li>If the set of elements currently selected is empty, abort processing and
return an error.</li>
</ol></li>
</ol>
<t>The result of the processing is the set of elements to which the respective
claim metadata applies.</t>
<t>The <tt>path</tt> property MUST point to the respective claim as if all
selectively disclosable claims were disclosed to a Verifier. That means that a
consuming application which does not have access to all disclosures may not be
able to identify the claim which is being addressed.</t>
<t>Note: This specification intentionally does not use JSON Pointer <xref target="RFC6901"/> for
selecting claims, as JSON Pointer requires string parsing and does not support
wildcard selection of array elements. It does not use JSON Path <xref target="RFC9535"/> as
that introduces a considerable complexity and brings in many features which
are not needed for the use case of selecting claims in a credential. There are
also security concerns with some implementations.</t>
</section>
</section>

<section anchor="claim-display-metadata"><name>Claim Display Metadata</name>
<t>The <tt>display</tt> property is an array containing display information for the
claim. The array MUST contain an object for each locale that is supported by
the type. The consuming application MUST use the language tag it considers most
appropriate for the user.</t>
<t>The objects in the array have the following properties:</t>

<ul spacing="compact">
<li><tt>locale</tt>: A language tag as defined in Section 2 of <xref target="RFC5646"/>. This property is REQUIRED.</li>
<li><tt>label</tt>: A human-readable label for the claim, intended for end users. This
property is REQUIRED.</li>
<li><tt>description</tt>: A human-readable description for the claim, intended for end
users. This property is OPTIONAL.</li>
</ul>
<t>See <xref target="example-type-metadata"/> in <xref target="ExampleTypeMetadata"/> for an example that includes claim display metadata.</t>
</section>

<section anchor="claim-mandatory-metadata"><name>Claim Mandatory Metadata</name>
<t>The <tt>mandatory</tt> property is a boolean indicating that, if set to <tt>true</tt>, the
claim MUST be included in the credential by the Issuer. If the value is <tt>false</tt>
or omitted, the claim is considered optional for the Issuer to include. A claim
that is <tt>mandatory</tt> can nonetheless be selectively disclosable, as described in
<xref target="claim-selective-disclosure-metadata"/>.</t>
</section>

<section anchor="claim-selective-disclosure-metadata"><name>Claim Selective Disclosure Metadata</name>
<t>The <tt>sd</tt> property is a string indicating whether the claim is selectively
disclosable. The following values are defined:</t>

<ul spacing="compact">
<li><tt>always</tt>: The Issuer MUST make the claim selectively disclosable.</li>
<li><tt>allowed</tt>: The Issuer MAY make the claim selectively disclosable.</li>
<li><tt>never</tt>: The Issuer MUST NOT make the claim selectively disclosable.</li>
</ul>
<t>If omitted, the default value is <tt>allowed</tt>. It is RECOMMENDED to use
either <tt>always</tt> or <tt>never</tt> to avoid ambiguity.</t>
<t>See <xref target="example-type-metadata"/> in <xref target="ExampleTypeMetadata"/> for an example that includes claim selective disclosure metadata.</t>
</section>

<section anchor="claim-metadata-extends"><name>Extending Claim Metadata</name>
<t>When an SD-JWT VC type extends another type as described in
<xref target="extending-type-metadata"/>, all claim metadata from the extended type MUST be
respected and are inherited by the child type unless it is overridden by the
child type as defined in the following.</t>
<t>If the child type defines claim metadata with the same <tt>path</tt> as in the extended
type, the child type's properties are combined with those of the extended type,
with the child type's properties taking precedence. Limitations to this rule are
defined for <tt>sd</tt> and <tt>mandatory</tt> in <xref target="claim-metadata-extends-limitations"/>.</t>
<t>The contents of properties are never merged (e.g., if the base <tt>display</tt>
property contains two locale objects and the extending type contains one, the
resulting <tt>display</tt> property will contain only the one object defined for the
child type).</t>
<t>Note: The rule for overriding claim metadata is different from the one for display
metadata described in <xref target="display-metadata-extends"/>. This ensures that Consumers
can rely on the claim metadata defined in the extended type while still allowing
display customization for the visual representation of the credential.</t>

<section anchor="claim-metadata-extends-limitations"><name>Limitations for <tt>sd</tt> and <tt>mandatory</tt></name>
<t>An extending type can specify an <tt>sd</tt> property for a claim that is marked as
<tt>allowed</tt> in the extended type (or where <tt>sd</tt> was omitted), changing it to either <tt>always</tt> or <tt>never</tt>.
However, it MUST NOT change a claim that is marked as <tt>always</tt> or <tt>never</tt> in the extended
type to a different value.</t>
<t>Similarly, an extending type can set the <tt>mandatory</tt> property of a claim that is
optional in the extended type to <tt>true</tt>, but it MUST NOT change a claim that is
<tt>mandatory</tt> in the extended type to <tt>false</tt>.</t>
</section>

<section anchor="example-for-extending-type-metadata"><name>Example for Extending Type Metadata</name>
<t>The base type metadata document for this example is shown in <xref target="example-base-type-metadata"/>.</t>
<figure anchor="example-base-type-metadata"><name>Example Base Type Metadata Document </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://example.com/base-type-metadata",
  "claims": [
    {
      "path": ["name"],
      "display": [{"label": "Full Name", "locale": "en"}]
    },
    {
      "path": ["address", "city"],
      "display": [{"label": "City", "locale": "en"}]
    }
  ]
}
]]>
</sourcecode>
</figure>
<t>The extending type metadata document is shown in <xref target="example-child-type-metadata"/>.</t>
<figure anchor="example-child-type-metadata"><name>Example Child Type Metadata Document </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://example.com/custom-type-metadata",
  "extends": "https://example.com/base-type-metadata",
  "claims": [
    {
      "path": ["address", "city"],
      "display": [{"label": "Town", "locale": "en"}]
    },
    {
      "path": ["nationalities"],
      "display": [{"label": "Nationalities", "locale": "en"}]
    }
  ]
}
]]>
</sourcecode>
</figure>
<t>In this example, the child type inherits the <tt>name</tt> claim metadata from the base type, but overrides the <tt>address.city</tt> claim metadata with its own definition. It also adds a new claim metadata for <tt>nationalities</tt>. The final effective claim metadata for the child type is shown here in <xref target="effective-claim-metadata-child-type"/>:</t>
<figure anchor="effective-claim-metadata-child-type"><name>Effective Claim Metadata for Child Type </name>
<sourcecode type="json"><![CDATA[{
  "claims": [
    {
      "path": ["name"],
      "display": [{"label": "Full Name", "locale": "en"}]
    },
    {
      "path": ["address", "city"],
      "display": [{"label": "Town", "locale": "en"}]
    },
    {
      "path": ["nationalities"],
      "display": [{"label": "Nationalities", "locale": "en"}]
    }
  ]
}
]]>
</sourcecode>
</figure>
</section>
</section>
</section>

<section anchor="security-considerations"><name>Security Considerations</name>
<t>The Security Considerations in the SD-JWT specification
<xref target="RFC9901"/> apply to this specification.
Additionally, the following security considerations need to be taken into
account when using SD-JWT VCs:</t>

<section anchor="server-side-request-forgery"><name>Server-Side Request Forgery</name>
<t>The JWT VC Issuer Metadata configuration is retrieved from the JWT VC Issuer by the
Holder or Verifier. Similar to other metadata endpoints, the URL for the
retrieval MUST be considered an untrusted value and could be a vector for
Server-Side Request Forgery (SSRF) attacks.</t>
<t>Before making a request to the JWT VC Issuer Metadata endpoint, the Holder or
Verifier MUST validate the URL to ensure that it is a valid HTTPS URL and that
it does not point to internal resources. This requires, in particular, ensuring
that the host part of the URL does not address an internal service (by IP
address or an internal host name) and that, if an external DNS name is used, the
resolved DNS name does not point to an internal IPv4 or IPv6 address.</t>
<t>When retrieving the metadata, the Holder or Verifier MUST ensure that the
request is made in a time-bound and size-bound manner to prevent denial of
service attacks. The Holder or Verifier MUST also ensure that the response is a
valid JWT VC Issuer Metadata configuration document before processing it.</t>
<t>Additional considerations can be found in <xref target="OWASP_SSRF"/>.</t>
</section>

<section anchor="ecosystem-verification-rules"><name>Ecosystem-specific Public Key Verification Methods</name>
<t>When defining ecosystem-specific rules for resolution and verification of the public key,
as outlined in <xref target="ism"/>, it is critical that those rules maintain the integrity of the
relationship between the <tt>iss</tt> value of the SD-JWT, if present, and the public keys of the Issuer.</t>
<t>A Verifier MUST ensure that for any given <tt>iss</tt> value, an attacker cannot influence
the type of verification process used. Otherwise, an attacker could attempt to make
the Verifier use a verification process not intended by the Issuer, allowing the
attacker to potentially manipulate the verification result to their advantage.</t>
</section>

<section anchor="circular-extends"><name>Circular "extends" Dependencies of Types</name>
<t>A type MUST NOT extend another type that extends (either directly or with steps
in-between) the first type. This would result in a circular dependency that
could lead to infinite recursion when retrieving and processing the metadata.</t>
<t>Consumers MUST detect such circular dependencies and reject the
credential.</t>
</section>

<section anchor="robust-retrieval"><name>Robust Retrieval of Type Metadata</name>
<t>In <xref target="retrieving-type-metadata"/>, various methods for distributing and retrieving
metadata are described. Methods relying on a network connection may fail due to
network issues or unavailability of a network connection due to offline usage of
credentials, temporary server outages, or denial-of-service attacks on the
metadata server.</t>
<t>Consumers SHOULD therefore implement a local cache as described in
<xref target="retrieval-from-local-cache"/> if possible. Such a cache MAY be populated with metadata before
the credential is used.</t>
<t>These measures allow the Consumers to continue to function even if
the metadata server is temporarily unavailable and avoid privacy issues as
described in <xref target="privacy-preserving-retrieval-of-type-metadata"/>.</t>
</section>

<section anchor="risks-textual-information"><name>Risks Associated with Textual Information</name>
<t>Some claims in the SD-JWT VC and properties in the Type Metadata, e.g., <tt>display</tt>, allows issuers and providers of metadata to
specify human-readable information. These can contain arbitrary textual information that
may be displayed to end users and developers. As such, any consuming application MUST ensure that maliciously
crafted information cannot be used to compromise the security of the application
or the privacy of the user. To this end, the following considerations apply:</t>

<ul spacing="compact">
<li>The consuming application MUST ensure that the text is properly escaped before
displaying it to the user or transferring it into other contexts. For example,
if the data is displayed in an HTML document, the text MUST be properly
escaped to prevent Cross-Site Scripting (XSS) attacks.</li>
<li>The consuming application MUST ensure that the display of the user interface
elements cannot be distorted by overly long text or special characters.</li>
</ul>
</section>

<section anchor="type-extension-issuer-authorization"><name>Credential Type Extension and Issuer Authorization</name>
<t>When processing credentials, it is important to recognize that the ability to extend or reference
an existing credential type (e.g., a well-known identifier such as <tt>urn:ec.eu.x.y.z</tt>) does not
confer any implicit authorization to issue credentials of that type or its extensions. In particular:</t>

<ul spacing="compact">
<li><strong>Issuer Authorization</strong>: Verifiers and Holders MUST NOT assume that any issuer who issues a credential extending a known type is authorized to do so. The mere presence of an extension or reference to a recognized type (e.g., a national type <tt>urn:de.bla</tt> extending a European PID type) does not validate the issuer's authority.</li>
<li><strong>Rogue Issuers</strong>: Attackers may issue credentials with types that extend or mimic legitimate types (e.g., <tt>urn:attacker</tt> extending <tt>urn:ec.eu.x.y.z</tt>). Such credentials MUST NOT be accepted solely based on their type hierarchy or extension relationship.</li>
<li><strong>Processing Rules</strong>: Implementations MUST verify the issuer's authorization independently of the credential type or its extensions. This typically involves checking the issuer's identity, trust status, and any relevant accreditation or registry before accepting a credential.</li>
</ul>
<t>Verifiers and Holders MUST implement explicit checks for issuer authorization and MUST NOT rely on type extension as a proxy for trust or legitimacy. Credential acceptance decisions MUST be based on both the credential type and the verified authority of the issuer.</t>
</section>

<section anchor="trust-in-type-metadata"><name>Trust in Type Metadata</name>
<t>Type Metadata associated with an SD-JWT VC, e.g., rendering metadata, is asserted by the Publisher of the Type Metadata and trust in this metadata depends on the trust relationship between its Publisher and the Consumer. A Consumer MUST NOT assume that Type Metadata is accurate or meaningful unless the Publisher is recognized as authoritative for the type in question.</t>
<t>Ecosystems SHOULD define governance or accreditation mechanisms that specify which Publishers are authorized to provide Type Metadata for specific verifiable digital credential types and under what conditions such metadata can be relied upon.</t>
<t>Consumers SHOULD treat with reduced trust any Type Metadata if the Publisher is not accredited or otherwise trusted within the applicable ecosystem.</t>
</section>

<section anchor="use-of-data-uris-for-claim-types"><name>Use of Data URIs for Claim Types</name>
<t>The use of data URIs allows embedding of data directly within credential payloads. Implementations SHOULD treat data URIs as untrusted input at the processing and rendering layer and apply appropriate validation and handling. Failure to properly escape, sanitize or constrain their use can lead to security issues such as unintended code execution, resource exhaustion, or misuse of embedded content. Implementations SHOULD restrict the set of accepted media types, enforce reasonable size and content limits, and avoid dereferencing or interpreting data URIs in ways that could execute or render active content, consistent with their overall security model.</t>
</section>
</section>

<section anchor="privacy-considerations"><name>Privacy Considerations</name>
<t>The Privacy Considerations in the SD-JWT specification
<xref target="RFC9901"/> apply to this specification.
Additionally, the following privacy considerations need to be taken into
account when using SD-JWT VCs.</t>

<section anchor="unlinkability"><name>Unlinkability</name>
<t>The Privacy Considerations in Section 10.1 of <xref target="RFC9901"/> apply, especially to the <tt>cnf</tt> claim.</t>
</section>

<section anchor="verifiable-digital-credential-type-identifier"><name>Verifiable Digital Credential Type Identifier</name>
<t>Issuers and Holders have to be aware that while this specification supports selective
disclosure of claims of a given SD-JWT VC, the <tt>vct</tt> claim is not selectively disclosable.
In certain situations this could lead to unwanted leakage of additional context information.</t>
<t>In general, Issuers are advised to choose <tt>vct</tt> values following data minimization principles.
For example, government Issuers issuing an SD-JWT VC to their citizens to enable them to prove their age,
might consider using a <tt>vct</tt> value that does not allow third-parties to infer additional personal information
about the Holder, e.g., country of residency or citizenship.</t>
<t>Additionally, Holders have to be informed that, besides the actual requested claims, the
<tt>vct</tt> information is shared with the Verifier.</t>
</section>

<section anchor="issuer-phone-home"><name>Issuer Phone-Home</name>
<t>A malicious Issuer can choose the Issuer identifier of the SD-JWT VC to enable tracking
the usage behavior of the Holder if the Issuer identifier is Holder-specific and if the
resolution of the key material to verify the Issuer-signed JWT requires the Verifier
to phone home to the Issuer.</t>
<t>For example, a malicious Issuer could generate a unique value for the Issuer identifier
per Holder, e.g., <tt>https://example.com/issuer/holder-1234</tt> and host the JWT VC Issuer Metadata.
The Verifier would create an HTTP GET request to the Holder-specific well-known URI
when the SD-JWT VC is verified. This would allow the malicious Issuer to keep track where
and how often the SD-JWT VC was used.</t>
<t>Verifiers are advised to establish trust in an SD-JWT VC by pinning specific Issuer identifiers
and should monitor suspicious behavior such as frequent rotation of those identifiers.
If such behavior is detected, Verifiers are advised to reject SD-JWT VCs issued by those
Issuers and not to retrieve associated metadata.
Holders are similarly advised to exercise caution with SD-JWT VCs if they contain unexpected or easily correlatable information
in the Issuer identifier.</t>
<t>Another related concern arises from the use of confirmation methods in the cnf claim that involve retrieving key material from a remote source, especially if that source is controlled by the issuer. This includes, but is not limited to, the use of the x5u parameter in JWKs (<xref target="RFC7517" sectionFormat="of" section="4.6"/>), the jku parameter (<xref target="RFC7800" sectionFormat="of" section="3.5"/>), and cases where a URL is used in the kid parameter (<xref target="RFC7800" sectionFormat="of" section="3.4"/>). Future confirmation methods may also introduce remote retrieval mechanisms. Issuers are advised not to issue SD-JWT VCs with such cnf methods, and Verifiers and Holders are advised not to follow or resolve remote references for key material in the cnf claim. Only confirmation methods that do not require remote retrieval of key material SHOULD be supported.</t>
</section>

<section anchor="privacy-preserving-retrieval-of-type-metadata"><name>Privacy-Preserving Retrieval of Type Metadata</name>
<t>In <xref target="retrieving-type-metadata"/>, various methods for distributing and retrieving
Type Metadata are described. For methods which rely on a network connection to a
URL (e.g., provided by an Issuer), the Issuer and other third parties may be able
to track the usage of a credential by observing requests to the Type Metadata URL.</t>
<t>Consumers SHOULD prefer methods for retrieving Type Metadata that do not
leak information about the usage of a credential to third parties. The
recommendations in <xref target="robust-retrieval"/> apply.</t>
</section>
</section>

</middle>

<back>
<references><name>References</name>
<references><name>Normative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-status-list.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5646.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5785.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7517.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7800.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9901.xml"/>
<reference anchor="W3C.CSS-COLOR" target="https://www.w3.org/TR/css-color-3">
  <front>
    <title>CSS Color Module Level 3</title>
    <author fullname="Tantek Çelik" initials="T." surname="Çelik">
      <organization>
        
      </organization>
    </author>
    <author fullname="Chris Lilley" initials="C." surname="Lilley">
      <organization>
        
      </organization>
    </author>
    <author fullname="L. David Baron" initials="L. D." surname="Baron">
      <organization>
        
      </organization>
    </author>
    <date year="2022" month="January" day="18"/>
  </front>
</reference>
<reference anchor="W3C.SRI" target="https://www.w3.org/TR/2016/REC-SRI-20160623/">
  <front>
    <title>Subresource Integrity</title>
    <author fullname="Devdatta Akhawe" initials="D." surname="Akhawe">
      <organization>
                
            </organization>
    </author>
    <author fullname="Frederik Braun" initials="F." surname="Braun">
      <organization>
                
            </organization>
    </author>
    <author fullname="François Marier" initials="F." surname="Marier">
      <organization>
                
            </organization>
    </author>
    <author fullname="Joel Weinberger" initials="J." surname="Weinberger">
      <organization>
                
            </organization>
    </author>
    <date year="2016" month="June" day="23"/>
  </front>
</reference>
</references>
<references><name>Informative References</name>
<reference anchor="EUDIW.ARF" target="https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework/releases">
  <front>
    <title>The European Digital Identity Wallet Architecture and Reference Framework</title>
    <author fullname="European Commission"/>
  </front>
</reference>
<reference anchor="IANA.well-known" target="https://www.iana.org/assignments/well-known-uris">
  <front>
    <title>Well-Known URIs</title>
    <author>
      <organization>IANA</organization>
    </author>
    <date/>
  </front>
</reference>
<reference anchor="NIST-BLOG.VDCE" target="https://www.nist.gov/blogs/cybersecurity-insights/digital-identities-getting-know-verifiable-digital-credential-ecosystem">
  <front>
    <title>Digital Identities: Getting to Know the Verifiable Digital Credential Ecosystem</title>
    <author fullname="Bill Fisher"/>
    <author fullname="Ryan Galluzzo"/>
    <date year="2024" month="November" day="13"/>
  </front>
</reference>
<reference anchor="OWASP_SSRF" target="https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html/">
  <front>
    <title>Server Side Request Forgery Prevention Cheat Sheet</title>
    <author fullname="OWASP"/>
  </front>
</reference>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2397.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6901.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9535.xml"/>
</references>
</references>

<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="json-web-token-claims-registration"><name>JSON Web Token Claims Registration</name>

<ul spacing="compact">
<li>Claim Name: "vct"</li>
<li>Claim Description: Verifiable digital Credential Type identifier</li>
<li>Change Controller: IETF</li>
<li>Specification Document(s): [[ <xref target="type-claim"/> of this specification ]]
<br/>
</li>
<li>Claim Name: "vct#integrity"</li>
<li>Claim Description: SD-JWT VC vct claim "integrity metadata" value</li>
<li>Change Controller: IETF</li>
<li>Specification Document(s): [[ <xref target="document-integrity"/> of this specification ]]</li>
</ul>
</section>

<section anchor="media-types-registry"><name>Media Types Registry</name>

<section anchor="media-type-1"><name>application/dc+sd-jwt</name>
<t>The Internet media type for an SD-JWT VC is <tt>application/dc+sd-jwt</tt>.</t>

<ul spacing="compact">
<li>Type name: <tt>application</tt></li>
<li>Subtype name: <tt>dc+sd-jwt</tt></li>
<li>Required parameters: n/a</li>
<li>Optional parameters: n/a</li>
<li>Encoding considerations: 8-bit code points; SD-JWT VC values are encoded as a series of base64url-encoded values (some of which may be the empty string) separated by period ('.') and tilde ('~') characters.</li>
<li>Security considerations: See Security Considerations in <xref target="security-considerations"/>.</li>
<li>Interoperability considerations: n/a</li>
<li>Published specification: [[ this specification ]]</li>
<li>Applications that use this media type: Applications that issue, present, and verify SD-JWT-based Verifiable Digital Credentials.</li>
<li><t>Additional information:</t>

<ul spacing="compact">
<li>Magic number(s): n/a</li>
<li>File extension(s): n/a</li>
<li>Macintosh file type code(s): n/a</li>
</ul></li>
<li>Person &amp; email address to contact for further information: Oliver Terbu <eref target="mailto:oliver.terbu@mattr.global">oliver.terbu@mattr.global</eref></li>
<li>Intended usage: COMMON</li>
<li>Restrictions on usage: none</li>
<li>Author: Oliver Terbu <eref target="mailto:oliver.terbu@mattr.global">oliver.terbu@mattr.global</eref></li>
<li>Change controller: IETF</li>
</ul>
</section>
</section>

<section anchor="well-known-uri-registry"><name>Well-Known URI Registry</name>
<t>This specification requests the well-known URI defined in <xref target="jwt-vc-issuer-metadata"/>
in the IANA "Well-Known URIs" registry <xref target="IANA.well-known"/> established
by <xref target="RFC5785"/>.</t>

<section anchor="registry-contents"><name>Registry Contents</name>

<ul spacing="compact">
<li>URI suffix: jwt-vc-issuer</li>
<li>Change controller: IETF</li>
<li>Specification document: [[ <xref target="jwt-vc-issuer-metadata"/> of this specification ]]</li>
<li>Related information: (none)</li>
<li>Status: permanent</li>
</ul>
</section>
</section>
</section>

<section anchor="examples"><name>Examples</name>
<t>Important: The following examples are not normative and provided for
illustrative purposes only. In particular, neither the structure of the claims
nor the selection of selectively disclosable claims are normative.</t>
<t>Line breaks have been added for readability.</t>

<section anchor="ExamplePID"><name>Example Person Identification Data (PID) Credential</name>
<t>This example shows how the artifacts defined in this specification could be used
to represent the identity information of a person from a fictional European
country. It leans on the concept of Person Identification Data (PID) as defined
in the "PID Rulebook" in <xref target="EUDIW.ARF"/>, but does not intend to fully comply with
that specification.</t>
<t>Key Binding is applied
using the Holder's public key passed in a <tt>cnf</tt> claim in the SD-JWT.</t>
<t>The information in <xref target="citizen-info"/> about the citizen comprises the input data used by the Issuer:</t>
<figure anchor="citizen-info"><name>Citizen's Information </name>
<sourcecode type="json"><![CDATA[{
  "iss": "https://pid-issuer.aendgard.example",
  "vct": "urn:eudi:pid:aendgard:1",
  "given_name": "Astrid",
  "family_name": "Holmgren",
  "birthdate": "1978-04-10",
  "address": {
    "street_address": "Sjøgata 12",
    "locality": "Viken",
    "postal_code": "12001",
    "country": "Kingdom of Ændgard"
  },
  "nationalities": [
    "Ændgard"
  ],
  "sex": 2,
  "birth_family_name": "Jensen",
  "place_of_birth": {
    "locality": "Ændholm",
    "country": "Kingdom of Ændgard"
  },
  "age_equal_or_over": {
    "12": true,
    "14": true,
    "16": true,
    "18": true,
    "21": true,
    "65": false
  },
  "age_in_years": 47,
  "age_birth_year": 1978,
  "portrait": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAA
    WAQMAAACSfKx9AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQA
    AeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZQTFRFAAAA///
    /pdmf3QAAAFFJREFUCNdNylENgDAQA9ASBJyEWcDBLE0CTpDCpCDhPvexrBwlC/y
    8NG3RMunw9Ai5p6/pr/ZzlcAi4WiRN1nlXAesOgheBTSO8JDnND6Z3W+d90fCnTj
    jKQAAAABJRU5ErkJggg==",
  "issuance_date": "2024-01-15",
  "expiry_date": "2034-01-15",
  "issuing_authority": "Kingdom of Ændgard, Ministry of Interior",
  "issuing_country": "ÆG"
}
]]>
</sourcecode>
</figure>
<t>The following in <xref target="issued-sd-jwt3"/> is the issued SD-JWT:</t>
<figure anchor="issued-sd-jwt3"><name>Issued SD-JWT </name>
<sourcecode type="txt"><![CDATA[eyJhbGciOiAiRVMyNTYiLCAidHlwIjogImRjK3NkLWp3dCJ9.eyJfc2QiOiBbIjJyMDA
5ZHp2SHVWcldyUlhUNWtKTW1IbnFFSEhuV2UwTUxWWnc4UEFUQjgiLCAiM05kREpZUnd
CcWFFSXlYQ0hjbjRhNVlLSmFnUGdJUDBXa2c5QW9yZ0FLZyIsICI1Zm42SWlYalVQbUd
RNG1ZSHhEZHQ2RWp2QlE3Z1J2R2NkRW5TQ0VOOEVrIiwgIjZCek1CazdGR2l2b2dibGR
PNzVmM05Md2pGbGlDcWI3bm4xR2hnQ29rclEiLCAiOTBDVDhBYUJQYm41WDhuUlhrZXN
qdTFpMEJxaFdxWjN3cUQ0akYtcURHayIsICI5bkV3VXJkZVo2a2NSYkVqNTJRSDNuT1I
tb2llMF9wOXRNTklBRXVGdk1VIiwgIkhUaDZacjJKOGFpcXBhOTYzY0xrdUtlUURmOU8
wMEZ6T0hoeWpHcFZmVGciLCAiSkNwMksyTmhILUxFNUwwajdNRTBMTngtVC1weDlRRnR
hbVNzeG1DVUN4VSIsICJMb01HcmhsRG1fYlVXVVgxZ2RoUnhUc3k0ZDR6eXdHemxTVm9
jUlNZMDFNIiwgIlVnVWpxNXdoelFld081OWZWTmowZjBtcXlWOFlQWFU1NHNwNGtMZWN
3UWsiLCAiWTBILUUzaHpLRVVuQXlyaV94OXRUOWstajRpNjVhbzloa2VFSE5leG9zSSI
sICJlekNBbWFUd0kyblBqXzFJaUIzS1pmaUVPUkxlUndoWnNNTURNWklKOGtBIiwgImk
wSF8tV0FId2ZFanQ4dHFRSDc0dU9DV3ZxdVkzRnd1WC1reDRlMlJKSDgiLCAicjFHckg
0NnlEVjYyc2V6SW1FanhhNmNKU1pNVDIxMmpyT1NIaWVjOXl0TSIsICJyVmozUkxzN0s
4emROeTd6WHoxQ3IzOVk2cm9nOHVsTm96azRGN05DdUMwIiwgInQ1a3AwSGZ4TVMxZUh
OQ0dSenJLOUdpNW9UWnJlZzVVZTlsTFFJdUx2QjQiXSwgImlzcyI6ICJodHRwczovL3B
pZC1pc3N1ZXIuYWVuZGdhcmQuZXhhbXBsZSIsICJpYXQiOiAxNjgzMDAwMDAwLCAiZXh
wIjogMTg4MzAwMDAwMCwgInZjdCI6ICJ1cm46ZXVkaTpwaWQ6YWVuZGdhcmQ6MSIsICJ
fc2RfYWxnIjogInNoYS0yNTYiLCAiY25mIjogeyJqd2siOiB7Imt0eSI6ICJFQyIsICJ
jcnYiOiAiUC0yNTYiLCAieCI6ICJUQ0FFUjE5WnZ1M09IRjRqNFc0dmZTVm9ISVAxSUx
pbERsczd2Q2VHZW1jIiwgInkiOiAiWnhqaVdXYlpNUUdIVldLVlE0aGJTSWlyc1ZmdWV
jQ0U2dDRqVDlGMkhaUSJ9fX0.4aA3nXGQHcjwl7EZb39iKAuW4mKfzLVnwHTvikoIzRM
iPv0NppSHXLBTHZcfQy5iTl8MyXI1whxh6kk3CQOCMQ~WyIyR0xDNDJzS1F2ZUNmR2Zy
eU5STjl3IiwgImdpdmVuX25hbWUiLCAiQXN0cmlkIl0~WyJlbHVWNU9nM2dTTklJOEVZ
bnN4QV9BIiwgImZhbWlseV9uYW1lIiwgIkhvbG1ncmVuIl0~WyI2SWo3dE0tYTVpVlBH
Ym9TNXRtdlZBIiwgImJpcnRoZGF0ZSIsICIxOTc4LTA0LTEwIl0~WyJlSThaV205UW5L
UHBOUGVOZW5IZGhRIiwgInN0cmVldF9hZGRyZXNzIiwgIlNqXHUwMGY4Z2F0YSAxMiJd
~WyJRZ19PNjR6cUF4ZTQxMmExMDhpcm9BIiwgImxvY2FsaXR5IiwgIlZpa2VuIl0~WyJ
BSngtMDk1VlBycFR0TjRRTU9xUk9BIiwgInBvc3RhbF9jb2RlIiwgIjEyMDAxIl0~WyJ
QYzMzSk0yTGNoY1VfbEhnZ3ZfdWZRIiwgImNvdW50cnkiLCAiS2luZ2RvbSBvZiBcdTA
wYzZuZGdhcmQiXQ~WyJHMDJOU3JRZmpGWFE3SW8wOXN5YWpBIiwgImFkZHJlc3MiLCB7
Il9zZCI6IFsiNjBCM0N3cTA0aGxQQndzdnNmdks5SlV4dnVMRlViSlFmZ1BCYk9fSDly
TSIsICI4eWpQUjNyOGRPNUhXTG55MWdCZU1KVFBSZ2tCY2h1cTQzcUg4V2xfZjFjIiwg
Ik5hcmQ3NHcyTl85YW5WRW1TbGVjRUpscXgzanhiY3F4dlZ6QnNCRFgweHMiLCAiVS16
RDFESS03WjB6WW94WHF5NUhTVE5VZWdhaFJDSHlkQWVzS09fc0VQYyJdfV0~WyJsa2x4
RjVqTVlsR1RQVW92TU5JdkNBIiwgIm5hdGlvbmFsaXRpZXMiLCBbIlx1MDBjNm5kZ2Fy
ZCJdXQ~WyJuUHVvUW5rUkZxM0JJZUFtN0FuWEZBIiwgInNleCIsIDJd~WyI1YlBzMUlx
dVpOYTBoa2FGenp6Wk53IiwgImJpcnRoX2ZhbWlseV9uYW1lIiwgIkplbnNlbiJd~WyI
1YTJXMF9OcmxFWnpmcW1rXzdQcS13IiwgImxvY2FsaXR5IiwgIlx1MDBjNm5kaG9sbSJ
d~WyJ5MXNWVTV3ZGZKYWhWZGd3UGdTN1JRIiwgImNvdW50cnkiLCAiS2luZ2RvbSBvZi
BcdTAwYzZuZGdhcmQiXQ~WyJIYlE0WDhzclZXM1FEeG5JSmRxeU9BIiwgInBsYWNlX29
mX2JpcnRoIiwgeyJfc2QiOiBbIkpET1lLUzB3MENvZm8tSGpaR3ZyZDdIaXJwU2ZpWUR
BTFU2cjhUX0xFMWciLCAib1RacjlFbXk5eG1ycGNmUTVaU1U4c3Z4ZE1ZOHk0WElGXzV
qOVAxdTF5QSJdfV0~WyJDOUdTb3VqdmlKcXVFZ1lmb2pDYjFBIiwgIjEyIiwgdHJ1ZV0
~WyJreDVrRjE3Vi14MEptd1V4OXZndnR3IiwgIjE0IiwgdHJ1ZV0~WyJIM28xdXN3UDc
2MEZpMnllR2RWQ0VRIiwgIjE2IiwgdHJ1ZV0~WyJPQktsVFZsdkxnLUFkd3FZR2JQOFp
BIiwgIjE4IiwgdHJ1ZV0~WyJNMEpiNTd0NDF1YnJrU3V5ckRUM3hBIiwgIjIxIiwgdHJ
1ZV0~WyJEc210S05ncFY0ZEFIcGpyY2Fvc0F3IiwgIjY1IiwgZmFsc2Vd~WyJlSzVvNX
BIZmd1cFBwbHRqMXFoQUp3IiwgImFnZV9lcXVhbF9vcl9vdmVyIiwgeyJfc2QiOiBbIj
F0RWl5elBSWU9Lc2Y3U3NZR01nUFpLc09UMWxRWlJ4SFhBMHI1X0J3a2siLCAiQ1ZLbm
x5NVA5MHlKczNFd3R4UWlPdFVjemFYQ1lOQTRJY3pSYW9ock1EZyIsICJhNDQtZzJHcj
hfM0FtSncyWFo4a0kxeTBRel96ZTlpT2NXMlczUkxwWEdnIiwgImdrdnkwRnV2QkJ2aj
BoczJaTnd4Y3FPbGY4bXUyLWtDRTctTmIyUXh1QlUiLCAiaHJZNEhubUY1YjVKd0M5ZV
R6YUZDVWNlSVFBYUlkaHJxVVhRTkNXYmZaSSIsICJ5NlNGclZGUnlxNTBJYlJKdmlUWn
FxalFXejB0TGl1Q21NZU8wS3FhekdJIl19XQ~WyJqN0FEZGIwVVZiMExpMGNpUGNQMGV
3IiwgImFnZV9pbl95ZWFycyIsIDQ3XQ~WyJXcHhKckZ1WDh1U2kycDRodDA5anZ3Iiwg
ImFnZV9iaXJ0aF95ZWFyIiwgMTk3OF0~WyJhdFNtRkFDWU1iSlZLRDA1bzNKZ3RRIiwg
InBvcnRyYWl0IiwgImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFO
U1VoRVVnQUFBQ1FBQUFBV0FRTUFBQUNTZkt4OUFBQUFBWE5TUjBJQjJja3Nmd0FBQUFS
blFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFI
VXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBQVpRVEZSRkFBQUEvLy8vcGRtZjNRQUFB
RkZKUkVGVUNOZE55bEVOZ0RBUUE5QVNCSnlFV2NEQkxFMENUcERDcENEaFB2ZXhyQnds
Qy95OE5HM1JNdW53OUFpNXA2L3ByL1p6bGNBaTRXaVJOMW5sWEFlc09naGVCVFNPOEpE
bk5ENlozVytkOTBmQ25UampLUUFBQUFCSlJVNUVya0pnZ2c9PSJd~WyI0S3lSMzJvSVp
0LXprV3ZGcWJVTEtnIiwgImlzc3VhbmNlX2RhdGUiLCAiMjAyNC0wMS0xNSJd~WyJjaE
JDc3loeWgtSjg2SS1hd1FEaUNRIiwgImV4cGlyeV9kYXRlIiwgIjIwMzQtMDEtMTUiXQ
~WyJmbE5QMW5jTXo5TGctYzlxTUl6XzlnIiwgImlzc3VpbmdfYXV0aG9yaXR5IiwgIkt
pbmdkb20gb2YgXHUwMGM2bmRnYXJkLCBNaW5pc3RyeSBvZiBJbnRlcmlvciJd~WyJvdm
9WMXJraF9BTm04NjFxVUFBMkF3IiwgImlzc3VpbmdfY291bnRyeSIsICJcdTAwYzZHIl
0~
]]>
</sourcecode>
</figure>
<t><xref target="sd-jwt-payload3"/> is the payload of that SD-JWT:</t>
<figure anchor="sd-jwt-payload3"><name>SD-JWT Payload </name>
<sourcecode type="json"><![CDATA[{
  "_sd": [
    "2r009dzvHuVrWrRXT5kJMmHnqEHHnWe0MLVZw8PATB8",
    "3NdDJYRwBqaEIyXCHcn4a5YKJagPgIP0Wkg9AorgAKg",
    "5fn6IiXjUPmGQ4mYHxDdt6EjvBQ7gRvGcdEnSCEN8Ek",
    "6BzMBk7FGivogbldO75f3NLwjFliCqb7nn1GhgCokrQ",
    "90CT8AaBPbn5X8nRXkesju1i0BqhWqZ3wqD4jF-qDGk",
    "9nEwUrdeZ6kcRbEj52QH3nOR-oie0_p9tMNIAEuFvMU",
    "HTh6Zr2J8aiqpa963cLkuKeQDf9O00FzOHhyjGpVfTg",
    "JCp2K2NhH-LE5L0j7ME0LNx-T-px9QFtamSsxmCUCxU",
    "LoMGrhlDm_bUWUX1gdhRxTsy4d4zywGzlSVocRSY01M",
    "UgUjq5whzQewO59fVNj0f0mqyV8YPXU54sp4kLecwQk",
    "Y0H-E3hzKEUnAyri_x9tT9k-j4i65ao9hkeEHNexosI",
    "ezCAmaTwI2nPj_1IiB3KZfiEORLeRwhZsMMDMZIJ8kA",
    "i0H_-WAHwfEjt8tqQH74uOCWvquY3FwuX-kx4e2RJH8",
    "r1GrH46yDV62sezImEjxa6cJSZMT212jrOSHiec9ytM",
    "rVj3RLs7K8zdNy7zXz1Cr39Y6rog8ulNozk4F7NCuC0",
    "t5kp0HfxMS1eHNCGRzrK9Gi5oTZreg5Ue9lLQIuLvB4"
  ],
  "iss": "https://pid-issuer.aendgard.example",
  "iat": 1683000000,
  "exp": 1883000000,
  "vct": "urn:eudi:pid:aendgard:1",
  "_sd_alg": "sha-256",
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
      "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
    }
  }
}
]]>
</sourcecode>
</figure>
<t>The digests in the SD-JWT payload reference the following Disclosures:</t>
<t><strong>Claim <tt>given_name</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>3NdDJYRwBqaEIyXCHcn4a5YKJagPgIP0Wkg9AorgAKg</tt></li>
<li>Disclosure:<br/>
<tt>WyIyR0xDNDJzS1F2ZUNmR2ZyeU5STjl3IiwgImdpdmVuX25hbWUiLCAiQXN0</tt><br/>
<tt>cmlkIl0</tt></li>
<li>Contents:
<tt>["2GLC42sKQveCfGfryNRN9w", "given_name", "Astrid"]</tt></li>
</ul>
<t><strong>Claim <tt>family_name</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>JCp2K2NhH-LE5L0j7ME0LNx-T-px9QFtamSsxmCUCxU</tt></li>
<li>Disclosure:<br/>
<tt>WyJlbHVWNU9nM2dTTklJOEVZbnN4QV9BIiwgImZhbWlseV9uYW1lIiwgIkhv</tt><br/>
<tt>bG1ncmVuIl0</tt></li>
<li>Contents:
<tt>["eluV5Og3gSNII8EYnsxA_A", "family_name", "Holmgren"]</tt></li>
</ul>
<t><strong>Claim <tt>birthdate</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>5fn6IiXjUPmGQ4mYHxDdt6EjvBQ7gRvGcdEnSCEN8Ek</tt></li>
<li>Disclosure:<br/>
<tt>WyI2SWo3dE0tYTVpVlBHYm9TNXRtdlZBIiwgImJpcnRoZGF0ZSIsICIxOTc4</tt><br/>
<tt>LTA0LTEwIl0</tt></li>
<li>Contents:
<tt>["6Ij7tM-a5iVPGboS5tmvVA", "birthdate", "1978-04-10"]</tt></li>
</ul>
<t><strong>Claim <tt>street_address</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>8yjPR3r8dO5HWLny1gBeMJTPRgkBchuq43qH8Wl_f1c</tt></li>
<li>Disclosure:<br/>
<tt>WyJlSThaV205UW5LUHBOUGVOZW5IZGhRIiwgInN0cmVldF9hZGRyZXNzIiwg</tt><br/>
<tt>IlNqXHUwMGY4Z2F0YSAxMiJd</tt></li>
<li>Contents:
<tt>["eI8ZWm9QnKPpNPeNenHdhQ", "street_address", "Sj\u00f8gata</tt><br/>
<tt>12"]</tt></li>
</ul>
<t><strong>Claim <tt>locality</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>Nard74w2N_9anVEmSlecEJlqx3jxbcqxvVzBsBDX0xs</tt></li>
<li>Disclosure:<br/>
<tt>WyJRZ19PNjR6cUF4ZTQxMmExMDhpcm9BIiwgImxvY2FsaXR5IiwgIlZpa2Vu</tt><br/>
<tt>Il0</tt></li>
<li>Contents:
<tt>["Qg_O64zqAxe412a108iroA", "locality", "Viken"]</tt></li>
</ul>
<t><strong>Claim <tt>postal_code</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>60B3Cwq04hlPBwsvsfvK9JUxvuLFUbJQfgPBbO_H9rM</tt></li>
<li>Disclosure:<br/>
<tt>WyJBSngtMDk1VlBycFR0TjRRTU9xUk9BIiwgInBvc3RhbF9jb2RlIiwgIjEy</tt><br/>
<tt>MDAxIl0</tt></li>
<li>Contents:
<tt>["AJx-095VPrpTtN4QMOqROA", "postal_code", "12001"]</tt></li>
</ul>
<t><strong>Claim <tt>country</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>U-zD1DI-7Z0zYoxXqy5HSTNUegahRCHydAesKO_sEPc</tt></li>
<li>Disclosure:<br/>
<tt>WyJQYzMzSk0yTGNoY1VfbEhnZ3ZfdWZRIiwgImNvdW50cnkiLCAiS2luZ2Rv</tt><br/>
<tt>bSBvZiBcdTAwYzZuZGdhcmQiXQ</tt></li>
<li>Contents:
<tt>["Pc33JM2LchcU_lHggv_ufQ", "country", "Kingdom of</tt><br/>
<tt>\u00c6ndgard"]</tt></li>
</ul>
<t><strong>Claim <tt>address</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>i0H_-WAHwfEjt8tqQH74uOCWvquY3FwuX-kx4e2RJH8</tt></li>
<li>Disclosure:<br/>
<tt>WyJHMDJOU3JRZmpGWFE3SW8wOXN5YWpBIiwgImFkZHJlc3MiLCB7Il9zZCI6</tt><br/>
<tt>IFsiNjBCM0N3cTA0aGxQQndzdnNmdks5SlV4dnVMRlViSlFmZ1BCYk9fSDly</tt><br/>
<tt>TSIsICI4eWpQUjNyOGRPNUhXTG55MWdCZU1KVFBSZ2tCY2h1cTQzcUg4V2xf</tt><br/>
<tt>ZjFjIiwgIk5hcmQ3NHcyTl85YW5WRW1TbGVjRUpscXgzanhiY3F4dlZ6QnNC</tt><br/>
<tt>RFgweHMiLCAiVS16RDFESS03WjB6WW94WHF5NUhTVE5VZWdhaFJDSHlkQWVz</tt><br/>
<tt>S09fc0VQYyJdfV0</tt></li>
<li>Contents:
<tt>["G02NSrQfjFXQ7Io09syajA", "address", {"_sd":</tt><br/>
<tt>["60B3Cwq04hlPBwsvsfvK9JUxvuLFUbJQfgPBbO_H9rM",</tt><br/>
<tt>"8yjPR3r8dO5HWLny1gBeMJTPRgkBchuq43qH8Wl_f1c",</tt><br/>
<tt>"Nard74w2N_9anVEmSlecEJlqx3jxbcqxvVzBsBDX0xs",</tt><br/>
<tt>"U-zD1DI-7Z0zYoxXqy5HSTNUegahRCHydAesKO_sEPc"]}]</tt></li>
</ul>
<t><strong>Claim <tt>nationalities</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>HTh6Zr2J8aiqpa963cLkuKeQDf9O00FzOHhyjGpVfTg</tt></li>
<li>Disclosure:<br/>
<tt>WyJsa2x4RjVqTVlsR1RQVW92TU5JdkNBIiwgIm5hdGlvbmFsaXRpZXMiLCBb</tt><br/>
<tt>Ilx1MDBjNm5kZ2FyZCJdXQ</tt></li>
<li>Contents:
<tt>["lklxF5jMYlGTPUovMNIvCA", "nationalities",</tt><br/>
<tt>["\u00c6ndgard"]]</tt></li>
</ul>
<t><strong>Claim <tt>sex</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>90CT8AaBPbn5X8nRXkesju1i0BqhWqZ3wqD4jF-qDGk</tt></li>
<li>Disclosure:<br/>
<tt>WyJuUHVvUW5rUkZxM0JJZUFtN0FuWEZBIiwgInNleCIsIDJd</tt></li>
<li>Contents:
<tt>["nPuoQnkRFq3BIeAm7AnXFA", "sex", 2]</tt></li>
</ul>
<t><strong>Claim <tt>birth_family_name</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>t5kp0HfxMS1eHNCGRzrK9Gi5oTZreg5Ue9lLQIuLvB4</tt></li>
<li>Disclosure:<br/>
<tt>WyI1YlBzMUlxdVpOYTBoa2FGenp6Wk53IiwgImJpcnRoX2ZhbWlseV9uYW1l</tt><br/>
<tt>IiwgIkplbnNlbiJd</tt></li>
<li>Contents:
<tt>["5bPs1IquZNa0hkaFzzzZNw", "birth_family_name", "Jensen"]</tt></li>
</ul>
<t><strong>Claim <tt>locality</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>JDOYKS0w0Cofo-HjZGvrd7HirpSfiYDALU6r8T_LE1g</tt></li>
<li>Disclosure:<br/>
<tt>WyI1YTJXMF9OcmxFWnpmcW1rXzdQcS13IiwgImxvY2FsaXR5IiwgIlx1MDBj</tt><br/>
<tt>Nm5kaG9sbSJd</tt></li>
<li>Contents:
<tt>["5a2W0_NrlEZzfqmk_7Pq-w", "locality", "\u00c6ndholm"]</tt></li>
</ul>
<t><strong>Claim <tt>country</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>oTZr9Emy9xmrpcfQ5ZSU8svxdMY8y4XIF_5j9P1u1yA</tt></li>
<li>Disclosure:<br/>
<tt>WyJ5MXNWVTV3ZGZKYWhWZGd3UGdTN1JRIiwgImNvdW50cnkiLCAiS2luZ2Rv</tt><br/>
<tt>bSBvZiBcdTAwYzZuZGdhcmQiXQ</tt></li>
<li>Contents:
<tt>["y1sVU5wdfJahVdgwPgS7RQ", "country", "Kingdom of</tt><br/>
<tt>\u00c6ndgard"]</tt></li>
</ul>
<t><strong>Claim <tt>place_of_birth</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>r1GrH46yDV62sezImEjxa6cJSZMT212jrOSHiec9ytM</tt></li>
<li>Disclosure:<br/>
<tt>WyJIYlE0WDhzclZXM1FEeG5JSmRxeU9BIiwgInBsYWNlX29mX2JpcnRoIiwg</tt><br/>
<tt>eyJfc2QiOiBbIkpET1lLUzB3MENvZm8tSGpaR3ZyZDdIaXJwU2ZpWURBTFU2</tt><br/>
<tt>cjhUX0xFMWciLCAib1RacjlFbXk5eG1ycGNmUTVaU1U4c3Z4ZE1ZOHk0WElG</tt><br/>
<tt>XzVqOVAxdTF5QSJdfV0</tt></li>
<li>Contents:
<tt>["HbQ4X8srVW3QDxnIJdqyOA", "place_of_birth", {"_sd":</tt><br/>
<tt>["JDOYKS0w0Cofo-HjZGvrd7HirpSfiYDALU6r8T_LE1g",</tt><br/>
<tt>"oTZr9Emy9xmrpcfQ5ZSU8svxdMY8y4XIF_5j9P1u1yA"]}]</tt></li>
</ul>
<t><strong>Claim <tt>12</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>gkvy0FuvBBvj0hs2ZNwxcqOlf8mu2-kCE7-Nb2QxuBU</tt></li>
<li>Disclosure:<br/>
<tt>WyJDOUdTb3VqdmlKcXVFZ1lmb2pDYjFBIiwgIjEyIiwgdHJ1ZV0</tt></li>
<li>Contents:
<tt>["C9GSoujviJquEgYfojCb1A", "12", true]</tt></li>
</ul>
<t><strong>Claim <tt>14</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>y6SFrVFRyq50IbRJviTZqqjQWz0tLiuCmMeO0KqazGI</tt></li>
<li>Disclosure:<br/>
<tt>WyJreDVrRjE3Vi14MEptd1V4OXZndnR3IiwgIjE0IiwgdHJ1ZV0</tt></li>
<li>Contents:
<tt>["kx5kF17V-x0JmwUx9vgvtw", "14", true]</tt></li>
</ul>
<t><strong>Claim <tt>16</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>hrY4HnmF5b5JwC9eTzaFCUceIQAaIdhrqUXQNCWbfZI</tt></li>
<li>Disclosure:<br/>
<tt>WyJIM28xdXN3UDc2MEZpMnllR2RWQ0VRIiwgIjE2IiwgdHJ1ZV0</tt></li>
<li>Contents:
<tt>["H3o1uswP760Fi2yeGdVCEQ", "16", true]</tt></li>
</ul>
<t><strong>Claim <tt>18</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>CVKnly5P90yJs3EwtxQiOtUczaXCYNA4IczRaohrMDg</tt></li>
<li>Disclosure:<br/>
<tt>WyJPQktsVFZsdkxnLUFkd3FZR2JQOFpBIiwgIjE4IiwgdHJ1ZV0</tt></li>
<li>Contents:
<tt>["OBKlTVlvLg-AdwqYGbP8ZA", "18", true]</tt></li>
</ul>
<t><strong>Claim <tt>21</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>1tEiyzPRYOKsf7SsYGMgPZKsOT1lQZRxHXA0r5_Bwkk</tt></li>
<li>Disclosure:<br/>
<tt>WyJNMEpiNTd0NDF1YnJrU3V5ckRUM3hBIiwgIjIxIiwgdHJ1ZV0</tt></li>
<li>Contents:
<tt>["M0Jb57t41ubrkSuyrDT3xA", "21", true]</tt></li>
</ul>
<t><strong>Claim <tt>65</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>a44-g2Gr8_3AmJw2XZ8kI1y0Qz_ze9iOcW2W3RLpXGg</tt></li>
<li>Disclosure:<br/>
<tt>WyJEc210S05ncFY0ZEFIcGpyY2Fvc0F3IiwgIjY1IiwgZmFsc2Vd</tt></li>
<li>Contents:
<tt>["DsmtKNgpV4dAHpjrcaosAw", "65", false]</tt></li>
</ul>
<t><strong>Claim <tt>age_equal_or_over</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>2r009dzvHuVrWrRXT5kJMmHnqEHHnWe0MLVZw8PATB8</tt></li>
<li>Disclosure:<br/>
<tt>WyJlSzVvNXBIZmd1cFBwbHRqMXFoQUp3IiwgImFnZV9lcXVhbF9vcl9vdmVy</tt><br/>
<tt>IiwgeyJfc2QiOiBbIjF0RWl5elBSWU9Lc2Y3U3NZR01nUFpLc09UMWxRWlJ4</tt><br/>
<tt>SFhBMHI1X0J3a2siLCAiQ1ZLbmx5NVA5MHlKczNFd3R4UWlPdFVjemFYQ1lO</tt><br/>
<tt>QTRJY3pSYW9ock1EZyIsICJhNDQtZzJHcjhfM0FtSncyWFo4a0kxeTBRel96</tt><br/>
<tt>ZTlpT2NXMlczUkxwWEdnIiwgImdrdnkwRnV2QkJ2ajBoczJaTnd4Y3FPbGY4</tt><br/>
<tt>bXUyLWtDRTctTmIyUXh1QlUiLCAiaHJZNEhubUY1YjVKd0M5ZVR6YUZDVWNl</tt><br/>
<tt>SVFBYUlkaHJxVVhRTkNXYmZaSSIsICJ5NlNGclZGUnlxNTBJYlJKdmlUWnFx</tt><br/>
<tt>alFXejB0TGl1Q21NZU8wS3FhekdJIl19XQ</tt></li>
<li>Contents:
<tt>["eK5o5pHfgupPpltj1qhAJw", "age_equal_or_over", {"_sd":</tt><br/>
<tt>["1tEiyzPRYOKsf7SsYGMgPZKsOT1lQZRxHXA0r5_Bwkk",</tt><br/>
<tt>"CVKnly5P90yJs3EwtxQiOtUczaXCYNA4IczRaohrMDg",</tt><br/>
<tt>"a44-g2Gr8_3AmJw2XZ8kI1y0Qz_ze9iOcW2W3RLpXGg",</tt><br/>
<tt>"gkvy0FuvBBvj0hs2ZNwxcqOlf8mu2-kCE7-Nb2QxuBU",</tt><br/>
<tt>"hrY4HnmF5b5JwC9eTzaFCUceIQAaIdhrqUXQNCWbfZI",</tt><br/>
<tt>"y6SFrVFRyq50IbRJviTZqqjQWz0tLiuCmMeO0KqazGI"]}]</tt></li>
</ul>
<t><strong>Claim <tt>age_in_years</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>LoMGrhlDm_bUWUX1gdhRxTsy4d4zywGzlSVocRSY01M</tt></li>
<li>Disclosure:<br/>
<tt>WyJqN0FEZGIwVVZiMExpMGNpUGNQMGV3IiwgImFnZV9pbl95ZWFycyIsIDQ3</tt><br/>
<tt>XQ</tt></li>
<li>Contents:
<tt>["j7ADdb0UVb0Li0ciPcP0ew", "age_in_years", 47]</tt></li>
</ul>
<t><strong>Claim <tt>age_birth_year</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>rVj3RLs7K8zdNy7zXz1Cr39Y6rog8ulNozk4F7NCuC0</tt></li>
<li>Disclosure:<br/>
<tt>WyJXcHhKckZ1WDh1U2kycDRodDA5anZ3IiwgImFnZV9iaXJ0aF95ZWFyIiwg</tt><br/>
<tt>MTk3OF0</tt></li>
<li>Contents:
<tt>["WpxJrFuX8uSi2p4ht09jvw", "age_birth_year", 1978]</tt></li>
</ul>
<t><strong>Claim <tt>portrait</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>9nEwUrdeZ6kcRbEj52QH3nOR-oie0_p9tMNIAEuFvMU</tt></li>
<li>Disclosure:<br/>
<tt>WyJhdFNtRkFDWU1iSlZLRDA1bzNKZ3RRIiwgInBvcnRyYWl0IiwgImRhdGE6</tt><br/>
<tt>aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ1FB</tt><br/>
<tt>QUFBV0FRTUFBQUNTZkt4OUFBQUFBWE5TUjBJQjJja3Nmd0FBQUFSblFVMUJB</tt><br/>
<tt>QUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFI</tt><br/>
<tt>VXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBQVpRVEZSRkFBQUEvLy8vcGRt</tt><br/>
<tt>ZjNRQUFBRkZKUkVGVUNOZE55bEVOZ0RBUUE5QVNCSnlFV2NEQkxFMENUcERD</tt><br/>
<tt>cENEaFB2ZXhyQndsQy95OE5HM1JNdW53OUFpNXA2L3ByL1p6bGNBaTRXaVJO</tt><br/>
<tt>MW5sWEFlc09naGVCVFNPOEpEbk5ENlozVytkOTBmQ25UampLUUFBQUFCSlJV</tt><br/>
<tt>NUVya0pnZ2c9PSJd</tt></li>
<li>Contents:
<tt>["atSmFACYMbJVKD05o3JgtQ", "portrait", "data:image/png;base6</tt><br/>
<tt>4,iVBORw0KGgoAAAANSUhEUgAAACQAAAAWAQMAAACSfKx9AAAAAXNSR0IB2c</tt><br/>
<tt>ksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAH</tt><br/>
<tt>UwAADqYAAAOpgAABdwnLpRPAAAAAZQTFRFAAAA////pdmf3QAAAFFJREFUCN</tt><br/>
<tt>dNylENgDAQA9ASBJyEWcDBLE0CTpDCpCDhPvexrBwlC/y8NG3RMunw9Ai5p6</tt><br/>
<tt>/pr/ZzlcAi4WiRN1nlXAesOgheBTSO8JDnND6Z3W+d90fCnTjjKQAAAABJRU</tt><br/>
<tt>5ErkJggg=="]</tt></li>
</ul>
<t><strong>Claim <tt>issuance_date</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>ezCAmaTwI2nPj_1IiB3KZfiEORLeRwhZsMMDMZIJ8kA</tt></li>
<li>Disclosure:<br/>
<tt>WyI0S3lSMzJvSVp0LXprV3ZGcWJVTEtnIiwgImlzc3VhbmNlX2RhdGUiLCAi</tt><br/>
<tt>MjAyNC0wMS0xNSJd</tt></li>
<li>Contents:
<tt>["4KyR32oIZt-zkWvFqbULKg", "issuance_date", "2024-01-15"]</tt></li>
</ul>
<t><strong>Claim <tt>expiry_date</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>Y0H-E3hzKEUnAyri_x9tT9k-j4i65ao9hkeEHNexosI</tt></li>
<li>Disclosure:<br/>
<tt>WyJjaEJDc3loeWgtSjg2SS1hd1FEaUNRIiwgImV4cGlyeV9kYXRlIiwgIjIw</tt><br/>
<tt>MzQtMDEtMTUiXQ</tt></li>
<li>Contents:
<tt>["chBCsyhyh-J86I-awQDiCQ", "expiry_date", "2034-01-15"]</tt></li>
</ul>
<t><strong>Claim <tt>issuing_authority</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>6BzMBk7FGivogbldO75f3NLwjFliCqb7nn1GhgCokrQ</tt></li>
<li>Disclosure:<br/>
<tt>WyJmbE5QMW5jTXo5TGctYzlxTUl6XzlnIiwgImlzc3VpbmdfYXV0aG9yaXR5</tt><br/>
<tt>IiwgIktpbmdkb20gb2YgXHUwMGM2bmRnYXJkLCBNaW5pc3RyeSBvZiBJbnRl</tt><br/>
<tt>cmlvciJd</tt></li>
<li>Contents:
<tt>["flNP1ncMz9Lg-c9qMIz_9g", "issuing_authority", "Kingdom of</tt><br/>
<tt>\u00c6ndgard, Ministry of Interior"]</tt></li>
</ul>
<t><strong>Claim <tt>issuing_country</tt></strong>:</t>

<ul spacing="compact">
<li>SHA-256 Hash: <tt>UgUjq5whzQewO59fVNj0f0mqyV8YPXU54sp4kLecwQk</tt></li>
<li>Disclosure:<br/>
<tt>WyJvdm9WMXJraF9BTm04NjFxVUFBMkF3IiwgImlzc3VpbmdfY291bnRyeSIs</tt><br/>
<tt>ICJcdTAwYzZHIl0</tt></li>
<li>Contents:
<tt>["ovoV1rkh_ANm861qUAA2Aw", "issuing_country", "\u00c6G"]</tt></li>
</ul>
<t><xref target="presentation3"/> shows a presentation of the SD-JWT with a Key Binding JWT that discloses only nationality and the fact that the person is over 18 years old:</t>
<figure anchor="presentation3"><name>Presented SD-JWT+KB </name>
<sourcecode type="txt"><![CDATA[eyJhbGciOiAiRVMyNTYiLCAidHlwIjogImRjK3NkLWp3dCJ9.eyJfc2QiOiBbIjJyMDA
5ZHp2SHVWcldyUlhUNWtKTW1IbnFFSEhuV2UwTUxWWnc4UEFUQjgiLCAiM05kREpZUnd
CcWFFSXlYQ0hjbjRhNVlLSmFnUGdJUDBXa2c5QW9yZ0FLZyIsICI1Zm42SWlYalVQbUd
RNG1ZSHhEZHQ2RWp2QlE3Z1J2R2NkRW5TQ0VOOEVrIiwgIjZCek1CazdGR2l2b2dibGR
PNzVmM05Md2pGbGlDcWI3bm4xR2hnQ29rclEiLCAiOTBDVDhBYUJQYm41WDhuUlhrZXN
qdTFpMEJxaFdxWjN3cUQ0akYtcURHayIsICI5bkV3VXJkZVo2a2NSYkVqNTJRSDNuT1I
tb2llMF9wOXRNTklBRXVGdk1VIiwgIkhUaDZacjJKOGFpcXBhOTYzY0xrdUtlUURmOU8
wMEZ6T0hoeWpHcFZmVGciLCAiSkNwMksyTmhILUxFNUwwajdNRTBMTngtVC1weDlRRnR
hbVNzeG1DVUN4VSIsICJMb01HcmhsRG1fYlVXVVgxZ2RoUnhUc3k0ZDR6eXdHemxTVm9
jUlNZMDFNIiwgIlVnVWpxNXdoelFld081OWZWTmowZjBtcXlWOFlQWFU1NHNwNGtMZWN
3UWsiLCAiWTBILUUzaHpLRVVuQXlyaV94OXRUOWstajRpNjVhbzloa2VFSE5leG9zSSI
sICJlekNBbWFUd0kyblBqXzFJaUIzS1pmaUVPUkxlUndoWnNNTURNWklKOGtBIiwgImk
wSF8tV0FId2ZFanQ4dHFRSDc0dU9DV3ZxdVkzRnd1WC1reDRlMlJKSDgiLCAicjFHckg
0NnlEVjYyc2V6SW1FanhhNmNKU1pNVDIxMmpyT1NIaWVjOXl0TSIsICJyVmozUkxzN0s
4emROeTd6WHoxQ3IzOVk2cm9nOHVsTm96azRGN05DdUMwIiwgInQ1a3AwSGZ4TVMxZUh
OQ0dSenJLOUdpNW9UWnJlZzVVZTlsTFFJdUx2QjQiXSwgImlzcyI6ICJodHRwczovL3B
pZC1pc3N1ZXIuYWVuZGdhcmQuZXhhbXBsZSIsICJpYXQiOiAxNjgzMDAwMDAwLCAiZXh
wIjogMTg4MzAwMDAwMCwgInZjdCI6ICJ1cm46ZXVkaTpwaWQ6YWVuZGdhcmQ6MSIsICJ
fc2RfYWxnIjogInNoYS0yNTYiLCAiY25mIjogeyJqd2siOiB7Imt0eSI6ICJFQyIsICJ
jcnYiOiAiUC0yNTYiLCAieCI6ICJUQ0FFUjE5WnZ1M09IRjRqNFc0dmZTVm9ISVAxSUx
pbERsczd2Q2VHZW1jIiwgInkiOiAiWnhqaVdXYlpNUUdIVldLVlE0aGJTSWlyc1ZmdWV
jQ0U2dDRqVDlGMkhaUSJ9fX0.4aA3nXGQHcjwl7EZb39iKAuW4mKfzLVnwHTvikoIzRM
iPv0NppSHXLBTHZcfQy5iTl8MyXI1whxh6kk3CQOCMQ~WyJlSzVvNXBIZmd1cFBwbHRq
MXFoQUp3IiwgImFnZV9lcXVhbF9vcl9vdmVyIiwgeyJfc2QiOiBbIjF0RWl5elBSWU9L
c2Y3U3NZR01nUFpLc09UMWxRWlJ4SFhBMHI1X0J3a2siLCAiQ1ZLbmx5NVA5MHlKczNF
d3R4UWlPdFVjemFYQ1lOQTRJY3pSYW9ock1EZyIsICJhNDQtZzJHcjhfM0FtSncyWFo4
a0kxeTBRel96ZTlpT2NXMlczUkxwWEdnIiwgImdrdnkwRnV2QkJ2ajBoczJaTnd4Y3FP
bGY4bXUyLWtDRTctTmIyUXh1QlUiLCAiaHJZNEhubUY1YjVKd0M5ZVR6YUZDVWNlSVFB
YUlkaHJxVVhRTkNXYmZaSSIsICJ5NlNGclZGUnlxNTBJYlJKdmlUWnFxalFXejB0TGl1
Q21NZU8wS3FhekdJIl19XQ~WyJPQktsVFZsdkxnLUFkd3FZR2JQOFpBIiwgIjE4Iiwgd
HJ1ZV0~WyJsa2x4RjVqTVlsR1RQVW92TU5JdkNBIiwgIm5hdGlvbmFsaXRpZXMiLCBbI
lx1MDBjNm5kZ2FyZCJdXQ~eyJhbGciOiAiRVMyNTYiLCAidHlwIjogImtiK2p3dCJ9.e
yJub25jZSI6ICIxMjM0NTY3ODkwIiwgImF1ZCI6ICJodHRwczovL2V4YW1wbGUuY29tL
3ZlcmlmaWVyIiwgImlhdCI6IDE3NzIxMzA3MzUsICJzZF9oYXNoIjogIkRlVkJ0V3Mwe
mdXdFZrX3JNQ21DQVIxcF83V0wwbmNQOHVyMGdfeEdxcm8ifQ.QTIbz0IXyI00dbDVeW
y4wqrudiaG5IGDu3yvRrfwbrpAmNX3Smxds5r3EC7Yvf4hNlnzRyW4IKvpe7IwnyXhPA
]]>
</sourcecode>
</figure>
<t><xref target="kb-jwt-payload3"/> is the payload of a corresponding Key Binding JWT:</t>
<figure anchor="kb-jwt-payload3"><name>Key Binding JWT Payload </name>
<sourcecode type="json"><![CDATA[{
  "nonce": "1234567890",
  "aud": "https://example.com/verifier",
  "iat": 1772130735,
  "sd_hash": "DeVBtWs0zgWtVk_rMCmCAR1p_7WL0ncP8ur0g_xGqro"
}
]]>
</sourcecode>
</figure>
<t>After validation, the Verifier will have the processed SD-JWT payload in <xref target="verified-payload3"/> below available for further handling:</t>
<figure anchor="verified-payload3"><name>Processed SD-JWT Payload </name>
<sourcecode type="json"><![CDATA[{
  "iss": "https://pid-issuer.aendgard.example",
  "iat": 1683000000,
  "exp": 1883000000,
  "vct": "urn:eudi:pid:aendgard:1",
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
      "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
    }
  },
  "age_equal_or_over": {
    "18": true
  },
  "nationalities": [
    "Ændgard"
  ]
}
]]>
</sourcecode>
</figure>
</section>

<section anchor="ExampleTypeMetadata"><name>Example Type Metadata</name>
<t>The following example for Type Metadata assumes an SD-JWT VC payload structured as follows in <xref target="example-sd-jwt-vc-payload-for-type-metadata"/>:</t>
<figure anchor="example-sd-jwt-vc-payload-for-type-metadata"><name>SD-JWT VC Payload </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://betelgeuse.example.com/education_credential/v42",
  "vct#integrity": "sha256-1odmyxoVQCuQx8SAym8rWHXba41fM/Iv/V1H8VHGN00=",
  "name": "Zaphod Beeblebrox",
  "address": {
    "street_address": "42 Galaxy Way",
    "city": "Betelgeuse City",
    "postal_code": "12345",
    "country": "Betelgeuse"
  },
  "degrees": [
    {
      "field_of_study": "Intergalactic Politics",
      "date_awarded": "2020-05-15"
    },
    {
      "field_of_study": "Space Navigation",
      "date_awarded": "2018-06-20"
    },
    {
      "field_of_study": "Quantum Mechanics",
      "date_awarded": "2016-07-25"
    }
  ]
}
]]>
</sourcecode>
</figure>
<t>The Type Metadata for this SD-JWT VC could be defined as follows in <xref target="example-type-metadata"/>:</t>
<figure anchor="example-type-metadata"><name>Example Type Metadata Document </name>
<sourcecode type="json"><![CDATA[{
  "vct": "https://betelgeuse.example.com/education_credential/v42",
  "name": "Betelgeuse Education Credential - First Version",
  "description": "This is our first version of the education credential. Don't panic.",
  "extends": "https://galaxy.example.com/galactic-education-credential/v2",
  "extends#integrity": "sha256-ilOUJsTultOwLfz7QUcFALaRa3BP/jelX1ds04kB9yU=",
  "display": [
    {
      "locale": "en-US",
      "name": "Betelgeuse Education Credential",
      "description": "An education credential for all carbon-based life forms on Betelgeuse.",
      "rendering": {
        "simple": {
          "logo": {
            "uri": "https://betelgeuse.example.com/public/education-logo.png",
            "uri#integrity": "sha256-LmXfh+9cLlJNXN+TsMk+PmKjZ5t0WRL5ca/xGgX3c1U=",
            "alt_text": "Betelgeuse Ministry of Education logo"
          },
          "background_image": {
            "uri": "https://betelgeuse.example.com/public/credential-background.png",
            "uri#integrity": "sha256-5sBT7mMLylHLWrrS/qQ8aHpRAxoraWVmWX6eUVMlrrA="
          },
          "background_color": "#12107c",
          "text_color": "#FFFFFF"
        },
        "svg_templates": [
          {
            "uri": "https://betelgeuse.example.com/public/credential-english.svg",
            "uri#integrity": "sha256-I4JcBGO7UfrkOBrsV7ytNJAfGuKLQh+e+Z31mc7iAb4=",
            "properties": {
              "orientation": "landscape",
              "color_scheme": "light",
              "contrast": "high"
            }
          }
        ]
      }
    },
    {
      "locale": "de-DE",
      "name": "Betelgeuse-Bildungsnachweis",
      "description": "Ein Bildungsnachweis für alle kohlenstoffbasierten Lebensformen auf Betelgeuse.",
      "rendering": {
        "simple": {
          "logo": {
            "uri": "https://betelgeuse.example.com/public/education-logo-de.png",
            "uri#integrity": "sha256-LmXfh+9cLlJNXN+TsMk+PmKjZ5t0WRL5ca/xGgX3c1U=",
            "alt_text": "Logo des Betelgeusischen Bildungsministeriums"
          },
          "background_image": {
            "uri": "https://betelgeuse.example.com/public/credential-background-de.png",
            "uri#integrity": "sha256-9cLlJNXN+TsMk+PmKjZ5t0WRL5ca/xGgX3c1ULmXfh="
          },
          "background_color": "#12107c",
          "text_color": "#FFFFFF"
        },
        "svg_templates": [
          {
            "uri": "https://betelgeuse.example.com/public/credential-german.svg",
            "uri#integrity": "sha256-I4JcBGO7UfrkOBrsV7ytNJAfGuKLQh+e+Z31mc7iAb4=",
            "properties": {
              "orientation": "landscape",
              "color_scheme": "light",
              "contrast": "high"
            }
          }
        ]
      }
    }
  ],
  "claims": [
    {
      "path": ["name"],
      "display": [
        {
          "locale": "de-DE",
          "label": "Vor- und Nachname",
          "description": "Der Name des/der Studierenden"
        },
        {
          "locale": "en-US",
          "label": "Name",
          "description": "The name of the student"
        }
      ],
      "sd": "always",
      "mandatory": true
    },
    {
      "path": ["address"],
      "display": [
        {
          "locale": "de-DE",
          "label": "Adresse",
          "description": "Adresse zum Zeitpunkt des Abschlusses"
        },
        {
          "locale": "en-US",
          "label": "Address",
          "description": "Address at the time of graduation"
        }
      ],
      "sd": "always"
    },
    {
      "path": ["address", "street_address"],
      "display": [
        {
          "locale": "de-DE",
          "label": "Straße"
        },
        {
          "locale": "en-US",
          "label": "Street Address"
        }
      ],
      "sd": "always",
      "svg_id": "address_street_address"
    },
    {
      "path": ["degrees"],
      "display": [
        {
          "locale": "de-DE",
          "label": "Abschlüsse",
          "description": "Abschlüsse des/der Studierenden"
        },
        {
          "locale": "en-US",
          "label": "Degrees",
          "description": "Degrees earned by the student"
        }
      ],
      "sd": "never"
    },
    {
      "path": ["degrees", null],
      "sd": "always"
    },
    {
      "path": ["degrees", null, "field_of_study"],
      "display": [
        {
          "locale": "de-DE",
          "label": "Studienfach"
        },
        {
          "locale": "en-US",
          "label": "Field of Study"
        }
      ],
      "sd": "never"
    },
    {
      "path": ["degrees", null, "date_awarded"],
      "display": [
        {
          "locale": "de-DE",
          "label": "Verleihungsdatum"
        },
        {
          "locale": "en-US",
          "label": "Date Awarded"
        }
      ],
      "sd": "always"
    }
  ]
}
]]>
</sourcecode>
</figure>
<t>Note that in this example, there are four definitions affecting the <tt>degrees</tt> claim:</t>

<ol spacing="compact">
<li>The <tt>degrees</tt> array itself is marked as <tt>sd: never</tt>, meaning the element <tt>degrees</tt> cannot be selectively disclosed and will always exist in the disclosed SD-JWT. Changing this to <tt>sd: always</tt> would mean that the <tt>degrees</tt> array itself is selectively disclosable.</li>
<li>Each item in the <tt>degrees</tt> array (denoted by <tt>null</tt> in the path) is marked as <tt>sd: always</tt>, meaning each degree object will be selectively disclosed as a whole.</li>
<li>The <tt>field_of_study</tt> property of each degree object is marked as <tt>sd: never</tt>, meaning that if the respective degree object is disclosed, the <tt>field_of_study</tt> property will always be included and cannot be hidden.</li>
<li>The <tt>date_awarded</tt> property of each degree object is marked as <tt>sd: always</tt>, meaning it can be selectively disclosed.</li>
</ol>
</section>
</section>

<section anchor="Acknowledgements"><name>Acknowledgements</name>
<t>We would like to thank
Aaron Parecki,
Alen Horvat,
Andres Uribe,
Andrii Deinega,
Annabelle Kennedy,
Babis Routis,
Christian Bormann,
Dan Moore,
Denis Pinkas,
George J Padayatti,
Giuseppe De Marco,
Lukas J Han,
Lukasz Jaromin,
Leif Johansson,
Michael B. Jones,
Mike Prorock,
Mirko Mollik,
Nat Sakimura,
Orie Steele,
Paul Bastian,
Pavel Zarecky,
Stefan Charsley,
Tim Cappalli,
Timo Glastra,
Torsten Lodderstedt,
Tobias Looker, and
Kristina Yasuda
for their contributions (some of which substantial) to this draft and to the initial set of implementations.</t>
</section>

<section anchor="document-history"><name>Document History</name>
<t>-15</t>

<ul spacing="compact">
<li>remove unnecessary Relationships to Other Documents section</li>
</ul>
<t>-14</t>

<ul spacing="compact">
<li>State more explicitly that additional Issuer Signature Mechanisms can complement or override the defined mechanisms</li>
<li>Add example of a vct value that is versioned (in the text)</li>
<li>Use the three-word term Verifiable Digital Credential as consistently as possible throughout the document</li>
<li>Update draft-ietf-oauth-selective-disclosure-jwt references to point to RFC 9901</li>
<li>More consistent use of <tt>application/json</tt> content type and 200 status code when retrieving metadata</li>
<li>Editorial improvements based on review feedback of -13</li>
<li>Expand the example showing the vct claim</li>
<li>Number and label the examples/figures</li>
<li>Fix reference to Subresource Integrity document to point to W3C Recommendation version</li>
<li>Move Privacy-Preserving Retrieval of Type Metadata section to Privacy Considerations where it belongs</li>
<li>Move RFC 2397 to informative (only mentioned once and behind a SHOULD)</li>
<li>Add line break between the two things in the JSON Web Token Claims Registration section</li>
<li>Error responses both for JWT VC Issuer Metadata and Type Metadata retrieval now MUST use appropriate HTTP status codes</li>
<li>Clarified that if an integrity property is present for a particular claim/property, the Consumer MUST verify the integrity of the retrieved document.</li>
<li>Fixed the description of the claim metadata extension rules to correctly reflect the intended behavior.</li>
<li>Added a note explaining the difference in overriding rules between claim metadata and display metadata when extending types.</li>
<li>Merged section section 4 into section 3</li>
<li>Replaced the term wallet with holder for consistency reasons</li>
</ul>
<t>-13</t>

<ul spacing="compact">
<li>Updated svg_template to match pluralised appendix example</li>
</ul>
<t>-12</t>

<ul spacing="compact">
<li>Change <tt>lang</tt> to <tt>locale</tt>. While <tt>lang</tt> is more accurate, <tt>locale</tt> is what has traditionally been used in OpenID Connect and later related specs.</li>
<li>Remove JSON schema from Type Metadata</li>
<li>Introduce optional mandatory property for claims</li>
<li>Explicitly mention that Type Metadata can have additional stuff that has to be ignored if not understood</li>
<li>Clarify that an SD-JWT VC doesn't contain a KB-JWT but rather might have an associated one (which makes it a SD-JWT+KB and Brian is still not sure about the term or these words, but it's where we've ended up)</li>
<li>Remove the requirement to ignore unknown claims, as some applications may not want to follow this rule</li>
<li>Fix cnf claim and JWK references and move them to normative</li>
<li>List <tt>vct</tt> as one of the required values in type metadata and ensure that the use of the document integrity claims is clear</li>
<li>Remove discussion of status and Status Provider from the Introduction</li>
<li>Add a background_image property to the simple rendering aligned with the definition in OpenID4VCI</li>
<li>Recommend to use <tt>sd=always</tt> or <tt>sd=never</tt> to avoid ambiguity and introduce rules for <tt>sd</tt> and <tt>mandatory</tt> when extending types</li>
<li>Provide some guidance on versioning via the <tt>vct</tt> value</li>
<li>Add security considerations for trust in type metadata</li>
<li>Require data URIs for non-JSON types</li>
<li>Require <tt>x5c</tt> to be in the protected header</li>
<li>Clarify presentations of SD-JWT VC do not require KB</li>
<li>Updated/expanded example for Type Metadata</li>
<li>Be more consistent with style for lists of claims/parameters/properties</li>
<li>Update PID example to make clear that it is not normative</li>
<li>Clarification on processing of display metadata</li>
</ul>
<t>-11</t>

<ul spacing="compact">
<li>Clarify extend support for claim metadata</li>
<li>Add privacy concerns regarding the use of <tt>x5u</tt> parameter in JWKs and similar remote retrieval mechanisms</li>
<li>Added a section on Credential Type Extension and Issuer Authorization.</li>
<li>Fixed an inconsistency to the description of <tt>display</tt> attribute of claim metadata.</li>
<li>add <tt>vct#integrity</tt> to the list of claims that cannot be selectively disclosed</li>
<li>Drop explicit treatment of the glue type metadata document concept</li>
<li>Editorial updates and fixes.</li>
<li>State that when the <tt>status</tt> claim is present and using the <tt>status_list</tt> mechanism, the associated Status List Token has to be a JWT.</li>
<li><tt>vct</tt> datatype is now just a string</li>
</ul>
<t>-10</t>

<ul spacing="compact">
<li>Rename 'Issuer-signed JWT Verification Key Validation' to 'Issuer Signature Mechanisms' and rework some text accordingly. Provide a web-based metadata resolution mechanism and an inline x509 mechanism. A DID-based mechanism is not explicitly provided herein but still possible via profile/extension. Be explicit that the employed Issuer Signature Mechanism has to be one that is permitted for the Issuer according to policy. Be more clear that one permitted Issuer Signature Mechanism is sufficient.</li>
<li>Fix <tt>[...]#integrity</tt> claim values in examples (Subresource Integrity uses regular base64 encoding and some were wrong length)</li>
</ul>
<t>-09</t>

<ul spacing="compact">
<li>Use SD-JWT KB in place of SD-JWT with Key Binding JWT</li>
<li>Editorial changes</li>
<li>Document reasons for not using JSON Pointer or JSON Path (Issue #267)</li>
<li>Clarify that private claim names MAY be used</li>
<li>Update PID Example</li>
<li>Fix section numbering in a few SD-JWT references</li>
</ul>
<t>-08</t>

<ul spacing="compact">
<li>Fix formatting issue introduced by the reintroduction of the DID paragraph in -07</li>
</ul>
<t>-07</t>

<ul spacing="compact">
<li>Revert change from previous release that removed explicit mention of DIDs in the Issuer-signed JWT Verification Key Validation section</li>
<li>Remove the requirement to insert a .well-known part for vct URLs</li>
<li>fix section numbering in SD-JWT references to align with the latest -14 version</li>
</ul>
<t>-06</t>

<ul spacing="compact">
<li>Update the anticipated media type registration request from <tt>application/vc+sd-jwt</tt> to <tt>application/dc+sd-jwt</tt></li>
<li>Tightened the exposition of the Issuer-signed JWT Verification Key Validation section</li>
<li>Add the “Status” field for the well-known URI registration per IANA early review</li>
</ul>
<t>-05</t>

<ul spacing="compact">
<li>Include display and claim type metadata</li>
<li>Added example for type metadata</li>
<li>Clarify, add context, or otherwise improved the examples</li>
</ul>
<t>-04</t>

<ul spacing="compact">
<li>update reference to IETF Status List</li>
<li>Include Type Metadata</li>
<li>Include schema Type Metadata</li>
<li>Editorial changes</li>
<li>Updated terminology to clarify digital signatures are one way to secure VCs and presentations</li>
<li>Rework key resolution/validation for x5c</li>
</ul>
<t>-03</t>

<ul spacing="compact">
<li>Include disclosure of age_equal_or_over/18 in the PID example</li>
</ul>
<t>-02</t>

<ul spacing="compact">
<li>Made specific rules for public verification key validation conditional</li>
<li>Finetuned rules for obtaining public verification key</li>
<li>Editorial changes</li>
<li>added Brian Campbell as co-author</li>
<li>Renamed JWT Issuer Metadata to JWT VC Issuer Metadata</li>
<li>'iat' is now optional and allowed to be selectively disclosable</li>
<li>Fix inconstancy in the .well-known path construction</li>
<li>Added registration request to IANA for the well-known URI</li>
<li>Fix some formatting and text in the media type and JWT claim registration requests</li>
<li>Clarify the optionality of the <tt>cnf</tt> claim</li>
<li>Added relationships to other documents</li>
<li>Added PID example</li>
</ul>
<t>-01</t>

<ul spacing="compact">
<li>Introduce rules for type identifiers (Collision-Resistant Name)</li>
<li>Rename <tt>type</tt> to <tt>vct</tt></li>
<li>Removed duplicated and inconsistent requirements on KB-JWT</li>
<li>Editorial changes</li>
<li>Added issuer public verification key discovery section.</li>
</ul>
<t>-00</t>

<ul spacing="compact">
<li>Upload as draft-ietf-oauth-sd-jwt-vc-00</li>
<li>Aligned terminology and descriptions with latest version of SD-JWT</li>
</ul>
<t>[[ pre Working Group Adoption: ]]</t>
<t>-00</t>

<ul spacing="compact">
<li>Initial Version</li>
<li>Removed W3C VCDM transformation algorithm</li>
<li>Various editorial changes based on feedback</li>
<li>Adjusted terminology based on feedback</li>
<li>Added non-selectively disclosable JWT VC</li>
<li>Added a note that this is not W3C VCDM</li>
</ul>
</section>

</back>

</rfc>
