<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 4.0.6) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY SELF "RFCthis">
]>

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-suit-report-23" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SUIT Reports">Secure Reporting of SUIT Update Status</title>

    <author initials="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>brendan.moran.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>

    <date year="2026" month="November" day="02"/>

    <area>Security</area>
    <workgroup>SUIT</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 63?>

<t>This document defines a Concise Binary Object Representation (CBOR)
format for reporting the results of processing a Software Update for the
Internet of Things (SUIT) manifest. Reports can include diagnostic records,
measured system properties, and supported capabilities. Using a report and
the corresponding manifest, a developer can reconstruct the decisions made
and actions performed by a manifest processor during update or boot
processing. The document also specifies protection of reports using CBOR
Object Signing and Encryption (COSE) and their use in remote attestation.</t>



    </abstract>



  </front>

  <middle>


<?line 74?>

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

<t>This document specifies a
logging container, specific to Software Update for the Internet of Things (SUIT) Manifests (<xref target="I-D.ietf-suit-manifest"/>)
that creates a lightweight feedback mechanism for
developers in the event that an update or boot fails in the manifest
processor. In this way, it provides the necessary link between the
Status Tracker Client and the Status Tracker Server as defined in
<xref section="2.3" sectionFormat="of" target="RFC9019"/>.</t>

<t>A SUIT Manifest Processor can fail to install or boot an update for many
reasons. Frequently, the error codes generated by such systems fail to
provide developers with enough information to find root causes and
produce corrective actions, resulting in extra effort to reproduce
failures. Logging the results of each SUIT command can simplify this
process.</t>

<t>While it is possible to report the results of SUIT commands through
existing logging or attestation mechanisms, this comes with several
drawbacks:</t>

<t><list style="symbols">
  <t>data inflation, particularly when designed for text-based logging</t>
  <t>missing information elements</t>
  <t>missing support for multiple components</t>
</list></t>

<t>The CBOR objects defined in this document allow devices to:</t>

<t><list style="symbols">
  <t>report a trace of how an update was performed</t>
  <t>report expected vs. actual values for critical checks</t>
  <t>describe the installation of complex multi-component architectures</t>
  <t>describe the measured properties of a system</t>
  <t>report the exact reason for a parsing failure</t>
</list></t>

</section>
<section anchor="terminology"><name>Conventions and Terminology</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>The terms "Author", "Recipient", and "Manifest" are defined in 
<xref section="2" sectionFormat="of" target="I-D.ietf-suit-manifest"/>.</t>

<t>Additionally, this document uses the term
Boot: initialization of an executable image. Although this
document refers to boot, any boot-specific operations described
are equally applicable to starting an executable in an OS context.</t>

<t>The term "Reporting Engine" is used as a conceptual function that
collects reporting information from a Manifest Processor and decides
whether to emit report output. A Reporting Engine is not required to be
a separate implementation component. Implementations may expose this
function through one or more internal APIs. This document specifies the
report format and externally observable semantics; it does not specify a
mandatory local API.</t>

</section>
<section anchor="suit-record"><name>The SUIT_Record</name>

<t>The SUIT_Record is a record of a decision taken by the Manifest Processor.
It contains the information that the Manifest Processor used to make the
decision. The decision can be inferred from this information, so it is not
included.
If the developer has a copy of the
manifest, then they need little information to reconstruct what the
manifest processor has done. They need any data that influences
the control flow of the manifest. The manifest only supports the
following control flow primitives:</t>

<t><list style="symbols">
  <t>Set Component</t>
  <t>Set/Override Parameters</t>
  <t>Try-Each</t>
  <t>Run Sequence</t>
  <t>Conditions</t>
</list></t>

<t>Of these, only conditions change the behavior of the processor from the
default, and then only when the condition fails.</t>

<t>To reconstruct the flow of a manifest, a developer needs
a list of metadata about failed conditions:</t>

<t><list style="symbols">
  <t>the current manifest</t>
  <t>the current Command Sequence (<xref section="5.3.3" sectionFormat="of" target="I-D.ietf-suit-manifest"/>)</t>
  <t>the offset into the current Command Sequence</t>
  <t>the current component index</t>
  <t>the "reason" for failure</t>
</list></t>

<t>Most conditions compare a parameter to an actual value, so the "reason"
is typically the actual value.</t>

<t>Since it is possible that a non-condition command (directive) may fail in an
exceptional circumstance,
a failure code for a non condition command must be communicated to the developer. However,
a failed directive will terminate processing of the manifest. To accommodate
for a failed command and for explicit "completion," an additional "result"
element is included as well; however, this is included in the SUIT_Report (<xref target="suit-report"/>).
In the case of a command failure,
the failure reason is typically a numeric error code. However, these error
codes need to be standardised in order to be useful.</t>

<t>This approach effectively compacts the log of operations taken using the SUIT Manifest
as a dictionary. This enables a full reconstruction of the log using a matching
decompaction tool. The following CDDL (<xref target="RFC8610"/>) shows the structure of a SUIT_Record.</t>

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Record = [
    suit-record-manifest-id        : [* uint ],
    suit-record-manifest-section   : int,
    suit-record-section-offset     : uint,
    suit-record-component-index    : uint,
    suit-record-properties         : {*$$SUIT_Parameters},
    * $$SUIT_Record_Extensions
]
]]></sourcecode></figure>

<t>suit-record-manifest-id identifies the manifest whose execution
produced the record. The manifest id is a list of integers that form a
walk of the manifest dependency tree, starting at the root manifest. An
empty list indicates the root manifest. If the list is not empty, each
integer is the Component Index, as defined for Set Component Index in
<xref section="8.4.10.1" sectionFormat="of" target="I-D.ietf-suit-manifest"/>, that selected a
dependency manifest from the manifest identified by the preceding path
elements. The final integer identifies the dependency manifest whose
execution produced the record.</t>

<t>suit-record-manifest-id and suit-record-component-index therefore refer
to different index domains. Each element of suit-record-manifest-id is a
Component Index that identifies a dependency envelope as a component of
the manifest at the previous level of the dependency tree.
suit-record-component-index is the current Component Index within the
manifest identified by suit-record-manifest-id.</t>

<t>For example, suppose that the root manifest has 3 dependency
components and each of those dependency manifests has 2 dependency
components of its own:</t>

<t><list style="symbols">
  <t>Root  <list style="symbols">
      <t>Dependency A (Component Index 0 in Root)      <list style="symbols">
          <t>Dependency AA (Component Index 0 in Dependency A)</t>
          <t>Dependency AB (Component Index 1 in Dependency A)</t>
        </list></t>
      <t>Dependency B (Component Index 1 in Root)      <list style="symbols">
          <t>Dependency BA (Component Index 0 in Dependency B)</t>
          <t>Dependency BB (Component Index 1 in Dependency B)</t>
        </list></t>
      <t>Dependency C (Component Index 2 in Root)      <list style="symbols">
          <t>Dependency CA (Component Index 0 in Dependency C)</t>
          <t>Dependency CB (Component Index 1 in Dependency C)</t>
        </list></t>
    </list></t>
</list></t>

