<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-svensson-credential-oidc-bridge-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Credential to OIDC Bridge">Credential Presentation to OIDC Claims Bridge</title>
    <seriesInfo name="Internet-Draft" value="draft-svensson-credential-oidc-bridge-02"/>
    <author fullname="Magnus Svensson">
      <organization>SUNET</organization>
      <address>
        <email>masv@sunet.se</email>
      </address>
    </author>
    <author fullname="Leif Johansson">
      <organization>Siros Foundation</organization>
      <address>
        <email>leifj@siros.org</email>
      </address>
    </author>
    <author fullname="Joel Rangsmo">
      <organization>Siros Foundation</organization>
      <address>
        <email>joel@siros.org</email>
      </address>
    </author>
    <date year="2026" month="August" day="24"/>
    <area>sec</area>
    <workgroup>TBD</workgroup>
    <keyword>verifiable credentials</keyword>
    <keyword>OpenID Connect</keyword>
    <keyword>OpenID4VP</keyword>
    <keyword>digital credentials</keyword>
    <keyword>OIDC bridge</keyword>
    <abstract>
      <?line 86?>

<t>This document defines a mechanism for conveying digital credential
claims via OpenID Connect (OIDC).  It specifies how an OpenID
Provider (OP) that collects credentials from a wallet can expose
those claims to Relying Parties as standard OIDC claims, enabling
existing OIDC deployments to consume digital credentials without
implementing any wallet-facing presentation protocol.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/masv3971/rfc_credential_oidc_bridge"/>.</t>
    </note>
  </front>
  <middle>
    <?line 95?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Digital credential wallets can present verified claims to verifiers
using protocols such as OpenID for Verifiable Presentations
(OpenID4VP) <xref target="OpenID4VP"/> or DIDComm.  However, many existing services
rely on OpenID Connect (OIDC) <xref target="OpenID.Core"/> for authentication and
attribute retrieval, and implementing a wallet-facing presentation
protocol represents a significant barrier for these Relying Parties.</t>
      <t>This document specifies how an OP, acting as a bridge, can collect
credentials from a wallet using any suitable presentation protocol
and expose the resulting claims in standard OIDC ID Tokens and
UserInfo responses.  The Relying Party interacts with a normal OIDC
flow and receives credential data in the "presented_credentials"
claim without needing any knowledge of the underlying presentation
protocol.</t>
      <t>This specification is intended to complement, not compete with, work
produced by the OpenID Foundation.  Implementers are encouraged to
follow developments in the OpenID Foundation's Digital Credentials
Protocols working group.</t>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <t>The following diagram illustrates the high-level interaction between
the participants:</t>
      <artwork type="ascii-art"><![CDATA[
+--------+                +------------------+              +----------+
|        | 1. OIDC AuthN  |                  | 2. Present   |          |
|   RP   | -------------> |    OP (Bridge)   | -----------> |  Wallet  |
|        |                |                  | <----------- |          |
|        |                |                  | 3. Response  |          |
|        |                |                  |              +----------+
|        |                | 4. Verify &      |
|        | 5. ID Token    |    extract claims|
|        | <------------- |                  |
+--------+                +------------------+
]]></artwork>
      <t>The presentation protocol (steps 2-3) is out of scope for this
specification.  The OP <bcp14>MAY</bcp14> use OpenID4VP, DIDComm, or any other
suitable mechanism.</t>
      <t>The steps are:</t>
      <ol spacing="normal" type="1"><li>
          <t>The RP sends an OIDC Authentication Request to the OP,
including credential type scopes.</t>
        </li>
        <li>
          <t>The OP initiates a credential presentation request to the
user's wallet.</t>
        </li>
        <li>
          <t>The wallet responds with the disclosed credentials.</t>
        </li>
        <li>
          <t>The OP verifies the credentials and extracts claims.</t>
        </li>
        <li>
          <t>The OP returns an ID Token and/or UserInfo response containing
the "presented_credentials" claim.</t>
        </li>
      </ol>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The following terms are used throughout this document:</t>
      <dl>
        <dt>Relying Party (RP)</dt>
        <dd>
          <t>An OIDC client that consumes claims from the OP.  In this
specification, the RP receives credential claims without
directly interacting with the wallet.</t>
        </dd>
        <dt>OpenID Provider (OP)</dt>
        <dd>
          <t>The authorization server that acts as a bridge between the
wallet and the RP.  The OP collects credentials from the wallet
using a presentation protocol and exposes the resulting claims
via standard OIDC mechanisms.</t>
        </dd>
        <dt>Wallet</dt>
        <dd>
          <t>A user-controlled application that holds digital credentials and
can present them to a verifier upon request.</t>
        </dd>
        <dt>Credential Set</dt>
        <dd>
          <t>A JSON object within the "presented_credentials" array where
each key is a credential type scope and each value is an array
of Credential Entry objects.</t>
        </dd>
        <dt>Credential Entry</dt>
        <dd>
          <t>A JSON object representing a single credential presented during
the presentation flow, containing metadata and disclosed claims.</t>
        </dd>
      </dl>
    </section>
    <section anchor="relying-party-requirements">
      <name>Relying Party Requirements</name>
      <section anchor="requesting-credential-claims">
        <name>Requesting Credential Claims</name>
        <t>An RP that wishes to receive credential data via this bridge <bcp14>MUST</bcp14>
include credential type scopes in the OIDC Authentication Request
(e.g., <tt>scope=openid ehic pda1</tt>).  This specification defines two
request modes:</t>
        <ul spacing="normal">
          <li>
            <t><em>Scope-based (<bcp14>REQUIRED</bcp14> to support):</em> the RP includes only
credential type scopes.  The OP applies a pre-registered query
per scope (see <xref target="credential-mapping"/>) and returns the claims
configured for that credential type.  Every OP that implements
this specification <bcp14>MUST</bcp14> support this mode.</t>
          </li>
          <li>
            <t><em>DCQL-based (<bcp14>OPTIONAL</bcp14>):</em> the RP additionally supplies a
"dcql_query" member inside the OIDC "claims" request parameter.
The value is a DCQL query <xref target="OpenID4VP"/> constrained to the
profile defined in <xref target="dcql-based-requests"/>.</t>
          </li>
        </ul>
        <t>Deployments operating under trust frameworks that require pre-
registered credential queries (for example, EUDI and the Swiss
Trust Framework) <bcp14>MUST NOT</bcp14> advertise "dcql_query_supported" as
<tt>true</tt>.  An RP that sends a "dcql_query" to such an OP will
receive an "invalid_request" error per <xref target="dcql-based-requests"/>.
An RP <bcp14>MUST</bcp14> consult the OP's discovery metadata (see
<xref target="discovery"/>) to determine whether the DCQL-based mode is
supported before including a "dcql_query".</t>
        <t>Scopes identify which credentials to collect; the "dcql_query"
member, when present, refines how they are collected.  If only
scopes are present, the OP applies its pre-registered mapping for
each scope.</t>
        <section anchor="scope-based-requests">
          <name>Scope-Based Requests</name>
          <t>The following is a non-normative example of a scope-based request
(no "claims" parameter).  The RP requests EHIC and PDA1 credentials
using the OP's pre-registered mapping:</t>
          <sourcecode type="http"><![CDATA[
GET /authorize?
  response_type=code
  &scope=openid ehic pda1
  &client_id=https://rp.example.org
  &redirect_uri=https://rp.example.org/cb
  &nonce=n-0S6_WzA2Mj HTTP/1.1
]]></sourcecode>
          <t>The requested scopes directly correlate to the keys used in the
Credential Set returned by the OP.  For example, if the RP requests
scopes "ehic" and "pda1", the resulting Credential Set contains
"ehic" and "pda1" entries.</t>
          <t>In scope-based mode the RP cannot express selective disclosure,
value constraints, or issuer restrictions on a per-request basis;
the OP applies its own policy.  RPs that need such control <bcp14>MAY</bcp14> use
the DCQL-based mode (<xref target="dcql-based-requests"/>) where supported by
the OP.</t>
        </section>
        <section anchor="dcql-based-requests">
          <name>DCQL-Based Requests</name>
          <t>An RP <bcp14>MAY</bcp14> supply a "dcql_query" member inside the OIDC "claims"
request parameter as permitted by Section 5.5.1 of <xref target="OpenID.Core"/>.
The "dcql_query" value <bcp14>MUST</bcp14> be a DCQL query object as defined in
Section 6 of <xref target="OpenID4VP"/>, restricted to the profile defined in
this section.</t>
          <t>An OP that supports the DCQL-based mode <bcp14>MUST</bcp14> advertise this in its
