<?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.35 (Ruby 4.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nyakiso-hcap-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="HCAP">HTTP Compliance Authorization Protocol (HCAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-nyakiso-hcap-00"/>
    <author initials="L." surname="Nyakiso" fullname="Lawrance Nyakiso">
      <organization>RuleMesh</organization>
      <address>
        <postal>
          <city>Stockholm</city>
          <country>Sweden</country>
        </postal>
        <email>lawrance.ny@rulemesh.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="20"/>
    <area>Applications and Real-Time</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>compliance</keyword>
    <keyword>authorization</keyword>
    <keyword>HTTP authentication</keyword>
    <keyword>JWT</keyword>
    <keyword>verifiable credentials</keyword>
    <keyword>trust registry</keyword>
    <abstract>
      <?line 76?>

<t>This document specifies the HTTP Compliance Authorization Protocol (HCAP), an extension to the HTTP authentication framework that allows resource providers to require demonstrable evidence of caller compliance with declared policies before granting access to protected resources. Callers obtain signed compliance credentials from a compliance registry by presenting evidence of their controls. Credentials are conveyed at the HTTP layer and verified offline by the provider.</t>
      <t>HCAP operates alongside existing authentication schemes (OAuth 2.0, mTLS) and does not replace identity authentication. It addresses the distinct question of "does the caller meet declared policy requirements" rather than "who is the caller".</t>
    </abstract>
  </front>
  <middle>
    <?line 82?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>Compliance verification between API providers and API callers is today conducted almost entirely out-of-band: vendor questionnaires, bilateral Data Processing Agreements, emailed SOC 2 reports, annual audits, and security reviews. Verification happens at contract time, not at request time. The evidence is prose, not machine-readable. The result is that every API integration requiring regulatory or contractual compliance carries substantial per-pair overhead, and a provider has no runtime signal that a specific caller actually meets the policies they claimed to meet when the relationship was established.</t>
        <t>HCAP moves compliance verification to the HTTP layer. A provider declares, per endpoint, what ruleset a caller MUST satisfy. A caller obtains a signed Compliance Credential from a Compliance Registry by presenting evidence of the required controls. The caller then presents the credential on subsequent requests. The provider verifies the credential's signature using the Registry's published trust anchors and checks that the credential's claims satisfy the declared ruleset.</t>
        <t>This allows compliance to be:</t>
        <ul spacing="normal">
          <li>
            <t>Declarative: Providers publish their requirements in a machine-readable form rather than distributing prose policies.</t>
          </li>
          <li>
            <t>Portable: A caller's credential is valid with any provider that trusts the same Registry and ruleset.</t>
          </li>
          <li>
            <t>Runtime-verifiable: Verification occurs on each request, not once at contract signing.</t>
          </li>
          <li>
            <t>Offline-verifiable: Trust anchor distribution allows signature verification without per-request calls to the Registry.</t>
          </li>
        </ul>
      </section>
      <section anchor="non-goals">
        <name>Non-Goals</name>
        <t>This specification does not:</t>
        <ul spacing="normal">
          <li>
            <t>Define what constitutes acceptable evidence for any specific ruleset.</t>
          </li>
          <li>
            <t>Mandate a specific evidence schema, compliance ontology, or legal framework.</t>
          </li>
          <li>
            <t>Govern liability, enforceability, or regulator recognition of Compliance Credentials.</t>
          </li>
          <li>
            <t>Replace identity authentication. A caller MUST still authenticate using an existing scheme.</t>
          </li>
        </ul>
      </section>
      <section anchor="relationship-to-existing-specifications">
        <name>Relationship to Existing Specifications</name>
        <t>HCAP extends <xref target="RFC9110"/> by defining a new HTTP Authentication Scheme. It reuses <xref target="RFC7519"/> JSON Web Tokens for credential encoding, following <xref target="RFC8725"/> best current practice. Credential semantics align with the W3C Verifiable Credentials Data Model <xref target="VC-DATA-MODEL"/>. Trust anchors are published as JSON Web Key Sets <xref target="RFC7517"/>. Well-known URIs follow <xref target="RFC8615"/>.</t>
        <t>HCAP is complementary to OAuth 2.0 <xref target="RFC6749"/> and Rich Authorization Requests <xref target="RFC9396"/>, which govern what a principal is authorized to do. HCAP governs what policy requirements the principal's operating environment satisfies.</t>
      </section>
      <section anchor="scope-and-governance">
        <name>Protocol Scope and Registry Governance</name>
        <t>This document specifies the wire protocol, data formats, and verification procedures for HCAP. It deliberately does not address the operational, procedural, or governance requirements for entities operating as Compliance Registries.</t>
        <t>How a Registry establishes the truth of the facts it attests to is a governance problem of substantially different character from the protocol problem, and conflating the two would impair adoption of either. Registry operational requirements are expected to be addressed in separate documents, which may take the form of industry operational baselines (analogous to the CA/Browser Forum Baseline Requirements <xref target="CABF-BR"/>), regulator-recognized accreditation schemes (such as the eIDAS qualified trust service provider framework <xref target="EIDAS"/>), or domain-specific profiles.</t>
        <t>Implementations that adopt this specification remain free to accept credentials from any Registry whose trust anchors they choose to trust, and to apply any additional operational criteria beyond those defined here.</t>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      <dl>
        <dt>Caller:</dt>
        <dd>
          <t>The HTTP client attempting to access a protected resource.</t>
        </dd>
        <dt>Provider:</dt>
        <dd>
          <t>The HTTP origin server that protects the resource.</t>
        </dd>
        <dt>Registry:</dt>
        <dd>
          <t>A trust service that issues Compliance Credentials on behalf of Callers. This specification does not privilege any particular Registry operator. Any entity whose signing keys are published as a trust anchor (<xref target="ruleset-discovery"/>) and whose credentials meet the verification requirements of <xref target="verification-procedure"/> MAY operate as a Registry. Registry operational obligations are out of scope for this document (<xref target="scope-and-governance"/>).</t>
        </dd>
        <dt>Ruleset:</dt>
        <dd>
          <t>A named, versioned set of compliance requirements, identified by a URI and described by a Ruleset Manifest (<xref target="ruleset-manifest"/>).</t>
        </dd>
        <dt>Claim:</dt>
        <dd>
          <t>An individual requirement within a Ruleset, identified by a short string (e.g., <tt>art32</tt>, <tt>dpa</tt>, <tt>encryption_at_rest</tt>).</t>
        </dd>
        <dt>Compliance Credential:</dt>
        <dd>
          <t>A signed attestation by a Registry that a specific Caller satisfies a specific set of Claims against a specific Ruleset at a specific time.</t>
        </dd>
        <dt>Presentation:</dt>
        <dd>
          <t>A Compliance Credential as it appears on an HTTP request, transmitted via the <tt>Compliance-Presentation</tt> header (<xref target="credential-presentation"/>).</t>
        </dd>
        <dt>Trust Anchor:</dt>
        <dd>
          <t>A Registry's public signing key, published as a JSON Web Key Set and retrievable via a <tt>jwks_uri</tt>.</t>
        </dd>
        <dt>Evidence Tier:</dt>
        <dd>
          <t>A Registry-declared assurance level for the evidence underlying a Compliance Credential. Defined tiers are discussed in <xref target="claim-set"/>.</t>
        </dd>
      </dl>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>The HCAP flow has three participants: the Caller, the Registry, and the Provider. A typical interaction proceeds as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>The Caller sends a request to the Provider's protected resource.</t>
        </li>
        <li>
          <t>The Provider responds with <tt>401 Unauthorized</tt> and a <tt>WWW-Authenticate: Compliance</tt> challenge naming the required Ruleset and Claims.</t>
        </li>
        <li>
          <t>The Caller obtains the Ruleset Manifest (typically cached from a prior interaction) and presents evidence of the required controls to the Registry.</t>
        </li>
        <li>
          <t>The Registry issues a signed Compliance Credential to the Caller.</t>
        </li>
        <li>
          <t>The Caller retries the original request with the credential in the <tt>Compliance-Presentation</tt> header.</t>
        </li>
        <li>
          <t>The Provider verifies the credential's signature using cached trust anchors and checks that its Claims satisfy the declared Ruleset.</t>
        </li>
        <li>
          <t>The Provider serves the protected resource.</t>
        </li>
      </ol>
      <t>Steps 3 and 4 are typically executed ahead of time and the resulting credential is reused until it expires. The Caller SHOULD NOT perform a Registry round-trip on every protected request.</t>
    </section>
    <section anchor="ruleset-discovery">
      <name>Ruleset Discovery</name>
      <section anchor="well-known-uri">
        <name>Well-Known URI</name>
        <t>A Provider implementing HCAP SHOULD publish a Ruleset Manifest at the well-known URI <tt>/.well-known/compliance</tt>, registered per <xref target="RFC8615"/>. A Provider MAY publish multiple manifests at distinct paths under this namespace, e.g., <tt>/.well-known/compliance/customers</tt>.</t>
        <t>A Provider MAY reference a specific manifest from a challenge using the <tt>ruleset</tt> parameter (<xref target="parameters"/>). When no explicit URI is given, the Caller resolves the manifest from the challenge's <tt>realm</tt> and the default well-known path.</t>
      </section>
      <section anchor="ruleset-manifest">
        <name>Ruleset Manifest</name>
        <t>A Ruleset Manifest is a JSON document with the media type <tt>application/compliance-manifest+json</tt>. The manifest MUST contain the following fields:</t>
        <ul spacing="normal">
          <li>
            <t><tt>ruleset_id</tt>: URI, the canonical identifier for this ruleset.</t>
          </li>
          <li>
            <t><tt>version</tt>: Semantic version string.</t>
          </li>
          <li>
            <t><tt>authority</tt>: URI or DID identifying the issuer of the ruleset definition (distinct from the Registry that signs credentials against it).</t>
          </li>
          <li>
            <t><tt>claims</tt>: An array of Claim definitions, each with <tt>id</tt>, <tt>description</tt>, and OPTIONAL <tt>references</tt> to external normative texts (e.g., specific GDPR articles).</t>
          </li>
          <li>
            <t><tt>trust_anchors</tt>: An array of <tt>jwks_uri</tt> values identifying Registries whose credentials the Provider will accept.</t>
          </li>
          <li>
            <t><tt>endpoints</tt>: An array of endpoint rules (see <xref target="endpoint-rules"/>).</t>
          </li>
        </ul>
        <t>The manifest MAY include <tt>accepted_equivalents</tt>, an array of other Ruleset URIs whose credentials the Provider will also accept for this Ruleset. Equivalence is always declared by the Provider; a Caller MUST NOT assume two Rulesets are equivalent absent such a declaration.</t>
      </section>
      <section anchor="endpoint-rules">
        <name>Endpoint Rules</name>
        <t>Each entry in <tt>endpoints</tt> declares which requests require which Claims:</t>
        <ul spacing="normal">
          <li>
            <t><tt>path_pattern</tt>: String, using the pattern syntax of <xref target="RFC6570"/>.</t>
          </li>
          <li>
            <t><tt>methods</tt>: Array of HTTP methods this rule applies to.</t>
          </li>
          <li>
            <t><tt>required_claims</tt>: Array of Claim IDs from this Ruleset.</t>
          </li>
          <li>
            <t><tt>required_evidence_tier</tt>: OPTIONAL minimum Evidence Tier.</t>
          </li>
        </ul>
        <t>When multiple endpoint rules match a request, the Provider MUST require the union of their Claims.</t>
      </section>
      <section anchor="caching">
        <name>Caching</name>
        <t>Ruleset Manifests SHOULD be served with <tt>Cache-Control</tt> and <tt>ETag</tt> headers. Callers SHOULD cache manifests for the duration indicated by <tt>max-age</tt>. When no directive is present, Callers MAY cache for up to 24 hours.</t>
      </section>
    </section>
    <section anchor="the-compliance-challenge">
      <name>The Compliance Challenge</name>
      <section anchor="status-code">
        <name>Status Code</name>
        <t>A Provider MUST return <tt>401 Unauthorized</tt> when a request requires a Compliance Credential and no valid <tt>Compliance-Presentation</tt> is present.</t>
        <t>A Provider MUST return <tt>403 Forbidden</tt> when a valid Presentation is provided but it does not satisfy the required Ruleset.</t>
      </section>
      <section anchor="the-compliance-authentication-scheme">
        <name>The Compliance Authentication Scheme</name>
        <t>HCAP defines a new HTTP Authentication Scheme named <tt>Compliance</tt>. A challenge has the form:</t>
        <artwork><![CDATA[
WWW-Authenticate: Compliance realm="api.example.com",
    ruleset="https://rules.example.com/gdpr-processor/v2",
    claims="art28 art32 dpa",
    trust_anchors="https://trust.example.net/.well-known/jwks.json",
    max_age=3600,
    error="compliance_required"
]]></artwork>
        <t>A Provider MAY include a <tt>Compliance</tt> challenge alongside other authentication challenges (e.g., <tt>Bearer</tt>). In this case the Caller MUST satisfy all required schemes.</t>
      </section>
      <section anchor="parameters">
        <name>Parameters</name>
        <t>The <tt>Compliance</tt> scheme defines the following parameters:</t>
        <ul spacing="normal">
          <li>
            <t><tt>realm</tt> (REQUIRED): As defined in <xref target="RFC9110"/>.</t>
          </li>
          <li>
            <t><tt>ruleset</tt> (REQUIRED): URI identifying the required Ruleset.</t>
          </li>
          <li>
            <t><tt>claims</tt> (OPTIONAL): Space-separated list of Claim IDs overriding the Ruleset manifest's endpoint rules for this response.</t>
          </li>
          <li>
            <t><tt>trust_anchors</tt> (OPTIONAL): Space-separated list of <tt>jwks_uri</tt> values identifying acceptable Registries. If omitted, the Provider accepts any Registry listed in the Ruleset Manifest.</t>
          </li>
          <li>
            <t><tt>max_age</tt> (OPTIONAL): Maximum credential age in seconds that the Provider will accept, measured from the credential's <tt>iat</tt>.</t>
          </li>
          <li>
            <t><tt>error</tt> (OPTIONAL): Error code from <xref target="error-handling"/>.</t>
          </li>
          <li>
            <t><tt>error_description</tt> (OPTIONAL): Human-readable error detail. MUST NOT be relied upon by automated clients.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="credential-acquisition">
      <name>Credential Acquisition</name>
      <t>The protocol between a Caller and a Registry is out of scope for this specification. Registries MAY define their own acquisition APIs. This section describes the minimum contract that any Registry protocol MUST satisfy.</t>
      <section anchor="inputs">
        <name>Inputs</name>
        <t>A Caller supplies, at minimum:</t>
        <ul spacing="normal">
          <li>
            <t>A Caller identifier (typically the same <tt>sub</tt> used in the Caller's identity authentication against the Provider).</t>
          </li>
          <li>
            <t>The target Ruleset URI.</t>
          </li>
          <li>
            <t>Evidence sufficient to establish each required Claim. The form of evidence is determined by the Registry and MAY include self-attestations, signed statements from authorized personnel, third-party audit reports, cryptographic attestations of system state, or other artifacts.</t>
          </li>
        </ul>
      </section>
      <section anchor="outputs">
        <name>Outputs</name>
        <t>On successful evaluation, the Registry issues a Compliance Credential (<xref target="credential-format"/>). The Registry MUST NOT issue credentials for Claims whose evidence it has not evaluated.</t>
      </section>
      <section anchor="credential-lifetime">
        <name>Lifetime</name>
        <t>A Registry SHOULD issue credentials with the shortest lifetime operationally practical. A lifetime of 1 hour is RECOMMENDED for typical deployments. Credentials MUST NOT have a lifetime exceeding 24 hours unless the Registry also publishes a revocation status endpoint (<xref target="revocation"/>).</t>
      </section>
    </section>
    <section anchor="credential-presentation">
      <name>Credential Presentation</name>
      <section anchor="the-compliance-presentation-header">
        <name>The Compliance-Presentation Header</name>
        <t>A Caller presents a Compliance Credential by including the <tt>Compliance-Presentation</tt> header field on the request:</t>
        <artwork><![CDATA[
Compliance-Presentation: <token>
]]></artwork>
        <t>The <tt>&lt;token&gt;</tt> value is the JWT encoding of the credential as defined in <xref target="credential-format"/>.</t>
        <t>The <tt>Compliance-Presentation</tt> header is independent of the <tt>Authorization</tt> header. A request MAY include both, and typically does: <tt>Authorization</tt> conveys identity; <tt>Compliance-Presentation</tt> conveys policy satisfaction.</t>
      </section>
      <section anchor="multiple-credentials">
        <name>Multiple Credentials</name>
        <t>A Caller MAY present multiple credentials on a single request when the required Claims span multiple Rulesets or Registries. In this case the header value is a comma-separated list of tokens:</t>
        <artwork><![CDATA[
Compliance-Presentation: <token1>, <token2>
]]></artwork>
        <t>The Provider MUST consider the union of <tt>claims_satisfied</tt> across all valid credentials when evaluating the request.</t>
      </section>
      <section anchor="caching-1">
        <name>Caching</name>
        <t>Callers SHOULD cache credentials and reuse them across requests until expiry. Callers SHOULD NOT include credentials on requests to origins for which no challenge has been received.</t>
      </section>
    </section>
    <section anchor="credential-format">
      <name>Credential Format</name>
      <section anchor="encoding">
        <name>Encoding</name>
        <t>A Compliance Credential is encoded as a JSON Web Token per <xref target="RFC7519"/>, signed using an algorithm from <xref target="RFC7518"/>. Registries MUST use an asymmetric signature algorithm; <tt>EdDSA</tt> and <tt>ES256</tt> are RECOMMENDED.</t>
        <t>The credential payload MAY be expressed as a Verifiable Credential <xref target="VC-DATA-MODEL"/> using the JWT binding, with a <tt>vc</tt> claim containing the VC document. Implementations that do not require W3C VC interoperability MAY omit the <tt>vc</tt> claim and use the flat JWT claim set defined below.</t>
      </section>
      <section anchor="claim-set">
        <name>Claim Set</name>
        <t>A Compliance Credential MUST contain the following claims:</t>
        <ul spacing="normal">
          <li>
            <t><tt>iss</tt>: URI identifying the Registry.</t>
          </li>
          <li>
            <t><tt>sub</tt>: Caller identifier. Providers MUST verify this matches the subject of the Caller's identity authentication.</t>
          </li>
          <li>
            <t><tt>aud</tt>: Ruleset URI, or an array including the Ruleset URI and OPTIONAL Provider identifier.</t>
          </li>
          <li>
            <t><tt>iat</tt>: Issuance time (seconds since epoch).</t>
          </li>
          <li>
            <t><tt>exp</tt>: Expiration time.</t>
          </li>
          <li>
            <t><tt>jti</tt>: Unique credential identifier. Used for revocation tracking.</t>
          </li>
          <li>
            <t><tt>ruleset</tt>: Ruleset URI this credential satisfies.</t>
          </li>
          <li>
            <t><tt>claims_satisfied</tt>: Array of Claim IDs the Registry attests the Caller meets.</t>
          </li>
        </ul>
        <t>A Compliance Credential MAY contain:</t>
        <ul spacing="normal">
          <li>
            <t><tt>evidence_tier</tt>: String indicating evidence strength. Defined values:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>self_attested</tt>: Caller-signed statement, no Registry verification of underlying facts.</t>
              </li>
              <li>
                <t><tt>attested_by_officer</tt>: Statement signed by a named authorized individual at the Caller (e.g., DPO, CISO).</t>
              </li>
              <li>
                <t><tt>third_party_audit</tt>: Underlying evidence is a dated attestation by an independent auditor.</t>
              </li>
              <li>
                <t><tt>cryptographic_proof</tt>: Underlying evidence is a cryptographic attestation of system state (e.g., TPM quote, TEE report).</t>
              </li>
            </ul>
          </li>
          <li>
            <t><tt>status</tt>: URI of a Status List <xref target="STATUS-LIST"/> entry for revocation.</t>
          </li>
          <li>
            <t><tt>cnf</tt>: Confirmation claim <xref target="RFC7800"/> binding the credential to a key held by the Caller, for use with proof-of-possession.</t>
          </li>
        </ul>
      </section>
      <section anchor="example">
        <name>Example</name>
        <t>A decoded credential payload:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://registry.example.net",
  "sub": "client_abc123",
  "aud": [
    "https://rules.example.com/gdpr-processor/v2",
    "https://api.example.com"
  ],
  "iat": 1713024000,
  "exp": 1713027600,
  "jti": "cred_7a3d91f0e2",
  "ruleset": "https://rules.example.com/gdpr-processor/v2",
  "claims_satisfied": ["art28", "art32", "dpa"],
  "evidence_tier": "third_party_audit",
  "status": "https://registry.example.net/status/12#5142"
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="verification-procedure">
      <name>Verification Procedure</name>
      <t>On receiving a request with a <tt>Compliance-Presentation</tt> header, a Provider MUST perform the following checks, in order. If any check fails, the Provider MUST respond with <tt>403 Forbidden</tt> and an appropriate error code (<xref target="error-handling"/>).</t>
      <section anchor="signature">
        <name>Signature</name>
        <ol spacing="normal" type="1"><li>
            <t>Parse the JWT.</t>
          </li>
          <li>
            <t>Resolve the signing key from the Provider's cached trust anchors for the <tt>iss</tt> claim, refreshing from <tt>jwks_uri</tt> if the key ID is unknown.</t>
          </li>
          <li>
            <t>Verify the signature.</t>
          </li>
        </ol>
        <t>A Provider MUST NOT fetch a new <tt>jwks_uri</tt> from an <tt>iss</tt> not previously declared in its Ruleset Manifest.</t>
      </section>
      <section anchor="temporal-validity">
        <name>Temporal Validity</name>
        <ol spacing="normal" type="1"><li>
            <t>Verify <tt>exp</tt> has not passed, allowing a clock skew of at most 60 seconds.</t>
          </li>
          <li>
            <t>Verify <tt>iat</tt> is not in the future beyond the same skew.</t>
          </li>
          <li>
            <t>Verify the credential age (<tt>now - iat</tt>) does not exceed any <tt>max_age</tt> declared in the challenge.</t>
          </li>
        </ol>
      </section>
      <section anchor="binding">
        <name>Binding</name>
        <ol spacing="normal" type="1"><li>
            <t>Verify <tt>sub</tt> matches the subject of the Caller's identity authentication. Providers MUST reject credentials whose <tt>sub</tt> does not match.</t>
          </li>
          <li>
            <t>If <tt>cnf</tt> is present, verify proof-of-possession per <xref target="RFC9449"/> or equivalent.</t>
          </li>
          <li>
            <t>Verify <tt>aud</tt> includes the Ruleset URI required by this endpoint.</t>
          </li>
        </ol>
      </section>
      <section anchor="revocation">
        <name>Revocation</name>
        <t>If <tt>status</tt> is present, the Provider SHOULD consult the status list per <xref target="STATUS-LIST"/>. Providers MAY cache status list results for up to the credential's remaining lifetime, but SHOULD refresh on cache-miss.</t>
      </section>
      <section anchor="ruleset-satisfaction">
        <name>Ruleset Satisfaction</name>
        <ol spacing="normal" type="1"><li>
            <t>Determine the required Ruleset and Claims for the endpoint, per <xref target="ruleset-discovery"/>.</t>
          </li>
          <li>
            <t>Compute the set of Claims satisfied by the union of all valid credentials on the request.</t>
          </li>
          <li>
            <t>Verify this set is a superset of the required Claims.</t>
          </li>
          <li>
            <t>If the endpoint specifies <tt>required_evidence_tier</tt>, verify that each required Claim is satisfied by at least one credential of sufficient tier.</t>
          </li>
        </ol>
      </section>
      <section anchor="equivalence">
        <name>Equivalence</name>
        <t>If no credential directly satisfies the required Ruleset, the Provider MAY attempt to satisfy it via declared <tt>accepted_equivalents</tt>. Equivalence MUST NOT be inferred; the Provider's own manifest is authoritative.</t>
      </section>
    </section>
    <section anchor="error-handling">
      <name>Error Handling</name>
      <t>Errors are reported via the <tt>error</tt> parameter of the <tt>WWW-Authenticate</tt> challenge, accompanying a <tt>401</tt> or <tt>403</tt> response. The following error codes are defined:</t>
      <ul spacing="normal">
        <li>
          <t><tt>compliance_required</tt>: No presentation on a protected request.</t>
        </li>
        <li>
          <t><tt>invalid_credential</tt>: Signature invalid, malformed JWT, unknown algorithm.</t>
        </li>
        <li>
          <t><tt>expired_credential</tt>: <tt>exp</tt> has passed, or credential age exceeds <tt>max_age</tt>.</t>
        </li>
        <li>
          <t><tt>revoked_credential</tt>: Status list indicates revocation.</t>
        </li>
        <li>
          <t><tt>insufficient_claims</tt>: Valid credential, but required Claims not met.</t>
        </li>
        <li>
          <t><tt>insufficient_evidence_tier</tt>: Claim satisfied but tier too low.</t>
        </li>
        <li>
          <t><tt>unsupported_ruleset</tt>: Credential cites a Ruleset the Provider does not recognize.</t>
        </li>
        <li>
          <t><tt>trust_anchor_unknown</tt>: <tt>iss</tt> is not among declared Registries.</t>
        </li>
        <li>
          <t><tt>subject_mismatch</tt>: <tt>sub</tt> does not match authenticated identity.</t>
        </li>
      </ul>
      <t>Additional error codes MAY be defined by future specifications or extensions, following the IANA registration procedure in <xref target="iana-considerations"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="credential-theft-and-replay">
        <name>Credential Theft and Replay</name>
        <t>A Compliance Credential is a bearer token in the absence of proof-of-possession. An attacker who obtains a credential can replay it until expiry. Mitigations:</t>
        <ul spacing="normal">
          <li>
            <t>Short lifetimes (<xref target="credential-lifetime"/>) limit replay windows.</t>
          </li>
          <li>
            <t>Subject binding (<xref target="binding"/>) ensures a stolen credential cannot be used by a different identity if identity authentication is sound.</t>
          </li>
          <li>
            <t>Providers MAY require <tt>cnf</tt> proof-of-possession for high-risk endpoints.</t>
          </li>
          <li>
            <t>Transport MUST be TLS 1.2 or later <xref target="RFC8446"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="registry-compromise">
        <name>Registry Compromise</name>
        <t>A compromised Registry can issue fraudulent credentials. Defenses:</t>
        <ul spacing="normal">
          <li>
            <t>Providers SHOULD pin specific Registry keys or operate against short, published key-rotation schedules.</t>
          </li>
          <li>
            <t>Registries SHOULD publish signing-key transparency logs where feasible.</t>
          </li>
          <li>
            <t>A Provider MAY operate a local override list of Registries pending investigation.</t>
          </li>
        </ul>
      </section>
      <section anchor="downgrade-attacks">
        <name>Downgrade Attacks</name>
        <ul spacing="normal">
          <li>
            <t>A Provider MUST NOT serve a protected resource on receipt of a request that lacks a valid Presentation when its own policy requires one.</t>
          </li>
          <li>
            <t>Providers MUST NOT accept <tt>Compliance-Presentation</tt> over plaintext HTTP.</t>
          </li>
          <li>
            <t>Intermediaries MUST NOT modify, cache, or forward <tt>Compliance-Presentation</tt> headers.</t>
          </li>
        </ul>
      </section>
      <section anchor="signature-algorithm-confusion">
        <name>Signature Algorithm Confusion</name>
        <t>Implementations MUST follow <xref target="RFC8725"/> and MUST NOT accept the <tt>none</tt> algorithm. Implementations MUST verify the algorithm used against an allow-list declared in the trust anchor JWKS.</t>
      </section>
      <section anchor="clock-skew">
        <name>Clock Skew</name>
        <t>Verifiers MUST allow no more than 60 seconds of clock skew on temporal checks. Registries SHOULD use NTP-synchronized time.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>A Compliance Credential reveals that a Caller has satisfied specific Claims with a specific Registry. This may inadvertently disclose:</t>
      <ul spacing="normal">
        <li>
          <t>The Caller's choice of Registry, which may correlate with the Caller's jurisdiction or industry.</t>
        </li>
        <li>
          <t>The Caller's compliance posture at a point in time.</t>
        </li>
        <li>
          <t>Via <tt>evidence_tier</tt>, aspects of the Caller's audit practices.</t>
        </li>
      </ul>
      <t>Registries SHOULD support selective disclosure, including issuing credentials that commit to a set of Claims without revealing which subset is invoked on any given request. BBS+ signatures and related schemes building on <xref target="VC-DATA-MODEL"/> are candidates for this mode.</t>
      <t>Providers MUST NOT log <tt>Compliance-Presentation</tt> header values in cleartext. The credential's <tt>jti</tt> MAY be logged for audit purposes.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the following registrations. All registrations are subject to IETF Review.</t>
      <section anchor="http-authentication-scheme">
        <name>HTTP Authentication Scheme</name>
        <t>Registration in the "Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry":</t>
        <ul spacing="normal">
          <li>
            <t>Scheme Name: <tt>Compliance</tt></t>
          </li>
          <li>
            <t>Reference: This document.</t>
          </li>
        </ul>
      </section>
      <section anchor="http-header-field">
        <name>HTTP Header Field</name>
        <t>Registration in the "Hypertext Transfer Protocol (HTTP) Field Name Registry":</t>
        <ul spacing="normal">
          <li>
            <t>Field Name: <tt>Compliance-Presentation</tt></t>
          </li>
          <li>
            <t>Status: Standard</t>
          </li>
          <li>
            <t>Reference: This document (<xref target="credential-presentation"/>)</t>
          </li>
          <li>
            <t>Comments: Request-only.</t>
          </li>
        </ul>
      </section>
      <section anchor="well-known-uri-1">
        <name>Well-Known URI</name>
        <t>Registration in the "Well-Known URIs" registry:</t>
        <ul spacing="normal">
          <li>
            <t>URI Suffix: <tt>compliance</tt></t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: This document (<xref target="ruleset-discovery"/>)</t>
          </li>
        </ul>
      </section>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>Registration in the "Media Types" registry:</t>
        <ul spacing="normal">
          <li>
            <t>Type Name: <tt>application</tt></t>
          </li>
          <li>
            <t>Subtype Name: <tt>compliance-manifest+json</tt></t>
          </li>
          <li>
            <t>Reference: This document (<xref target="ruleset-manifest"/>)</t>
          </li>
        </ul>
      </section>
      <section anchor="hcap-error-code-registry">
        <name>HCAP Error Code Registry</name>
        <t>Establishment of a new "HCAP Error Codes" registry with the values defined in <xref target="error-handling"/>. Registration policy: Specification Required.</t>
      </section>
      <section anchor="hcap-evidence-tier-registry">
        <name>HCAP Evidence Tier Registry</name>
        <t>Establishment of a new "HCAP Evidence Tiers" registry with the values defined in <xref target="claim-set"/>. Registration policy: Specification Required.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <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="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </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>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="VC-DATA-MODEL" target="https://www.w3.org/TR/vc-data-model-2.0/">
          <front>
            <title>Verifiable Credentials Data Model v2.0</title>
            <author initials="M." surname="Sporny" fullname="Manu Sporny">
              <organization/>
            </author>
            <author initials="D." surname="Longley" fullname="Dave Longley">
              <organization/>
            </author>
            <author initials="G." surname="Cohen" fullname="Gabe Cohen">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6570">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="STATUS-LIST" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-status-list/">
          <front>
            <title>Token Status List</title>
            <author initials="T." surname="Looker" fullname="Tobias Looker">
              <organization/>
            </author>
            <author initials="P." surname="Bastian" fullname="Paul Bastian">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CABF-BR" target="https://cabforum.org/baseline-requirements-documents/">
          <front>
            <title>Baseline Requirements for the Issuance and Management of Publicly-Trusted Certificates</title>
            <author>
              <organization>CA/Browser Forum</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="EIDAS" target="https://eur-lex.europa.eu/eli/reg/2014/910/oj">
          <front>
            <title>Regulation (EU) No 910/2014 on electronic identification and trust services</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2014"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 483?>

<section anchor="examples">
      <name>Examples</name>
      <section anchor="full-handshake">
        <name>Full Handshake</name>
        <t>Initial request:</t>
        <artwork><![CDATA[
GET /customers/42 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGc...
]]></artwork>
        <t>Challenge:</t>
        <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Compliance realm="api.example.com",
    ruleset="https://rules.example.com/gdpr-processor/v2",
    claims="art28 art32 dpa",
    trust_anchors="https://trust.example.net/.well-known/jwks.json",
    max_age=3600,
    error="compliance_required"
Link: </.well-known/compliance>; rel="compliance-requirements"
]]></artwork>
        <t>Caller fetches manifest (cached after first retrieval):</t>
        <artwork><![CDATA[
GET /.well-known/compliance HTTP/1.1
Host: api.example.com
Accept: application/compliance-manifest+json
]]></artwork>
        <t>Caller presents evidence to Registry (out-of-band protocol) and receives a Compliance Credential.</t>
        <t>Retry with Presentation:</t>
        <artwork><![CDATA[
GET /customers/42 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGc...
Compliance-Presentation: eyJhbGc...
]]></artwork>
        <t>Success:</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{ "id": 42, "name": "..." }
]]></artwork>
      </section>
      <section anchor="manifest-example">
        <name>Ruleset Manifest</name>
        <sourcecode type="json"><![CDATA[
{
  "ruleset_id": "https://rules.example.com/gdpr-processor/v2",
  "version": "2.1.0",
  "authority": "did:web:rules.example.com",
  "claims": [
    {
      "id": "art28",
      "description": "Processor agreement in place",
      "references": [
        "https://eur-lex.europa.eu/eli/reg/2016/679#art28"
      ]
    },
    {
      "id": "art32",
      "description": "Technical and organizational measures",
      "references": [
        "https://eur-lex.europa.eu/eli/reg/2016/679#art32"
      ]
    },
    {
      "id": "dpa",
      "description": "Signed data processing agreement on file"
    }
  ],
  "trust_anchors": [
    "https://trust.example.net/.well-known/jwks.json"
  ],
  "endpoints": [
    {
      "path_pattern": "/customers/{id}",
      "methods": ["GET", "PATCH"],
      "required_claims": ["art28", "art32"],
      "required_evidence_tier": "attested_by_officer"
    },
    {
      "path_pattern": "/customers/{id}/pii",
      "methods": ["GET"],
      "required_claims": ["art28", "art32", "dpa"],
      "required_evidence_tier": "third_party_audit"
    }
  ],
  "accepted_equivalents": [
    "https://rules.example.com/ccpa-service-provider/v1"
  ]
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="open-questions">
      <name>Open Questions</name>
      <t>The following questions are explicitly unresolved in this draft and invite community input:</t>
      <ol spacing="normal" type="1"><li>
          <t>Registry governance. The truthfulness of the facts a Registry attests to, the operational requirements Registries must meet, and the trust framework by which Providers decide which Registries to include in their trust anchors are out of scope for this specification (<xref target="scope-and-governance"/>). A companion document or industry operational baseline is expected to address these concerns separately. Candidate models include the CA/Browser Forum Baseline Requirements <xref target="CABF-BR"/>, the eIDAS qualified trust service provider framework <xref target="EIDAS"/>, and domain-specific accreditation schemes.</t>
        </li>
        <li>
          <t>Equivalence authority. Placing equivalence authority with the Provider is one option. An alternative model assigns equivalence assertions to a third-party authority (e.g., a regulator or a neutral standards body). Both models have merits; the current draft prefers provider autonomy.</t>
        </li>
        <li>
          <t>Revocation granularity. The current design supports credential-level revocation via status lists. It does not support claim-level revocation within a credential. Whether this is needed in practice is open.</t>
        </li>
        <li>
          <t>Selective disclosure. Whether to profile BBS+ signatures, SD-JWT, or both is unresolved.</t>
        </li>
        <li>
          <t>Request-scoped claims. Some policies require binding between a credential and specifics of a request (e.g., "the caller may process data for EU subjects only"). The current draft does not express such binding. An extension mechanism via <tt>cnf</tt>-style request-bound confirmation claims is a candidate.</t>
        </li>
      </ol>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author thanks early reviewers and design partners for their feedback on the protocol shape and on the separation between protocol and Registry-governance concerns. Specific acknowledgements to be added upon submission.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