<t>A suit-record-manifest-id of [1,0] would indicate that the record was
produced while executing Dependency BA. Similarly, a
suit-record-manifest-id of [2,1] would indicate Dependency CB.</t>

<t>suit-record-manifest-section indicates which Command Sequence of the manifest was
active. Only the "top level" Command Sequences, with entries in the Manifest are
identified by this element. These are:</t>

<t><list style="symbols">
  <t>suit-validate = 7</t>
  <t>suit-load = 8</t>
  <t>suit-invoke = 9</t>
  <t>suit-dependency-resolution  = 15</t>
  <t>suit-payload-fetch = 16</t>
  <t>suit-candidate-verification = 18</t>
  <t>suit-install = 20</t>
</list></t>

<t>This list may be extended through extensions to the SUIT_Manifest.</t>

<t>suit-record-manifest-section is used in addition to an offset so that the developer can
index into severable Command Sequences in a predictable way. The value of this
element is the value of the key that identified the Command Sequence in the
manifest.</t>

<t>suit-record-section-offset is the number of bytes into the current
Command Sequence at which the current command is located.</t>

<t>suit-record-component-index is the index of the component that was
specified at the time that the report was generated. This field is
necessary due to the availability of set-current-component values of
True and a list of components. Both of these values cause the manifest
processor to loop over commands using a series of component-ids, so the
developer needs to know which was selected when the command executed.</t>

<t>suit-record-properties contains any measured properties that led to the
command failure. For example, this could be the actual value of a
SUIT_Digest or class identifier. This is encoded as a map whose entries
are drawn from the $$SUIT_Parameters group defined in
<xref section="8.4.8" sectionFormat="of" target="I-D.ietf-suit-manifest"/>.</t>

</section>
<section anchor="suit-report"><name>The SUIT_Report</name>

<t>The SUIT_Report is a SUIT-specific logging container. It contains
the SUIT_Records needed to reconstruct the decisions made by a
Manifest Processor as well as references to the Manifest being 
processed, the result of processing, and an optional capability
report.</t>

<t>Some metadata is common to all records, such as the root manifest:
the manifest that is the entry-point for the manifest processor. This
metadata is aggregated with a list of SUIT_Records as defined in 
<xref target="suit-record"/>. The SUIT_Report
may also contain a list of any System Properties that were measured
and reported, and a reason for a failure if one occurred.
The following CDDL describes the structure of a SUIT_Report and
a SUIT_Reference:</t>

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Report = {
  suit-reference              => SUIT_Reference,
  ? suit-report-nonce         => bstr,
  suit-report-records         => [
    * SUIT_Record / system-property-claims ],
  suit-report-result          => true / {
    suit-report-result-code   => int,
    suit-report-result-record => SUIT_Record,
    suit-report-result-reason => SUIT_Report_Reasons,
  },
  ? suit-report-capability-report => SUIT_Capability_Report,
  * $$SUIT_Report_Extensions
}

system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + $$SUIT_Parameters,
}

SUIT_Reference = [
    suit-report-manifest-digest : SUIT_Digest,
    ? suit-report-manifest-uri : tstr
]
]]></sourcecode></figure>

<t>Further details for each element appear in subsequent sections: the
encoding of <spanx style="verb">suit-report-records</spanx> is defined in <xref target="suit-report-records"/>,
the result semantics in <xref target="suit-report-result"/>, and the optional
capability report in <xref target="capabilities"/>.</t>

<t>The suit-reference provides a digest and, when available, a reference URI
for a SUIT manifest. The digest is the digest of the manifest, exactly as
reported in SUIT_Authentication, element 0
(<xref section="8.3" sectionFormat="of" target="I-D.ietf-suit-manifest"/>). If the root manifest contains
a suit-reference-uri (<xref section="8.4.3" sectionFormat="of" target="I-D.ietf-suit-manifest"/>), the
SUIT_Report <bcp14>MUST</bcp14> include suit-report-manifest-uri, and its value <bcp14>MUST</bcp14>
exactly match that suit-reference-uri. If the root manifest does not contain
a suit-reference-uri, suit-report-manifest-uri <bcp14>MUST</bcp14> be omitted.</t>

<t>A recipient of a SUIT_Report cannot be assumed to already possess the
SUIT_Manifest needed to interpret it. SUIT_Records identify locations
in a manifest and contain Component Indices, so they are meaningful only
when the matching manifest can be obtained and validated using
suit-report-manifest-digest and, when present, suit-report-manifest-uri.
In contrast,
system-property-claims contain a SUIT_Component_Identifier rather than
only a Component Index. A recipient <bcp14>MAY</bcp14> process system-property-claims
without first obtaining the matching SUIT_Manifest, but <bcp14>MUST NOT</bcp14> use
SUIT_Records for manifest reconstruction unless the matching
SUIT_Manifest is available.</t>

<t>NOTE: The digest is used
in preference to other identifiers in the manifest because it allows
a manifest to be uniquely identified (collision resistance) whereas
other identifiers, such as the sequence number, can collide,
particularly in scenarios with multiple trusted signers.</t>

<t>suit-report-nonce provides a container for freshness or replay
protection information. This field <bcp14>MAY</bcp14> be omitted where the suit-report
is authenticated within a container that provides freshness already.
For example, attestation evidence typically contains a proof of
freshness.</t>

<t>suit-report-manifest-digest provides a SUIT_Digest (as defined in
<xref section="10" sectionFormat="of" target="I-D.ietf-suit-manifest"/>) that is the characteristic digest of the
Root manifest. This digest <bcp14>MUST</bcp14> be the same digest as is held in
the first element of SUIT_Authentication in the referenced
Manifest_Envelope.</t>

<t>suit-report-manifest-uri provides the reference URI that was provided in
the root manifest. This field is present only when the root manifest
contains suit-reference-uri.</t>

<section anchor="suit-report-records"><name>suit-report-records</name>

<t>suit-report-records is a list of 0 or more SUIT_Records or
system-property-claims. Because SUIT_Records are only generated on failure,
in simple cases this can be an empty list. SUIT_Records and
suit-system-property-claims are merged into a single list because this
reduces the overhead for a constrained node that generates this report.
The use of a single log allows report generators to use simple
memory management. Because the system-property-claims
are encoded as maps and SUIT_Records are encoded as lists, a recipient need
only filter the CBOR Type-5 entries from suit-report-records to obtain all 
system-property-claims.</t>

<t>System Properties can be extracted from suit-report-records by filtering
suit-report-records for maps. System Properties are a list of measured
or asserted properties
of the system that creates the SUIT_Report. These properties are scoped by
component identifier. Because this list is expected to be constructed on
the fly by a constrained node, component identifiers may appear more than
once. A recipient may convert the result to a more conventional structure:</t>

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Record_System_Properties = {
  * component-id => {
    + $$SUIT_Parameters,
  }
}
]]></sourcecode></figure>

</section>
<section anchor="suit-report-result"><name>suit-report-result</name>

<t>suit-report-result provides a mechanism to show that the SUIT procedure
completed successfully (value is true) or why it failed (value is a map
of an error code and a SUIT_Record).</t>

