<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-eat-da-00" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="EAT DA">An EAT Profile for Trustworthy Device Assignment</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-da-00"/>
    <author fullname="Mathieu Poirier">
      <organization>Linaro</organization>
      <address>
        <email>mathieu.poirier@linaro.org</email>
      </address>
    </author>
    <author fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author fullname="Thomas Fossati">
      <organization>NVIDIA</organization>
      <address>
        <email>tfossati@nvidia.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <keyword>device assignment</keyword>
    <keyword>EAT</keyword>
    <abstract>
      <?line 76?>

<t>In confidential computing, device assignment (DA) is the method by which a device (e.g., network adapter, GPU), whether on-chip or behind a PCIe Root Port, is assigned to a Trusted Virtual Machine (TVM).
For the TVM to trust an assigned device, the device must provide the TVM with attestation Evidence confirming its identity, the state of its firmware and configuration.</t>
      <t>Since Evidence claims can be processed by 3rd party entities (e.g., Verifiers, Relying Parties) external to the TVM, there is a need to standardize the representation of DA-related information in Evidence to ensure interoperability.
This document defines an attestation Evidence format for DA as an EAT (Entity Attestation Token) profile.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-rats-wg.github.io/draft-ietf-rats-eat-da/draft-ietf-rats-eat-da.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-rats-eat-da/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Remote ATtestation ProcedureS Working Group mailing list (<eref target="mailto:rats@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/rats/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-rats-wg/draft-ietf-rats-eat-da"/>.</t>
    </note>
  </front>
  <middle>
    <?line 84?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In confidential computing, device assignment (DA) is the method by which a device (e.g., network adapter, GPU), whether on-chip or behind a PCIe Root Port, is assigned to a Trusted Virtual Machine (TVM).
Most confidential computing platforms (e.g., Arm CCA, AMD SEV-SNP, Intel TDX) provide DA capabilities.
Such capabilities prevent execution environments or software components that are untrusted by the TVM (including other TVMs and the host hypervisor) from accessing or controlling a device that has been assigned to the TVM.
This includes, for example, protection of device MMIO interfaces and device caches.
From a trust perspective, DA allows a device to be included in the TVM's Trusted Computing Base (TCB).
For the TVM to trust the device, the device must provide the TVM with attestation Evidence confirming its identity and the state of its firmware and configuration.</t>
      <t><xref target="fig-ratsd"/> gives an overview of the architecture targeted by this specification.
Devices assigned to a TVM must be authenticated by a 3rd party verifier before being accepted into the TCB.</t>
      <figure anchor="fig-ratsd">
        <name>Confidential VM with Trusted Device(s)</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="424" viewBox="0 0 424 624" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,112 L 8,576" fill="none" stroke="black"/>
              <path d="M 32,160 L 32,368" fill="none" stroke="black"/>
              <path d="M 32,400 L 32,560" fill="none" stroke="black"/>
              <path d="M 48,208 L 48,240" fill="none" stroke="black"/>
              <path d="M 48,304 L 48,336" fill="none" stroke="black"/>
              <path d="M 48,448 L 48,496" fill="none" stroke="black"/>
              <path d="M 80,248 L 80,296" fill="none" stroke="black"/>
              <path d="M 80,344 L 80,440" fill="none" stroke="black"/>
              <path d="M 112,72 L 112,200" fill="none" stroke="black"/>
              <path d="M 144,248 L 144,296" fill="none" stroke="black"/>
              <path d="M 144,344 L 144,416" fill="none" stroke="black"/>
              <path d="M 176,208 L 176,240" fill="none" stroke="black"/>
              <path d="M 176,304 L 176,336" fill="none" stroke="black"/>
              <path d="M 176,448 L 176,496" fill="none" stroke="black"/>
              <path d="M 192,160 L 192,368" fill="none" stroke="black"/>
              <path d="M 192,400 L 192,424" fill="none" stroke="black"/>
              <path d="M 192,440 L 192,560" fill="none" stroke="black"/>
              <path d="M 216,160 L 216,368" fill="none" stroke="black"/>
              <path d="M 216,400 L 216,424" fill="none" stroke="black"/>
              <path d="M 216,440 L 216,560" fill="none" stroke="black"/>
              <path d="M 232,144 L 232,160" fill="none" stroke="black"/>
              <path d="M 232,288 L 232,336" fill="none" stroke="black"/>
              <path d="M 232,416 L 232,448" fill="none" stroke="black"/>
              <path d="M 248,128 L 248,144" fill="none" stroke="black"/>
              <path d="M 264,344 L 264,416" fill="none" stroke="black"/>
              <path d="M 344,288 L 344,336" fill="none" stroke="black"/>
              <path d="M 360,160 L 360,368" fill="none" stroke="black"/>
              <path d="M 376,144 L 376,352" fill="none" stroke="black"/>
              <path d="M 376,416 L 376,448" fill="none" stroke="black"/>
              <path d="M 392,128 L 392,336" fill="none" stroke="black"/>
              <path d="M 392,400 L 392,560" fill="none" stroke="black"/>
              <path d="M 416,112 L 416,576" fill="none" stroke="black"/>
              <path d="M 56,32 L 168,32" fill="none" stroke="black"/>
              <path d="M 56,64 L 168,64" fill="none" stroke="black"/>
              <path d="M 24,96 L 400,96" fill="none" stroke="black"/>
              <path d="M 248,128 L 392,128" fill="none" stroke="black"/>
              <path d="M 232,144 L 376,144" fill="none" stroke="black"/>
              <path d="M 32,160 L 192,160" fill="none" stroke="black"/>
              <path d="M 216,160 L 360,160" fill="none" stroke="black"/>
              <path d="M 48,208 L 176,208" fill="none" stroke="black"/>
              <path d="M 48,240 L 176,240" fill="none" stroke="black"/>
              <path d="M 232,288 L 344,288" fill="none" stroke="black"/>
              <path d="M 48,304 L 176,304" fill="none" stroke="black"/>
              <path d="M 48,336 L 176,336" fill="none" stroke="black"/>
              <path d="M 232,336 L 344,336" fill="none" stroke="black"/>
              <path d="M 376,336 L 392,336" fill="none" stroke="black"/>
              <path d="M 360,352 L 376,352" fill="none" stroke="black"/>
              <path d="M 32,368 L 72,368" fill="none" stroke="black"/>
              <path d="M 88,368 L 136,368" fill="none" stroke="black"/>
              <path d="M 152,368 L 192,368" fill="none" stroke="black"/>
              <path d="M 216,368 L 256,368" fill="none" stroke="black"/>
              <path d="M 272,368 L 360,368" fill="none" stroke="black"/>
              <path d="M 32,400 L 72,400" fill="none" stroke="black"/>
              <path d="M 88,400 L 136,400" fill="none" stroke="black"/>
              <path d="M 152,400 L 192,400" fill="none" stroke="black"/>
              <path d="M 216,400 L 256,400" fill="none" stroke="black"/>
              <path d="M 272,400 L 392,400" fill="none" stroke="black"/>
              <path d="M 232,416 L 256,416" fill="none" stroke="black"/>
              <path d="M 272,416 L 376,416" fill="none" stroke="black"/>
              <path d="M 160,432 L 248,432" fill="none" stroke="black"/>
              <path d="M 48,448 L 176,448" fill="none" stroke="black"/>
              <path d="M 232,448 L 376,448" fill="none" stroke="black"/>
              <path d="M 48,496 L 176,496" fill="none" stroke="black"/>
              <path d="M 32,560 L 192,560" fill="none" stroke="black"/>
              <path d="M 216,560 L 392,560" fill="none" stroke="black"/>
              <path d="M 24,592 L 400,592" fill="none" stroke="black"/>
              <path d="M 56,32 C 47.16936,32 40,39.16936 40,48" fill="none" stroke="black"/>
              <path d="M 168,32 C 176.83064,32 184,39.16936 184,48" fill="none" stroke="black"/>
              <path d="M 56,64 C 47.16936,64 40,56.83064 40,48" fill="none" stroke="black"/>
              <path d="M 168,64 C 176.83064,64 184,56.83064 184,48" fill="none" stroke="black"/>
              <path d="M 24,96 C 15.16936,96 8,103.16936 8,112" fill="none" stroke="black"/>
              <path d="M 400,96 C 408.83064,96 416,103.16936 416,112" fill="none" stroke="black"/>
              <path d="M 160,432 C 151.16936,432 144,424.83064 144,416" fill="none" stroke="black"/>
              <path d="M 248,432 C 256.83064,432 264,424.83064 264,416" fill="none" stroke="black"/>
              <path d="M 24,592 C 15.16936,592 8,584.83064 8,576" fill="none" stroke="black"/>
              <path d="M 400,592 C 408.83064,592 416,584.83064 416,576" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="272,344 260,338.4 260,349.6" fill="black" transform="rotate(270,264,344)"/>
              <polygon class="arrowhead" points="152,344 140,338.4 140,349.6" fill="black" transform="rotate(270,144,344)"/>
              <polygon class="arrowhead" points="152,296 140,290.4 140,301.6" fill="black" transform="rotate(90,144,296)"/>
              <polygon class="arrowhead" points="152,248 140,242.4 140,253.6" fill="black" transform="rotate(270,144,248)"/>
              <polygon class="arrowhead" points="120,200 108,194.4 108,205.6" fill="black" transform="rotate(90,112,200)"/>
              <polygon class="arrowhead" points="120,72 108,66.4 108,77.6" fill="black" transform="rotate(270,112,72)"/>
              <polygon class="arrowhead" points="88,440 76,434.4 76,445.6" fill="black" transform="rotate(90,80,440)"/>
              <polygon class="arrowhead" points="88,344 76,338.4 76,349.6" fill="black" transform="rotate(270,80,344)"/>
              <polygon class="arrowhead" points="88,296 76,290.4 76,301.6" fill="black" transform="rotate(90,80,296)"/>
              <polygon class="arrowhead" points="88,248 76,242.4 76,253.6" fill="black" transform="rotate(270,80,248)"/>
              <g class="text">
                <text x="84" y="52">Verifier</text>
                <text x="128" y="52">/</text>
                <text x="148" y="52">RP</text>
                <text x="60" y="132">Attester</text>
                <text x="56" y="180">TVM</text>
                <text x="260" y="180">Assigned</text>
                <text x="324" y="180">Device</text>
                <text x="76" y="228">Lead</text>
                <text x="132" y="228">Attester</text>
                <text x="268" y="308">Device</text>
                <text x="80" y="324">Guest</text>
                <text x="132" y="324">Kernel</text>
                <text x="276" y="324">Attester</text>
                <text x="292" y="436">Host</text>
                <text x="340" y="436">Kernel</text>
                <text x="92" y="468">Platform</text>
                <text x="92" y="484">Attester</text>
                <text x="92" y="532">Confidential</text>
                <text x="264" y="532">Untrusted</text>
                <text x="76" y="548">Platform</text>
                <text x="260" y="548">Platform</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
      .---------------.
     | Verifier / RP   |
      '---------------'
              ^
  .-----------+------------------------------------.
 |            |                                     |
 |  Attester  |                .-----------------.  |
 |            |              .-+---------------. |  |
 |  .---------+---------.  .-+---------------. | |  |
 |  | TVM     |         |  | Assigned Device | | |  |
 |  |         v         |  |                 | | |  |
 |  | .---------------. |  |                 | | |  |
 |  | | Lead Attester | |  |                 | | |  |
 |  | '---------------' |  |                 | | |  |
 |  |     ^       ^     |  |                 | | |  |
 |  |     |       |     |  |                 | | |  |
 |  |     v       v     |  | .-------------. | | |  |
 |  | .---+-------+---. |  | | Device      | | | |  |
 |  | | Guest Kernel  | |  | | Attester    | | | |  |
 |  | '---------------' |  | '-------------' | +-'  |
 |  |     ^       ^     |  |     ^           +-'    |
 |  '-----|-------|-----'  '-----|-----------'      |
 |        |       |              |                  |
 |  .-----|-------|-----.  .-----|---------------.  |
 |  |     |       |     |  | .---|-------------. |  |
 |  |     v        '---------+--'  Host Kernel | |  |
 |  | .---------------. |  | '-----------------' |  |
 |  | | Platform      | |  |                     |  |
 |  | | Attester      | |  |                     |  |
 |  | '---------------' |  |                     |  |
 |  |                   |  |                     |  |
 |  | Confidential      |  | Untrusted           |  |
 |  | Platform          |  | Platform            |  |
 |  '-------------------'  '---------------------'  |
 |                                                  |
  '------------------------------------------------'
]]></artwork>
        </artset>
      </figure>
      <t>This document defines an attestation Evidence format for DA as an EAT <xref target="RFC9711"/> profile.