discovery metadata via "dcql_query_supported" (see <xref target="discovery"/>).
If the OP does not support the DCQL-based mode and the RP supplies
a "dcql_query", the OP <bcp14>MUST</bcp14> return an OIDC error response with
error code "invalid_request".</t>
          <t>The "dcql_query" value is a DCQL query object as defined in
Section 6 of <xref target="OpenID4VP"/>.  All member definitions, required and
optional fields, and format-specific rules (e.g., for the "meta"
object of <tt>dc+sd-jwt</tt> and <tt>mso_mdoc</tt>) are inherited from that
section and are not restated here.</t>
          <t>This profile applies the following additional restrictions:</t>
          <ul spacing="normal">
            <li>
              <t>The DCQL "claim_sets" member <bcp14>MUST NOT</bcp14> be used; express claim
alternation via multiple Credential Queries linked from
"credential_sets".</t>
            </li>
            <li>
              <t>Each Credential Query <bcp14>MUST</bcp14> identify a credential type (via
"format" and the format-specific type identifier in "meta")
that matches an entry in "credential_presentations_supported"
whose scope value is present in the authorization request.
Otherwise the OP <bcp14>MUST</bcp14> return "invalid_request".</t>
            </li>
            <li>
              <t>Credential Query "id" values are opaque to the OP (per
Section 6 of <xref target="OpenID4VP"/>) and are used only as response
keys and as references from "credential_sets".</t>
            </li>
            <li>
              <t>When "claims" is omitted, the OP applies the pre-registered
claim set of the matched entry.</t>
            </li>
          </ul>
          <t>The "credential_sets" member expresses combinatorial logic over
Credential Queries as defined in Section 6.3 of <xref target="OpenID4VP"/>.
Each Credential Set entry contains an "options" array listing
alternative AND-groups of Credential Query "id"s, plus an <bcp14>OPTIONAL</bcp14>
"id" and <bcp14>OPTIONAL</bcp14> "required" boolean (default <tt>true</tt>).  If
"credential_sets" is present, the OP <bcp14>MUST</bcp14> evaluate the alternation
per Section 6.3 of <xref target="OpenID4VP"/> and return, for each satisfied
Credential Set, one Credential Set object within the
"presented_credentials" claim (see <xref target="presented-credentials-array"/>)
whose members are the Credential Queries in the matched AND-group.
The <bcp14>OPTIONAL</bcp14> "id" of the Credential Set entry <bcp14>MAY</bcp14> be echoed by the
OP in the response to help the RP identify which alternative was
satisfied (see <xref target="presented-credentials-array"/>).</t>
          <t>If "credential_sets" is absent, the OP treats all Credential
Queries as required, matching the DCQL default behaviour.</t>
          <t>Trusted authority handling:</t>
          <ul spacing="normal">
            <li>
              <t>When a Credential Query includes "trusted_authorities", the OP
<bcp14>MUST</bcp14> only accept a credential for that query if it chains to at
least one of the listed authorities.  Credentials that do not
chain to any listed authority <bcp14>MUST</bcp14> be treated as not satisfying
the query.</t>
            </li>
            <li>
              <t>If "trusted_authorities" is absent, the OP applies its own
issuer policy.</t>
            </li>
            <li>
              <t>Security requirements for dereferencing external trust list
references (e.g., "etsi_tl", "openid_federation") are given in
<xref target="trust-list-fetching"/>.</t>
            </li>
          </ul>
          <t>The following is a non-normative example requesting a PID from a
specific pair of trusted authorities using the OpenID Federation
authority type:</t>
          <sourcecode type="json"><![CDATA[
{
  "id_token": {
    "dcql_query": {
      "credentials": [
        {
          "id": "pid",
          "format": "dc+sd-jwt",
          "meta": {
            "vct_values": ["urn:eu.europa.ec.eudi:pid:1"]
          },
          "claims": [
            {"path": ["family_name"]},
            {"path": ["given_name"]},
            {"path": ["birth_date"]}
          ],
          "trusted_authorities": [
            {
              "type": "openid_federation",
              "values": [
                "https://pid.example.gov.se",
                "https://pid.example.gov.no"
              ]
            }
          ]
        }
      ]
    }
  }
}
]]></sourcecode>
          <t>The following is a non-normative example using an ETSI Trust List
to accept PID and EHIC credentials from any issuer recognised by
the list, without enumerating each issuer individually:</t>
          <sourcecode type="json"><![CDATA[
{
  "id_token": {
    "dcql_query": {
      "credentials": [
        {
          "id": "pid",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:pid:1"]},
          "claims": [
            {"path": ["family_name"]},
            {"path": ["birth_date"]}
          ],
          "trusted_authorities": [
            {
              "type": "etsi_tl",
              "values": ["https://trust.eu.example.org/tsl.xml"]
            }
          ]
        },
        {
          "id": "ehic",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:ehic:1"]},
          "claims": [
            {"path": ["ehic_number"]}
          ],
          "trusted_authorities": [
            {
              "type": "etsi_tl",
              "values": ["https://trust.eu.example.org/tsl.xml"]
            }
          ]
        }
      ]
    }
  }
}
]]></sourcecode>
          <t>The following is a non-normative example expressing "PID AND EHIC
together":</t>
          <sourcecode type="json"><![CDATA[
{
  "id_token": {
    "dcql_query": {
      "credentials": [
        {
          "id": "pid",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:pid:1"]},
          "claims": [{"path": ["family_name"]}]
        },
        {
          "id": "ehic",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:ehic:1"]},
          "claims": [{"path": ["ehic_number"]}]
        }
      ],
      "credential_sets": [
        {
          "id": "pid_and_ehic",
          "options": [["pid", "ehic"]]
        }
      ]
    }
  }
}
]]></sourcecode>
          <t>The following is a non-normative example expressing "PID OR EHIC"
using two alternatives.  Only the AND-group that was satisfied
appears in the corresponding Credential Set in the response:</t>
          <sourcecode type="json"><![CDATA[
{
  "id_token": {
    "dcql_query": {
      "credentials": [
        {
          "id": "pid",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:pid:1"]},
          "claims": [{"path": ["family_name"]}]
        },
        {
          "id": "ehic",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:ehic:1"]},
          "claims": [{"path": ["ehic_number"]}]
        }
      ],
      "credential_sets": [
        {
          "id": "pid_or_ehic",
          "options": [["pid"], ["ehic"]]
        }
      ]
    }
  }
}
]]></sourcecode>
          <t>The following is a non-normative example expressing "PID required,
EHIC nice-to-have" using two Credential Sets, one required and one
optional:</t>
          <sourcecode type="json"><![CDATA[
{
  "id_token": {
    "dcql_query": {
      "credentials": [
        {
          "id": "pid",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:pid:1"]},
          "claims": [{"path": ["family_name"]}]
        },
        {
          "id": "ehic",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:ehic:1"]},
          "claims": [{"path": ["ehic_number"]}]
        }
      ],
      "credential_sets": [
        {"id": "pid_required", "options": [["pid"]], "required": true},
        {"id": "ehic_optional", "options": [["ehic"]], "required": false}
      ]
    }
  }
}
]]></sourcecode>
          <t>The following is a non-normative example applying a value
constraint on "age_over_18":</t>
          <sourcecode type="json"><![CDATA[
{
  "id_token": {
    "dcql_query": {
      "credentials": [
        {
          "id": "pid",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:pid:1"]},
          "claims": [
            {"path": ["family_name"]},
            {"path": ["age_over_18"], "values": [true]}
          ]
        }
      ]
    }
  }
}
]]></sourcecode>
          <t>The following is a non-normative example requesting nested claims
from a PID credential:</t>
          <sourcecode type="json"><![CDATA[
{
  "id_token": {
    "dcql_query": {
      "credentials": [
        {
          "id": "pid",
          "format": "dc+sd-jwt",
          "meta": {"vct_values": ["urn:eu.europa.ec.eudi:pid:1"]},
          "claims": [
            {"path": ["family_name"]},
            {"path": ["address", "street_address"]},
            {"path": ["address", "country"], "values": ["SE"]}
          ]
        }
      ]
    }
  }
}
]]></sourcecode>
          <t>If the wallet presents multiple credentials matching a single