<t>suit-report-result-reason gives a high-level explanation of the failure.
These reasons are intended for interoperable implementations. The reasons
are divided into a small number of groups:</t>

<t><list style="symbols">
  <t>suit-report-reason-cbor-parse: a parsing error was encountered by the
CBOR parser.</t>
  <t>suit-report-reason-cose-unsupported: an unsupported COSE (<xref target="RFC9052"/>) structure or
header was encountered.</t>
  <t>suit-report-reason-alg-unsupported: an unsupported COSE algorithm was
encountered.</t>
  <t>suit-report-reason-unauthorised: Signature/MAC verification failed.</t>
  <t>suit-report-reason-command-unsupported: an unsupported command was
encountered.</t>
  <t>suit-report-reason-component-unsupported: The manifest declared a
component/prefix that does not exist.</t>
  <t>suit-report-reason-component-unauthorised: The manifest declared a
component that is not accessible by the signer.</t>
  <t>suit-report-reason-parameter-unsupported: The manifest used a
parameter that does not exist.</t>
  <t>suit-report-reason-severing-unsupported: The manifest used severable fields
but the Manifest Processor does not support them.</t>
  <t>suit-report-reason-condition-failed: A condition failed with soft-
failure off.</t>
  <t>suit-report-reason-operation-failed: A command failed (e.g.,
download/copy/swap/write)</t>
  <t>suit-report-reason-invoke-pending: Invocation is about to be attempted
and the final outcome is not yet known.</t>
</list></t>

<t>The suit-report-result-code reports an internal error code that is
provided for debugging reasons. This code is not intended for
interoperability.</t>

<t>The suit-report-result-record indicates the exact point in the manifest
or manifest dependency tree where the error occurred.</t>

<t>NOTE: Some deployments use <spanx style="verb">SUIT_Command_Invoke</spanx>, which can transfer
control to invoked code that never returns to the Manifest Processor.
When a SUIT_Report is produced for remote attestation, implementations
often need to sign the report before attempting the invoke. Signing with
an unconditional "success" result would be misleading if the invocation
ultimately fails. Implementers can leave the invoke outcome
implicit—allowing a verifier to infer that execution was handed off—or,
when the result must be reported before invocation, use
<spanx style="verb">suit-report-reason-invoke-pending</spanx> to signal that invocation is about to
occur without asserting a final outcome.</t>

<t>suit-report-capability-report provides a mechanism to report the capabilities of the Manifest Processor. The SUIT_Capability_Report is described in <xref target="capabilities"/>. The capability report is optional to include in the SUIT_Report, according to an application-specific policy. While the SUIT_Capability_Report is not expected to be very large, applications should ensure that they only report capabilities when necessary in order to conserve bandwidth. A capability report is not necessary except when:</t>

<t><list style="numbers" type="1">
  <t>A client explicitly requests the capability report, or</t>
  <t>A manifest attempts to use a capability that the Manifest Processor does not implement.</t>
</list></t>

</section>
</section>
<section anchor="attestation"><name>Attestation</name>

<t>Where Remote Attestation (see <xref target="RFC9334"/>, the RATS Architecture) is in use, the RATS Verifier (Verifier hereafter) requires a set of
Attestation Evidence. Attestation Evidence contains Evidence Claims about the Attester. These Evidence Claims
contain measurements about the Attester. Many of these measurements are the same measurements that are generated in SUIT,
which means that a SUIT_Report contains most of the Claims and some of the Endorsements that a Verifier requires.</t>

<t>Using a SUIT_Manifest and a SUIT_Report improves a Verifier's ability to 
appraise the trustworthiness of a remote device.
Remote attestation is done by using the SUIT_Envelope
along with the SUIT_Report in Evidence to reconstruct the state of the device at boot time.
Additionally, by including SUIT_Report data as telemetry (i.e., debug/failure information) next to measurements in Evidence, both types of Evidence data can be notarized via verifiable data structure, such as an append-only log (<xref section="5.1.3" sectionFormat="of" target="RFC9943"/>) using the same conceptual message.</t>

<t>For the SUIT_Report to be usable as Attestation Evidence, the environment that
generated the SUIT_Report also needs to be measured. Typically, this means that
the software that executes the commands in the Manifest (the Manifest
Processor) must be measured; similarly, the piece of software that assembles
the measurements, taken by the Manifest Processor, into the SUIT_Report (the
Report Generator) must also be measured. Any bootloaders or operating systems
that facilitate the running of the Manifest Processor or Report Generator also need
to be measured in order to demonstrate the integrity of the measuring environment.</t>

<t>Therefore, if a Remote Attestation format that conveys Attestation Evidence, such as an Entity Attestation Token (EAT, see <xref target="RFC9711"/>), contains a SUIT_Report, then it <bcp14>MUST</bcp14> also include an integrity measurement of the Manifest Processor, the Report Generator and any bootloader or OS environment that ran before or during the 
execution of both.</t>

<t>If Reference Values (<xref section="8.3" sectionFormat="of" target="RFC9334"/>) required by the Verifier are delivered in a SUIT_Envelope, this codifies the delivery of appraisal information to the Verifier:</t>

<t><list style="symbols">
  <t>The Firmware Distributor:
  <list style="symbols">
      <t>sends the SUIT_Envelope to the Verifier without payload or text, but with Reference Values</t>
      <t>sends the SUIT_Envelope to the Recipient without Reference Values, or text, but with payload</t>
    </list></t>
  <t>The Recipient:
  <list style="symbols">
      <t>Installs the firmware as described in the SUIT_Manifest and generates a SUIT_Report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
      <t>Boots the firmware as described in the SUIT_Manifest and creates a SUIT_Report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
    </list></t>
  <t>The Firmware Distributor sends both reports to the Verifier (separately or together)</t>
  <t>The Verifier:
  <list style="symbols">
      <t>Reconstructs the state of the device using the manifest</t>
      <t>Compares this state to the Reference Values</t>
      <t>Returns an Attestation Report to the Firmware Distributor</t>
    </list></t>
</list></t>

<t>This approach simplifies the design of the bootloader since it is able to use an append-only log. It allows a Verifier to validate this report against signed Reference Values that is provided by the firmware author, which simplifies the delivery chain of verification information to the Verifier.</t>

<t>For a Verifier to consume the SUIT_Report, it requires a copy of the
SUIT_Manifest. The Verifier then replays the SUIT_Manifest, using the
SUIT_Report to resolve whether each condition is met. It identifies each
measurement that is required by attestation policy and records this
measurement as a Claim (<xref section="4" sectionFormat="of" target="RFC9711"/>). It evaluates whether the SUIT_Report
correctly matches the SUIT_Manifest as an element of evaluating
trustworthiness. For example there are several indicators that would show
that a SUIT_Report does not match a SUIT_Manifest. If any of the following
(not an exhaustive list) occur, then the Manifest Processor that created the
report is not trustworthy:</t>

<t><list style="symbols">
  <t>Hash of the SUIT_Manifest does not match suit-report-manifest-digest</t>
  <t>A SUIT_Record is issued for a SUIT_Command_Sequence that does not exist 
in the SUIT_Manifest identified by suit-report-manifest-digest.</t>
  <t>A SUIT_Record is identified at an offset that is not a condition and does