The format is designed to be generic, extensible and architecture-agnostic.
Ongoing work on DA concentrates on PCIe devices that support the SPDM protocol <xref target="SPDM"/>.
As such, this document focuses on establishing the overall framework and formalizing an Evidence format for SPDM-compliant PCIe devices.
It does not support on-chip SPDM-compliant device, something that is left for future consideration.</t>
      <t>The TVM uses the platform, i.e., PCIe Data Object Exchange (DOE), to transport SPDM packets, but the SPDM protocol uses its own mechanisms and messages to guarantee the authenticity and privacy of the information it carries.
It defines specific messages for creating and exchanging cryptographic keys between requester and responder to establish secure communication.
The cryptographic algorithms are selected based on the pre-negotiated capabilities of both parties (Section 10.16 of <xref target="SPDM"/>).
The SPDM protocol does not rely on the hypervisor or host for anything else other than the physical delivery of content between the trusted and non-trusted worlds.</t>
      <t>This format is based on the information provided by the SPDM protocol without imposing additional security constraints.
It is incumbent upon other entities to describe, select and enforce those additional security constraints based on operational requirements.</t>
      <t>Since other bus architectures and protocols are expected to be supported as the technology gains wider adoption, provisions have been made for the definition of other Evidence formats such as Compute Express Link (CXL) and the Coherent Hub Interface (CHI).
This list is by no means exhaustive and is expected to expand.
<xref target="extend"/> outlines the requirements for incorporating new bus technologies into the Device Assignment Token (DAT) framework.
Lastly, live migration of a TVM from one host to another is currently not addressed by the SPDM specification and therefore not covered herein.</t>
      <t>As discussed in <xref section="3.4" sectionFormat="of" target="RFC9334"/>, a lead Attester may also act as an internal Verifier.
For example, the lead Attester would verify the identity of the SPDM responder locally using a provisioned trust anchor.
If satisfied, it would then repackage the sub-Attester claims in the format defined in this document.
In other words, the lead Attester would use the framework and claims defined in this document to create Attestation Results.
In this sense, DAT can be considered to provide both an Attestation Result format and an Evidence format.
Generally, the distinction between Evidence and Attestation Results, when applied to Conceptual Messages generated by a composite device, may not always be completely transparent to the receiver.
Note that when using CMW <xref target="I-D.ietf-rats-msg-wrap"/> to wrap the collected claims, the <tt>ind</tt> field could be used to refine the Conceptual Message type expressed by the EAT media type <xref target="RFC9782"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>PCIe devices maximize hardware efficiency by splitting a single physical card into multiple independent logical devices called functions (see Section 9 of <xref target="PCIe"/>).
Because each physical or virtual function operates in isolation, multiple VMs can directly and safely share the same underlying hardware simultaneously.
In this document, the terms "<em>device</em>", "<em>interface</em>" and "<em>device interface</em>" refer to the physical or virtual function of a device.</t>
    </section>
    <section anchor="dat-claims">
      <name>Device Assignment Token (DAT) Claims</name>
      <t>The Device Assignment Token (DAT) is the encompassing envelope for the individual device claims to be presented.