Credential Query (e.g., two EHICs for different family members),
the OP returns all of them in the corresponding array within the
Credential Set.  The RP is responsible for selecting the
appropriate credential by inspecting the returned claims (for
example, matching on name or date of birth against the
authenticated user's identity).</t>
        </section>
      </section>
      <section anchor="consuming-credential-claims">
        <name>Consuming Credential Claims</name>
        <t>The "presented_credentials" claim structure is defined in
<xref target="presented-credentials-claim"/>.  The RP <bcp14>MUST</bcp14> parse the claim according to that
definition.</t>
        <t>Credential authenticity, holder binding, revocation status, and
enforcement of any DCQL constraints supplied by the RP are the
responsibility of the OP (see <xref target="trust-model"/>); the RP does not
re-verify the credential.  The "verification" object and other
validation-related metadata returned by the OP (see
<xref target="credential-entry-object"/>) are informational: the RP <bcp14>MAY</bcp14> use
them as inputs to its own business logic, policy engine, or audit
records.  How the RP uses that metadata is a matter of local
policy and out of scope for this specification, except where
noted for "verification.crit" in <xref target="credential-entry-object"/>.</t>
        <t>Specifically, the RP <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Check for the presence of the "presented_credentials" claim.  If
the claim was requested as essential and is absent, the RP <bcp14>SHOULD</bcp14>
treat the authentication as failed.</t>
          </li>
          <li>
            <t>Parse the "presented_credentials" array and extract the
Credential Set objects relevant to its use case.</t>
          </li>
          <li>
            <t>Not assume that all requested scopes will be present in the
response; the user may have declined to present certain
credentials.</t>
          </li>
          <li>
            <t>Except for members listed in "verification.crit", ignore
unrecognised credential keys and unrecognised members within
Credential Entry objects.</t>
          </li>
        </ol>
      </section>
      <section anchor="trust-model">
        <name>Trust Model</name>
        <t>The RP places trust in the OP to have correctly verified the
presented credentials.  The RP does not interact with the wallet or
credential issuer directly.  The trust relationship between the RP
and the OP is established through standard OIDC mechanisms (client
registration, token validation, TLS).</t>
      </section>
      <section anchor="liability-and-accountability">
        <name>Liability and Accountability</name>
        <t>The bridge architecture shifts credential verification responsibility
from the RP to the OP.  This has implications for liability that
deployments <bcp14>MUST</bcp14> consider.</t>
        <t>The OP is the sole party that interacts with the wallet and verifies
credential authenticity, revocation status, and holder binding.  The
RP relies entirely on the OP's assertion that the credential claims
are valid.  If the OP incorrectly accepts a forged, expired, or
revoked credential, the RP has no independent means of detecting
this.</t>
        <t>Deployments <bcp14>SHOULD</bcp14> establish clear agreements between the OP operator
and RPs that address:</t>
        <ul spacing="normal">
          <li>
            <t>The OP's obligations regarding credential verification (e.g.,
which trust frameworks it enforces, whether it checks revocation).</t>
          </li>
          <li>
            <t>Liability allocation when the OP accepts a credential that turns
out to be invalid or fraudulent.</t>
          </li>
          <li>
            <t>The OP's obligations to communicate changes to its verification
policy that may affect RP authorization decisions.</t>
          </li>
          <li>
            <t>Audit and logging requirements that allow after-the-fact review of
verification decisions.</t>
          </li>
        </ul>
        <t>The "verification" metadata in the Credential Entry
(<xref target="credential-entry-object"/>) provides a technical mechanism for the OP
to communicate verification details to the RP.  However, the
"verification" object does not constitute a legal guarantee.  RPs
operating in regulated environments (e.g., healthcare, finance)
<bcp14>SHOULD</bcp14> require contractual assurances from the OP in addition to the
technical signals provided by this specification.</t>
      </section>
    </section>
    <section anchor="openid-provider-requirements">
      <name>OpenID Provider Requirements</name>
      <section anchor="presented-credentials-claim">
        <name>The presented_credentials Claim</name>
        <t>The following is a non-normative example of an OIDC ID Token
containing the "presented_credentials" claim with a credential set
containing two credentials:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://issuer.example.org",
  "sub": "user@example.org",
  "iat": 1722772800,
  "exp": 1722859200,
  "presented_credentials": [
    {
      "ehic": [
        {
          "type": ["https://credential.example.org/ehic/1.0"],
          "issuer": "https://svs.example.se",
          "valid_from": 1709251200,
          "valid_until": 1740787200,
          "verified_at": 1722772700,
          "verification": {
            "trust_status": "not_checked",
            "holder_binding": "key_binding"
          },
          "claims": {
            "name": "John Doe",
            "dob": "1990-01-01",
            "ehic_number": "1234567890"
          }
        }
      ],
      "pda1": [
        {
          "type": ["https://credential.example.org/pda1/1.0"],
          "issuer": "https://tax.example.se",
          "valid_from": 1709251200,
          "valid_until": 1740787200,
          "verified_at": 1722772700,
          "verification": {
            "trust_status": "not_checked",
            "holder_binding": "key_binding"
          },
          "claims": {
            "name": "John Doe",
            "dob": "1990-01-01",
            "pda1_number": "0987654321",
            "employer": {
              "name": "Example Corp AB",
              "country": "SE"
            }
          }
        }
      ]
    }
  ]
}
]]></sourcecode>
        <section anchor="presented-credentials-array">
          <name>The presented_credentials Array</name>
          <t>The "presented_credentials" claim is a top-level JSON array included
in the OIDC ID Token or UserInfo response.  It contains credential
data obtained via a credential presentation flow (e.g., OpenID4VP,
DIDComm), re-packaged for consumption by OIDC Relying Parties.</t>
          <t>The array contains one or more Credential Set objects.  Each
Credential Set is a JSON object whose members are either credential
entries (each key a scope value in scope-based mode, or a DCQL
Credential Query "id" in DCQL-based mode, with the value being a
JSON array of Credential Entry objects as defined in
<xref target="credential-entry-object"/>), or the reserved member described
below.</t>
          <t>The following reserved member <bcp14>MAY</bcp14> be present at the top level of a
Credential Set:</t>
          <dl>
            <dt>id</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> string.  When the RP used the DCQL-based mode
(<xref target="dcql-based-requests"/>) and supplied a "credential_sets" entry
with an "id", the OP <bcp14>MAY</bcp14> echo that "id" here to allow the RP to
identify which Credential Set was satisfied.  The value is
chosen by the RP and treated as opaque by the OP; for example,
an RP that asked for "PID or EHIC" via a "credential_sets" entry
with <tt>"id": "pid_or_ehic"</tt> receives the same string back on the
corresponding Credential Set in the response.  The reserved
name "id" <bcp14>MUST NOT</bcp14> be used as a credential type scope value
(i.e., as a key in "credential_presentations_supported") nor as
a DCQL Credential Query identifier.</t>
            </dd>
          </dl>
          <t>Within a Credential Set:</t>
          <ul spacing="normal">
            <li>
              <t>Each non-reserved key <bcp14>MUST</bcp14> be unique.</t>
            </li>
            <li>
              <t>Each non-reserved value (array) <bcp14>MUST</bcp14> contain at least one
Credential Entry.  Multiple entries indicate the wallet presented
more than one credential of that type.</t>
            </li>
          </ul>
          <t>The outer array <bcp14>MUST</bcp14> contain at least one Credential Set.  In most
deployments a single set is returned; multiple sets are possible
when the RP requested alternatives via "credential_sets" in the
DCQL-based mode (see <xref target="requesting-credential-claims"/>).  In that
case the OP <bcp14>MUST</bcp14> return one Credential Set object per satisfied
DCQL Credential Set entry, in the same order as they appeared in
the request.</t>
          <t>Additional members within a Credential Set <bcp14>MAY</bcp14> be present.
Implementations that do not recognise additional members <bcp14>MUST</bcp14>
ignore them.</t>
        </section>
        <section anchor="credential-entry-object">
          <name>Credential Entry Object</name>
          <t>Each Credential Entry object represents a single credential
presented during the presentation flow.  It <bcp14>MUST</bcp14> contain the
following members:</t>
          <dl>
            <dt>type</dt>
            <dd>
              <t>A non-empty JSON array of strings identifying the credential
type.  The array contents are credential-format specific:
</t>
              <ul spacing="normal">
                <li>
                  <t>For SD-JWT VC credentials the array contains a single element:
the Verifiable Credential Type (vct).</t>
                </li>
                <li>
                  <t>For ISO mdoc credentials the array contains a single element:
the docType.</t>
                </li>
                <li>
                  <t>For W3C Verifiable Credentials the array is the credential's
