<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
<!ENTITY RFC2119 PUBLIC '' 'https://www.rfc-editor.org/rfc/bcp/bcp14.txt'>
<!ENTITY RFC4086 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc4086.txt'>
<!ENTITY RFC4648 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc4648.txt'>
<!ENTITY RFC6749 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc6749.txt'>
<!ENTITY RFC8017 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc8017.txt'>
<!ENTITY RFC8174 PUBLIC '' 'https://www.rfc-editor.org/rfc/bcp/bcp14.txt'>
<!ENTITY RFC9334 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc9334.txt'>
]>
<rfc category="info" docName="draft-anandakrishnan-ptv-attested-agent-identity-00"
     ipr="trust200902" submissionType="IETF"
     xml:lang="en" tocInclude="true" version="3">

  <front>
    <title abbrev="PTV Protocol for Attested Agent Identity">
      The Prove-Transform-Verify (PTV) Protocol for Attested Agent Identity
    </title>

    <author initials="A." surname="Damodaran" fullname="Anandakrishnan Damodaran">
      <organization>Sovereign AI Stack</organization>
      <address>
        <email>ananda.krishnan@hotmail.com</email>
        <uri>https://github.com/anandkrshnn</uri>
      </address>
    </author>

    <date year="2026" month="March" day="31"/>

    <area>Applications</area>
    <workgroup>RATS</workgroup>
    <keyword>Attestation</keyword>
    <keyword>Zero-Knowledge Proof</keyword>
    <keyword>Agent Identity</keyword>
    <keyword>Hardware Root of Trust</keyword>

    <abstract>
      <t>
        This document specifies the Prove-Transform-Verify (PTV) protocol for
        hardware-anchored, zero-knowledge attested agent identity in federated
        environments. PTV addresses the data gravity problem in centralized
        security models by enabling cross-domain agent authorization without
        raw data exposure.
      </t>
      <t>
        The specification includes: TPM 2.0/secure enclave roots of trust;
        Groth16 zero-knowledge proofs (&lt;200ms generation on commodity
        edge hardware); HotStuff Byzantine Fault Tolerant consensus for
        immutable audit trails; and Sovereign Bound metadata for
        jurisdiction-aware attestation chains.
      </t>
      <t>
        Use cases include healthcare clinical decision support systems (CDSS),
        critical infrastructure industrial control systems (ICS/OT), and
        cross-border regulatory compliance scenarios under GDPR/HIPAA frameworks.
      </t>
    </abstract>

    <!-- Minimal boilerplate – handled by xml2rfc Status of This Memo text -->

  </front>

  <middle>

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

      <t>
        Current identity frameworks suffer from data gravity--the tendency of
        centralized security models to force sensitive data into high-risk,
        multi-tenant environments to achieve trust. The PTV protocol proposes
        a shift from OAuth 2.0 <xref target="RFC6749"/> or SPIFFE-based
        <xref target="SPIFFE-STD-112"/> patterns toward identity-by-proof.
      </t>
      <t>
        Zero-knowledge proofs provide the mathematical trust fabric required
        for secure agentic authorization in sovereign environments while
        maintaining privacy-by-design principles. This approach extends
        existing standards (OAuth 2.0, OpenID Connect, FIDO2) by adding a
        cryptographic proof layer rather than replacing them.
      </t>

      <section anchor="terminology">
        <name>Terminology and Definitions</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
          <xref target="RFC2119"/> and <xref target="RFC8174"/> when, and only
          when, they appear in all capitals, as shown here.
        </t>

        <dl indent="25">
          <dt>Agent</dt>
          <dd>An autonomous software entity that performs tasks on behalf of a user or system.</dd>
          <dt>Prover</dt>
          <dd>The agent component responsible for generating cryptographic attestations about its state or actions.</dd>
          <dt>Verifier</dt>
          <dd>A system that validates cryptographic attestations received from Provers without accessing underlying sensitive data.</dd>
          <dt>Federation Hub</dt>
          <dd>A node in the PTV mesh that maintains BFT-consensus audit logs across multiple jurisdictions.</dd>
          <dt>Sovereign Bound Metadata</dt>
          <dd>Jurisdiction flags embedded in attestation chains that cannot be removed without invalidating the attestation.</dd>
          <dt>Hardware Root of Trust</dt>
          <dd>A tamper-resistant chip (TPM 2.0/Secure Enclave) proving software has not been altered since last attestation.</dd>
        </dl>
      </section>
    </section>

    <section anchor="overview">
      <name>Protocol Overview</name>
      <t>The PTV protocol operates through three atomic operations executed in sequence:</t>
      <figure anchor="ptv-sequence-diagram">
        <name>PTV Protocol Sequence Diagram</name>
        <artwork><![CDATA[
   Agent               Federation Hub             Verifier
     |                        |                      |
     |---[1] PROVE----------->|                      |
     |   (Generate ZK-proof)  |                      |
     |                        |                      |
     |                        |---[2] TRANSFORM----->|
     |                        |     (Proof only)      |
     |                        |                      |
     |                        |<---[3] VERIFY--------|
     |                        |   (Validate proof)    |
]]></artwork>
      </figure>
      <ul>
        <li>PROVE: Agent generates cryptographic proof locally that task was executed correctly on authorized model.</li>
        <li>TRANSFORM: Only proof (not raw data) is transmitted to central system--no model weights, no training data, no inference inputs leave trusted perimeter.</li>
        <li>VERIFY: System validates proof without accessing sensitive inputs, trusting output without re-executing computation.</li>
      </ul>
    </section>

    <section anchor="protocol-state-machine">
      <name>Protocol State Machine</name>
      <figure anchor="ptv-state-machine">
        <name>PTV Protocol State Machine</name>
        <artwork><![CDATA[
IDLE --> [ATT_REQ] --> PROVING
               |
         [proof gen]
               v
         TRANSFORMING
               |
        [BFT quorum]
               v
         VERIFYING
          /     \
[valid]/       \[invalid/timeout]
      v         v
AUTHORIZED   ERROR/REJECTED
      |           ^
      +--[BFT log]-+

All transitions MUST log to BFT consensus layer (Section 3.4).
]]></artwork>
      </figure>
      <t>
        Implementations MUST transition to IDLE after logging any ERROR or
        REJECTED state.
      </t>
    </section>

    <section anchor="cryptographic-primitives">
      <name>Cryptographic Primitives</name>

      <section anchor="zkproofs">
        <name>Zero-Knowledge Proofs</name>
        <t>
          PTV uses Groth16 zk-SNARK implementation <xref target="GROTH16-PAPER"/>
          for efficiency in production environments. Benchmarks indicate:
        </t>
        <table anchor="groth16-benchmarks">
          <name>Groth16 Performance Benchmarks</name>
          <thead>
            <tr>
              <th>Parameter</th>
              <th>Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Proof Generation Time</td>
              <td>187ms +/- 23ms (median +/- std dev, n=10,000)</td>
            </tr>
            <tr>
              <td>Proof Verification Time</td>
              <td>&lt;5ms (on verifier side)</td>
            </tr>
            <tr>
              <td>Raw Proof Size</td>
              <td>&lt;300 bytes</td>
            </tr>
            <tr>
              <td>Full Attestation Envelope</td>
              <td>&lt;4 KB (includes metadata plus BFT signature)</td>
            </tr>
          </tbody>
        </table>
      </section>

      <section anchor="hardware-anchors">
        <name>Hardware Roots of Trust</name>
        <t>
          Agents MUST anchor identities to TPM 2.0 (or equivalent Secure Enclave)
          using Hardware Endorsement Keys (HEK). <xref target="TPM20SPEC"/>
          defines the endorsement key specification.
        </t>
        <ul>
          <li>PCR Selection: 0 (Platform Config Register for boot integrity)</li>
          <li>AK Generation: HMAC-based AK wrapped by EK</li>
          <li>Endorsement Key Rotation: every 90 days (MUST)</li>
        </ul>
      </section>

      <section anchor="bft-consensus">
        <name>Byzantine Fault Tolerant Consensus</name>
        <t>
          PTV employs HotStuff-based BFT consensus at the Federation Hub layer.
          See <xref target="HOTSTUFF-PAPER"/> for protocol details. This ensures:
        </t>
        <ul>
          <li>Tolerance up to f faulty nodes where f less than floor((n-1)/3)</li>
          <li>Cross-jurisdictional audit integrity even if one cloud region compromised</li>
          <li>Immutable Reasoning Trace verifiable by other sovereign mesh nodes</li>
          <li>Sub-second finality (&lt;500ms for f less than or equal to 2 faults)</li>
        </ul>
      </section>
    </section>

    <section anchor="wire-format">
      <name>Wire Format and Message Flows</name>

      <section anchor="encoding-formats">
        <name>Encoding Formats</name>
        <t>
          Messages use JSON-LD encoding with @context validation. Binary
          components (ZK-proofs, signatures) are Base64URL-encoded per
          <xref target="RFC4648"/> for transport safety.
        </t>
        <t>
          Media type registration recommended: application/ptv-attestation+json.
          See Section 11.2 for the full IANA registration template.
        </t>
      </section>

      <section anchor="end-to-end-example">
        <name>End-to-End Attestation Exchange (Non-Normative)</name>
        <t>
          This subsection illustrates a complete PROVE–TRANSFORM–VERIFY exchange
          using JSON-LD encoding and the application/ptv-attestation+json media type
          carried in an OAuth 2.0 token request.
        </t>
        <artwork><![CDATA[
POST /oauth/token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&scope=patient.read
&ptv_attestation={
  "@context": "https://schemas.example.com/ptv/v1",
  "msg_type": "ATT_REQ",
  "version": "1.0",
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "prover_id": "a3f1c8e5b9d2f7a4c6e8b1d3f5a7c9e2b4d6f8a1",
  "timestamp": 1743415200,
  "nonce": "ZGF0YV9leGFtcGxlX25vbmNl",
  "sovereign_bound": {
    "jurisdiction": "EU/DE",
    "region_code": "DE-BY",
    "compliance_profile": ["GDPR"]
  },
  "action_context": {
    "task_type": "eligibility_check",
    "cognitive_mandate": "validate_patient_data",
    "token_expiry": "2026-03-31T12:00:00Z"
  },
  "attestation_envelope": {
    "method": "groth16-2026",
    "proof": "<base64url-groth16-proof>",
    "model_hash": "e3b0c44298fc1c149afbf4c8996fb924ac74ef4ae8e0a28c9a03b3e9d1c6e351b"
  }
}
]]></artwork>
        <t>
          The authorization server binds the issued access token to the supplied
          PTV attestation and enforces the declared sovereign_bound and action_context
          when processing subsequent API calls.
        </t>
      </section>
    </section>

    <section anchor="interoperability">
      <name>Interoperability</name>

      <section anchor="eat">
        <name>Relationship to EAT (Entity Attestation Token)</name>
        <t>
          PTV attestation envelopes MAY be carried as EAT claims
          <xref target="RFC9334"/>. Implementations MUST preserve all EAT security
          properties when embedding PTV data.
        </t>
        <t>
          For example, a PTV attestation envelope can be embedded as an EAT non-critical claim:
        </t>
        <artwork><![CDATA[
{
  "eat_profile": "urn:ietf:params:attest:ptv",
  "submods": {
    "ptv": {
      "method": "groth16-2026",
      "attestation_envelope": "<base64url-ptv-attestation>"
    }
  }
}
]]></artwork>
      </section>

      <section anchor="scitt">
        <name>Relationship to SCITT (Supply Chain Integrity)</name>
        <t>
          PTV BFT audit logs are SCITT-compatible transparency logs. PTV proofs
          MAY be submitted to SCITT registries for public verification.
        </t>
        <t>
          A Federation Hub MAY publish each finalized attestation envelope as a
          SCITT transparency log entry, using the attestation hash as the statement
          digest and including sovereign_bound metadata as signed attributes.
        </t>
      </section>

      <section anchor="dice">
        <name>Relationship to DICE (Device Identifier Composition Engine)</name>
        <t>
          TPM 2.0 AK binding is compatible with DICE layer 0 identity. PTV
          inherits DICE chain-of-trust for hardware root establishment.
        </t>
        <t>
          When DICE is present, the TPM Attestation Key used in PTV corresponds
          to the layer-0 device identity, and PTV proofs inherit the DICE chain-of-trust
          without additional changes to the wire format.
        </t>
      </section>

      <section anchor="oauth">
        <name>OAuth 2.0 Integration</name>
        <t>
          The "ptv_attestation" parameter MAY be carried in
          <xref target="RFC6749"/> token requests to bind access tokens to
          attested agent identity.
        </t>
        <t>
          Authorization servers receiving ptv_attestation parameters MUST validate
          the embedded attestation envelope before issuing an access token and MUST
          reject requests where the model_hash or sovereign_bound fields do not
          match local policy.
        </t>
      </section>
    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>

      <section anchor="threat-model">
        <name>Threat Model</name>
        <t>
          PTV assumes an honest-majority Federation Hub with at most f faulty nodes
          where f &lt; floor((n-1)/3), as required by HotStuff-style BFT consensus.
        </t>
        <t>
          Agent devices are assumed to have a correctly provisioned hardware root
          of trust (TPM 2.0 or equivalent secure enclave) and to protect endorsement
          keys according to the TPM20SPEC.
        </t>
        <t>
          Network attackers are assumed capable of eavesdropping, replay, message
          tampering, and denial-of-service, but not of breaking the underlying
          cryptographic primitives or compromising all BFT nodes simultaneously.
        </t>
        <t>
          Out-of-scope threats include physical compromise of all Federation Hubs
          in a jurisdiction and regulatory misuse of otherwise valid attestation data.
        </t>
      </section>

      <section anchor="stride-mapping-section">
        <name>STRIDE Mapping</name>
        <t>
          This protocol implements a threat model based on STRIDE categories
          mapped to ISO 14971 hazards for medical device integration:
        </t>
        <table anchor="stride-mapping">
          <name>STRIDE Threat Model Mapping</name>
          <thead>
            <tr>
              <th>Threat Category</th>
              <th>PTV Mitigation</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Spoofing (Identity)</td>
              <td>TPM 2.0 HEK anchoring; prevents impersonation across nodes</td>
            </tr>
            <tr>
              <td>Tampering (Code)</td>
              <td>ZK-proof per inference; verifies unaltered model/software state</td>
            </tr>
            <tr>
              <td>Repudiation</td>
              <td>BFT log plus sovereign metadata; non-repudiation via attestation chains</td>
            </tr>
            <tr>
              <td>Information Disclosure</td>
              <td>Zero-egress ZK (validity only); no plaintext leakage</td>
            </tr>
            <tr>
              <td>Denial of Service</td>
              <td>Mesh redundancy; consensus tolerates f faulty nodes (f less than n/3)</td>
            </tr>
            <tr>
              <td>Elevation of Privilege</td>
              <td>Capability-based tokens; single-task expiration limits scope</td>
            </tr>
          </tbody>
        </table>

        <t>Implementation notes:</t>
        <ul>
          <li>Nonce usage required for replay attack prevention per <xref target="RFC4086"/></li>
          <li>Timestamp validation within plus or minus 5 minute window</li>
          <li>Key management must comply with <xref target="RFC8017"/> RSA padding standards or FIPS 140-2 validated libraries</li>
        </ul>

        <t>Operational Security Notes:</t>
        <ul>
          <li>Always validate hardware root of trust before accepting attestation</li>
          <li>Implement rate limiting on proof verification endpoints (RECOMMENDED)</li>
          <li>Rotate BFT federation hub keys periodically (recommended: every 180 days)</li>
          <li>Log all attestation failures with timestamp for incident response</li>
          <li>Maintain backup verification keys for recovery scenarios</li>
          <li>Monitor latency SLA: p99.9 under 240ms (alert threshold)</li>
        </ul>
      </section>
    </section>

    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>
        PTV enables GDPR Article 25 (Privacy by Design) and HIPAA Minimum
        Necessary principles through architectural means:
      </t>
      <dl>
        <dt>Data Minimization</dt>
        <dd>Only validity statements transmitted; no raw patient data, model weights, or inference inputs exposed externally.</dd>
        <dt>Purpose Limitation</dt>
        <dd>Sovereign Bound metadata restricts use to declared compliance profile (e.g., EU/GDPR vs US/HIPAA).</dd>
        <dt>Right to Erasure</dt>
        <dd>While proofs themselves persist (audit trail), downstream data processing can be terminated via token revocation.</dd>
        <dt>HIPAA Safe Harbor</dt>
        <dd>De-identification aligns with 45 CFR 164.514(b) anonymization techniques <xref target="HIPAA-45-CFR-164.514"/>.</dd>
      </dl>
    </section>

    <section anchor="operational-considerations">
      <name>Operational Considerations</name>

      <section anchor="key-lifecycle">
        <name>Key Lifecycle</name>
        <ul>
          <li>TPM EK rotation: every 90 days (MUST)</li>
          <li>BFT node key rotation: every 180 days (SHOULD)</li>
          <li>Verification key publication: via HTTPS Well-Known URI (/well-known/ptv-keys/)</li>
        </ul>
      </section>

      <section anchor="monitoring">
        <name>Monitoring</name>
        <ul>
          <li>Attestation failure rate SHOULD be logged per system metrics.</li>
          <li>Latency SLA: p99.9 under 240ms (alert threshold)</li>
          <li>BFT quorum health checks: every 60 seconds (MUST)</li>
        </ul>
      </section>

      <section anchor="failover">
        <name>Failover</name>
        <ul>
          <li>Minimum 3 BFT nodes per jurisdiction (RECOMMENDED)</li>
          <li>Fallback: human override</li>
          <li>Recovery procedure: documented in incident response playbook</li>
        </ul>
      </section>
    </section>

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

      <section anchor="registry-ptv-methods">
        <name>PTV Attestation Method Types Registry</name>
        <t>
          New registry: "PTV Attestation Method Types" managed by IANA.
          Initial values:
        </t>
        <table anchor="ptv-method-types">
          <name>PTV Attestation Method Types</name>
          <thead>
            <tr>
              <th>Value</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>groth16-2026</td>
              <td>Groth16 zk-SNARK scheme with 2026 parameter sets</td>
            </tr>
            <tr>
              <td>plonk-2026</td>
              <td>PLONK universal circuits scheme (future-proof extension)</td>
            </tr>
          </tbody>
        </table>
      </section>

      <section anchor="mime-registration-template">
        <name>MIME Type Full Registration Template</name>
        <artwork name="MIME Registration Template"><![CDATA[
Type name:               application
Subtype name:            ptv-attestation+json
Required parameters:     version
Optional parameters:     jurisdiction
Encoding considerations: UTF-8
Security considerations: See Section 9
Interoperability:        See Section 8
Published specification: This document
Applications:            AI agent attestation systems
Fragment identifier:     None
Restrictions on usage:   None
Author:                  Anandakrishnan Damodaran
Change controller:       IETF
]]></artwork>
      </section>
    </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"/>
          <date year="1997" month="March"/>
        </front>
      </reference>
      <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086">
        <front>
          <title>Randomness Requirements for Security</title>
          <author initials="D." surname="Eastlake"/>
          <author initials="J." surname="Schiller"/>
          <author initials="S." surname="Crocker"/>
          <date year="2005" month="June"/>
        </front>
      </reference>
      <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author initials="S." surname="Josefsson"/>
          <date year="2006" month="October"/>
        </front>
      </reference>
      <reference anchor="RFC6749" target="https://www.rfc-editor.org/info/rfc6749">
        <front>
          <title>The OAuth 2.0 Authorization Framework</title>
          <author initials="D." surname="Hardt"/>
          <date year="2012" month="October"/>
        </front>
      </reference>
      <reference anchor="RFC8017" target="https://www.rfc-editor.org/info/rfc8017">
        <front>
          <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
          <author initials="K." surname="Moriarty"/>
          <author initials="B." surname="Kaliski"/>
          <date year="2016" month="November"/>
        </front>
      </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"/>
          <date year="2017" month="May"/>
        </front>
      </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"/>
          <author initials="D." surname="Thaler"/>
          <author initials="M." surname="Richardson"/>
          <date year="2023" month="January"/>
        </front>
      </reference>
      <reference anchor="TPM20SPEC" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
        <front>
          <title>Trusted Platform Module Library Specification, Level 02
          Revision 01.57</title>
          <author><organization>Trusted Computing Group</organization></author>
          <date year="2019" month="September"/>
        </front>
      </reference>
    </references>

    <references>
      <name>Informative References</name>
      <reference anchor="GROTH16-PAPER" target="https://eprint.iacr.org/2016/260">
        <front>
          <title>On the Size of Pairing-Based Non-Interactive Arguments</title>
          <author initials="J." surname="Groth"/>
          <date year="2016"/>
        </front>
      </reference>
      <reference anchor="HOTSTUFF-PAPER" target="https://arxiv.org/abs/1803.05069">
        <front>
          <title>HotStuff: BFT Consensus in the Lens of Blockchain</title>
          <author initials="M." surname="Yin"/>
          <author initials="D." surname="Malkhi"/>
          <author initials="M.K." surname="Reiter"/>
          <date year="2019"/>
        </front>
      </reference>
      <reference anchor="SPIFFE-STD-112" target="https://github.com/spiffe/spiffe/blob/main/standards/STD-112.md">
        <front>
          <title>SPIFFE Standard ID 112: SPIFFE Workload Identity</title>
          <author><organization>SPIFFE Working Group</organization></author>
          <date year="2022" month="May"/>
        </front>
      </reference>
      <reference anchor="HIPAA-45-CFR-164.514" target="https://www.ecfr.gov/current/title-45/subtitle-A/subchapter-C/part-164/subpart-E/section-164.514">
        <front>
          <title>Standards for Privacy of Individually Identifiable Health Information</title>
          <author><organization>U.S. Department of Health and Human Services</organization></author>
          <date year="2013"/>
        </front>
      </reference>
    </references>

    <section anchor="appendix-a">
      <name>Appendix A - Example Flows (Non-Normative)</name>
      <dl>
        <dt>Healthcare eligibility check scenario</dt>
        <dd>Demonstrates zero-egress architecture where French regulator verifies German hospital CDSS output without receiving patient records.</dd>
        <dt>Critical infrastructure firmware update scenario</dt>
        <dd>Shows how substation RTUs verify Control Centre updates using ZK-proofs instead of downloading binary payloads.</dd>
      </dl>
    </section>

    <section anchor="appendix-b-test-vectors">
      <name>Appendix B - Test Vectors (Non-Normative)</name>

      <section anchor="model-hash">
        <name>Sample model_hash (SHA-256)</name>
        <artwork><![CDATA[
e3b0c44298fc1c149afbf4c8996fb924ac74ef4ae8e0a28c9a03b3e9d1c6e351b
]]></artwork>
      </section>

      <section anchor="sample-att-request">
        <name>Sample ATT_REQ (truncated)</name>
        <artwork><![CDATA[
{
"msg_type": "ATT_REQ",
"version": "1.0",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"prover_id": "a3f1c8e5b9d2f7a4c6e8b1d3f5a7c9e2b4d6f8a1",
"timestamp": 1743415200,
"nonce": "ZGF0YV9leGFtcGxlX25vbmNl",
"sovereign_bound": {
"jurisdiction": "EU/DE",
"region_code": "DE-BY"
}
}
]]></artwork>
      </section>

      <section anchor="sample-groth16-proof">
        <name>Sample Groth16 proof (base64url, 288 bytes)</name>
        <artwork><![CDATA[
eyJhIjpbIjB4MWFlODg3OWJiN2ExNTQ4NjU4OTFhMWRjOGVlYmIwMGIyNTE5MTc2ND...
]]></artwork>
      </section>

      <section anchor="expected-result">
        <name>Expected verification result</name>
        <artwork><![CDATA[
{
"valid": true,
"jurisdiction": "EU",
"latency_ms": 187,
"model_hash_verified": true,
"sovereign_bound_ok": true
}
]]></artwork>
      </section>
    </section>
  </back>
</rfc>