A DAT can be used as a standalone entity but can also be embedded in a larger, platform-specific attestation token.
A DAT consists of an EAT profile identifier, a nonce and an EAT submodule (<xref section="4.2.18" sectionFormat="of" target="RFC9711"/>) that contains any number of individual device claims.
Each individual submodule is the combination of a device name and a standard claims-set based on the bus or protocol the device supports.
The syntax of the device name depends on the type of bus or protocol used.
Each name consists of two parts joined by a colon: a namespace and a bus-specific name.
See <xref target="spdm-submod-name"/> for SPDM devices, and <xref target="pcie-legacy-submod-name"/> for legacy PCIe devices.
As previously mentioned, this draft currently defines the claims-set for SPDM compliant devices and PCIe legacy devices that do not support the SPDM protocol.
Careful consideration was also given to the overall design in order to leave room for future expansion.</t>
      <sourcecode type="cddl"><![CDATA[
dat = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device#1.0.0"
  &(eat_nonce: 10) => bytes .size (8..64)
  &(eat_submods: 266) => {
    + device-name => $device-claims-set
  }
}

device-name = text

$device-claims-set /= spdm-claims
$device-claims-set /= pcie-legacy-claims
]]></sourcecode>
      <section anchor="spdm-claims">
        <name>SPDM Claims</name>
        <t>A SPDM claim instance is expected to be present for each SPDM compatible device to be attested.
Each instance consists of a measurements section, a certificates section, or both.
These can be supplemented with two additional sections: (1) a challenge for Component Mesaurement and Authentication (CMA) scenarios and (2) a device interface report that contains information from the TEE Device Information Security Protocol (TDISP) Device Interface Report (see Chapter 11 of <xref target="PCIe"/>).
A challenge needs certificate information from the certificate section and as such, can only be present if certificates are included in the SPDM artifacts.
TDISP messages are embedded in the VENDOR_DEFINED_REQUEST and VENDOR_DEFINED_RESPONSE messages of the SPDM protocol.
Optionally, the Negotiated State preamble (version, capabilities and algorithms) bytes can be included to present the full negotiated state between the SPDM requester and responder.</t>
        <sourcecode type="cddl"><![CDATA[
spdm-claims = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device-spdm#1.0.0"
  spdm-artefacts
  ? &(vca: 3804) => bytes
}

spdm-artefacts //= (
  &(measurements: 3802) => spdm-measurements
  &(certificates: 3803) => spdm-certificates
  ? &(challenge: 3807) => spdm-signature
  ? &(device-interface-report: 3808) => tdisp-device-interface-report
)

spdm-artefacts //= (
  &(measurements: 3802) => spdm-measurements
  ? &(device-interface-report: 3808) => tdisp-device-interface-report
)

spdm-artefacts //= (
  &(certificates: 3803) => spdm-certificates
  ? &(challenge: 3807) => spdm-signature
  ? &(device-interface-report: 3808) => tdisp-device-interface-report
)
]]></sourcecode>
        <section anchor="spdm-measurements">
          <name>Measurements Claim</name>
          <t>The SPDM specification reserves measurement indexes between 240 and 255, leaving space for 239 measurements per device.
The entire measurement log is optionally signed by the certificate populated in one of the 8 certificate slots.
It should be noted that measurements formalized herein follow the DMTF measurement specification (see Table 55 of <xref target="SPDM"/>).</t>
          <sourcecode type="cddl"><![CDATA[
spdm-measurements = {
  + block-id => spdm-measurement
  ? "signature" => spdm-signature
}

block-id = 1..239
]]></sourcecode>
          <section anchor="measurement">
            <name>Measurement</name>
            <t>SPDM measurements start with a component type that reflects one of the 10 categories defined by the SPDM specification.
Following is the measurement itself represented by either a raw bitstream or a digest.
The size of the digest value is derived from the measurement hash algorithm conveyed by the SPDM ALGORITHMS message response.</t>
            <sourcecode type="cddl"><![CDATA[
spdm-measurement = {
  &(component-type: 1) => component-type
  measurement
}

measurement //= ( &(digest-measurement: 2) => digest-measurement )
measurement //= ( &(raw-measurement: 3) => raw-measurement )

component-type /= &(immutable-rom: 0)
component-type /= &(mutable-firmware: 1)
component-type /= &(hardware-config: 2)
component-type /= &(firmware-config: 3)
component-type /= &(freeform-measurement-manifest: 4)
component-type /= &(device-mode: 5)
component-type /= &(mutable-firmware-version: 6)
component-type /= &(mutable-firmware-svn: 7)
component-type /= &(hash-extend-measurement: 8)
component-type /= &(informational: 9)
component-type /= &(structured-measurement-manifest: 10)

raw-measurement = bytes
digest-measurement = digest

digest = [
  alg: uint / text
  val: bytes
]
]]></sourcecode>
          </section>
        </section>
        <section anchor="spdm-challenge">
          <name>SPDM Challenge Claim</name>
          <t>SPDM compliant devices can optionally support the capability to authenticate responders through the challenge-response protocol and sign measurements.
Included in the signature are all the elements needed by a third party entity to reconstruct the original transcript or measurement log signed by the device.
Those elements include M1 for challenge signatures or L1 for measurement signatures (see CDDL below), the combined SPDM prefix, the hash algorithm used to generate a digest of the measurement log and nonces provided by the requester and responder.
The slot number of the leaf certificate used to sign the measurement log is also provided.</t>
          <sourcecode type="cddl"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

;
; What follows is based on SPDM v1.3.2 (DSP0274_1.3.2.pdf)
;

;
; Algorithms currently supported by SPDM.
; See "MeasurementHashAlgo", table 21, page 79.
;
hash-algorithm-type /= &(tpm_alg_sha_256: 0)
hash-algorithm-type /= &(tpm_alg_sha_384: 2)
hash-algorithm-type /= &(tpm_alg_sha_512: 4)
hash-algorithm-type /= &(tpm_alg_sha3_256: 8)
hash-algorithm-type /= &(tpm_alg_sha3_384: 16)
hash-algorithm-type /= &(tpm_alg_sha3_512: 32)
hash-algorithm-type /= &(tpm_alg_sm3_256: 64)

;
; See signature generation and verification algorithms for
; CHALLENGE_AUTH message on page 108.
;
; M1 is _one_ of the following:
;
; M1 /= GET_VERSION , GET_CAPABILITIES , NEGOTIATE_ALGORITHMS , \
               GET_DIGESTS , GET_CERTIFICATE , CHALLENGE (A1, B1, C1)
; M1 /= GET_VERSION , GET_CAPABILITIES , NEGOTIATE_ALGORITHMS , \
                                 GET_DIGESTS , CHALLENGE (A1, B3, C1)
; M1 /= GET_VERSION , GET_CAPABILITIES , NEGOTIATE_ALGORITHMS , \
                             GET_CERTIFICATE , CHALLENGE (A1, B4, C1)
; M1 /= GET_VERSION , GET_CAPABILITIES , NEGOTIATE_ALGORITHMS , \
                                               CHALLENGE (A1, B2, C1)
; M1 /= GET_DIGESTS , GET_CERTIFICATE , CHALLENGE (A2, B1, C1)
; M1 /= GET_DIGESTS , CHALLENGE (A2, B3, C1)
; M1 /= GET_CERTIFICATE , CHALLENGE (A2, B4, C1)
; M1 /= CHALLENGE (A2, B2, C1)
;
; See signature generation and verification algorithms for
; MEASUREMENTS messages on page 126.
;
; L1 = Concatenate(VCA, GET_MEASUREMENTS_REQUEST1,
;               MEASUREMENTS_RESPONSE1, ...,
;               GET_MEASUREMENTS_REQUESTn-1,
;               MEASUREMENTS_RESPONSEn-1,
;               GET_MEASUREMENTS_REQUESTn, MEASUREMENTS_RESPONSEn)
;
spdm-signature = {
   &(slot: 1) => 0..7, ; Slot of the certificate chain used to
                       ; authenticate the measurement.  Default
                       ; should be 0.
   &(requester-nonce: 2) => bytes .size 32,
   &(responder-nonce: 3) => bytes .size 32,
   &(combined-spdm-prefix: 4) => bytes .size 100,
   &(IL1: 5) => bytes, ; M1 or L1 (see comment above)
   &(base-hash-algo: 6) => hash-algorithm-type,
   &(signature: 7) => bytes
}
]]></sourcecode>
        </section>
        <section anchor="spdm-certificates">
          <name>Certificate Claims</name>
          <t>According to the specification, SPDM compliant devices should support at most 8 slots, with slot 0 populated by default.