not have a reporting policy that would indicate a SUIT_Record is needed.</t>
</list></t>

<t>Many architectures require multiple Verifiers, for example where one Verifier
handles hardware trust, and another handles software trust, especially the
evaluation of software authenticity and freshness. Some Verifiers may not
be capable of processing a SUIT_Report and, for separation of roles, it
may be preferable to divide that responsibility. In this case, the Verifier
of the SUIT_Report should perform an Evidence Transformation
<xref target="I-D.ietf-rats-evidence-trans"/> and
produce general purpose Measurement Results Claims that can be consumed by a
downstream Verifier, for example a Verifying Relying Party, that does not
understand SUIT_Reports.</t>

<t>When converting a SUIT_Report into Measurement Results Claims or
Attestation Results, the Verifier <bcp14>MUST</bcp14> preserve the scope of each reported
observation. The output claims, together with the context defined by their
format or profile, <bcp14>MUST</bcp14> identify the applicable manifest-processing stage
and the source and role of the environment that made the observation.
A report of installation, candidate verification, loading, or pending
invocation alone <bcp14>MUST NOT</bcp14> be used to assert that a component is currently
running. Such an assertion requires evidence of the component's running
state, with freshness assessed according to the applicable appraisal
policy (see <xref section="10" sectionFormat="of" target="RFC9334"/>).</t>

</section>
<section anchor="capabilities"><name>Capability Reporting</name>

<t>Because SUIT is extensible, a manifest author must know what capabilities a device has available. To enable this, a capability report is a set of lists that define which commands, parameters, algorithms, and component IDs are supported by a manifest processor.</t>

<t>The CDDL for a SUIT_Capability_Report follows:</t>

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Capability_Report = {
  suit-component-capabilities  => [+ SUIT_Component_Capability]
  suit-command-capabilities          => [+ int],
  suit-parameters-capabilities       => [+ int],
  suit-crypt-algo-capabilities       => [+ int],
  ? suit-envelope-capabilities       => [+ int],
  ? suit-manifest-capabilities       => [+ int],
  ? suit-common-capabilities         => [+ int],
  ? suit-text-capabilities           => [+ int],
  ? suit-text-component-capabilities => [+ int],
  ? suit-dependency-capabilities     => [+ int],
  * [+int]                           => [+ int],
  * $$SUIT_Capability_Report_Extensions
}

SUIT_Component_Capability = [*bstr,?true]
]]></sourcecode></figure>

<t>A SUIT_Component_Capability is similar to a SUIT_Component_ID, with one difference: it may optionally be terminated by a CBOR 'true' which acts as a wild-card match for any component with a prefix matching the SUIT_Component_Capability leading up to the 'true.' This feature is for use with filesystem storage, key value stores, or any other arbitrary-component-id storage systems.</t>

<t>When reporting capabilities, it is <bcp14>OPTIONAL</bcp14> to report capabilities that are declared mandatory by the SUIT Manifest <xref target="I-D.ietf-suit-manifest"/>. Capabilities defined by extensions <bcp14>MUST</bcp14> be reported.</t>

<t>Additional capability reporting can be added as follows: if a manifest element does not exist in this map, it can be added by specifying the CBOR path to the manifest element in an array and using this as the key. For example SUIT_Dependencies, as described in <xref section="5.2.2" sectionFormat="of" target="I-D.ietf-suit-trust-domains"/>,  could have an extension added, which was key 3 in the SUIT_Dependencies map. This capability would be reported as: [3, 3, 1] =&gt; [3], where the key consists of the key for SUIT_Manifest (3), the key for SUIT_Common (3), and the key for SUIT_Dependencies (1). Then the value indicates that this manifest processor supports the extension (3).</t>

</section>
<section anchor="eat"><name>EAT Claim</name>

<t>The Entity Attestation Token (EAT, see <xref target="RFC9711"/>) is a secure container for conveying
Attestation Evidence, such as measurements, and Attestation Results.
The SUIT_Report is a form of measurement done by the SUIT Manifest Processor as it attempts to invoke a manifest or install a manifest. As a result, the SUIT_Report can be captured in an EAT measurements type.</t>

<t>The log-based structure of the SUIT_Report is not conducive to processing by a
typical Relying Party: it contains only a list of waypoints through the SUIT
Manifest--unless system parameter records are included--and requires additional 
information (the SUIT_Manifest) to reconstruct the values that must have been
present at each test. A Verifier in posession of the SUIT_Manifest can reconstruct 
the measurements that would produce the waypoints in the SUIT_Report. The Verifier 
<bcp14>SHOULD</bcp14> convert a SUIT_Report into a more consumable version of the EAT claim by, for 
example, constructing a measurement results claim that contains the digest of a 
component, the Vendor ID and Class ID of a component, etc.</t>

<t>The context-preservation requirements in <xref target="attestation"/> also apply to
this conversion.</t>

</section>
<section anchor="container"><name>SUIT_Report Container</name>

<t>Transmission of the SUIT_Report <bcp14>MUST</bcp14> satisfy the requirements of <xref section="4.3.16" sectionFormat="of" target="RFC9124"/>: REQ.SEC.REPORTING.</t>

<t>Status reports from the device to any remote system <bcp14>MUST</bcp14> be performed over an authenticated, confidential channel in order to prevent modification or spoofing of the reports.</t>

<t>As a result, the SUIT_Report <bcp14>MUST</bcp14> be transported using one of the following methods:</t>

<t><list style="symbols">
  <t>As part of a larger document that provides authenticity guarantees, such as within a <spanx style="verb">measurements</spanx> claim in an Entity Attestation Token (EAT, <xref section="4.2.16" sectionFormat="of" target="RFC9711"/>).</t>
  <t>As the payload of a message transmitted over a communication security protocol, such as DTLS <xref target="RFC9147"/>.</t>
  <t>Encapsulated within a secure container, such as a COSE structure. In the case of COSE, the container <bcp14>MUST</bcp14> provide authenticity and integrity using <spanx style="verb">COSE_Sign1</spanx> or <spanx style="verb">COSE_Mac0</spanx>; confidentiality <bcp14>MAY</bcp14> be provided by carrying a <spanx style="verb">COSE_Encrypt0</spanx> object as the authenticated payload. The SUIT_Report or encrypted SUIT_Report <bcp14>MUST</bcp14> be the sole payload, as illustrated by the CDDL fragment below.</t>
</list></t>

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1 \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1_Tagged \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0 \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0_Tagged \
                         .and SUIT_COSE_Profiles

SUIT_Report_COSE_Sign1_Tagged = #6.18(SUIT_Report_COSE_Sign1)
SUIT_Report_COSE_Sign1 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    signature : bstr
]
SUIT_Report_COSE_MAC0_Tagged = #6.17(SUIT_Report_COSE_MAC0)
SUIT_Report_COSE_MAC0 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    tag : bstr
]
SUIT_Report_Unprotected = SUIT_Report / SUIT_Report_COSE_Encrypt0
SUIT_Report_COSE_Encrypt0 = COSE_Encrypt0
]]></sourcecode></figure>