"type" array, preserving the order in the credential.</t>
                </li>
                <li>
                  <t>For other formats the array contains the type identifier(s)
that the credential format defines, preserving any ordering
defined by that format.  Single-value formats produce a
one-element array.</t>
                </li>
              </ul>
              <t>The OP <bcp14>MUST</bcp14> set this field based on the presented credential.</t>
            </dd>
            <dt>claims</dt>
            <dd>
              <t>A JSON object <xref target="RFC8259"/> containing the disclosed claims from
the credential.  Each key is a claim name and each value is the
claim value.  Claim names are determined by the credential type
and <bcp14>MUST</bcp14> be strings.  Claim values <bcp14>MAY</bcp14> be any valid JSON type.</t>
            </dd>
          </dl>
          <t>It <bcp14>MAY</bcp14> contain the following additional members:</t>
          <dl>
            <dt>issuer</dt>
            <dd>
              <t>A string identifying the entity that issued the credential.  For
SD-JWT VC credentials this is the "iss" claim value, for mdoc
credentials it is the issuing authority identifier.  The OP
<bcp14>SHOULD</bcp14> populate this field to allow the RP to make issuer-aware
authorization decisions.</t>
            </dd>
            <dt>namespace</dt>
            <dd>
              <t>A string identifying the credential-format-specific namespace to
which the disclosed claims belong.  This member is intended for
formats that scope claims by namespace, such as ISO mdoc, where
its value corresponds to the mdoc NameSpace identifier.  For
credential formats that do not use namespaces this member <bcp14>MUST
NOT</bcp14> be present.</t>
            </dd>
            <dt>valid_from</dt>
            <dd>
              <t>A NumericDate (as defined in <xref target="RFC7519"/>) indicating when the
credential became valid (i.e., the issuance or activation date).</t>
            </dd>
            <dt>valid_until</dt>
            <dd>
              <t>A NumericDate indicating when the credential expires.  The OP
<bcp14>MAY</bcp14> include credentials whose "valid_until" is in the past at
the time of presentation; in that case the OP <bcp14>MUST</bcp14> set the
"trust_status" member of the "verification" object to "expired"
(see <xref target="trust-status-registry"/>) so that the RP can act on the
signal.  Whether to accept an expired credential is outside the
scope of this specification and is governed by deployment
policy, the applicable trust framework, and any agreements
between the OP and the RP.</t>
            </dd>
            <dt>verified_at</dt>
            <dd>
              <t>A NumericDate indicating when the OP verified the credential
during the presentation flow.  This allows the RP to assess the
freshness of the verification relative to its own requirements.</t>
            </dd>
            <dt>verification</dt>
            <dd>
              <t>A JSON object providing metadata about the verification the OP
performed on the credential.  The OP <bcp14>MUST</bcp14> include the
"verification" object in every Credential Entry.  If the OP did
not perform a trust-status check, it <bcp14>MUST</bcp14> set "trust_status" to
"not_checked" (see <xref target="trust-status-registry"/>); other members of
"verification" <bcp14>MAY</bcp14> be omitted when the corresponding information
is unavailable.  This object <bcp14>MAY</bcp14> contain the following members:
</t>
              <dl>
                <dt>holder_binding</dt>
                <dd>
                  <t>A string describing the mechanism used to verify that the
presenter is the legitimate holder of the credential.  Values
are taken from the "Credential Holder Binding Methods"
registry defined in <xref target="holder-binding-registry"/>.</t>
                </dd>
                <dt>trust_status</dt>
                <dd>
                  <t>A string describing the OP's assessment of the credential's
trust status at the time of verification.  Values are taken
from the "Credential Trust Status Values" registry defined in
<xref target="trust-status-registry"/>.  If the OP did not perform a
trust-status check, the OP <bcp14>MUST</bcp14> set this member to
"not_checked" rather than omitting it.  If the OP performed a
check but the authoritative source returned no conclusive
answer, the OP <bcp14>MUST</bcp14> set this member to "unknown".</t>
                </dd>
                <dt>protected_headers</dt>
                <dd>
                  <t>A JSON object echoing selected verified protected-header
parameters from the underlying credential (e.g., JOSE "alg",
"kid", "x5c", or COSE protected headers for mdoc).  The OP
<bcp14>MUST</bcp14> populate this member exclusively from headers that were
covered by the credential's signature verification and <bcp14>MUST
NOT</bcp14> include unverified data.  The set of parameters included
is a deployment decision.</t>
                </dd>
                <dt>crit</dt>
                <dd>
                  <t>A JSON array of non-empty strings, each naming another member
of the same "verification" object that the RP <bcp14>MUST</bcp14> understand
to accept the credential.  Semantics are modelled after the
"crit" Header Parameter of Section 4.1.11 of RFC 7515.  If the
RP does not recognise every member listed in "crit", or does
not understand the semantics assigned to the listed member's
value, the RP <bcp14>MUST</bcp14> treat the credential as not satisfying the
request.  Values listed in "crit" <bcp14>MUST</bcp14> also appear as members
of the "verification" object; the string "crit" itself <bcp14>MUST
NOT</bcp14> appear in the array.  This mechanism allows the OP to
ensure that safety-critical signals (e.g., a "trust_status" of
"suspended") cannot be silently ignored.</t>
                </dd>
              </dl>
              <t>Additional members within the "verification" object <bcp14>MAY</bcp14> be
present.  Unless listed in "crit", implementations that do not
recognise additional members <bcp14>MUST</bcp14> ignore them.</t>
            </dd>
          </dl>
          <t>The following is a non-normative example of a Credential Entry
with nested claims and an extended "verification" object, as might
appear in a PID credential whose trust status the OP wants the RP
to acknowledge:</t>
          <sourcecode type="json"><![CDATA[
{
  "type": ["urn:eu.europa.ec.eudi:pid:1"],
  "issuer": "https://pid.example.gov.se",
  "valid_from": 1709251200,
  "valid_until": 1740787200,
  "verified_at": 1722772700,
  "verification": {
    "holder_binding": "key_binding",
    "trust_status": "suspended",
    "protected_headers": {
      "alg": "ES256",
      "kid": "pid-signer-2026"
    },
    "crit": ["trust_status"]
  },
  "claims": {
    "family_name": "Doe",
    "given_name": "John",
    "birth_date": "1990-01-01",
    "address": {
      "street_address": "123 Main St",
      "locality": "Stockholm",
      "postal_code": "11122",
      "country": "SE"
    },
    "age_over_18": true,
    "nationalities": [
      "SE",
      "NO"
    ]
  }
}
]]></sourcecode>
          <t>The following is a non-normative example of a Credential Entry for
