<?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.34 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-poirier-rats-eat-da-06" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="EAT DA">An EAT Profile for Trustworthy Device Assignment</title>
    <seriesInfo name="Internet-Draft" value="draft-poirier-rats-eat-da-06"/>
    <author fullname="Mathieu Poirier">
      <organization>Linaro</organization>
      <address>
        <email>mathieu.poirier@linaro.org</email>
      </address>
    </author>
    <author fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2026" month="March" day="25"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <keyword>device assignment</keyword>
    <keyword>EAT</keyword>
    <abstract>
      <?line 54?>

<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 and 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 62?>

<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>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"/>, but other bus architectures and protocols are expected to be supported as the technology gains wider adoption.
As such, this document focuses on the formalization of an Evidence format for SPDM-compliant devices while leaving room 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.</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?>

</section>
    <section anchor="device-assignment-token-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 device claim is the combination of a device name and a standard claims format 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 semicolon: 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 condideration 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 64 ; same as realm nonce
  &(eat_submods: 266) => {
    + device-name => $device-claims-set
  }
}

device-name = text .regexp "(legacy-pcie|spdm):.+"

$device-claims-set /= spdm-claims
$device-claims-set /= cxl-claims
$device-claims-set /= chi-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 an additional section that contains information from the TEE Device Information Security Protocol (TDISP) Device Interface Report.
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
  ? &(device-interface-report: 3807) => tdisp-device-interface-report
)

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

spdm-artefacts //= (
  &(certificates: 3803) => spdm-certificates
  ? &(device-interface-report: 3807) => tdisp-device-interface-report
)
]]></sourcecode>
        <section anchor="spdm-measurements">
          <name>Measurements Claim</name>
          <t>There can be up to 239 measurements per device with the entire measurement log 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.</t>
          <sourcecode type="cddl"><![CDATA[
spdm-measurements = {
  + block-id => spdm-measurement
  ? "signature" => spdm-measurement-blocks-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 anchor="measurements-signature">
            <name>Measurements Signature</name>
            <t>SPDM compliant devices can optionally support the capability to sign measurements.
Included in the measurement claim signature are all the elements needed by a third party entity to reconstruct the original measurement log signed by the device.
Those elements include L1 (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[
;
; 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
; 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-measurement-blocks-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, ; L1 (see comment above)
   &(base-hash-algo: 6) => hash-algorithm-type,
   &(signature: 7) => bytes
}
]]></sourcecode>
          </section>
        </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.</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 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>
          <sourcecode type="cddl"><![CDATA[
tdisp-device-interface-report = {
  ? &(interface-info: 1) => interface-info-bits
  ? &(msi-x-message-control: 2) => bytes .size 2
  ? &(lnr-control: 2) => bytes .size 2
  ? &(tph-control: 3) => bytes .size 4
  ? &(mmio-ranges: 4) => mmio-ranges
  ? &(device-specific-info: 5) => 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>The definition of a device claims set for PCIe legacy devices that do not implement the extensions needed to attest for their provenance and configuration is provided, making it is possible to keep using current assets as secures 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="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 64,
  &(eat_submods: 266) => {+ device-name => $device-claims-set},
}
device-name = text .regexp "(legacy-pcie|spdm):.+"
$device-claims-set /= spdm-claims / cxl-claims / chi-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,
        ? &(device-interface-report: 3807) => tdisp-device-interface\
                                                             -report,
      ) // (
        &(measurements: 3802) => spdm-measurements,
        ? &(device-interface-report: 3807) => tdisp-device-interface\
                                                             -report,
      ) // (
        &(certificates: 3803) => spdm-certificates,
        ? &(device-interface-report: 3807) => 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-measurement-blocks-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-measurement-blocks-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,
}
cxl-claims = {&(eat_profile: 265) => "tag:linaro.org,2025:device-cxl\
                                                             #1.0.0"}
chi-claims = {&(eat_profile: 265) => "tag:linaro.org,2025:device-chi\
                                                             #1.0.0"}
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 = {
  ? &(interface-info: 1) => interface-info-bits,
  ? &(msi-x-message-control: 2) => bytes .size 2,
  ? &(lnr-control: 2) => bytes .size 2,
  ? &(tph-control: 3) => bytes .size 4,
  ? &(mmio-ranges: 4) => mmio-ranges,
  ? &(device-specific-info: 5) => 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="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="new-cwt-claims-registrations">
        <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="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: 3807</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="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="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="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>
      </references>
    </references>
    <?line 635?>

<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 numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thank you
Basma El Gaabouri,
Henk Birkholz,
James Bottomley,
Lukas Wunner,
Simon Frost
and
Yousuf Sait
for your comments and suggestions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
tt38YgAA

-->

</rfc>