<t>Note that SUIT_Report_COSE_Sign1 and SUIT_Report_COSE_MAC0 <bcp14>MUST</bcp14> be combined with a SUIT_COSE_Profiles from <xref target="I-D.ietf-suit-mti"/> using the CDDL .and directive. The SUIT_Report_COSE_Encrypt0 carries a ciphertext payload that <bcp14>MUST</bcp14> contain just the ciphertext obtained by encrypting the following CDDL:</t>

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Report_plaintext = bstr .cbor SUIT_Report
]]></sourcecode></figure>

<t>SUIT_COSE_Profiles, which use AES-CTR encryption, are not integrity protected and authenticated. For this purpose, SUIT_Report_Protected defines authenticated containers with an encrypted payload.</t>

<t>If a report cannot be constructed or authenticated according to local
policy, the recipient reports the failure through an
implementation-specific local error or logging mechanism. A recipient
<bcp14>MUST NOT</bcp14> emit an unauthenticated SUIT_Report when policy requires
authenticated reports. If a partial SUIT_Report is emitted, it <bcp14>MUST</bcp14>
satisfy the same authentication and integrity policy as any other
SUIT_Report emitted by that recipient.</t>

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

<t>IANA is requested to rename the overall SUIT registry group (https://www.iana.org/assignments/suit/suit.xhtml) "Software Update for the Internet of Things (SUIT)".</t>

<t>IANA is requested to allocate a CBOR tag for each of the following items. Please see <xref target="cbor-tag"/> for further details.</t>

<t><list style="symbols">
  <t>SUIT_Report_Protected</t>
  <t>SUIT_Reference</t>
  <t>SUIT_Capability_Report</t>
</list></t>

<t>IANA is requested to allocate a CoAP content-format <xref target="RFC7252"/> and a media-type for SUIT_Report <xref target="media-type"/>. Please see <xref target="media-type"/> and <xref target="coap-cf"/> for further details.</t>

<t>IANA is also requested to add the following registries to the SUIT registry group (https://www.iana.org/assignments/suit/suit.xhtml).</t>

<t><list style="symbols">
  <t>SUIT_Report Elements <xref target="iana-suit-report-elements"/></t>
  <t>SUIT_Record Elements <xref target="iana-suit-record-elements"/></t>
  <t>SUIT_Report Reasons <xref target="iana-suit-report-reasons"/></t>
  <t>SUIT_Capability_Report Elements <xref target="iana-suit-capability-report"/></t>
</list></t>

<t>For each of these registries, registration policy is:</t>

<t><list style="symbols">
  <t>-256 to 255: Standards Action With Expert Review</t>
  <t>-65536 to -257, 256 to 65535: Specification Required</t>
  <t>-4294967296 to -65537, 65536 to 4294967295: First Come First Served</t>
</list></t>

<t>Requests in the Standards Action and Specification Required ranges <bcp14>MUST</bcp14>
undergo designated expert review as described below; this guidance supplements
the normal IANA processing for those policies.</t>

<section anchor="expert-review-instructions"><name>Expert Review Instructions</name>

<t>The IANA registries established in this document allow values to be added based on expert review. This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>

<t>Expert reviewers should take into consideration the following points:</t>

<t><list style="symbols">
  <t>Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered, and that the point is likely to be used in deployments. The zones tagged as private use are intended for testing purposes and closed environments; code points in other ranges should not be assigned for testing.</t>
  <t>Specifications are required for the standards track range of point assignment. Specifications should exist for all other ranges, but early assignment before a specification is available is considered to be permissible. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for.</t>
  <t>Experts should take into account the expected usage of fields when approving point assignment. The fact that there is a range for standards track documents does not mean that a standards track document cannot have points assigned outside of that range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</t>
</list></t>

</section>
<section anchor="media-type"><name>Media Type Registration</name>

<section anchor="applicationsuit-reportcose"><name>application/suit-report+cose</name>

<t>IANA is requested to register application/suit-report+cose as a media type for the SUIT_Report.</t>

<dl spacing="compact">
  <dt>Type name:</dt>
  <dd>
    <t>application</t>
  </dd>
  <dt>Subtype name:</dt>
  <dd>
    <t>suit-report+cose</t>
  </dd>
  <dt>Required parameters:</dt>
  <dd>
    <t>n/a</t>
  </dd>
  <dt>Optional parameters:</dt>
  <dd>
    <t>n/a</t>
  </dd>
  <dt>Encoding considerations:</dt>
  <dd>
    <t>binary (CBOR)</t>
  </dd>
  <dt>Security considerations:</dt>
  <dd>
    <t><xref target="seccons"/> of &SELF;</t>
  </dd>
  <dt>Interoperability considerations:</dt>
  <dd>
    <t>SUIT Reports are encoded as CBOR and can be wrapped in COSE_Sign1 or COSE_Mac0, optionally carrying COSE_Encrypt0 as the authenticated payload. Receivers must be able to identify and process the COSE envelope used and support compatible COSE algorithms for validation or decryption. All versioning and structure are self-describing within the CBOR SUIT_Report format, and no media-type parameters are used for negotiation. Interoperability therefore depends on shared deployment profiles that specify the expected COSE protections and algorithms. Comprehension of SUIT_Records is dependent on obtaining a matching SUIT Manifest. System property claims can still be processed without the manifest because they contain SUIT_Component_Identifier values rather than only Component Indices.</t>
  </dd>
  <dt>Published specification:</dt>
  <dd>
    <t>&SELF;</t>
  </dd>
  <dt>Applications that use this media type:</dt>
  <dd>
    <t>SUIT Manifest Processor, SUIT Manifest Distributor, SUIT Manifest Author, RATS Attesters, RATS Verifiers</t>
  </dd>
  <dt>Fragment identifier considerations:</dt>
  <dd>
    <t>The syntax and semantics of fragment identifiers are as specified for "application/cose".</t>
  </dd>
  <dt>Person &amp; email address to contact for further information:</dt>
  <dd>
    <t>SUIT WG mailing list (suit@ietf.org)</t>
  </dd>
  <dt>Intended usage:</dt>
  <dd>
    <t>COMMON</t>
  </dd>
  <dt>Restrictions on usage:</dt>
  <dd>
    <t>none</t>
  </dd>
  <dt>Author/Change controller:</dt>
  <dd>
    <t>IETF</t>
  </dd>
  <dt>Provisional registration:</dt>
  <dd>
    <t>no</t>
  </dd>
</dl>

</section>
</section>
<section anchor="coap-cf"><name>CoAP Content-Format Registration</name>

<t>IANA is requested to assign a CoAP Content-Format ID for the SUIT_Report media type in the "CoAP Content-Formats" registry, from the "IETF Review with Expert Review or IESG Approval with Expert Review" space (256..9999), within the "CoRE Parameters" registry group <xref target="RFC7252"/> <xref target="IANA.core-parameters"/>:</t>

<texttable>
      <ttcol align='left'>Content Type</ttcol>
      <ttcol align='left'>Content Coding</ttcol>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>application/suit-report+cose</c>
      <c>&#160;</c>
      <c>TBA</c>
      <c>&SELF;</c>
</texttable>

</section>
<section anchor="cbor-tag"><name>CBOR Tag Registration</name>

<t>IANA is requested to allocate a tag in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably in the Specification Required range:</t>

<texttable>
      <ttcol align='left'>Tag</ttcol>
      <ttcol align='left'>Data Item</ttcol>
      <ttcol align='left'>Semantics</ttcol>
      <c>TBA</c>
      <c>array</c>
      <c>SUIT_Report_Protected</c>
      <c>TBA</c>
      <c>array</c>
      <c>SUIT_Reference</c>
      <c>TBA</c>
      <c>map</c>
      <c>SUIT_Capability_Report</c>
</texttable>

</section>
<section anchor="iana-suit-report-elements"><name>SUIT_Report Elements</name>

<t>IANA is requested to create a new registry for SUIT_Report Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Label</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>2</c>
      <c>Nonce</c>
      <c>suit-report-nonce</c>
      <c><xref target="suit-report"/> of &SELF;</c>
      <c>3</c>
      <c>Records</c>
      <c>suit-report-records</c>
      <c><xref target="suit-report"/> of &SELF;</c>
      <c>4</c>
      <c>Result</c>
      <c>suit-report-result</c>
      <c><xref target="suit-report"/> of &SELF;</c>
      <c>5</c>
      <c>Result Code</c>
      <c>suit-report-result-code</c>
      <c><xref target="suit-report"/> of &SELF;</c>
      <c>6</c>
      <c>Result Record</c>
      <c>suit-report-result-record</c>
      <c><xref target="suit-report"/> of &SELF;</c>
      <c>7</c>
      <c>Result Reason</c>
      <c>suit-report-result-reason</c>
      <c><xref target="suit-report"/> of &SELF;</c>
      <c>8</c>
      <c>Capability Report</c>
      <c>suit-report-capability-report</c>
      <c><xref target="suit-report"/> of &SELF;</c>
      <c>99</c>
      <c>Reference</c>
      <c>suit-reference</c>
      <c><xref target="suit-report"/> of &SELF;</c>
</texttable>

</section>
<section anchor="iana-suit-record-elements"><name>SUIT_Record Elements</name>

<t>IANA is requested to create a new registry for SUIT_Record Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Label</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>Manifest ID</c>
      <c>suit-record-manifest-id</c>
      <c><xref target="suit-record"/> of &SELF;</c>
      <c>1</c>
      <c>Manifest Section</c>
      <c>suit-record-manifest-section</c>
      <c><xref target="suit-record"/> of &SELF;</c>
      <c>2</c>
      <c>Section Offset</c>
      <c>suit-record-section-offset</c>
      <c><xref target="suit-record"/> of &SELF;</c>
      <c>3</c>
      <c>Component Index</c>
      <c>suit-record-component-index</c>
      <c><xref target="suit-record"/> of &SELF;</c>
      <c>4</c>
      <c>Record Properties</c>
      <c>suit-record-properties</c>
      <c><xref target="suit-record"/> of &SELF;</c>
</texttable>

</section>
<section anchor="iana-suit-report-reasons"><name>SUIT_Report Reasons</name>

<t>IANA is requested to create a new registry for SUIT_Report Reasons.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Label</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>Result OK</c>
      <c>suit-report-reason-ok</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>1</c>
      <c>CBOR Parse Failure</c>
      <c>suit-report-reason-cbor-parse</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>2</c>
      <c>Unsupported COSE Structure or Header</c>
      <c>suit-report-reason-cose-unsupported</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>3</c>
      <c>Unsupported COSE Algorithm</c>
      <c>suit-report-reason-alg-unsupported</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>4</c>
      <c>Signature / MAC verification failed</c>
      <c>suit-report-reason-unauthorised</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>5</c>
      <c>Unsupported SUIT Command</c>
      <c>suit-report-reason-command-unsupported</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>6</c>
      <c>Unsupported SUIT Component</c>
      <c>suit-report-reason-component-unsupported</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>7</c>
      <c>Unauthorized SUIT Component</c>
      <c>suit-report-reason-component-unauthorised</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>8</c>
      <c>Unsupported SUIT Parameter</c>
      <c>suit-report-reason-parameter-unsupported</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>9</c>
      <c>Severing Unsupported</c>
      <c>suit-report-reason-severing-unsupported</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>10</c>
      <c>Condition Failed</c>
      <c>suit-report-reason-condition-failed</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>11</c>
      <c>Operation Failed</c>
      <c>suit-report-reason-operation-failed</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
      <c>12</c>
      <c>Invocation Pending</c>
      <c>suit-report-reason-invoke-pending</c>
      <c><xref target="suit-report-result"/> of &SELF;</c>
</texttable>

</section>
<section anchor="iana-suit-capability-report"><name> SUIT Capability Report Elements</name>

<t>IANA is requested to create a new registry for SUIT Capability Report Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Label</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>1</c>
      <c>Components</c>
      <c>suit-component-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>2</c>
      <c>Commands</c>
      <c>suit-command-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>3</c>
      <c>Parameters</c>
      <c>suit-parameters-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>4</c>
      <c>Cryptographic Algorithms</c>
      <c>suit-crypt-algo-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>5</c>
      <c>Envelope Elements</c>
      <c>suit-envelope-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>6</c>
      <c>Manifest Elements</c>
      <c>suit-manifest-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>7</c>
      <c>Common Elements</c>
      <c>suit-common-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>8</c>
      <c>Text Elements</c>
      <c>suit-text-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>9</c>
      <c>Component Text Elements</c>
      <c>suit-text-component-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
      <c>10</c>
      <c>Dependency Capabilities</c>
      <c>suit-dependency-capabilities</c>
      <c><xref target="capabilities"/> of &SELF;</c>
</texttable>

</section>
</section>
<section anchor="seccons"><name>Security Considerations</name>

<t>The SUIT_Report serves four primary security objectives:</t>

<t><list style="symbols">
  <t>Validated Identity</t>
  <t>Integrity</t>
  <t>Replay protection</t>
  <t>Confidentiality</t>
</list></t>

<t>The mechanisms for achieving these protections are outlined in <xref target="container"/>.</t>

<t>Ideally, a SUIT_Report <bcp14>SHOULD</bcp14> be conveyed as part of a remote attestation procedure,
such as embeding it in EAT tokens that represent RATS conceptual messages. This approach ensures that the SUIT_Report
is cryptographically bound to the environment (hardware, software, or both) in
which it was generated, thereby strengthening its authenticity.</t>

<t>A SUIT_Report may disclose sensitive information about the device on which it
were produced. In such cases, the SUIT_Report <bcp14>MUST</bcp14> be encrypted, as specified in
<xref target="container"/>.</t>

<t>Furthermore, failure reports, particularly those involving cryptographic operations,
can unintentionally reveal insights into system weaknesses or vulnerabilities. As such,
SUIT_Reports <bcp14>SHOULD</bcp14> be encrypted whenever possible, to minimize the risk of information
leakage.</t>

<t>In addition to these core security requirements, operational considerations must be taken
into account. When a SUIT_Report is included within another protocol message (e.g., inside
an encrypted EAT), care must be taken to avoid inadvertently leaking information and
to uphold the principle of least privilege. For example, in many EAT-based remote attestation flows,
the Verifier may not require the full SUIT_Report. Similarly, the Relying Party might not
need access to it either.</t>

<t>To support least-privilege access, the SUIT_Report should be independently encrypted, even
when the transport or enclosing token is also encrypted. This layered encryption ensures that
only authorized entities can access the contents of the SUIT_Report.</t>

<t>In other scenarios, the EAT Verifier might require full access to a SUIT_Report.
For example, the SUIT_Report must be accessible in its entirety for the EAT Verifier
to extract or convert the SUIT_Report content into specific EAT claims, such as <spanx style="verb">measres</spanx>
(Measurement Results). A typical case
involves translating a successful <spanx style="verb">suit-condition-image</spanx> check into a digest-based claim within
the EAT.</t>

<t>When applying cryptographic protection to the SUIT_Report, the same algorithm profile used for
the corresponding SUIT manifest <bcp14>SHOULD</bcp14> be reused. The available algorithm profiles are detailed
in <xref target="I-D.ietf-suit-mti"/>. If using the same profile is not feasible (e.g., due to constraints
imposed by <spanx style="verb">suit-sha256-hsslms-a256kw-a256ctr</spanx>), then a profile offering comparable security
strength <bcp14>SHOULD</bcp14> be selected—for instance, <spanx style="verb">suit-sha256-esp256-ecdh-a128ctr</spanx>.</t>

<t>In exceptional cases, if no suitable profile can be applied, the necessity of disabling a SUIT_Report functionality altogether might arise.</t>

<t>SUIT_Reports may expose information about the user to the Verifier, Firmware Distributor, or Manifest Author. Implementors <bcp14>MUST</bcp14> carefully consider user consent in the reporting system.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors thank Dave Thaler for his feedback, Russ Housley for his
Security Directorate reviews, Behcet Sarikaya for his General Area Review
Team reviews, and the IESG reviewers for their comments and suggestions.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">




<reference anchor="I-D.ietf-suit-manifest">
   <front>
      <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
         <organization>Inria</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <date day="18" month="June" year="2026"/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an Internet of Things (IoT) device), where to find
   the code/data, the devices to which it applies, and cryptographic
   information protecting the manifest.  Software updates and Trusted
   Invocation both tend to use sequences of common operations, so the
   manifest encodes those sequences of operations, rather than declaring
   the metadata.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-37"/>
   
</reference>
<reference anchor="RFC9019">
  <front>
    <title>A Firmware Update Architecture for Internet of Things</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="D. Brown" initials="D." surname="Brown"/>
    <author fullname="M. Meriac" initials="M." surname="Meriac"/>
    <date month="April" year="2021"/>
    <abstract>
      <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
      <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9019"/>
  <seriesInfo name="DOI" value="10.17487/RFC9019"/>
</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="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="RFC8610">
  <front>
    <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="C. Vigano" initials="C." surname="Vigano"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2019"/>
    <abstract>
      <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8610"/>
  <seriesInfo name="DOI" value="10.17487/RFC8610"/>
</reference>
<reference anchor="RFC8792">
  <front>
    <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <author fullname="Q. Wu" initials="Q." surname="Wu"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8792"/>
  <seriesInfo name="DOI" value="10.17487/RFC8792"/>
</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-suit-mti">
   <front>
      <title>Cryptographic Algorithms for Internet of Things (IoT) Devices</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <author fullname="Akira Tsukamoto" initials="A." surname="Tsukamoto">
         <organization>Openchip &amp; Software Technologies, S.L.</organization>
      </author>
      <date day="22" month="July" year="2025"/>
      <abstract>
	 <t>   The SUIT manifest, as defined in &quot;A Manifest Information Model for
   Firmware Updates in Internet of Things (IoT) Devices&quot; (RFC 9124),
   provides a flexible and extensible format for describing how firmware
   and software updates are to be fetched, verified, decrypted, and
   installed on resource-constrained devices.  To ensure the security of
   these update processes, the manifest relies on cryptographic
   algorithms for functions such as digital signature verification,
   integrity checking, and confidentiality.

   This document defines cryptographic algorithm profiles for use with
   the Software Updates for Internet of Things (SUIT) manifest.  These
   profiles specify sets of algorithms to promote interoperability
   across implementations.

   Given the diversity of IoT deployments and the evolving cryptographic
   landscape, algorithm agility is essential.  This document groups
   algorithms into named profiles to accommodate varying levels of
   device capabilities and security requirements.  These profiles
   support the use cases laid out in the SUIT architecture, published in
   &quot;A Firmware Update Architecture for Internet of Things&quot; (RFC 9019).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-mti-23"/>
   
</reference>
<reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
  <front>
    <title>Concise Binary Object Representation (CBOR) Tags</title>
    <author>
      <organization>IANA</organization>
    </author>
  </front>
</reference>
<reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
  <front>
    <title>Constrained RESTful Environments (CoRE) Parameters</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 title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.ietf-suit-trust-domains">
   <front>
      <title>Software Update for the Internet of Things (SUIT) Manifest Extensions for Multiple Trust Domain</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Ken Takayama" initials="K." surname="Takayama">
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day="22" month="July" year="2025"/>
      <abstract>
	 <t>   A device has more than one trust domain when it enables delegation of
   different rights to mutually distrusting entities for use for
   different purposes or Components in the context of firmware or
   software update.  This specification describes extensions to the
   Software Update for the Internet of Things (SUIT) Manifest format for
   use in deployments with multiple trust domains.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-trust-domains-12"/>
   
</reference>
<reference anchor="RFC9943">
  <front>
    <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
    <author fullname="C. Fournet" initials="C." surname="Fournet"/>
    <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
    <author fullname="S. Lasker" initials="S." surname="Lasker"/>
    <date month="June" year="2026"/>
    <abstract>
      <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9943"/>
  <seriesInfo name="DOI" value="10.17487/RFC9943"/>
</reference>

<reference anchor="I-D.ietf-rats-evidence-trans">
   <front>
      <title>Evidence Transformations</title>
      <author fullname="Fabrizio Damato" initials="F." surname="Damato">
         <organization>AMD</organization>
      </author>
      <author fullname="Andrew Draper" initials="A." surname="Draper">
         <organization>Independent</organization>
      </author>
      <author fullname="Ned Smith" initials="N." surname="Smith">
         <organization>Independent</organization>
      </author>
      <date day="30" month="October" year="2026"/>
      <abstract>
	 <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester to decide if continued
   interaction is warrented.  Evidence structures can vary making
   appraisals challenging for Verifiers.  Verifiers need to understand
   Evidence encoding formats and some of the Evidence semantics to
   appraise it.  Consequently, Evidence may require format
   transformation to an internal representation that preserves original
   semantics.  This document specifies Evidence transformation methods
   for DiceTcbInfo, concise evidence, and SPDM measurements block
   structures.  These Evidence structures are converted to the CoRIM
   internal representation and follow CoRIM defined appraisal
   procedures.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-evidence-trans-03"/>
   
</reference>
<reference anchor="RFC9124">
  <front>
    <title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <date month="January" year="2022"/>
    <abstract>
      <t>Vulnerabilities with Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism that is also suitable for constrained devices. Ensuring that devices function and remain secure over their service lifetime requires such an update mechanism to fix vulnerabilities, update configuration settings, and add new functionality.</t>
      <t>One component of such a firmware update is a concise and machine-processable metadata document, or manifest, that describes the firmware image(s) and offers appropriate protection. This document describes the information that must be present in the manifest.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9124"/>
  <seriesInfo name="DOI" value="10.17487/RFC9124"/>
</reference>
<reference anchor="RFC9147">
  <front>
    <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
      <t>This document obsoletes RFC 6347.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9147"/>
  <seriesInfo name="DOI" value="10.17487/RFC9147"/>
</reference>
<reference anchor="RFC7252">
  <front>
    <title>The Constrained Application Protocol (CoAP)</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="K. Hartke" initials="K." surname="Hartke"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
      <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7252"/>
  <seriesInfo name="DOI" value="10.17487/RFC7252"/>
</reference>



    </references>

</references>


<?line 879?>

<section anchor="full-cddl"><name>Full CDDL</name>
<t>In order to create a valid SUIT_Report document the structure of the corresponding CBOR message <bcp14>MUST</bcp14> adhere to the following CDDL (<xref target="RFC8610"/>) data definition.</t>

<t>To be valid, the following CDDL <bcp14>MUST</bcp14> have the COSE CDDL appended to it. The COSE CDDL can be obtained by following the directions in <xref section="1.4" sectionFormat="of" target="RFC9052"/>. It must also have the CDDL from <xref target="I-D.ietf-suit-manifest"/> and <xref target="I-D.ietf-suit-mti"/> appended to it. This CDDL is line-wrapped per <xref target="RFC8792"/>.</t>

<figure><sourcecode type="cddl"><![CDATA[
; NOTE: '\' line wrapping per RFC 8792
=============== NOTE: '\' line wrapping per RFC 8792 ================

SUIT_Report_Tool_Tweak /= SUIT_start
SUIT_Report_Tool_Tweak /= SUIT_Report_Protected
SUIT_Report_Protected /= SUIT_COSE_tool_tweak

SUIT_Report_Protected /= SUIT_Report_COSE_Sign1 .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1_Tagged .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0 .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0_Tagged .and \
                                                   SUIT_COSE_Profiles

SUIT_Report_COSE_Sign1_Tagged = #6.18(SUIT_Report_COSE_Sign1)
SUIT_Report_COSE_Sign1 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    signature : bstr
]
SUIT_Report_COSE_MAC0_Tagged = #6.17(SUIT_Report_COSE_MAC0)
SUIT_Report_COSE_MAC0 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    tag : bstr
]
SUIT_Report_Unprotected = SUIT_Report / SUIT_Report_COSE_Encrypt0
SUIT_Report_COSE_Encrypt0 = COSE_Encrypt0

SUIT_Report = {
  suit-reference              => SUIT_Reference,
  ? suit-report-nonce         => bstr,
  suit-report-records         => [
    * SUIT_Record / system-property-claims ],
  suit-report-result          => true / {
    suit-report-result-code   => int,
    suit-report-result-record => SUIT_Record,
    suit-report-result-reason => SUIT_Report_Reasons,
  },
  ? suit-report-capability-report => SUIT_Capability_Report,
  * $$SUIT_Report_Extensions
}

SUIT_Reference = [
    suit-report-manifest-digest : SUIT_Digest,
    ? suit-report-manifest-uri : tstr
]

SUIT_Record = [
    suit-record-manifest-id        : [* uint ],
    suit-record-manifest-section   : int,
    suit-record-section-offset     : uint,
    suit-record-component-index    : uint,
    suit-record-properties         : {*$$SUIT_Parameters},
    * $$SUIT_Record_Extensions
]

system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + $$SUIT_Parameters,
}