Slot 0 <bcp14>SHALL</bcp14> contain a certificate chain that follows the Device certificate model or the Alias certificate model.
Regardless of the certificate model used, a certificate chain comprises one or more DER-encoded X.509 v3 certificates <xref target="RFC5280"/>.
The certificates <bcp14>MUST</bcp14> be concatenated with no intermediate padding.
As described in paragraph 355 of Section 10.6.1 of <xref target="SPDM"/>, the certificates in the chain are sorted in descending order, with the end-entity certificate (also known as the "leaf") appearing last.
According to the same paragraph, a trust anchor may appear as the first certificate in the chain.
If so, it should not be used to validate the chain without first confirming its presence in a trust anchor store.</t>
          <sourcecode type="cddl"><![CDATA[
spdm-certificates = {
  default-cert-slot => cert-chain
  ? aux-cert-slot-1 => cert-chain
  ? aux-cert-slot-2 => cert-chain
  ? aux-cert-slot-3 => cert-chain
  ? aux-cert-slot-4 => cert-chain
  ? aux-cert-slot-5 => cert-chain
  ? aux-cert-slot-6 => cert-chain
  ? aux-cert-slot-7 => cert-chain
}

; ASN.1 DER-encoded certificates concatenated with no intermediate
; padding.
cert-chain = bytes

default-cert-slot = 0

aux-cert-slot-1 = 1
aux-cert-slot-2 = 2
aux-cert-slot-3 = 3
aux-cert-slot-4 = 4
aux-cert-slot-5 = 5
aux-cert-slot-6 = 6
aux-cert-slot-7 = 7
]]></sourcecode>
        </section>
        <section anchor="interface-report">
          <name>TDISP Device Interface Report</name>
          <t>A TDISP Device Interface Report can only be obtained if the device interface has transitioned to the CONFIG_LOCK or RUN state of the TDISP state machine.
Once in either of these states, the device's firmware ensures that modifications to the interface can't be made by an untrusted party.
Trust in the device firmware's implemenation is imparted by its measurement and the signature it generates, both verifiable by a 3rd party entity.</t>
          <t>A TDISP Device Interface Report begins with various bitfields indicating the state and characteristics of the PCIe device interface.
Next are 3 register fields pertaining to MSI-X (Message Signalled Interrupts), LNR (Lightweight Notification Requester) and TPH (TLP Processing Hints) capabilities.
MMIO ranges are assigned from PCIe BAR(s) and provide information about the memory areas a device is working with.
More information on the MMIO range bitfields and the ones defined as part of the device interface field (above) can be found in the TDISP section of the PCI Express specification.
The last field is device-specific and optionally included to convey additional configuration information about the device.</t>
          <t>The <tt>tdisp-device-interface-report</tt> map <bcp14>MUST NOT</bcp14> be empty.</t>
          <sourcecode type="cddl"><![CDATA[
tdisp-device-interface-report = non-empty<{
  ? &(interface-info: 1) => interface-info-bits
  ? &(msi-x-message-control: 2) => bytes .size 2
  ? &(lnr-control: 3) => bytes .size 2
  ? &(tph-control: 4) => bytes .size 4
  ? &(mmio-ranges: 5) => mmio-ranges
  ? &(device-specific-info: 6) => bytes
}>

interface-info-bits = bytes .bits interface-info-flags
interface-info-flags = &(bit0: 0,
                         bit1: 1,
                         bit2: 2,
                         bit3: 3,
                         bit4: 4,
                         bit5: 5,
                        )

mmio-ranges = {
  + &(mmio-range: 1) => mmio-range
}

mmio-range = {
  &(first-4k-page: 1) => bytes .size 8
  &(number-of-4k-pages: 2) => bytes .size 4
  &(attributes: 3) => range-attributes
}

range-attributes = {
  &(range-attribute-bits: 1) => range-attribute-bits
  &(range-attribute-range-id: 2) => bytes .size 2
}

range-attribute-bits = bytes .bits range-attributes-flags
range-attributes-flags = &(bit0: 0,
                           bit1: 1,
                           bit2: 2,
                           bit3: 3,
                          )
]]></sourcecode>
        </section>
        <section anchor="spdm-vca">
          <name>Negotiated State Preamble (Version, Capabilities and Algorithms)</name>
          <t>The Negotiated State Preamble (i.e., <tt>vca</tt>) claim contains the concatenation of messages GET_VERSION, VERSION, GET_CAPABILITIES, CAPABILITIES, NEGOTIATE_ALGORITHMS, and ALGORITHMS last exchanged between the SPDM Requester and Responder.</t>
        </section>
        <section anchor="spdm-submod-name">
          <name>Submodule Naming</name>
          <t>The namespace used for SPDM submodules is "spdm".</t>
          <t>The name associated with an SPDM submodule is extracted from the leaf certificate of the relevant device.</t>
          <ul spacing="normal">
            <li>
              <t>If the leaf certificate contains a Subject Alternative Name of type DMTFOtherName, the submodule name is the value contained in <tt>ub-DMTF-device-info</tt>.
For example: "spdm:ACME:WIDGET:0123456789".</t>
            </li>
            <li>
              <t>Otherwise, the submod name is the string representation of the certificate Subject, as described in <xref target="RFC4514"/>.
For example: "spdm:C=CA,O=ACME,OU=Widget,CN=0123456789".</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="pcie-legacy-device">
        <name>PCIe Legacy Device Claims</name>
        <t>A definition is provided for a device claims-set for PCIe legacy devices that do not implement the necessary extensions to attest to their provenance and configuration.
This makes it possible to keep using current assets as secured ones are being provisioned.
This legacy device claims-set simply mirrors the type 0/1 common registers of the PCIe configuration space, mandating only that the vendor and device identification code be provided.
Other fields of the configuration space header may optionally be included should they add value.
A binary format of the PCIe configuration space is made available for processing by existing PCIe configuration space tools.
Implementers may optionally choose to include both text and binary versions should there be a use case to support this representation.</t>
        <sourcecode type="cddl"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

pcie-legacy-claims = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device-pcie-legacy#1.0\
                                                                  .0"
  pcie-legacy-artefacts
  ? $$pcie-legacy-claim-extension
}


pcie-legacy-artefacts //= (
  &(artefacts-text: 3805) => pcie-type-0-1-config-space-text
  &(artefacts-bytes: 3806) => pcie-type-0-1-config-space-bytes
)

pcie-legacy-artefacts //= (
  &(artefacts-text: 3805) => pcie-type-0-1-config-space-text
)

pcie-legacy-artefacts //= (
  &(artefacts-bytes: 3806) => pcie-type-0-1-config-space-bytes
)

pcie-type-0-1-config-space-bytes = bytes .size 256

pcie-type-0-1-config-space-text = {
  &(vendorID: 1) => bytes .size 2
  &(deviceID: 2) => bytes .size 2
  ? &(command: 3) => bytes .size 2
  ? &(status: 4) => bytes .size 2
  ? &(revisionID: 5) => bytes .size 1
  ? &(classCode: 6) => bytes .size 3
  ? &(cacheLineSize: 7) => bytes .size 1
  ? &(latencyTimer: 8) => bytes .size 1
  ? &(headerType: 9) => bytes .size 1
  ? &(BITS: 10) => bytes .size 1
}
]]></sourcecode>
        <section anchor="pcie-legacy-submod-name">
          <name>Submodule Naming</name>
          <t>The namespace used for legacy PCIe submodules is "legacy-pcie".</t>
          <t>The name is any arbitrary string chosen by the implementation.
