<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-poirier-rats-eat-da-10" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="EAT DA">An EAT Profile for Trustworthy Device Assignment</title>
    <seriesInfo name="Internet-Draft" value="draft-poirier-rats-eat-da-10"/>
    <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>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2026" month="June" day="23"/>
    <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://rats-device-attestation.github.io/draft-poirier-rats-eat-da/draft-poirier-rats-eat-da.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-poirier-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/rats-device-attestation/draft-poirier-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: 3802</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: 3803</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: 3804</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: 3805</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: 3806</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: 3807</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: 3808</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>Linaro</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="18" month="May" 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-epoch-markers-04"/>
        </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="2" month="March" 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-10"/>
        </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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
KBA/e5VNdFUC6v9IFQK9GgeNSyUIqMlaJQe+peLAowUH6oWKA3Xvr9+ad1F/
OvGiqkn76SbbTzfZebrJ7tNN9p5usl9u8lCVMFGdL/GvlC7xbcV06k9X00GM
uNV0UBDCejpfkyBPx2E5F/5nb/mNTnwvP7c57vrwVSa0L3cyuevFN5ym/svD
LDjRvTJJtJQjikjbZ9lx7bTMr8jK/OqkzIqcTO+rcy5XpVwixfxrh8doUbcy
1qP+dHxMeYGPCMDfGopSrxzja0NOCpLZtwEDRw2DTEr9vxaQ2rdEvnyXwJf6
05EvRsd5LPTFtHkk9sU0eSL4xc72aPSLbfVk+Itp+WT8i2n4RACMabY6AgbJ
/+tSU74yOaVuu6yfn5L3eSpFJW/5VJaKA8ejiSp5uydzVeqYrPK9c1U8Cu83
qQROxoCTGODE/zspJTZ3pFZOEXkqP+Th27JD6l+THlJfMz8ECfK75YfUvz5B
pGL+75Mg8lUbW/PyQ3f+E/Q/Fw0qEAx7ibZIgBr+82CyPPICv123RHZK37ZZ
/l4tGzXZ6EgV3wsvCx+poyAlSnp3+nTfV/TR8TpUtcpA436OrFC8O3WyZd2B
Ug4Ipm/1oGFzQQUrMf6YomzoS16DeSgTE0lRGLP6Kz6pOGy0xCYXZaNk2Tvg
a5jCm2Ja52FjR2yem68lIDoQh3PgvDrn8rCxKzarHJ7HrLqtwH2t7Ink9WDJ
XkwMJE+EjoOTEYV4VK6J4zZMvBB9ZgjHaZS+ZFFIHbUfH0YXrw7kf+TTCroO
vv3kQzHYsFCA3356TicX5J+zoKiJOY4booNkEM7T4Fb9jmqYZs6Hgexnvcgf
iqq2/txXlIcTmpwFORphsAT3L0FrM7L5KwBcCL4IHX5pBz2fshyuyN8yezTx
u06p0eV844GMdLAeJ26zu6GYkU1ZvW/iO3WLBSVI1VzkuKV8Apgcru2/z6mk
wxKynfTYwhmz39lRn2dhHGS5ryPL8MOCCQdmAe2gwhvhp1L5TUrG+yt9Dpc4
hI2Ey71/Y/SQCfQy8mfGMxmETjhM5WfWl/xttA4gQtihen6smcjRdRzGcqhT
P3hA3RG/Y5JpRxGClec8p5R2bb84ZrxI/JF5qb/CRL5B+sjhkNzn2qtmZqQw
NfulDRVx1CXs8icdESP19wQsiHKQxBj3ZFgErsnUnyc64kQHBAgYdoze/SEI
buwzNx5rHiNR/TjObGYIfuDM/dhK/vm3FIvgPzKQ/WxaXrXYDFI39Qg0LrHK
vW4yxK9V0qdAQYpvOIG485TPLR7CvEouISP/8pT11c3kQmMy4ug4iv9zPzmj
Q6xSEwwbRLdxeJvH71T6BTH8b0TORVo6TIVhiEz5a7D5xxl5iReXbhk6IOgT
WzodlD95RzdeldMQS1aUvWeeRyNR4gqbB/RXsXQJgmLMQ/E7axsUBlSOhuWZ
N0zwwQIWTQ48feVi+Pp//xdlDC7Xx8bACL76MGnvqKKwuHl/nMcKHIml0aDZ
Hw0S9FAXWx3b+U9qwS4O+4TcwwJVk820doT+ZXzFX0jtsqAeonZzetJ7BW9u
CrzuWHt4qat2rRcqfD9w2Z/f3pycvXp4cFHQdY2jq1FQKGi+GgXdYrN1ULD9
66GgUNpqNQredTuPrPx2IB9Z8DopwWsiYmcVItgO+8tQgdnIlRioSLfsoYWh
EiHL+ZecPFSJnxUjoyh1XchSWBM/u78KoVSklK6Lp5ccHboupjiYdG1c6dG/
CVV7vxIprYusqgLP1WzFtHmMpyyXLGbD/prI2P8VGYwtVl2JhkeL+pTx8fhH
HSrR8/j462Hn4FfBzlJhqjJ+fN8XfZAiObiSMrNSHSLTjxN/GMjx94qTQVvI
lv2a2xba3Y/WjI3Z0vGvW6LVPBKT5z97o0M1Gmxv77R2D/dH+7ujg+Hhzs52
Ww63D3f39uTBYHe/udNvN+Ef2Wy2Bs3DndHO/m5/NGju7o8OR+3d4b614ku5
0xwMD/YGw+2m6kup9nf2Rv3W4ajZPBi01J5sjdrbcgj/3T9QrYPhQA3lYetg
tD/aU88ZPh2KQ8vaO9JfwFoqDOB33NIAptnXoaUcLMP9C263LdH83AQY8wmE
aLl/YI+yO52atOvwi9X62N4ttgr9yt7iLbGNW7Iz2hvutfYO9lrPbfMH/dtD
DmfBB6zh7Lugbdm8eZXwUnjDV3tS9vb3RjCzgv+19nf22/D7zt4hbOEhPFcA
Ff67v7e7337uzBJhWfrPZhYDqOeA+0jBBP8llkw4PIBRgehazX+1rSQbHQ7F
4QV5FbfiVlYFbIj2Efn03XYyHOOg9dLjW5AggFqe7/X3dgn9u3uDvcH+4XOn
3V9zYsi7762zgDVIUQchrAl/cxX8+wj9DhLI3vZ+eyX8342YkUzhoOwCkXbg
X2AqQKpd+F8LSLTudM4JlFy5L8iJ3MYhkIe0dvf3DtvbnZPDw1YTGMr24c7B
7uFB53mRmD3+xp62uGoez997I/2Yry3MdEHfFiqb+IF1/OIuWfh0um5eFaL4
RedyEZL8E+RLqQdGs5e8mUOtMLMZRH+w1Fhl3I9jZ/MZJj72tLHqnTYDnnM9
Q7HZe3deM6YYKh1N+ZD5BFf666NkV8PP0rJhxhb2eRKUS6esrDFcGruGeH31
trZkxtQ2JLSX8pr1A+xwVvi8uBxTSq0ZbZ6qJKTKHVJN+WNrkUm8cz7rbSrp
rFinTMWdCkP8LzU1n8KwINpPb+YZarb4TuflKezcyAQl47sxmgPE5Y34hMkL
oTEDO98QTEwJJZln7lImxbXiD/NeYaHFmjEtpBVrIfTgL0UE9ZNYDgcy1Ql9
OuNEf5aCTMZ6ce5n4NFg2+f6QMWJKJOASXmqP+OXKiwBlZao23YzX6rHL413
bfKs2CwRukmwrZGhjqLREddPDIvGWvzy91RmlCqVf+uaDpM9kD59I5eMJnn+
QyFjuWp7iSxB7gPxTo6V/urzsf1UbmoOhP6YcmQydktlEnHledqwQzLFjYJ1
6BonUqa346ULmwenhG9EVfl9w6/6aZSb3S+3bGAO3NI4P92X4LsvNLs3/97n
e2IfVTR7Xpr0eXWzip+qZtVLYJL2/R/zJZgz/ShsVUtYhdBlvD66RPw/J1hm
nbVVocAMwyv8ZhTh/+niWV8ex7RZC6AQCT7/+dEX8L8fhRXOUXTDrwCIh4ph
LEyrcCOKVSxeOqMtDVMewx3JCJtrQLPy5z7v9ChunvipBtNAS3IEpu2VeJNJ
3cvlik5FlvUGcGtgAy82BlSNaUPomiRwZ8gg5axkTDR+noqPNPhHfRFqd2NB
GMFv9aiJxM8/U/EH0RlghfNQDcds+v1yxE5+NXyxMZJhqjZoOhl9Eot47r2U
6VSKk1C8lugjSoI6frE5FO/hRsECW97rIAlAzIiGCzmtg3z05TSO5v/nP8V5
ANfeQMmHB5AF/4jlVMTLOMviaagW8ACgPUNlve6dzT8BL30/jyKV1L1z4LVS
heIa/5sMUwziusBahFOQEeredfwplREIFDFmzA7VRJzHf5OJHNa9mwBR8CqJ
06zu/SUGoXeCBojJDGBTHvwDD+fpfCRuZJB56E6D9SXmiwZsBk3nYxSW2RP5
fwFb+CgTTKMAAA==

-->

</rfc>