SUIT_Capability_Report = {
  suit-component-capabilities  => [+ SUIT_Component_Capability]
  suit-command-capabilities          => [+ int],
  suit-parameters-capabilities       => [+ int],
  suit-crypt-algo-capabilities       => [+ int],
  ? suit-envelope-capabilities       => [+ int],
  ? suit-manifest-capabilities       => [+ int],
  ? suit-common-capabilities         => [+ int],
  ? suit-text-capabilities           => [+ int],
  ? suit-text-component-capabilities => [+ int],
  ? suit-dependency-capabilities     => [+ int],
  * [+int]                           => [+ int],
  * $$SUIT_Capability_Report_Extensions
}

SUIT_Component_Capability = [*bstr,?true]

suit-report-nonce = 2
suit-report-records = 3
suit-report-result = 4
suit-report-result-code = 5
suit-report-result-record = 6
suit-report-result-reason = 7
suit-report-capability-report = 8
suit-reference = 99

system-component-id = 0

suit-record-manifest-id = 0
suit-record-manifest-section = 1
suit-record-section-offset = 2
suit-record-component-index = 3
suit-record-properties = 4

SUIT_Report_Reasons /= suit-report-reason-ok
SUIT_Report_Reasons /= suit-report-reason-cbor-parse
SUIT_Report_Reasons /= suit-report-reason-cose-unsupported
SUIT_Report_Reasons /= suit-report-reason-alg-unsupported
SUIT_Report_Reasons /= suit-report-reason-unauthorised
SUIT_Report_Reasons /= suit-report-reason-command-unsupported
SUIT_Report_Reasons /= suit-report-reason-component-unsupported
SUIT_Report_Reasons /= suit-report-reason-component-unauthorised
SUIT_Report_Reasons /= suit-report-reason-parameter-unsupported
SUIT_Report_Reasons /= suit-report-reason-severing-unsupported
SUIT_Report_Reasons /= suit-report-reason-condition-failed
SUIT_Report_Reasons /= suit-report-reason-operation-failed
SUIT_Report_Reasons /= suit-report-reason-invoke-pending

suit-report-reason-ok = 0
suit-report-reason-cbor-parse = 1
suit-report-reason-cose-unsupported = 2
suit-report-reason-alg-unsupported = 3
suit-report-reason-unauthorised = 4
suit-report-reason-command-unsupported = 5
suit-report-reason-component-unsupported = 6
suit-report-reason-component-unauthorised = 7
suit-report-reason-parameter-unsupported = 8
suit-report-reason-severing-unsupported = 9
suit-report-reason-condition-failed = 10
suit-report-reason-operation-failed = 11
suit-report-reason-invoke-pending = 12

suit-component-capabilities        = 1
suit-command-capabilities          = 2
suit-parameters-capabilities       = 3
suit-crypt-algo-capabilities       = 4
suit-envelope-capabilities         = 5
suit-manifest-capabilities         = 6
suit-common-capabilities           = 7
suit-text-capabilities             = 8
suit-text-component-capabilities   = 9
suit-dependency-capabilities       = 10
  
]]></sourcecode></figure>

</section>


  </back>

<!-- ##markdown-source:
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
SSnGHew22cTwuRpD1ZT+H5wt4YB8vwAA

-->

</rfc>

