<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     version="3"
     ipr="trust200902"
     category="std"
     submissionType="IETF"
     docName="draft-lee-orprg-permit-receipts-00">
  <front>
    <title abbrev="ORPRG Permit Receipts">Permit Receipts for Permit-Before-Commit Authorization of AI-Agent and Workload External Effects</title>
    <seriesInfo name="Internet-Draft" value="draft-lee-orprg-permit-receipts-00"/>
    <author fullname="Yong Bok Lee" initials="Y. B." surname="Lee">
      <organization>Meridian Verity Group</organization>
      <address>
        <postal>
          <city>Sheridan</city>
          <region>WY</region>
          <country>United States of America</country>
        </postal>
        <email>scott@meridianverity.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="4"/>
    <area>Security</area>
    <keyword>AI agents</keyword>
    <keyword>authorization</keyword>
    <keyword>permit receipts</keyword>
    <keyword>effect boundary</keyword>
    <keyword>revocation</keyword>
    <keyword>workload identity</keyword>
    <abstract>
      <t>This document defines requirements and an abstract data model for PermitReceipts used in permit-before-commit authorization of AI-agent and workload external effects. A verifier evaluates a canonicalized effect request, action digest, policy epoch, validity interval, scope, issuer evidence, revocation status, and anti-replay state before a protected effect is committed at an effect boundary. The document specifies verifier behavior, failure semantics, conformance expectations, and candidate interoperability registries for discussion. It is intended to enable IETF discussion about the appropriate home, scope, and wire-profile split for this work.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true"><name>Introduction</name>
      <t>AI agents and automated workloads increasingly initiate external effects, including tool calls, retrieval operations, data egress, transactions, configuration changes, extension updates, inter-agent messages, key-release operations, and output releases. Controls evaluated only at a session, prompt, or application-entry boundary can become stale or bypassable before a concrete external effect is committed.</t>
      <t>This document treats protected external effects as commit events. A boundary interceptor captures the proposed effect before commitment, canonicalizes the effect request, computes an action digest, and invokes a verifier. The verifier returns ALLOW only when a PermitReceipt and the relevant policy, epoch, recency, scope, issuer, and anti-replay evidence satisfy the selected verification profile. Otherwise, the verifier returns DENY with a structured denial reason.</t>
      <t>The design intentionally makes a narrow, testable security claim: a protected external effect is not committed unless machine-verifiable evidence authorizes the exact effect under current policy state. The design does not require the AI model or workload to be honest, aligned, or able to explain its intent; it treats the model or workload as a request producer whose effect-bearing requests require independent authorization at the effect boundary.</t>
      <t>This -00 individual draft is offered for security-area discussion and dispatch guidance. It asserts no IETF consensus. It defines terminology, requirements, an abstract receipt model, verifier behavior, failure semantics, operational considerations, and candidate registries. It does not define a complete policy language, does not select a mandatory wire format, and does not claim production non-bypassability for any deployment by itself.</t>
    </section>

    <section anchor="requirements-language" numbered="true"><name>Terminology and Requirements Language</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 newline="true">
        <dt>External effect</dt><dd>An operation that crosses an execution boundary and may disclose information, change state, invoke a privileged operation, release output, delegate authority, or alter future effect semantics.</dd>
        <dt>Effect boundary</dt><dd>A logical or physical boundary between an execution substrate and an external interface at which an external effect would be committed.</dd>
        <dt>PermitReceipt</dt><dd>A machine-verifiable authorization artifact that binds an external-effect request to policy, epoch, validity, scope, action binding, authenticity evidence, and required status evidence.</dd>
        <dt>Canonical request representation</dt><dd>A deterministic representation of an external-effect request containing the effect-relevant fields for a selected canonicalization profile.</dd>
        <dt>Action digest</dt><dd>A digest computed over the canonical request representation.</dd>
        <dt>Verifier</dt><dd>A component that evaluates a request, PermitReceipt, policy state, revocation state, and explicit context, and returns ALLOW or DENY with evidence digests and a denial reason when applicable.</dd>
        <dt>Fail closed</dt><dd>The default behavior in which missing, stale, ambiguous, conflicting, malformed, revoked, replayed, unsupported, or unverifiable evidence results in DENY.</dd>
      </dl>
    </section>

    <section anchor="problem" numbered="true"><name>Problem Statement</name>
      <t>Let S be an execution substrate, I be a protected external interface, e be an effect request, C(e) be the canonical request representation, H(C(e)) be the action digest, Pt be policy state, Rt be revocation state, ctx be explicit context, and r be a PermitReceipt. The objective is:</t>
      <artwork><![CDATA[
Commit_I(e) occurs only when Verify(e, r, Pt, Rt, ctx) = ALLOW
and all policy-designated downstream capability checks succeed.
Otherwise the result is DENY.
]]></artwork>
      <t>An adversary can influence prompts, retrieved content, tool arguments, scheduled workflows, plugin state, non-canonical encodings, local application paths, and background triggers. The adversary can try to cause unauthorized effects, reuse stale authorization, substitute materially different actions after authorization, induce ambiguous context selection, replay receipts or capabilities, suppress revocation evidence, or reach an external interface without the intended authorization path.</t>
      <t>This document addresses the authorization predicate at the effect boundary. Policy correctness, root-of-trust integrity, model alignment, and complete production placement are necessary deployment concerns but are not solved solely by this protocol profile.</t>
    </section>

    <section anchor="requirements" numbered="true"><name>Core Requirements</name>
      <ol spacing="normal" type="REQ-%d">
        <li>A protected external effect MUST be evaluated before commitment at the applicable effect boundary.</li>
        <li>The verifier MUST bind authorization to a canonical request representation and an action digest or equivalent cryptographic commitment.</li>
        <li>The verifier MUST bind authorization to a policy digest or policy epoch, and MUST deny on epoch mismatch or rollback when policy requires strict or minimum-epoch compatibility.</li>
        <li>The verifier MUST evaluate time-bounded validity and anti-replay material when required by the selected verification profile.</li>
        <li>The verifier MUST evaluate revocation or status evidence to the recency required by policy for the receipt, issuer, authority profile, policy epoch, and other required evidence.</li>
        <li>The verifier MUST deny when authorization-critical context is missing, ambiguous, conflicting, stale, revoked, replayed, malformed, unsupported, or unverifiable, unless a narrowly scoped constrained mode is explicitly authorized by policy.</li>
        <li>Deployments claiming non-bypassability MUST ensure that protected effect-bearing paths traverse an interceptor or are rejected by a downstream verifier requiring valid ORPRG evidence.</li>
        <li>Implementations SHOULD emit auditable decision records containing action digest, policy digest, epoch, outcome, denial reason if any, and evidence references sufficient for independent reproduction when the referenced evidence is available.</li>
      </ol>
    </section>

    <section anchor="architecture" numbered="true"><name>Architecture</name>
      <t>An ORPRG deployment consists of an effect-boundary interceptor, canonicalizer, action-digest engine, PermitReceipt handler, verifier, policy and epoch source, revocation or status source, optional transparency log, audit logger, and optional downstream capability verifier.</t>
      <t>The interceptor captures a protected external-effect request before commitment. The canonicalizer produces a deterministic canonical request representation that includes all effect-relevant fields for the selected effect type and canonicalization profile. The digest engine computes the action digest. The verifier evaluates the PermitReceipt and associated evidence before the effect crosses the boundary.</t>
      <t>A protected external interface can include an egress gateway, retrieval gateway, service-mesh sidecar, API gateway, message broker, privileged API boundary, scheduler boundary, update-channel gate, key-release gate, kernel or hypervisor hook, output-release boundary, or recipient-side verifier.</t>
      <t>Dual enforcement is RECOMMENDED for high-risk effects. Under dual enforcement, successful local verification produces a DecisionReceipt or capability token bound to the action digest, audience, policy digest, epoch identifier, validity interval, and anti-replay material. The downstream interface denies commitment if this derived evidence is absent, expired, replayed, audience-invalid, mismatched, or unverifiable.</t>
    </section>

    <section anchor="effect-types" numbered="true"><name>Protected Effect Types</name>
      <t>ORPRG is intended for effects whose commitment can change external state, disclose information, release output, delegate authority, or change future effect semantics. Example effect families include:</t>
      <ul spacing="normal">
        <li>network transmission and data egress;</li>
        <li>data access and retrieval, including database queries, file reads, object-store access, and retrieval-augmented generation fetches;</li>
        <li>tool calls, privileged API calls, transactions, and scheduler operations;</li>
        <li>key-release, signing, decrypt, unwrap, or credential-broker operations;</li>
        <li>inter-agent messages and protocol or representation negotiation;</li>
        <li>plugin, extension, policy, model-artifact, or configuration updates; and</li>
        <li>output release to a user or downstream system when policy designates the release as protected.</li>
      </ul>
      <t>Each effect family requires a profile that identifies the effect-relevant fields to be canonicalized and included in the authorization decision. A receipt issued for one effect type, target, tenant, purpose, jurisdiction, audience, key operation, or budget MUST NOT authorize a materially different effect.</t>
    </section>

    <section anchor="receipt" numbered="true"><name>PermitReceipt Abstract Data Model</name>
      <t>A PermitReceipt is a structured authorization artifact. This document defines an abstract model and example JSON shape. Future documents or revisions can define concrete serializations, such as JSON with a specified canonicalization profile, CBOR/COSE, or JOSE. JSON profiles can reuse or adapt JSON Canonicalization Scheme (JCS) <xref target="RFC8785"/> when its assumptions fit the selected effect type.</t>
      <sourcecode type="json"><![CDATA[
{
  "receipt_core": {
    "policy_digest": "hex-or-base64url",
    "epoch_id": "string-or-integer",
    "valid_from": "time-or-sequence",
    "valid_to": "time-or-sequence",
    "action_digest": "hex-or-base64url",
    "action_commitment": "optional commitment object",
    "canonicalization_profile": "profile identifier or digest",
    "scope": {
      "effect_type": "effect type name",
      "interface_id": "string",
      "target_id": "string",
      "tenant_id": "optional string or digest",
      "purpose_id": "optional string",
      "jurisdiction": "optional string or set",
      "audience": "optional downstream verifier identifier",
      "budget": "optional structured limit"
    },
    "anti_replay": {
      "nonce": "optional",
      "sequence_number": "optional",
      "monotonic_counter": "optional"
    }
  },
  "verification_profile": {
    "authority_profile_id": "optional",
    "assurance_level_id": "optional",
    "permit_class_id": "optional"
  },
  "permit_provenance": {
    "permit_artifact_ref": "optional",
    "permit_provenance_digest": "optional"
  },
  "authenticity": {
    "issuer_id": "string",
    "signature": "signature value",
    "issuer_chain": "optional",
    "threshold_signature": "optional"
  },
  "status": {
    "revocation_status_proof": "optional",
    "signed_checkpoint": "optional",
    "inclusion_or_non_inclusion_proof": "optional"
  }
}
]]></sourcecode>
      <t>The PermitReceipt MUST bind authorization to either an action digest, a cryptographic commitment to the canonical request representation, or both. If both are present, implementations MUST verify both. A receipt MUST be evaluated under the canonicalization profile and policy epoch for which it was issued or under a policy-defined compatibility rule.</t>
      <t>When the selected verification profile requires permit provenance, identity binding, purpose binding, jurisdiction binding, assurance evidence, or attestation evidence such as RATS-style evidence <xref target="RFC9334"/>, the verifier MUST treat missing or unverifiable evidence as DENY.</t>
    </section>

    <section anchor="verifier-result" numbered="true"><name>Verifier Result</name>
      <t>A verifier returns a structured result. At minimum, the result contains a decision. For DENY, it SHOULD contain a denial reason. For auditability, it SHOULD contain evidence digests and recency observations. Example shape:</t>
      <sourcecode type="json"><![CDATA[
{
  "decision": "ALLOW | DENY",
  "denial_reason_code": "optional string",
  "evidence_digests": {
    "action_digest": "hex-or-base64url",
    "receipt_digest": "optional",
    "policy_digest": "hex-or-base64url",
    "epoch_id": "string-or-integer",
    "status_evidence_digest": "optional",
    "checkpoint_digest": "optional"
  },
  "recency_observations": {
    "status_age_seconds": "optional",
    "checkpoint_age_seconds": "optional"
  },
  "constrained_mode": "optional policy-defined status"
}
]]></sourcecode>
      <t>A verifier result MUST NOT be interpreted as authorization for a different action digest, audience, policy epoch, scope, or validity interval. A downstream verifier that consumes a DecisionReceipt or capability token MUST validate the audience, expiry, anti-replay material, and action binding before allowing commitment. Deployments MAY use proof-of-possession or token-exchange patterns such as <xref target="RFC9449"/> and <xref target="RFC8693"/> where appropriate, but such tokens MUST remain bound to the verifier outcome required by policy.</t>
    </section>

    <section anchor="canonicalization" numbered="true"><name>Canonicalization and Action Digests</name>
      <t>Canonicalization is a security boundary. A canonicalization profile MUST define how effect-relevant fields are selected, normalized, ordered, encoded, and rejected. Profiles need to address duplicate fields, default values, Unicode normalization, numeric representation, array ordering, header and query-parameter normalization where applicable, and effect-specific semantics.</t>
      <t>The action digest MUST be computed over the canonical request representation using the digest algorithm required by the selected profile. A receipt MUST identify or be bound to the canonicalization profile used for issuance. If the verifier cannot establish canonicalization-profile compatibility, it MUST return DENY.</t>
      <t>Profiles SHOULD include equivalent-input and distinct-effect test vectors. Equivalent inputs are representations that should produce the same action digest. Distinct effects are requests that are materially different and should produce distinct action digests.</t>
    </section>

    <section anchor="verification" numbered="true"><name>Verifier Behavior</name>
      <t>The verifier evaluates a canonical request, PermitReceipt, policy state, status evidence, and explicit context. The verifier behavior is a total function: every recognized failure maps to DENY with a reason; every malformed, unknown, or unsupported state maps to DENY rather than to ALLOW.</t>
      <ol spacing="normal">
        <li>Validate request and receipt schemas before semantic authorization.</li>
        <li>Compute or validate the canonical request representation and action digest.</li>
        <li>Verify authenticity evidence and issuer or authority-profile trust.</li>
        <li>Verify that the receipt's action digest or commitment authorizes the exact request.</li>
        <li>Verify time-bounded validity, clock or sequence requirements, and anti-replay material.</li>
        <li>Verify policy epoch compatibility and minimum-epoch requirements.</li>
        <li>Verify scope, identity, purpose, jurisdiction, audience, budget, key-operation, and provenance constraints when required.</li>
        <li>Verify status and revocation evidence to the recency required by the selected profile.</li>
        <li>Emit a verifier result and audit evidence.</li>
        <li>Return ALLOW only if all required checks succeed; otherwise return DENY.</li>
      </ol>
    </section>

    <section anchor="revocation" numbered="true"><name>Policy Epochs, Revocation, and Recency</name>
      <t>A PermitReceipt is not authorized merely because its signature verifies. It also needs to be compatible with the current policy epoch, within its validity interval, and supported by sufficiently fresh status evidence when such evidence is required by policy.</t>
      <t>Status evidence can include signed revocation lists, signed revocation event records, issuer-credential status, authority-profile status, policy-epoch status, signed checkpoints, inclusion proofs, non-inclusion proofs, or other profile-defined evidence. Profile designs can reuse certificate revocation lists <xref target="RFC5280"/>, OCSP-like status <xref target="RFC6960"/>, and transparency-log patterns such as Certificate Transparency <xref target="RFC6962"/> where appropriate. If policy requires status recency and the verifier cannot establish that recency, the verifier MUST return DENY.</t>
      <t>Policy epochs can be strict, minimum-epoch, compatibility-window, composite, or profile-defined. Epoch mismatch, rollback evidence, split-brain epoch state, or incompatible policy digest MUST result in DENY unless a policy-defined constrained mode explicitly applies.</t>
      <t>Intermittently connected deployments MAY define constrained local operation. Such operation MUST be narrow, short-lived, anti-replay protected, auditable, and explicitly authorized by policy. Absence of required status evidence MUST NOT silently become a fail-open authorization for high-risk effects.</t>
    </section>

    <section anchor="conformance" numbered="true"><name>Conformance Expectations</name>
      <t>Conformance for an ORPRG verifier is behavioral. A conforming implementation preserves permit-before-commit, action binding, epoch compatibility, status recency, scope and provenance enforcement, ambiguity-as-denial, anti-replay, downstream-evidence validation when configured, and audit sufficiency.</t>
      <t>A conformance corpus SHOULD include positive and negative vectors for at least: missing receipt, invalid signature, untrusted issuer, malformed request, malformed receipt, action-digest mismatch, canonicalization-profile mismatch, expired validity, epoch mismatch, epoch rollback, stale status, unknown status, confirmed revocation, scope violation, identity mismatch, purpose mismatch, jurisdiction ambiguity, missing provenance, missing assurance evidence when required, capability-token absence, audience mismatch, and replay.</t>
      <t>Conformance vectors SHOULD be signed or distributed with a signed manifest. Implementations SHOULD publish a reproducible "run-the-verifier" procedure that maps each vector to the expected ALLOW or DENY decision and denial reason.</t>
    </section>

    <section anchor="candidate-registries" numbered="true"><name>Candidate Interoperability Registries for Discussion</name>
      <t>This section is non-normative and is included to focus community discussion. If the work progresses, future versions can request IANA registries with precise templates, designated-expert guidance, and registration policies following <xref target="RFC8126"/>.</t>
      <section anchor="candidate-denial-codes" numbered="true"><name>Candidate Denial Reason Codes</name>
        <t>Candidate denial reason names include:</t>
        <ul spacing="compact">
          <li>SIGNATURE_INVALID</li>
          <li>ISSUER_UNTRUSTED</li>
          <li>EPOCH_MISMATCH</li>
          <li>VALIDITY_WINDOW_EXPIRED</li>
          <li>SCOPE_VIOLATION</li>
          <li>ANTI_REPLAY_FAILURE</li>
          <li>REVOKED_CONFIRMED</li>
          <li>REVOCATION_UNKNOWN_OR_STALE</li>
          <li>CANONICALIZATION_MISMATCH</li>
          <li>TRANSPARENCY_PROOF_INVALID</li>
          <li>PERMIT_PROVENANCE_INVALID_OR_MISSING</li>
          <li>CAPABILITY_TOKEN_INVALID_OR_MISSING</li>
          <li>AUTHORITY_PROFILE_SELECTION_FAILED</li>
          <li>AMBIGUOUS_CONTEXT</li>
        </ul>
      </section>
      <section anchor="candidate-claims" numbered="true"><name>Candidate Receipt Claim Names</name>
        <t>Candidate claim names include policy_digest, epoch_id, valid_from, valid_to, action_digest, action_commitment, canonicalization_profile, scope, anti_replay, authority_profile_id, assurance_level_id, permit_class_id, permit_provenance_digest, issuer_id, signature, issuer_chain, revocation_status_proof, signed_checkpoint, and inclusion_or_non_inclusion_proof.</t>
      </section>
      <section anchor="candidate-profiles" numbered="true"><name>Candidate Profile Registries</name>
        <t>Future profile registries could include canonicalization profile identifiers, assurance level profile identifiers, effect type identifiers, and verifier result claim names. Such registries should not be requested until the community agrees on the protocol split and at least one concrete wire profile.</t>
      </section>
    </section>

    <section anchor="iana" numbered="true"><name>IANA Considerations</name>
      <t>This document makes no IANA requests.</t>
      <t>Future versions may request registries for denial reason codes, receipt claim names, canonicalization profiles, effect types, or verifier result claim names. If such registries are requested, the document will provide clear registration templates, registration policies, change rules, and designated expert guidance following <xref target="RFC8126"/>.</t>
    </section>

    <section anchor="security" numbered="true"><name>Security Considerations</name>
      <t>ORPRG is an authorization mechanism and is security critical. Its security depends on correct boundary placement, deterministic canonicalization, trustworthy issuer keys, accurate policy and authority-profile selection, fresh status evidence, replay protection, and downstream enforcement where configured.</t>
      <t>Implementations MUST treat parser failures, unsupported proof types, missing required fields, duplicate-field ambiguity, stale caches, clock uncertainty, conflicting policy epoch sources, status uncertainty, and unsupported canonicalization profiles as DENY unless a constrained mode is explicitly authorized by policy.</t>
      <t>Production deployments MUST ensure that alternate network, storage, key-release, scheduler, plugin, update, output-release, or privileged API paths cannot commit protected effects without ORPRG evidence. A verifier library alone cannot prove deployment non-bypassability.</t>
      <t>Canonicalization profiles require careful review and differential testing across implementations. Weak profiles can permit action substitution or authorization confusion. Profiles SHOULD be versioned, digest-bound, and included in policy epoch state.</t>
      <t>Replay protection for single-use receipts or capability tokens requires durable state appropriate to the deployment. Distributed deployments need tenant-scoped and audience-scoped replay domains and crash-consistent storage.</t>
    </section>

    <section anchor="privacy" numbered="true"><name>Privacy Considerations</name>
      <t>PermitReceipts and audit records can reveal sensitive operational metadata, including targets, tenants, purposes, jurisdictions, key identifiers, route information, capability audiences, and denial reasons. Implementations SHOULD minimize disclosed fields, use digest references where possible, protect logs, define retention periods, and consider selective disclosure for high-privacy deployments.</t>
      <t>Transparency logs and conformance artifacts can improve auditability but can also disclose sensitive patterns. Deployments SHOULD separate public conformance registries from private operational status logs unless policy explicitly permits publication.</t>
    </section>

    <section anchor="operational" numbered="true"><name>Operational Considerations</name>
      <t>Operators need lifecycle processes for policy epochs, authority profiles, canonicalization profiles, issuer keys, status feeds, audit retention, conformance vectors, incident response, and constrained offline modes. These are not optional deployment details; they are inputs to the verifier's authorization decision.</t>
      <t>High-assurance deployments should identify all effect-bearing paths and choose enforcement placements accordingly. Practical placements include egress gateways, retrieval gateways, service-mesh sidecars, key-release gates, update-channel gates, message brokers, and recipient-side verifiers.</t>
      <t>Before using ORPRG for production decisions, operators need an implementation-specific threat model, key and issuer governance, monitoring, failure-mode analysis, and operational recovery procedures.</t>
    </section>

    <section anchor="implementation" numbered="true"><name>Implementation Status</name>
      <t>This section records implementation status for IETF discussion and is expected to be updated or removed before RFC publication in accordance with the guidance in <xref target="RFC7942"/>.</t>
      <t>A synthetic reference evaluation artifact exists for the ORPRG verifier concept. It exercises deterministic JSON canonicalization, action digests, synthetic signatures, strict schemas, status and checkpoint checks, Merkle-style inclusion and non-inclusion proofs, capability-token validation, replay caches, retrieval and egress gateway demonstrations, an ext_authz-shaped adapter, a KMS/HSM-shaped key-release gate, HTTP-envelope canonicalization fuzzing, conformance vectors, and baseline matrices. The artifact is synthetic and is not production code.</t>
      <t>The artifact is intentionally separated from this draft so that the community can discuss the protocol, conformance expectations, and appropriate public artifact release posture independently of any particular research package.</t>
    </section>

    <section anchor="ack" numbered="true"><name>Acknowledgments</name>
      <t>The author thanks the IETF security, identity, attestation, transparency, and authorization communities for the mechanisms that make interoperable effect-boundary authorization possible.</t>
    </section>
  </middle>
  <back>
    <references><name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front><title>Key words for use in RFCs to Indicate Requirement Levels</title><author initials="S." surname="Bradner" fullname="S. Bradner"/><date year="1997" month="March"/></front><seriesInfo name="RFC" value="2119"/><seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title><author initials="B." surname="Leiba" fullname="B. Leiba"/><date year="2017" month="May"/></front><seriesInfo name="RFC" value="8174"/><seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <references><name>Informative References</name>
      <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
        <front><title>Guidelines for Writing an IANA Considerations Section in RFCs</title><author initials="M." surname="Cotton" fullname="M. Cotton"/><author initials="B." surname="Leiba" fullname="B. Leiba"/><author initials="T." surname="Narten" fullname="T. Narten"/><date year="2017" month="June"/></front><seriesInfo name="RFC" value="8126"/><seriesInfo name="DOI" value="10.17487/RFC8126"/>
      </reference>
      <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942"><front><title>Improving Awareness of Running Code: The Implementation Status Section</title><author initials="D." surname="Sheffer" fullname="D. Sheffer"/><author initials="A." surname="Farrel" fullname="A. Farrel"/><date year="2016" month="July"/></front><seriesInfo name="RFC" value="7942"/><seriesInfo name="DOI" value="10.17487/RFC7942"/></reference>
      <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280"><front><title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title><author initials="D." surname="Cooper" fullname="D. Cooper"/><date year="2008" month="May"/></front><seriesInfo name="RFC" value="5280"/><seriesInfo name="DOI" value="10.17487/RFC5280"/></reference>
      <reference anchor="RFC6960" target="https://www.rfc-editor.org/info/rfc6960"><front><title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title><author initials="S." surname="Santesson" fullname="S. Santesson"/><date year="2013" month="June"/></front><seriesInfo name="RFC" value="6960"/><seriesInfo name="DOI" value="10.17487/RFC6960"/></reference>
      <reference anchor="RFC6962" target="https://www.rfc-editor.org/info/rfc6962"><front><title>Certificate Transparency</title><author initials="B." surname="Laurie" fullname="B. Laurie"/><author initials="A." surname="Langley" fullname="A. Langley"/><author initials="E." surname="Kasper" fullname="E. Kasper"/><date year="2013" month="June"/></front><seriesInfo name="RFC" value="6962"/><seriesInfo name="DOI" value="10.17487/RFC6962"/></reference>
      <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785"><front><title>JSON Canonicalization Scheme (JCS)</title><author initials="A." surname="Rundgren" fullname="A. Rundgren"/><author initials="B." surname="Jordan" fullname="B. Jordan"/><author initials="S." surname="Eriksson" fullname="S. Eriksson"/><date year="2020" month="June"/></front><seriesInfo name="RFC" value="8785"/><seriesInfo name="DOI" value="10.17487/RFC8785"/></reference>
      <reference anchor="RFC9334" target="https://www.rfc-editor.org/info/rfc9334"><front><title>Remote ATtestation procedureS (RATS) Architecture</title><author initials="H." surname="Birkholz" fullname="H. Birkholz"/><author initials="D." surname="Thaler" fullname="D. Thaler"/><author initials="M." surname="Richardson" fullname="M. Richardson"/><author initials="N." surname="Smith" fullname="N. Smith"/><author initials="W." surname="Pan" fullname="W. Pan"/><date year="2023" month="January"/></front><seriesInfo name="RFC" value="9334"/><seriesInfo name="DOI" value="10.17487/RFC9334"/></reference>
      <reference anchor="RFC9449" target="https://www.rfc-editor.org/info/rfc9449"><front><title>OAuth 2.0 Demonstrating Proof of Possession</title><author initials="D." surname="Fett" fullname="D. Fett"/><date year="2023" month="September"/></front><seriesInfo name="RFC" value="9449"/><seriesInfo name="DOI" value="10.17487/RFC9449"/></reference>
      <reference anchor="RFC8693" target="https://www.rfc-editor.org/info/rfc8693"><front><title>OAuth 2.0 Token Exchange</title><author initials="M." surname="Jones" fullname="M. Jones"/><author initials="A." surname="Nadalin" fullname="A. Nadalin"/><author initials="B." surname="Campbell" fullname="B. Campbell"/><date year="2020" month="January"/></front><seriesInfo name="RFC" value="8693"/><seriesInfo name="DOI" value="10.17487/RFC8693"/></reference>
    </references>
  </back>
</rfc>