For example, "legacy-pcie:0000:01:02.0" where "0000" is the domain, "01" the PCI bus id, "02" the device on the bus and "0" the device function.</t>
        </section>
      </section>
    </section>
    <section anchor="profile">
      <name>DAT EAT Profile</name>
      <section anchor="encoding">
        <name>Encoding</name>
        <t>A DAT is encoded in CBOR <xref target="STD94"/>.
The CBOR representation of a DAT <bcp14>MUST</bcp14> be "valid" according to the definition in <xref section="1.2" sectionFormat="of" target="STD94"/>.
Only definite-length strings, arrays, and maps are allowed.
Since a DAT emitter may be found in a constrained environment, it may not be able to emit CBOR preferred serializations (<xref section="4.1" sectionFormat="of" target="STD94"/>).
Therefore, the Verifier <bcp14>MUST</bcp14> be a variation-tolerant CBOR decoder.</t>
      </section>
      <section anchor="cryptographic-protection">
        <name>Cryptographic Protection</name>
        <t>Cryptographic protection can be obtained by wrapping the <tt>dat</tt> claims-set in a COSE Web Token (CWT) <xref target="RFC8392"/>.
In this case, the signature structure <bcp14>MUST</bcp14> be a tagged (18) COSE_Sign1.
Alternatively, a DAT can be part of a Conceptual Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/> collection.
In this case, the DAT claims-set can be a UCCS <xref target="RFC9781"/> and the protection is provided by the signed CMW.</t>
        <t>The flexibility provided by the COSE <xref target="RFC9052"/> format should be sufficient to adapt to the level of cryptographic agility required for specific use cases.
It is <bcp14>RECOMMENDED</bcp14> that commonly adopted algorithms, such as those discussed in <xref target="RFC9053"/>, are used.
While receivers are expected to accept a wide range of algorithms, Attesters will produce DAT using only one such algorithm.</t>
      </section>
      <section anchor="use-with-conceptual-message-wrappers">
        <name>Use with Conceptual Message Wrappers</name>
        <t>When used in a CMW, the collector will wrap the serialised COSE_Sign1 or UCCS with the appropriate media type or CoAP Content-Format defined in <xref target="RFC9782"/>.</t>
      </section>
      <section anchor="freshness-model">
        <name>Freshness Model</name>
        <t>DAT supports the freshness models for attestation Evidence based on nonces and epoch IDs (see Section <xref target="RFC9334" section="10.2" sectionFormat="bare"/> and Section <xref target="RFC9334" section="10.3" sectionFormat="bare"/> of <xref target="RFC9334"/>) using the <tt>eat_nonce</tt> claim to convey the nonce or epoch ID supplied by the Verifier.
No further assumptions are made about the specific remote attestation protocol.</t>
        <t>Note that the use of epoch IDs is subject by the type restrictions imposed by the <tt>eat_nonce</tt> syntax.
For use in DAT, the epoch ID <bcp14>MUST</bcp14> be encodable as an opaque binary string of between 8 and 64 octets; an Epoclet can be used for this purpose (see <xref target="I-D.ietf-rats-epoch-markers"/>).</t>
      </section>
      <section anchor="synopsis">
        <name>Synopsis</name>
        <t><xref target="tbl-profile"/> presents a concise view of the requirements described in the preceding sections.</t>
        <table anchor="tbl-profile">
          <name>DAT Profile Synopsis</name>
          <thead>
            <tr>
              <th align="left">Issue</th>
              <th align="left">Profile Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CBOR/JSON</td>
              <td align="left">CBOR <bcp14>MUST</bcp14> be used</td>
            </tr>
            <tr>
              <td align="left">CBOR Encoding</td>
              <td align="left">Definite length maps and arrays <bcp14>MUST</bcp14> be used</td>
            </tr>
            <tr>
              <td align="left">CBOR Encoding</td>
              <td align="left">Definite length strings <bcp14>MUST</bcp14> be used</td>
            </tr>
            <tr>
              <td align="left">CBOR Serialization</td>
              <td align="left">Variant serialization <bcp14>MAY</bcp14> be used</td>
            </tr>
            <tr>
              <td align="left">COSE Protection</td>
              <td align="left">COSE_Sign1 <bcp14>MUST</bcp14> be used (directly or via CMW)</td>
            </tr>
            <tr>
              <td align="left">Algorithms</td>
              <td align="left">
                <xref target="RFC9053"/> <bcp14>SHOULD</bcp14> be used</td>
            </tr>
            <tr>
              <td align="left">Detached EAT Bundle Usage</td>
              <td align="left">Detached EAT bundles <bcp14>MUST NOT</bcp14> be sent</td>
            </tr>
            <tr>
              <td align="left">Verification Key Identification</td>
              <td align="left">Any identification method listed in <xref section="F.1" sectionFormat="of" target="RFC9711"/></td>
            </tr>
            <tr>
              <td align="left">Freshness</td>
              <td align="left">nonce or epoch ID based (Section <xref target="RFC9334" section="10.2" sectionFormat="bare"/> and Section <xref target="RFC9334" section="10.3" sectionFormat="bare"/> of <xref target="RFC9334"/>)</td>
            </tr>
            <tr>
              <td align="left">Claims</td>
              <td align="left">Those defined in <xref target="dat-claims"/>. As per general EAT rules, the receiver <bcp14>MUST NOT</bcp14> error out on claims it does not understand.</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="extend">
      <name>Extending the DAT Framework</name>
      <t>An extension to the DAT framework that introduces support for a new bus technology <bcp14>MUST</bcp14> provide the following information in a public document (e.g., an Internet-Draft):</t>
      <ul spacing="normal">
        <li>
          <t>A precise definition of the new claims-set,</t>
        </li>
        <li>
          <t>A naming convention for the <tt>submod</tt> map entry,</t>
        </li>
        <li>
          <t>The registration of any new claims with IANA.</t>
        </li>
      </ul>
      <section anchor="claims-set-definition">
        <name>Claims-set Definition</name>
        <t>The new claims-set <bcp14>MUST</bcp14> be specified clearly and unambiguously, ideally using CDDL, with a separate prose description of each claim.
The claims-set <bcp14>MUST</bcp14> include a suitable <tt>eat_profile</tt> value.</t>
        <t>See <xref target="spdm-claims"/> for the blueprint.</t>
      </section>
      <section anchor="naming-conventions-for-the-submod-key">
        <name>Naming Conventions for the <tt>submod</tt> Key</name>
        <t>A new claims-set <bcp14>MUST</bcp14> define a suitable naming convention for the <tt>submod</tt> keys associated with it.
When creating this convention, ensure that it does not clash with any existing ones.</t>
        <t>See <xref target="spdm-submod-name"/> for the blueprint.</t>
        <t>The concrete name derived by the naming scheme is anticipated to be used to map the Attester to a corresponding CoRIM <xref target="I-D.ietf-rats-corim"/> environment map.
This map can then be used to locate matching Reference Values and Endorsements during the appraisal process.
This type of "evidence transformation" is outside the scope of this document and will be covered by an associated CoRIM profile.</t>
      </section>
      <section anchor="claims-registrations">
        <name>Claims Registrations</name>
        <t>A new claims-set can reuse any number of already registered claims.
If the claims-set needs to define new claims to express the desired semantics, and if these claims have generally applicable semantics, they <bcp14>SHOULD</bcp14> be registered with IANA.</t>
        <t>See <xref target="iana-claims-regs"/> for the blueprint.</t>
      </section>
    </section>
    <section anchor="collated-cddl">
      <name>Collated CDDL</name>
      <sourcecode type="cddl"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

