<?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.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-poirier-rats-eat-da-07" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="EAT DA">An EAT Profile for Trustworthy Device Assignment</title>
    <seriesInfo name="Internet-Draft" value="draft-poirier-rats-eat-da-07"/>
    <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="May" day="04"/>
    <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 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.
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>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-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.</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,
        ? &(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,
}
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="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="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 670?>

<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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
9mYAz9blJqWbu+oz3bkqWZOZInm5A2v3Va4Ic1dUQKcLpl0qk13B/tSlxmsm
TpooKbE5/yRvvVBzEMl7IzDmJyEWsAXwpUoZoIiLOKKSL6w5k86sNFVHgjIZ
OGxEJaz6poK5LnPlES7rns3dMAzCKC31rRxWKcoBeGpDPWvbZ9dCOxVX4TvS
SaASNCIfybDwnSA07yzpamxlqqM/p+4eqvwNiaf2DbTMbc7JZoJjeeuc35um
plntpcIceJ8A7U25obD4DiutwTZXBdQ7Fod8mcNUjK/wQvdIXbJfpL4Eljzc
oReENyG3jRIHgYfpSC1MSNY13MezALOBcZDkAbGCUtauIgUV2iqJHRnrIwEA
AV9SpaUcI820utHaVv4GSbLNAtbn18EZY2E53GcH0HP+ZEmdiWS2su53v9tY
gJ3sdDR3rNy+RvVX0mYjv6g4S66UOuLWsit2VdVC2CQTtsq7m53JfqLerV29
paVf/IaofdbYz8b8CZjUoJSGZ7P1ZB/aKVrspOo5O82zyWsEIcUNIba7bagK
Ye/luWwaBEMiyygvsqwh8IYBChJO1dyMP+upwMKKelTP0tqMamsgvPJ5Djtz
AK2ZAPLaaBiz9cf3Q3cuQsy5boOTanRINU7HW6Feng0HuZX8VTNunWPkbbuT
sdXWM69prJl8RtV+xvJz5VUcHoJJH6KGVPbLGIsrfF2LkBzjSWGbcfPWHLtT
gT8wmjqVGqgNvJQG6rWAjQVtIDnBHGwy6FapFpJoCd6QcR1srBXMUIxxNYfu
1VUybydLf6x0Ml0N9GSwHes3vr6W/gq3O0p7Xe9IoTZvcuxxieOxBGL1jBsc
Oy9wsEPjsgY+JBcz4IFk9fmnTfb6xteuCC9tlISXtteEI/ny6pQPksXtXzld
MvrsW+Kc9tmv0jkL/9yC5y80FNQ0GpcikIx9GcF+w4v5f8XJ4peV+Zaydb64
uTaKdD+zzBe48f2ORe5Z9Lul1nS95BfUW36JL734YOUU9dKbnCJe2Z5TtPvB
ypTtEtxamW4uGmZZLvtg5YKoQlzq/0ThrVqNQcaNqlsC2avK9jlFtk/W2JYy
RbYl6+fnZoFLu9PAeSC13SD13SCN3SDN3SCt3SDtdZDHvPRtfvb2t5S8fd79
kdLuCyRIEfMCCSuX8ZrOZ9WE0nbYLP/8YG2+UbWe6+1JWafafLk1nJuddLlm
9o2szPxyl1/WdubWRa2VRSHR2tJe3bsS6TMKkT67DimnDMn67DKjbVVGtIdS
AxgI8gyrFAb4QgYpmxZwSe3vZ+Iyc78WLr/tEJZyAXLjMaXdMSxk/BOxHNM0
fG64qJQ7xueGhTIW6/OQARWEzuJa/89FpPic6NRXCU6VdkentO/3VHhKwzwR
n9IgOwJUyWxPRqgSqJ0hKg25M0alAXcEqTTY9igViv9XrxjR0+5fMpIsfEfN
iIbbVTSSYPBk1YiG2lk2glT62mUjFmXadVbfSN4bOXojFW9UdyRlHMX1ao1d
pRqPzyvUKH1OpUZpz1INpOlXK9UofX6tRs78X6dW47MYqysp0o9l9PDbIvqT
NvitqqvTq+QtfUize9ndgKJKjFvWez/U6d8bSlImANSLEl7SlHPklT1VcZi5
dKOzoaoKrtB7eXXD3ouR/kAWTKI/pVVQQ4T37OFBf/AXc9oY9v7XP6nOYPNu
PVYMyOuSl/QF482PEuj3p0JeHCQneGM0APuLXrAa6vKwm3T+T3Evw1FJyzuq
HEB1eRAV8SvLC3xFhRtIUfpuJWrcs/7wFbzJfur3VH3kjbqq7y9lvg7wiBnT
h4fv8Ru/j48mCXqmI7udBJmPIWwnQS8Ltg8J6t+OBJnK++0keNfrPrHy1Zg/
seB9Con2JERjGyGkz/xlpMAaplwK5BRpDNHqySXIZtWGTDrm0mfLyPg1tZtM
antP+jS/iaDkFKLsS6eXMre/L6VkKcDetFKjP4tUrW8kSvsSK+/+eb5a0TBP
6ZTNG9UyCLMnMdrfUMEkd+lzyfBkDf86PZ7+IEwueZ4efz/qHH0T6mxcaVin
D36Ae8SBh2A19GVGN1K501EQ2o7Lp18rgYpm22HyZclDjAV09kyaHqpPTx6C
g9JhsxcfrMmxmIzr9Ua1edyetJuTI+e40ajXuFM/brZa/GjcbFcao1oF/uGV
SnVcOW5MGu3maDKuNNuT40mt6bSTyALnjcrYOWqNnXpFjDgX7UZrMqoeTyqV
o3FVtHh1UqtzB/63fSSqR85YOPy4ejRpT1rihcRPpWppWa2O+uTeRjmh3TUL
CjXY55FlPbEp+2dCpIesclcBHNMJGKuaD9hjPfVBILUS/ND5DFWLxQ4z/dYj
+4esjixpTFpOq9o6alVfJOCP6tdjimcmXq/wHJmoHSb1diKUS5EM3x7dabVb
E5hZwH+q7Ua7Br8brWNg4TG0C8AK/223mu3aC2MWH7+acadn0YhaBrpPlFna
L7HQ8vgIRgWhq1Z+a6wkdwKHkqmg9KvfWVbmJdcY+B9/y1D7EHMxOGhprXkF
FgRIy4vWqNUk8jdb49a4ffzCgPs5FYa0e2ufBewhiiphtCf+lW34txH7BgpI
q96ubcX/qwkziilslCYIaRf+BaUCotqD/1RBREtG51RAKex+QgH/Gg6BOqTa
bLeOa/Vu//i4WgGFUj9uHDWPj7ovssJsyY96Kh+yO/7kB7eecKbSPXroSJ9d
OCcF+j8YKlB5Efc/sftgab3k0Zyzvsdec7xQFLol642Ady/d8NMs8H4tWX/B
MiT2MojjYO6J+5J1vvzEI/Z+6fsiLFkDF6thX4VBFFtgjVt/DZbRcsIG3I0t
LFmCSUJ9M1ja69FyilxFl7Rs/S+qAco4rmkAAA==

-->

</rfc>