a W3C Verifiable Credential where "type" is an array:</t>
          <sourcecode type="json"><![CDATA[
{
  "type": ["VerifiableCredential", "UniversityDegreeCredential"],
  "issuer": "https://university.example.edu",
  "verified_at": 1722772700,
  "verification": {
    "trust_status": "not_checked",
    "holder_binding": "key_binding"
  },
  "claims": {
    "degree": {
      "type": "BachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
]]></sourcecode>
          <t>Additional members <bcp14>MAY</bcp14> be present.  Implementations that do not
recognise additional members <bcp14>MUST</bcp14> ignore them.</t>
        </section>
      </section>
      <section anchor="discovery">
        <name>Discovery</name>
        <t>An OP that supports this bridge mechanism <bcp14>MUST</bcp14> include
"presented_credentials" in the "claims_supported" list in its
OpenID Connect Discovery <xref target="OpenID.Discovery"/> metadata document.</t>
        <t>The OP <bcp14>MUST</bcp14> include a "credential_presentations_supported" member
in its discovery metadata.  This is a JSON object where each key is
a scope value that the RP can use in the authorization request,
and each value is an object describing the credential type
configuration.  Each configuration object <bcp14>MUST</bcp14> contain at minimum:</t>
        <dl>
          <dt>format</dt>
          <dd>
            <t>A string identifying the credential format (e.g., "dc+sd-jwt",
"mso_mdoc").</t>
          </dd>
          <dt>type</dt>
          <dd>
            <t>A string identifying the credential type.  For SD-JWT VC
credentials this is the vct value; for mdoc credentials this is
the docType.</t>
          </dd>
        </dl>
        <t>The OP uses this metadata to translate the RP's scope request into
the correct credential query (e.g., a DCQL query with the
appropriate "vct_values" or "doctype_value") toward the wallet.
The Credential Entry "type" array in the response <bcp14>MUST</bcp14> be
populated from the presented credential itself and <bcp14>MUST</bcp14> contain
the "type" value declared in this mapping.</t>
        <t>An OP that additionally supports the DCQL-based request mode
(<xref target="dcql-based-requests"/>) <bcp14>MUST</bcp14> include a JSON boolean member
"dcql_query_supported" in its discovery metadata with the value
<tt>true</tt>.  An OP that does not support the DCQL-based mode <bcp14>MAY</bcp14> omit
this member or set it to <tt>false</tt>.</t>
        <t>The following is a non-normative example of an RP discovering the
OP's supported credential types:</t>
        <sourcecode type="http"><![CDATA[
GET /.well-known/openid-configuration HTTP/1.1
Host: op.example.org
]]></sourcecode>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "issuer": "https://op.example.org",
  "authorization_endpoint": "https://op.example.org/authorize",
  "token_endpoint": "https://op.example.org/token",
  "userinfo_endpoint": "https://op.example.org/userinfo",
  "jwks_uri": "https://op.example.org/jwks.json",
  "credential_presentations_supported": {
    "ehic": {
      "format": "dc+sd-jwt",
      "type": "urn:eu.europa.ec.eudi:ehic:1"
    },
    "pda1": {
      "format": "dc+sd-jwt",
      "type": "urn:eu.europa.ec.eudi:pda1:1"
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="authentication-flow">
        <name>Authentication Flow</name>
        <t>When the OP receives an OIDC Authentication Request that includes
credential type scopes (and optionally a "dcql_query" member inside
the OIDC "claims" request parameter for fine-grained control), it
<bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Validate that each credential type scope corresponds to a key
in the OP's "credential_presentations_supported" metadata.  The
OP <bcp14>MUST</bcp14> ignore any credential type scope that is not present in
its metadata.  If none of the requested credential scopes are
supported, the OP <bcp14>MUST</bcp14> return an OIDC error response.</t>
          </li>
          <li>
            <t>If the request includes a "dcql_query" member, validate it
against the profile defined in <xref target="dcql-based-requests"/>.  If the
OP does not support the DCQL-based mode, or the query does not
conform to the profile, the OP <bcp14>MUST</bcp14> return an OIDC error
response with error code "invalid_request".</t>
          </li>
          <li>
            <t>Initiate a credential presentation request to the user's wallet
for the supported credential types, using the presentation
protocol supported by the deployment.  When the RP supplied a
"dcql_query", the OP <bcp14>SHOULD</bcp14> translate it into the corresponding
presentation-protocol query (see <xref target="app-dcql-binding"/> for the
DCQL binding).</t>
          </li>
          <li>
            <t>Verify the presented credentials according to the applicable
trust framework, including any "trusted_authorities"
constraints from the RP's "dcql_query".</t>
          </li>
          <li>
            <t>Extract the disclosed claims from each verified credential.</t>
          </li>
          <li>
            <t>Construct the "presented_credentials" object as defined in
<xref target="presented-credentials-array"/>.</t>
          </li>
          <li>
            <t>Include the "presented_credentials" claim in the ID Token, the
UserInfo response, or both, depending on the OP's policy and
the size considerations described in <xref target="claim-set-size-limits"/>.</t>
          </li>
        </ol>
        <t>Common presentation protocols include OpenID4VP <xref target="OpenID4VP"/> and
DIDComm Present Proof.  The choice of protocol is a deployment
decision and does not affect the "presented_credentials" format
returned to the RP.</t>
      </section>
      <section anchor="credential-mapping">
        <name>Credential Mapping</name>
        <t>This section describes the protocol-agnostic mapping between the
OIDC-level request the RP sends to the OP and the credential data
the OP returns.  Concrete bindings to specific presentation
protocols are given in the appendices; the DCQL binding used with
OpenID4VP is defined in <xref target="app-dcql-binding"/>, and a placeholder for
a future DIDComm binding appears in <xref target="app-didcomm-binding"/>.</t>
        <t>The OP uses the "credential_presentations_supported" discovery
metadata to translate scopes into credential queries.  For each
credential type scope in the authorization request, the OP looks
up the corresponding key in "credential_presentations_supported"
and uses the "format" and "type" values to construct the
presentation-protocol query.  The same key is used both to
identify the credential in the query toward the wallet and as the
key in the "presented_credentials" response.</t>
        <t>The binding is:</t>
        <ul spacing="normal">
          <li>
            <t>The key in "credential_presentations_supported" (e.g., "ehic")
is the scope value the RP includes in the authorization request,
and <bcp14>MUST</bcp14> also be used as the Credential Query identifier in the
presentation-protocol query.</t>
          </li>
          <li>
            <t>The OP <bcp14>MUST</bcp14> use the "format" and "type" from the configuration
entry to populate the presentation-protocol query's format and
type-identifier parameters.</t>
          </li>
          <li>
            <t>The OP <bcp14>MUST</bcp14> use this same value as the key in the
"presented_credentials" response object.  For example, if the RP
requested scope "ehic", the resulting Credential Set entry <bcp14>MUST</bcp14>
be keyed as "ehic".</t>
          </li>
        </ul>
        <t>When the RP additionally supplied a "dcql_query" in the OIDC
"claims" request parameter (<xref target="dcql-based-requests"/>), the OP <bcp14>MUST</bcp14>
use the RP-chosen Credential Query "id" values as the keys in the
"presented_credentials" response.  Correlation to
"credential_presentations_supported" is by credential type, per
<xref target="dcql-based-requests"/>.</t>
        <t>Response construction rules:</t>
        <ul spacing="normal">
          <li>
            <t>The OP <bcp14>MUST NOT</bcp14> include claims that were not disclosed by the
wallet.</t>
          </li>
          <li>
            <t>The OP <bcp14>MUST NOT</bcp14> modify claim values during the mapping.</t>
          </li>
          <li>
            <t>When the RP used the DCQL-based mode and specified a non-empty
"claims" array for a Credential Query, the OP <bcp14>MUST</bcp14> include only
the requested claims in the corresponding Credential Entry's
"claims" object.  Even if the wallet discloses additional claims
(for example, because the credential format does not support
selective disclosure), the OP <bcp14>MUST NOT</bcp14> relay unrequested claims
to the RP.  This ensures data minimization regardless of the
underlying credential format's selective disclosure
capabilities.</t>
          </li>
          <li>
            <t>When the RP used scope-based mode, or the RP's Credential Query
omitted "claims", the OP includes the claim set configured for
that credential type by deployment policy.</t>
          </li>
        </ul>
        <t>Constraint enforcement rules:</t>
        <ul spacing="normal">
          <li>
            <t>If a claim query in the RP's "dcql_query" specifies a "values"
array and the disclosed claim value does not match any entry
(using the matching rules in <xref target="app-value-matching"/>), the
credential <bcp14>MUST</bcp14> be treated as not satisfying the query.</t>
          </li>
          <li>
            <t>If the RP's "dcql_query" specifies "trusted_authorities" for a
Credential Query and the presented credential does not chain to
at least one listed authority, the credential <bcp14>MUST</bcp14> be treated as
not satisfying the query.  Security requirements for
dereferencing external trust material are given in
<xref target="trust-list-fetching"/>.</t>
          </li>
          <li>
            <t>If the RP's "dcql_query" includes "credential_sets", the OP <bcp14>MUST</bcp14>
evaluate the alternation per Section 6.3 of <xref target="OpenID4VP"/>.  If
no required Credential Set can be satisfied, the OP <bcp14>MUST</bcp14> return
an OIDC error response (e.g., "access_denied").</t>
          </li>
        </ul>
        <t>Applicability of RP-supplied constraints:</t>
        <ul spacing="normal">
          <li>
            <t>In scope-based mode the RP cannot express selective-disclosure,
value, or issuer constraints on a per-request basis; the OP
applies its own policy.</t>
          </li>
          <li>
            <t>In DCQL-based mode the RP can express selective disclosure via
"path", value constraints via "values", and issuer or authority
constraints via "trusted_authorities", within the profile
defined in <xref target="dcql-based-requests"/>.</t>
          </li>
          <li>
            <t>Constraints not expressible in this profile (for example,
issuance date filters or compound field requirements) remain
deployment policy.  The OP <bcp14>SHOULD</bcp14> document such policies so that
RPs can anticipate the resulting behaviour.</t>
          </li>
        </ul>
        <t>The structure of the "presented_credentials" claim <bcp14>MUST</bcp14> be
independent of the credential presentation protocol used between
the OP and the wallet.  Whether the OP collected credentials via
OpenID4VP, DIDComm, or any other mechanism, the resulting claim
format <bcp14>MUST</bcp14> conform to this specification.  The RP <bcp14>MUST NOT</bcp14> need
to be aware of which presentation protocol was used.</t>
      </section>
    </section>
    <section anchor="limitations-and-considerations">
      <name>Limitations and Considerations</name>
      <section anchor="claim-set-size-limits">
        <name>Claim Set Size Limits</name>
        <t>OIDC ID Tokens are typically passed as JWTs <xref target="RFC7519"/> in HTTP headers
or URL fragments, which impose practical size limits.  Browser URL
length limits are commonly around 2048 bytes, and many HTTP servers
reject headers exceeding 8192 bytes.  When multiple credentials with
many disclosed claims are included in the "presented_credentials"
object, the resulting token may exceed these limits.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> consider the following mitigations:</t>
        <ul spacing="normal">
          <li>
            <t>Return credential claims via the UserInfo endpoint rather than
embedding them directly in the ID Token.</t>
          </li>
          <li>
            <t>Limit the number of disclosed claims to those requested by the
Relying Party via the OIDC "claims" parameter.</t>
          </li>
          <li>
            <t>Use token introspection or reference tokens where supported by the
deployment.</t>
          </li>
        </ul>
      </section>
      <section anchor="error-handling">
        <name>Error Handling</name>
        <t>The OP <bcp14>MUST</bcp14> handle the following failure scenarios gracefully:</t>
        <dl>
          <dt>Wallet rejection</dt>
          <dd>
            <t>The user declines to present credentials.  The OP <bcp14>MAY</bcp14> either omit
the "presented_credentials" claim entirely or return an OIDC error
response (e.g., "access_denied") depending on whether the
credential presentation was essential to the authentication.</t>
          </dd>
          <dt>Wallet timeout</dt>
          <dd>
            <t>The wallet does not respond within a reasonable time.  The OP
<bcp14>SHOULD</bcp14> treat this as equivalent to a rejection.</t>
          </dd>
          <dt>Invalid credentials</dt>
          <dd>
            <t>The wallet presents credentials that fail verification (expired,
revoked, untrusted issuer).  The OP <bcp14>MUST NOT</bcp14> include unverified
credential claims in the "presented_credentials" object.  The OP
<bcp14>MAY</bcp14> proceed without those credentials or fail the authentication.</t>
          </dd>
          <dt>Partial presentation</dt>
          <dd>
            <t>The wallet presents only a subset of the requested credentials.
The OP <bcp14>MUST</bcp14> include only the successfully verified credentials and
<bcp14>MUST NOT</bcp14> fabricate entries for missing credentials.</t>
          </dd>
        </dl>
      </section>
      <section anchor="scope-mapping">
        <name>Scope Mapping</name>
        <t>An OP <bcp14>MAY</bcp14> define custom OIDC scopes that map to specific credential
presentation requests.  For example, the scope "ehic" might trigger a
request for an EHIC credential with a predefined set of claims.</t>
        <t>When using scope-based mapping, the OP <bcp14>SHOULD</bcp14> document the mapping
between scopes and credential types in its discovery metadata or out-
of-band documentation.  The OP <bcp14>MUST</bcp14> ensure that the scope semantics
are stable and do not change unexpectedly for registered RPs.</t>
      </section>
      <section anchor="fresh-presentation">
        <name>Fresh Presentation Requirement</name>
        <t>Each OIDC Authentication Request that includes credential scopes
<bcp14>MUST</bcp14> result in a new credential presentation from the wallet.  The
OP <bcp14>MUST</bcp14> initiate a fresh presentation protocol transaction (e.g.,
OpenID4VP, DIDComm) for every authentication request and <bcp14>MUST NOT</bcp14>
reuse credentials from a previous presentation.</t>
        <t>The OP <bcp14>MUST NOT</bcp14> store, cache, or persist credential data beyond the
scope of the current authentication transaction.  Once the OP has
constructed the ID Token or UserInfo response and delivered it to
the RP, it <bcp14>MUST</bcp14> discard the credential claims.  This ensures that
credential freshness is guaranteed and that the OP does not become
an unnecessary repository of sensitive personal data.</t>
      </section>
      <section anchor="scope-of-this-specification">
        <name>Scope of This Specification</name>
        <t>This specification defines the data format of the
"presented_credentials" claim, the mechanism for requesting and
returning credential claims via OIDC, and the responsibilities of the
OP and RP in that exchange.  The following aspects are explicitly out
of scope:</t>
        <ul spacing="normal">
          <li>
            <t><em>Credential validation policy.</em> This specification does not define
which issuers to trust, which revocation mechanisms to check, or
what trust frameworks to apply.  These decisions are deployment-
specific and determined by the OP operator.</t>
          </li>
          <li>
            <t><em>Business logic and authorization decisions.</em> How the RP
interprets the received claims -- for example, whether an EHIC
credential grants access to a healthcare service, or whether a
PDA1 is sufficient for a given transaction -- is entirely the RP's
responsibility and outside this specification.</t>
          </li>
          <li>
            <t><em>Credential issuance.</em> This specification deals only with
presentation of existing credentials, not with the issuance of new
credentials (which is covered by OpenID4VCI).</t>
          </li>
          <li>
            <t><em>Wallet implementation.</em> The interaction between the OP and the
wallet uses a presentation protocol such as OpenID4VP or DIDComm.
This specification does not mandate a specific protocol and does
not impose additional requirements on wallet implementations.</t>
          </li>
          <li>
            <t><em>User consent and identity matching.</em> How the OP associates a
credential presentation with an OIDC subject identifier, and how
user consent is obtained, are implementation details left to the
OP.</t>
          </li>
        </ul>
        <t>In summary, this specification provides the plumbing for transporting
verified credential claims through OIDC.  Everything above that layer
-- trust decisions, access control, and business rules -- is the domain
of the deploying parties.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="credential-replay">
        <name>Credential Replay</name>
        <t>The OP <bcp14>MUST</bcp14> ensure that credential presentations are bound to the
current authentication session.  The OP <bcp14>SHOULD</bcp14> use nonces in the
OpenID4VP request to prevent replay of previously captured VP Tokens.</t>
        <t>The RP <bcp14>MUST</bcp14> validate standard JWT claims ("iat", "exp", "nonce") in
the ID Token to ensure freshness of the "presented_credentials"
claim.</t>
      </section>
      <section anchor="token-leakage">
        <name>Token Leakage</name>
        <t>ID Tokens containing "presented_credentials" may carry sensitive
personal data (e.g., national ID numbers, health information).
Implementations <bcp14>MUST</bcp14> use TLS for all token transmissions.  The OP
<bcp14>SHOULD</bcp14> prefer delivering credential claims via the UserInfo endpoint
(which uses a back-channel request) rather than embedding them in the
ID Token (which may be exposed in browser history or logs).</t>
      </section>
      <section anchor="claim-injection">
        <name>Claim Injection</name>
        <t>The OP <bcp14>MUST NOT</bcp14> allow external parties to inject or modify claims
within the "presented_credentials" object.  The OP <bcp14>MUST</bcp14> populate this
claim exclusively from verified credential presentations.  The ID
Token <bcp14>MUST</bcp14> be signed by the OP to protect integrity.</t>
      </section>
      <section anchor="trust-list-fetching">
        <name>Trust Authority Dereferencing</name>
        <t>When the OP dereferences external references contained in a
"trusted_authorities" entry supplied via the RP's "dcql_query"
(such as an "etsi_tl" trust list URI or an "openid_federation"
entity identifier), it <bcp14>MUST</bcp14> enforce the following safeguards:</t>
        <ul spacing="normal">
          <li>
            <t>The OP <bcp14>MUST</bcp14> only fetch external trust material over HTTPS.</t>
          </li>
          <li>
            <t>The OP <bcp14>MUST NOT</bcp14> dereference arbitrary URIs provided by an RP.
The OP <bcp14>MUST</bcp14> restrict which URIs it is willing to fetch to
prevent Server-Side Request Forgery (SSRF).  The mechanism for
this restriction (e.g., an allowlist, domain policy) is a
deployment decision and outside the scope of this specification.</t>
          </li>
          <li>
            <t>The OP <bcp14>MUST</bcp14> impose size limits on fetched documents to prevent
resource exhaustion.</t>
          </li>
          <li>
            <t>The OP <bcp14>SHOULD</bcp14> cache dereferenced trust material and enforce a
minimum refresh interval to limit the impact of a compromised or
unavailable remote trust material source.</t>
          </li>
          <li>
            <t>If an external trust reference cannot be fetched or parsed, the
OP <bcp14>MUST</bcp14> treat that "trusted_authorities" entry as contributing
no authorities.  Other entries in the same "trusted_authorities"
array that were successfully resolved still apply.  The OP <bcp14>MUST
NOT</bcp14> treat an unresolved entry as matching all authorities.</t>
          </li>
        </ul>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>The bridge architecture introduces the OP as a party that observes
all credential claims presented by the user.  This creates a
correlation point.  Deployments <bcp14>SHOULD</bcp14> consider the following:</t>
        <ul spacing="normal">
          <li>
            <t>The OP <bcp14>SHOULD</bcp14> request only the minimum claims necessary to satisfy
the RP's request (selective disclosure).</t>
          </li>
          <li>
            <t>The OP <bcp14>SHOULD NOT</bcp14> log or persist credential claims beyond what is
necessary for the authentication session.</t>
          </li>
          <li>
            <t>RPs <bcp14>SHOULD</bcp14> be aware that repeated presentations of the same
credential claims across sessions may enable correlation by the
OP.</t>
          </li>
          <li>
            <t>Where possible, deployments <bcp14>SHOULD</bcp14> use pairwise subject
identifiers to limit cross-RP correlation.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The claim name "presented_credentials" was chosen to be protocol-
agnostic, clearly describing the content (credentials that were
presented) without implying a dependency on any particular
presentation protocol or namespace.</t>
      <section anchor="json-web-token-claims-registration">
        <name>JSON Web Token Claims Registration</name>
        <t>This specification requests registration of the following claim in
the IANA "JSON Web Token Claims" registry:</t>
        <dl>
          <dt>Claim Name</dt>
          <dd>
            <t>"presented_credentials"</t>
          </dd>
          <dt>Claim Description</dt>
          <dd>
            <t>Digital credential claims obtained via a credential presentation
flow, structured for consumption by OIDC Relying Parties.</t>
          </dd>
          <dt>Change Controller</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s)</dt>
          <dd>
            <t><xref target="presented-credentials-array"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="openid-connect-discovery-metadata-registration">
        <name>OpenID Connect Discovery Metadata Registration</name>
        <t>This specification requests registration of the following metadata
parameters:</t>
        <dl>
          <dt>Metadata Name</dt>
          <dd>
            <t>"credential_presentations_supported"</t>
          </dd>
          <dt>Metadata Description</dt>
          <dd>
            <t>A JSON object describing the credential types the OP can collect
via credential presentation and expose as OIDC claims.</t>
          </dd>
          <dt>Change Controller</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s)</dt>
          <dd>
            <t><xref target="discovery"/> of this document</t>
          </dd>
          <dt>Metadata Name</dt>
          <dd>
            <t>"dcql_query_supported"</t>
          </dd>
          <dt>Metadata Description</dt>
          <dd>
            <t>A JSON boolean indicating whether the OP accepts a "dcql_query"
member inside the OIDC "claims" request parameter as defined in
the DCQL-based request mode.</t>
          </dd>
          <dt>Change Controller</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s)</dt>
          <dd>
            <t><xref target="discovery"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="trust-status-registry">
        <name>Credential Trust Status Values Registry</name>
        <t>This specification establishes the "Credential Trust Status Values"
registry.  The registration policy is "Specification Required" as
defined in Section 4.6 of <xref target="RFC8126"/>.</t>
        <t>Each entry in the registry contains the following fields:</t>
        <dl>
          <dt>Value</dt>
          <dd>
            <t>A short string used as the value of the "trust_status" member of
the Credential Entry "verification" object.</t>
          </dd>
          <dt>Description</dt>
          <dd>
            <t>A brief description of the trust-status semantics.</t>
          </dd>
          <dt>Change Controller</dt>
          <dd>
            <t>The entity responsible for the registration.</t>
          </dd>
          <dt>Specification Document(s)</dt>
          <dd>
            <t>Reference to the specification defining the value.</t>
          </dd>
        </dl>
        <t>The initial contents of the registry are:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">not_checked</td>
              <td align="left">The OP performed no trust-status check for this credential</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">unknown</td>
              <td align="left">The OP performed a trust-status check but the authoritative source returned no conclusive answer (e.g., ETSI Token Status List "unknown" state)</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">valid</td>
              <td align="left">The credential's trust status was checked and is currently valid</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">suspended</td>
              <td align="left">The credential is temporarily suspended by its issuer or trust framework</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">revoked</td>
              <td align="left">The credential has been revoked by its issuer or trust framework</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">expired</td>
              <td align="left">The credential has expired according to its own validity period</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">invalid</td>
              <td align="left">The credential failed one or more verification checks</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="holder-binding-registry">
        <name>Credential Holder Binding Methods Registry</name>
        <t>This specification establishes the "Credential Holder Binding
Methods" registry.  The registration policy is "Specification
Required" as defined in Section 4.6 of <xref target="RFC8126"/>.</t>
        <t>Each entry in the registry contains the following fields:</t>
        <dl>
          <dt>Method Name</dt>
          <dd>
            <t>A short string identifying the holder binding method.</t>
          </dd>
          <dt>Description</dt>
          <dd>
            <t>A brief description of the method.</t>
          </dd>
          <dt>Change Controller</dt>
          <dd>
            <t>The entity responsible for the registration.</t>
          </dd>
          <dt>Specification Document(s)</dt>
          <dd>
            <t>Reference to the specification defining the method.</t>
          </dd>
        </dl>
        <t>The initial contents of the registry are:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Method Name</th>
              <th align="left">Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">key_binding</td>
              <td align="left">Cryptographic proof of possession of a private key bound to the credential</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">biometric</td>
              <td align="left">Biometric verification of the presenter against data bound to the credential</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
            <tr>
              <td align="left">pin</td>
              <td align="left">Verification of a PIN or passcode known to the credential holder</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="credential-entry-object"/> of this document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="OpenID.Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</title>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="B. de" surname="Medeiros" fullname="B. de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore" fullname="C. Mortimore">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
        <reference anchor="OpenID.Discovery" target="https://openid.net/specs/openid-connect-discovery-1_0.html">
          <front>
            <title>OpenID Connect Discovery 1.0</title>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="E." surname="Jay" fullname="E. Jay">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
        <reference anchor="OpenID4VP" target="https://openid.net/specs/openid-4-verifiable-presentations-1_0.html">
          <front>
            <title>OpenID for Verifiable Presentations (OpenID4VP) 1.0</title>
            <author initials="O." surname="Terbu" fullname="O. Terbu">
              <organization/>
            </author>
            <author initials="T." surname="Lodderstedt" fullname="T. Lodderstedt">
              <organization/>
            </author>
            <author initials="K." surname="Yasuda" fullname="K. Yasuda">
              <organization/>
            </author>
            <author initials="T." surname="Looker" fullname="T. Looker">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="SD-JWT.VC" target="https://www.ietf.org/archive/id/draft-ietf-oauth-sd-jwt-vc-05.html">
          <front>
            <title>SD-JWT-based Verifiable Credentials (SD-JWT VC)</title>
            <author initials="O." surname="Terbu" fullname="O. Terbu">
              <organization/>
            </author>
            <author initials="D." surname="Fett" fullname="D. Fett">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="ISO.18013-5" target="https://www.iso.org/standard/69084.html">
          <front>
            <title>Personal identification -- ISO-compliant driving licence -- Part 5: Mobile driving licence (mDL) application</title>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1446?>

<section anchor="app-dcql-binding">
      <name>DCQL Binding</name>
      <t>This appendix defines the concrete binding between the OIDC-level
request defined in <xref target="requesting-credential-claims"/> and DCQL as
specified in Section 6 of <xref target="OpenID4VP"/>.  Deployments that use
OpenID4VP as the presentation protocol between the OP and the
wallet <bcp14>MUST</bcp14> follow this binding; other bindings are out of scope
of this appendix.</t>
      <section anchor="scope-based-mode">
        <name>Scope-Based Mode</name>
        <t>For each credential type scope in the authorization request, the
OP constructs one DCQL Credential Query as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The scope value is used verbatim as the DCQL Credential Query
"id".</t>
          </li>
          <li>
            <t>The "format" is taken from the corresponding entry in
"credential_presentations_supported".</t>
          </li>
          <li>
            <t>The "meta" member is populated from the entry's "type": for
the <tt>dc+sd-jwt</tt> format the OP sets <tt>meta.vct_values</tt> to a JSON
array containing the "type" string; for the <tt>mso_mdoc</tt> format
the OP sets <tt>meta.doctype_value</tt> to the "type" string.</t>
          </li>
          <li>
            <t>The "claims" array is either omitted or set to the deployment's
pre-registered claim set for the credential type.</t>
          </li>
        </ul>
        <t>For example, given the discovery metadata:</t>
        <sourcecode type="json"><![CDATA[
{
  "credential_presentations_supported": {
    "ehic": {
      "format": "dc+sd-jwt",
      "type": "urn:eu.europa.ec.eudi:ehic:1"
    },
    "pda1": {
      "format": "dc+sd-jwt",
      "type": "urn:eu.europa.ec.eudi:pda1:1"
    }
  }
}
]]></sourcecode>
        <t>and an RP request with <tt>scope=openid ehic pda1</tt>, the OP constructs
the following DCQL query:</t>
        <sourcecode type="json"><![CDATA[
{
  "credentials": [
    {
      "id": "ehic",
      "format": "dc+sd-jwt",
      "meta": {
        "vct_values": ["urn:eu.europa.ec.eudi:ehic:1"]
      }
    },
    {
      "id": "pda1",
      "format": "dc+sd-jwt",
      "meta": {
        "vct_values": ["urn:eu.europa.ec.eudi:pda1:1"]
      }
    }
  ]
}
]]></sourcecode>
        <t>The wallet returns a VP Token keyed by these same "id" values,
allowing the OP to map presented credentials back to the
corresponding scope.</t>
      </section>
      <section anchor="dcql-based-mode">
        <name>DCQL-Based Mode</name>
        <t>When the RP supplied a "dcql_query" member in the OIDC "claims"
request parameter, the OP <bcp14>MUST</bcp14> use that query as the DCQL query
sent to the wallet, subject to the following:</t>
        <ul spacing="normal">
          <li>
            <t>RP-supplied Credential Query "id" values are forwarded to the
wallet unchanged.</t>
          </li>
          <li>
            <t>Each Credential Query <bcp14>MUST</bcp14> satisfy the type and scope checks
of <xref target="dcql-based-requests"/>; otherwise the OP <bcp14>MUST</bcp14> reject the
request.</t>
          </li>
          <li>
            <t>The OP <bcp14>MUST</bcp14> augment the query with Credential Queries derived
from any requested scopes not already covered, using the
scope-based rules above, and <bcp14>MUST NOT</bcp14> reuse an "id" supplied
by the RP.</t>
          </li>
          <li>
            <t>The OP <bcp14>MUST NOT</bcp14> relax any constraint expressed by the RP
(e.g., <bcp14>MUST NOT</bcp14> drop "trusted_authorities" or widen "values").</t>
          </li>
        </ul>
      </section>
      <section anchor="response-mapping">
        <name>Response Mapping</name>
        <t>For each satisfied Credential Query, the OP populates a Credential
Entry as defined in <xref target="credential-entry-object"/>.  The DCQL
Credential Query "id" becomes the key in the enclosing Credential
Set in the "presented_credentials" response.</t>
        <t>When the RP's "dcql_query" contains "credential_sets", the OP
returns one Credential Set object in the "presented_credentials"
array for each satisfied entry in "credential_sets", populated
with the Credential Entries from the matched AND-group.  The
<bcp14>OPTIONAL</bcp14> "id" of each Credential Set entry <bcp14>MAY</bcp14> be echoed in the
response via the reserved "id" member described in
<xref target="presented-credentials-array"/>.</t>
      </section>
      <section anchor="value-constraint-propagation">
        <name>Value Constraint Propagation</name>
        <t>DCQL value matching is defined as best-effort: the wallet <bcp14>SHOULD</bcp14>
filter on the constraint but is not required to do so (see Section
6.4.1 of <xref target="OpenID4VP"/>).  Consequently, the OP <bcp14>MUST NOT</bcp14> rely on
the wallet to enforce "values" constraints and <bcp14>MUST</bcp14> always
validate disclosed claim values against the RP's "values"
requirements after receiving the presentation.  Propagating the
constraint to the wallet remains useful as a privacy optimisation,
because it allows the wallet to avoid disclosing credentials that
would not satisfy the request.</t>
      </section>
    </section>
    <section anchor="app-didcomm-binding">
      <name>DIDComm Binding</name>
      <t>This appendix is reserved for a future DIDComm Present Proof
binding.  Its inclusion is intended to make the extension pattern
explicit: bindings for additional presentation protocols may be
added here without changing the protocol-agnostic contract in
<xref target="credential-mapping"/>.</t>
    </section>
    <section anchor="app-value-matching">
      <name>Claim Value Matching</name>
      <t>Several normative rules in this specification require comparing a
disclosed claim value against entries in a "values" array.  A
disclosed value matches an entry if and only if both are of the
same JSON type (as defined in <xref target="RFC8259"/>) and are equal under the
following rules:</t>
      <ul spacing="normal">
        <li>
          <t>Strings are compared as sequences of Unicode code points.  No
Unicode normalization, case folding, or whitespace trimming is
applied.</t>
        </li>
        <li>
          <t>Numbers are compared by mathematical value, independent of their
lexical representation (for example, <tt>1</tt>, <tt>1.0</tt>, and <tt>1e0</tt> all
match).</t>
        </li>
        <li>
          <t>Boolean values match only the identical boolean, and the null
value matches only null.</t>
        </li>
      </ul>
      <t>Values of different JSON types never match (for example, the string
"1" does not match the number 1).  Objects and arrays are not
expected in "values" entries; if present, they <bcp14>MUST</bcp14> be compared
structurally, with member and element equality determined
recursively by these same rules and object member order treated as
insignificant.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank Patrick Amrein (Ubique) for reviews,
comments, and contributions to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19aXPbVpbo9/srMExVt+QmaUuxHUeZnmlHsifKeFFbSlJT
UykZJC8pxCDABkDJbMf9W95veb/snfUuAEjJ6WRq3kynpqYtELjLueeefRmN
RqbJmtweJYPjys5s0WRpnpxVtoZ/pk1WFklTJq9PT46T4zzNlnXydZXNFnZg
0smkstfxd/qqvjNNG7soq81RkhXz0phZOS3SJUw2q9J5M6qvbVHXZTGauiFG
ZTabjib0/ejBoanXk2VW17COZrOCD0+fXTw32ao6SppqXTeHDx58CW+llU2P
ktpOzU1ZvVtU5Xp1lFx8fWKK9XJiqyMzg4UcmWlZwLbqdU1fWwOr/9y8sxv4
aHZkklFybatsnqWT3CZ+STX+8npli9OT5LgsCjtt/JOH35/hH7NskTUAgPZX
CAzejDHpurkqK5zHJPDffJ3nDIyX6aJY18m5QIN+LatFWmR/pRM4Ss6/e/Xs
gp7bZZrlR8kyra//VK8L24xr2x3xhc3mybflVbp1wKwq6+R5uS5m9CQcO4eP
f/pTjW+M4avu6N+WNk/epMWiXpafOPZP8GkwtCnKagkvXcPhJMmb58dfPDr4
Uv755ODwsf7z8BE9ZZCPj8uK3k8SRd34dBJ8ITkYPxjQSw7u9N8o4U28Gifn
6btsua7S1i/fjgF/01luN60fXo5h64WtW4+/Hiczm7yEg8d9tX48Hicvy6rJ
lrAk+okwMXlVXlvEzOTwwcFD3kpaLWxzlFw1zao+un+/hC1lszGc8P16Zae1
PBhNeY/wv5UdHVw+GF81y9zD5iSrpzA2XLldAHJv/ddB6Rk8Tje/Kghmuosu
HOBa9gJgXlbJ9/6Sh3SuTvbct/u3weX1OLmw1WTdenwxTl6Us5mt6sbOmtaP
/z5O/iOt17M2JOmj8p2tAuAcPjj8NJg8HHnaNVqF2/LAMUiEg/t2fjL69oeL
8ffHMaj48WiS1nYWAsvTeQAVv5R8f7z/C8B0Mk6e26a5y35vbm7GmW3mSC7u
p9X0CtZ+P5vdZwaCv4xKnHtUz0Y/3TSj6+nowSPFhdPz1+ODJw8OPh89ird4
BidUFkCvM9rRPJsyqxuN8BtAsOUqz9KiAT6VXWfFIsmzqS2mFl84S6smeQR4
Xk4ygEr7jb3lyYv9JF3BADxoP3xgO0c41/3TZ8cxHA62w6EuCQx1kwJprWb3
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

-->

</rfc>