dat = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device#1.0.0",
  &(eat_nonce: 10) => bytes .size (8 .. 64),
  &(eat_submods: 266) => {+ device-name => $device-claims-set},
}
device-name = text
$device-claims-set /= spdm-claims / pcie-legacy-claims
spdm-claims = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device-spdm#1.0.0",
  spdm-artefacts,
  ? &(vca: 3804) => bytes,
}
spdm-artefacts //= ((
        &(measurements: 3802) => spdm-measurements,
        &(certificates: 3803) => spdm-certificates,
        ? &(challenge: 3807) => spdm-signature,
        ? &(device-interface-report: 3808) => tdisp-device-interface\
                                                             -report,
      ) // (
        &(measurements: 3802) => spdm-measurements,
        ? &(device-interface-report: 3808) => tdisp-device-interface\
                                                             -report,
      ) // (
        &(certificates: 3803) => spdm-certificates,
        ? &(challenge: 3807) => spdm-signature,
        ? &(device-interface-report: 3808) => tdisp-device-interface\
                                                             -report,
      ))
spdm-measurement = {
  &(component-type: 1) => component-type,
  measurement,
}
measurement //= (&(digest-measurement: 2) => digest-measurement // &\
                             (raw-measurement: 3) => raw-measurement)
component-type /= &(immutable-rom: 0) / &(mutable-firmware: 1) / &(\
hardware-config: 2) / &(firmware-config: 3) / &(freeform-measurement\
-manifest: 4) / &(device-mode: 5) / &(mutable-firmware-version: 6) \
/ &(mutable-firmware-svn: 7) / &(hash-extend-measurement: 8) / &(\
           informational: 9) / &(structured-measurement-manifest: 10)
raw-measurement = bytes
digest-measurement = digest
digest = [
  alg: uint / text,
  val: bytes,
]
spdm-certificates = {
  default-cert-slot => cert-chain,
  ? aux-cert-slot-1 => cert-chain,
  ? aux-cert-slot-2 => cert-chain,
  ? aux-cert-slot-3 => cert-chain,
  ? aux-cert-slot-4 => cert-chain,
  ? aux-cert-slot-5 => cert-chain,
  ? aux-cert-slot-6 => cert-chain,
  ? aux-cert-slot-7 => cert-chain,
}
cert-chain = bytes
default-cert-slot = 0
aux-cert-slot-1 = 1
aux-cert-slot-2 = 2
aux-cert-slot-3 = 3
aux-cert-slot-4 = 4
aux-cert-slot-5 = 5
aux-cert-slot-6 = 6
aux-cert-slot-7 = 7
spdm-measurements = {
  + block-id => spdm-measurement,
  ? "signature" => spdm-signature,
}
block-id = 1 .. 239
hash-algorithm-type /= &(tpm_alg_sha_256: 0) / &(tpm_alg_sha_384: 2\
) / &(tpm_alg_sha_512: 4) / &(tpm_alg_sha3_256: 8) / &(\
tpm_alg_sha3_384: 16) / &(tpm_alg_sha3_512: 32) / &(tpm_alg_sm3_256\
                                                                : 64)
spdm-signature = {
  &(slot: 1) => 0 .. 7,
  &(requester-nonce: 2) => bytes .size 32,
  &(responder-nonce: 3) => bytes .size 32,
  &(combined-spdm-prefix: 4) => bytes .size 100,
  &(IL1: 5) => bytes,
  &(base-hash-algo: 6) => hash-algorithm-type,
  &(signature: 7) => bytes,
}
pcie-legacy-claims = {
  &(eat_profile: 265) => "tag:linaro.org,2025:device-pcie-legacy#1.0\
                                                                 .0",
  pcie-legacy-artefacts,
  ? $$pcie-legacy-claim-extension,
}
pcie-legacy-artefacts //= ((
        &(artefacts-text: 3805) => pcie-type-0-1-config-space-text,
        &(artefacts-bytes: 3806) => pcie-type-0-1-config-space-bytes,
      ) // &(artefacts-text: 3805) => pcie-type-0-1-config-space-\
text // &(artefacts-bytes: 3806) => pcie-type-0-1-config-space-bytes)
pcie-type-0-1-config-space-bytes = bytes .size 256
pcie-type-0-1-config-space-text = {
  &(vendorID: 1) => bytes .size 2,
  &(deviceID: 2) => bytes .size 2,
  ? &(command: 3) => bytes .size 2,
  ? &(status: 4) => bytes .size 2,
  ? &(revisionID: 5) => bytes .size 1,
  ? &(classCode: 6) => bytes .size 3,
  ? &(cacheLineSize: 7) => bytes .size 1,
  ? &(latencyTimer: 8) => bytes .size 1,
  ? &(headerType: 9) => bytes .size 1,
  ? &(BITS: 10) => bytes .size 1,
}
tdisp-device-interface-report = non-empty<{
    ? &(interface-info: 1) => interface-info-bits,
    ? &(msi-x-message-control: 2) => bytes .size 2,
    ? &(lnr-control: 3) => bytes .size 2,
    ? &(tph-control: 4) => bytes .size 4,
    ? &(mmio-ranges: 5) => mmio-ranges,
    ? &(device-specific-info: 6) => bytes,
}>
interface-info-bits = bytes .bits interface-info-flags
interface-info-flags = &(
  bit0: 0,
  bit1: 1,
  bit2: 2,
  bit3: 3,
  bit4: 4,
  bit5: 5,
)
mmio-ranges = {+ &(mmio-range: 1) => mmio-range}
mmio-range = {
  &(first-4k-page: 1) => bytes .size 8,
  &(number-of-4k-pages: 2) => bytes .size 4,
  &(attributes: 3) => range-attributes,
}
range-attributes = {
  &(range-attribute-bits: 1) => range-attribute-bits,
  &(range-attribute-range-id: 2) => bytes .size 2,
}
range-attribute-bits = bytes .bits range-attributes-flags
range-attributes-flags = &(
  bit0: 0,
  bit1: 1,
  bit2: 2,
  bit3: 3,
)
non-empty<M> = M .and ({+ any => any})
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As this specification reuses the EAT specification <xref target="RFC9711"/>, it also reuses the CWT specification <xref target="RFC8392"/>.
The security and privacy considerations of these specifications therefore apply here too.
In particular, the considerations discussed in Sections <xref target="RFC9711" section="9.1" sectionFormat="bare">Claim Trustworthiness</xref>, <xref target="RFC9711" section="9.4" sectionFormat="bare">Multiple EAT Consumers</xref> and <xref target="RFC9711" section="9.5" sectionFormat="bare">Detached EAT Bundle Digest Security Considerations</xref> of <xref target="RFC9711"/> apply fully.</t>
      <t>When DAT is an UCCS, the considerations in <xref target="RFC9781"/> also apply.</t>
      <t>PCIe devices are assigned to a TVM via their physical or virtual functions.
The hardware implementation of a device guarantees that functions are mutually exclusive; in other words, operations performed on one function do not affect other functions.
The TDISP standard also guarantees that, while a device function is in the CONFIG_LOCK or RUN state, its characteristics cannot be modified by untrusted parties.
However, faulty hardware or an inadequate implementation of the TDISP specification could be exploited by an attacker for side-channel attacks.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>A DAT can include a great deal of detail about the execution environment associated with the TVM and, therefore, the workload being executed within it.
This can provide insight into the type of computation being carried out by the workload.
It can also enable tracking of a given workload across multiple TVM instances in both the temporal dimension (e.g., across reboots of the hosting hardware) and the spatial dimension (e.g., across migrations between hardware, either within or between data centres).</t>
      <t>A DAT is usually one component of a composite evidence payload.
In such cases, multiple Verifiers may be involved in the appraisal process.
The differential encryption considerations discussed in Section <xref target="RFC9711" section="9.4" sectionFormat="bare">Multiple EAT Consumers</xref> of <xref target="RFC9711"/> therefore apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-claims-regs">
        <name>New CWT Claims Registrations</name>
        <t>IANA is requested to register the following claims in the "CBOR Web Token (CWT) Claims" registry <xref target="IANA.cwt"/>.</t>
        <section anchor="spdm-measurements-claim">
          <name> SPDM Measurements Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: spdm-measurements</t>
            </li>
            <li>
              <t>Claim Description: SPDM Measurements</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: CPA3802</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="spdm-measurements"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="spdm-certificates-claim">
          <name> SPDM Certificates Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: spdm-certificates</t>
            </li>
            <li>
              <t>Claim Description: SPDM Certificates</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: CPA3803</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="spdm-certificates"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="spdm-vca-claim">
          <name> SPDM VCA Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: spdm-vca</t>
            </li>
            <li>
              <t>Claim Description: SPDM Version, Capabilities and Algorithms</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: CPA3804</t>
            </li>
            <li>
              <t>Claim Value Type(s): bytes</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="spdm-vca"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="pcie-legacy-device-text-claim">
          <name> PCIe Legacy Device Text Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: pcie-legacy-device-text</t>
            </li>
            <li>
              <t>Claim Description: PCIe Legacy Device Textual Representation</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: CPA3805</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="pcie-legacy-device"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="pcie-legacy-device-binary-claim">
          <name> PCIe Legacy Device Binary Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: pcie-legacy-device-binary</t>
            </li>
            <li>
              <t>Claim Description: PCIe Legacy Device Binary Representation</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: CPA3806</t>
            </li>
            <li>
              <t>Claim Value Type(s): bytes</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="pcie-legacy-device"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="spdm-challenge-claim">
          <name> SPDM Challenge Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: spdm-challenge</t>
            </li>
            <li>
              <t>Claim Description: SPDM Challenge signature block</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: CPA3807</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="spdm-challenge"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="tdisp-device-interface-report">
          <name> TDISP Device Interface Report</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: tdisp-device-interface-report</t>
            </li>
            <li>
              <t>Claim Description: TDISP Device Interface Report</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: CPA3808</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="interface-report"/> of RFCthis</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9711">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
              <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9711"/>
          <seriesInfo name="DOI" value="10.17487/RFC9711"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC4514">
          <front>
            <title>Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names</title>
            <author fullname="K. Zeilenga" initials="K." role="editor" surname="Zeilenga"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>The X.500 Directory uses distinguished names (DNs) as primary keys to entries in the directory. This document defines the string representation used in the Lightweight Directory Access Protocol (LDAP) to transfer distinguished names. The string representation is designed to give a clean representation of commonly used distinguished names, while being able to represent any distinguished name. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4514"/>
          <seriesInfo name="DOI" value="10.17487/RFC4514"/>
        </reference>
        <reference anchor="IANA.cwt" target="https://www.iana.org/assignments/cwt">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC9781">
          <front>
            <title>A Concise Binary Object Representation (CBOR) Tag for Unprotected CBOR Web Token Claims Sets (UCCS)</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="N. Cam-Winget" initials="N." surname="Cam-Winget"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>This document defines the Unprotected CWT Claims Set (UCCS), a data format for representing a CBOR Web Token (CWT) Claims Set without protecting it by a signature, Message Authentication Code (MAC), or encryption. UCCS enables the use of CWT claims in environments where protection is provided by other means, such as secure communication channels or trusted execution environments. This specification defines a CBOR tag for UCCS and describes the UCCS format, its encoding, and its processing considerations. It also discusses security implications of using unprotected claims sets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9781"/>
          <seriesInfo name="DOI" value="10.17487/RFC9781"/>
        </reference>
        <reference anchor="RFC9782">
          <front>
            <title>Entity Attestation Token (EAT) Media Types</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>The payloads used in Remote ATtestation procedureS (RATS) may require an associated media type for their conveyance, for example, when the payloads are used in RESTful APIs.</t>
              <t>This memo defines media types to be used for Entity Attestation Tokens (EATs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9782"/>
          <seriesInfo name="DOI" value="10.17487/RFC9782"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="11" month="December" year="2025"/>
            <abstract>
              <t>   The Conceptual Messages introduced by the RATS architecture (RFC
   9334) are protocol-agnostic data units that are conveyed between RATS
   roles during remote attestation procedures.  Conceptual Messages
   describe the meaning and function of such data units within RATS data
   flows without specifying a wire format, encoding, transport
   mechanism, or processing details.  The initial set of Conceptual
   Messages is defined in Section 8 of RFC 9334 and includes Evidence,
   Attestation Results, Endorsements, Reference Values, and Appraisal
   Policies.

   This document introduces the Conceptual Message Wrapper (CMW) that
   provides a common structure to encapsulate these messages.  It
   defines a dedicated CBOR tag, corresponding JSON Web Token (JWT) and
   CBOR Web Token (CWT) claims, and an X.509 extension.

   This allows CMWs to be used in CBOR-based protocols, web APIs using
   JWTs and CWTs, and PKIX artifacts like X.509 certificates.
   Additionally, the draft defines a media type and a CoAP content
   format to transport CMWs over protocols like HTTP, MIME, and CoAP.

   The goal is to improve the interoperability and flexibility of remote
   attestation protocols.  Introducing a shared message format such as
   CMW enables consistent support for different attestation message
   types, evolving message serialization formats without breaking
   compatibility, and avoiding the need to redefine how messages are
   handled within each protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-23"/>
        </reference>
        <reference anchor="I-D.ietf-rats-epoch-markers">
          <front>
            <title>Epoch Markers</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>NVIDIA</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Ionuț Mihalcea" initials="I." surname="Mihalcea">
              <organization>Arm</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="20" month="October" year="2026"/>
            <abstract>
              <t>   This document defines Epoch Markers as a means to establish a notion
   of freshness among actors in a distributed system.  Epoch Markers are
   similar to "time ticks" and are produced and distributed by a
   dedicated system known as the Epoch Bell.  Systems receiving Epoch
   Markers do not need to track freshness using their own understanding
   of time (e.g., via a local real-time clock).  Instead, the reception
   of a specific Epoch Marker establishes a new epoch that is shared
   among all recipients.  This document defines Epoch Marker types,
   including CBOR time tags, RFC 3161 TimeStampToken, and nonce-like
   structures.  It also defines a CWT Claim to embed Epoch Markers in
   RFC 8392 CBOR Web Tokens, which serve as vehicles for signed protocol
   messages.  Finally, it registers RATS Conceptual Message Wrapper
   (CMW) Indicators for Epoch ID and Nonce.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-epoch-markers-06"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-rats-corim">
          <front>
            <title>Concise Reference Integrity Manifest</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>arm</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether or not to engage in secure interactions with it.  Evidence
   about trustworthiness can be rather complex and it is deemed
   unrealistic that every Relying Party is capable of the appraisal of
   Evidence.  Therefore that burden is typically offloaded to a
   Verifier.  In order to conduct Evidence appraisal, a Verifier
   requires not only fresh Evidence from an Attester, but also trusted
   Endorsements and Reference Values from Endorsers and Reference Value
   Providers, such as manufacturers, distributors, or device owners.
   This document specifies the information elements for representing
   Endorsements and Reference Values in CBOR format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-11"/>
        </reference>
        <reference anchor="SPDM" target="https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.3.2.pdf">
          <front>
            <title>Security Protocol and Data Model (SPDM) Specification Version: 1.3.2</title>
            <author>
              <organization>DMTF</organization>
            </author>
            <date year="2024" month="August" day="21"/>
          </front>
        </reference>
        <reference anchor="PCIe">
          <front>
            <title>PCI Express Base Specification Revision 7.0</title>
            <author>
              <organization>PCI-SIG</organization>
            </author>
            <date year="2025" month="June" day="05"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 865?>

<section anchor="examples">
      <name>Examples</name>
      <sourcecode type="cbor-diag"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  / profile / 265: "tag:linaro.org,2025:device#1.0.0",
  / nonce / 10: h'\
f9efc3341597f75f8d94432ad39566a8c5704b2004ba001c094f475bfc057f9f25d7\
       aa40cd86cd30ebaae746fb19f008c1e6a1f23ad6a178e18dceda918f7f6e',
  / submods / 266: {
    "spdm:ACME:WIDGET-A:0123456789": {
      / profile / 265: "tag:linaro.org,2025:device-spdm#1.0.0",
      / measurements / 0x0eda: {
        1: {
          / component-type /  1: 2, / hardware config /
          / raw-measurement / 3: h'4f6d616861'
        }
      },
      / certificates / 0x0edb: {
        / device certs / 0: h'\
                          676f616e6e61747261646974696f6e6d6f6e676572'
        / no aux certs /
      }
    },
    "spdm:C=CA,O=ACME,OU=Widget-B,CN=9876543210": {
      / profile / 265: "tag:linaro.org,2025:device-spdm#1.0.0",
      / measurements / 0x0eda: {
        1: {
          / component-type / 1: 1, / mutable firmware /
          / digest-measurement / 2: [
            / alg / 1,
            / val / h'6b656e6e656c6c79'
          ]
        },
        6: {
          / component-type / 1: 2, / hardware config /
          / digest measurement / 2: [
            / alg / 0,
            / val / h'756e646572637279'
          ]
        }
      },
      / certificates / 0x0edb: {
        / device certs / 0: h'61746865697A656178696C6C6172',
        / aux certs (slot=2) / 2: h'23451576923AE99106783948598A'
      }
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="example-composite-device">
      <name>Example Composite Device</name>
      <t><xref target="fig-ratsd"/> shows an example of the composite device described in <xref section="3.3" sectionFormat="of" target="RFC9334"/> within a confidential computing environment.
In this setup, a Trusted Virtual Machine (TVM) executes on a Confidential Platform, which provides the confidential computing environment.
One or more devices (e.g., a GPU) are assigned to the TVM.</t>
      <t>Within the TVM, a Lead Attester agent, e.g., a userland daemon, can collect Evidence from the Confidential Platform, as well as from all the assigned devices, using the relevant ABI offered by the guest OS kernel.</t>
      <t>When a challenger (i.e., a Verifier or a Relying Party) requests Evidence from the TVM, the Lead Attester broadcasts the received nonce to all the sub-Attesters, obtains Evidence from each of them and assembles the composite Evidence using a CMW Collection (Section 3.3 of <xref target="I-D.ietf-rats-msg-wrap"/>).
It then signs the composite Evidence using its key material as shown in <xref target="fig-ratsd-token"/>.</t>
      <t>The claims obtained by the assigned devices are repackaged into DAT submods, which are then signed as part of the CMW collection using the Lead Attester key.</t>
      <figure anchor="fig-ratsd-token">
        <name>Composite Attestation Evidence</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="560" viewBox="0 0 560 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 72,80 L 72,240" fill="none" stroke="black"/>
              <path d="M 120,48 L 120,72" fill="none" stroke="black"/>
              <path d="M 120,88 L 120,152" fill="none" stroke="black"/>
              <path d="M 120,168 L 120,232" fill="none" stroke="black"/>
              <path d="M 120,248 L 120,272" fill="none" stroke="black"/>
              <path d="M 144,64 L 144,112" fill="none" stroke="black"/>
              <path d="M 144,144 L 144,192" fill="none" stroke="black"/>
              <path d="M 144,224 L 144,256" fill="none" stroke="black"/>
              <path d="M 272,64 L 272,112" fill="none" stroke="black"/>
              <path d="M 272,144 L 272,192" fill="none" stroke="black"/>
              <path d="M 272,224 L 272,256" fill="none" stroke="black"/>
              <path d="M 296,48 L 296,232" fill="none" stroke="black"/>
              <path d="M 296,248 L 296,272" fill="none" stroke="black"/>
              <path d="M 320,176 L 320,304" fill="none" stroke="black"/>
              <path d="M 552,176 L 552,304" fill="none" stroke="black"/>
              <path d="M 120,48 L 296,48" fill="none" stroke="black"/>
              <path d="M 144,64 L 272,64" fill="none" stroke="black"/>
              <path d="M 72,80 L 136,80" fill="none" stroke="black"/>
              <path d="M 144,112 L 272,112" fill="none" stroke="black"/>
              <path d="M 144,144 L 272,144" fill="none" stroke="black"/>
              <path d="M 56,160 L 136,160" fill="none" stroke="black"/>
              <path d="M 320,176 L 552,176" fill="none" stroke="black"/>
              <path d="M 144,192 L 272,192" fill="none" stroke="black"/>
              <path d="M 144,224 L 272,224" fill="none" stroke="black"/>
              <path d="M 72,240 L 136,240" fill="none" stroke="black"/>
              <path d="M 144,256 L 272,256" fill="none" stroke="black"/>
              <path d="M 120,272 L 296,272" fill="none" stroke="black"/>
              <path d="M 320,304 L 552,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="144,240 132,234.4 132,245.6" fill="black" transform="rotate(0,136,240)"/>
              <polygon class="arrowhead" points="144,160 132,154.4 132,165.6" fill="black" transform="rotate(0,136,160)"/>
              <polygon class="arrowhead" points="144,80 132,74.4 132,85.6" fill="black" transform="rotate(0,136,80)"/>
              <g class="text">
                <text x="184" y="36">signed-cbor-cmw</text>
                <text x="172" y="84">Lead</text>
                <text x="228" y="84">Attester</text>
                <text x="188" y="100">Evidence</text>
                <text x="24" y="164">nonce</text>
                <text x="188" y="164">Platform</text>
                <text x="188" y="180">Evidence</text>
                <text x="376" y="196">eat_profile</text>
                <text x="368" y="212">eat_nonce</text>
                <text x="356" y="228">submod</text>
                <text x="392" y="228">{</text>
                <text x="168" y="244">DAT</text>
                <text x="280" y="244">-</text>
                <text x="296" y="244">-</text>
                <text x="312" y="244">-</text>
                <text x="384" y="244">"spdm:A":</text>
                <text x="432" y="244">{</text>
                <text x="456" y="244">...</text>
                <text x="480" y="244">}</text>
                <text x="412" y="260">"legacy-pcie:B":</text>
                <text x="488" y="260">{</text>
                <text x="512" y="260">...</text>
                <text x="536" y="260">}</text>
                <text x="384" y="276">"spdm:C":</text>
                <text x="432" y="276">{</text>
                <text x="456" y="276">...</text>
                <text x="480" y="276">}</text>
                <text x="336" y="292">}</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                signed-cbor-cmw
               .---------------------.
               |  .---------------.  |
         .------->| Lead Attester |  |
         |     |  | Evidence      |  |
         |     |  '---------------'  |
         |     |                     |
         |     |  .---------------.  |
 nonce --+------->| Platform      |  |
         |     |  | Evidence      |  |  .----------------------------.
         |     |  '---------------'  |  | eat_profile                |
         |     |                     |  | eat_nonce                  |
         |     |  .---------------.  |  | submod {                   |
         '------->| DAT           +- - -+   "spdm:A": { ... }        |
               |  '---------------'  |  |   "legacy-pcie:B": { ... } |
               '---------------------'  |   "spdm:C": { ... }        |
                                        | }                          |
                                        '----------------------------'
]]></artwork>
        </artset>
      </figure>
      <t>The Veraison project's <tt>ratsd</tt> daemon is an example of this behaviour.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thank you
Basma El Gaabouri,
Carl Wallace,
Giri Mandyam,
<contact fullname="Ionuț Mihalcea"/>,
James Bottomley,
Jon Lange,
Lukas Wunner,
Michael Richardson,
Ned Smith,
Roksana Golizadeh Mojarad,
Simon Frost,
Yogesh Deshpande
and
Yousuf Sait
for your comments and suggestions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
MZ85YKtoOh+jsMzuyf8LQJGo7jGjAAA=

-->

</rfc>
