<?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.29 (Ruby 3.2.2) -->


<!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-12" category="info" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Secure Reporting of Update Status">Secure Reporting of 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="2025" month="June" day="19"/>

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

    <abstract>


<?line 64?>

<t>The Software Update for the Internet of Things (SUIT) manifest provides
a way for many different update and boot
workflows to be described by a common format.
This specification describes a lightweight feedback mechanism that
allows a developer in possession of a manifest to reconstruct the
decisions made and actions performed by a manifest processor.</t>



    </abstract>



  </front>

  <middle>


<?line 73?>

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

<t>This specification describes a SUIT-specific
logging container that creates a lightweight feedback mechanism for
developers in the event that an update or boot fails in the manifest
processor.</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>Terms used in this specification include:</t>

<t><list style="symbols">
  <t>Boot: initialization of an executable image. Although this
specification refers to boot, any boot-specific operations described
are equally applicable to starting an executable in an OS context.</t>
</list></t>

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

<t>If the developer has a copy of the
manifest, then they need little information to reconstruct what the
manifest processor has done. They simply 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 section</t>
  <t>the offset into the current section</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 included as well. 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, see <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.</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 is used to identify which manifest contains the
command that caused the record to be generated. The manifest id is a
list of integers that form a walk of the manifest tree, starting at the
root. An empty list indicates that the command was contained in the
root manifest. If the list is not empty, the command was contained in
one of the root manifest's dependencies, or nested even further below
that.</t>

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

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

<t>A manifest-id of [1,0] would indicate that the current command was
contained within Dependency BA. Similarly, a manifest-id of [2,1]
would indicate Dependency CB</t>

<t>suit-record-manifest-section indicates which section of the manifest was
active. This is used in addition to an offset so that the developer can
index into severable sections in a predictable way. The value of this
element is the value of the key that identified the section in the
manifest.</t>

<t>suit-record-section-offset is the number of bytes into the current
section 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 in a SUIT_Parameters block as defined
in <xref target="I-D.ietf-suit-manifest"/>.</t>

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

<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. 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.</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,
}
]]></sourcecode></figure>

<t>The suit-reference provides a reference URI and digest for a suit
manifest. The URI <bcp14>MUST</bcp14> be the canonical URI that is provided in the
manifest. The digest is the digest of the manifest.</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>The following CDDL describes a SUIT_Reference.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Reference = {
    suit-report-manifest-uri  : tstr,
    suit-report-manifest-digest : SUIT_Digest,
}
]]></sourcecode></figure>

<t>suit-report-manifest-digest provides a SUIT_Digest (as defined in
<xref target="I-D.ietf-suit-manifest"/>) that is the characteristic digest of the
Root manifest.</t>

<t>suit-report-manifest-uri provides the reference URI that was provided in
the root manifest.</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>

<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 append-only log allows report generators to use simple
memory management. 
The concept of append-only logs for software supply chains
is explained in <xref target="I-D.ietf-scitt-architecture"/>. 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 unusupported COSE 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-severing-unsupported: The manifest uses severable fields
but the Manifest Processor doesn't 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>
</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>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 well-informed Verifier's ability to appraise the trustworthiness of a remote device. Remote attestation is done by using the SUIT_Manifest_Envelope along with the SUIT_Report to reconstruct the state of the device at boot time. By embedding data used for remote attestation in the SUIT_Report, a remote device can use a verifiable data structure, such as an append-only log,  to notarize both measurements and debug/failure information via the same document. This document can then be conveyed to a Verifier as a part of the Attestation Evidence. A Remote Attestation format to convey Attestation Evidence, such as an Entity Attestation Token (EAT, see <xref target="RFC9711"/>), that contains a SUIT_Report <bcp14>MUST</bcp14> also include an integrity measurement of the Manifest Processor &amp; Report Generator.</t>

<t>When a Concise Reference Integrity Manifest (CoRIM, see <xref target="I-D.birkholz-rats-corim"/>) is delivered in a SUIT_Manifest_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_Manifest_Envelope to the Verifier without payload or text, but with CoRIM</t>
      <t>sends the SUIT_Manifest_Envelope to the recipient without CoRIM, 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 CoRIM</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 a signed CoRIM that is provided by the firmware author, which simplifies the delivery chain of verification information to the Verifier.</t>

<t>This information is not intended as Attestation Evidence and while an Attestation Report <bcp14>MAY</bcp14> provide this information for conveying error codes and/or failure reports, it <bcp14>SHOULD</bcp14> be translated into general-purpose claims for use by the Relying Party.</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 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 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.
The Verifier <bcp14>MAY</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 &amp; class ID of a component, etc.</t>

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

<t>The SUIT_Report <bcp14>MUST</bcp14> be carried in a container or transport that ensures authenticity. The SUIT_Report <bcp14>MUST</bcp14> be transported using one of the following options:</t>

<t><list style="symbols">
  <t>As an element of an existing document that ensures authenticity, such as in a measurements claim in an EAT (see <xref target="RFC9711"/>).</t>
  <t>As the payload of a message delivered over secure transport, such as a DTLS <xref target="RFC9147"/>, CoAP <xref target="RFC7252"/> or Lightweight Machine to Machine <xref target="LwM2M"/> message.</t>
  <t>Contained within a secure container that conforms to the current recommendations of <xref target="I-D.ietf-suit-mti"/>.</t>
</list></t>

<t>If a secure container is used, that container <bcp14>MUST</bcp14> be a COSE_Encrypt0 or COSE_Sign1 and SUIT_Report <bcp14>MUST</bcp14> be the sole payload as shown in the CDDL definition fragment below.</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_Profile 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 define only AES-CTR encryption due to its suitability for firmware distribution. Because AES-CTR is not authenticated, SUIT_Report_Protected defines authenticated containers with an encrypted payload.</t>

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

<t>IANA is requested to name the overall SUIT registry group "Software Update for the Internet of Things (SUIT)".</t>

<t>IANA is requested to allocate a CBOR tag for each of:</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-type and a media-type for SUIT_Report.</t>

<t>IANA is also requested to add the following registries to the SUIT registry group:</t>

<t><list style="symbols">
  <t>SUIT_Report Elements</t>
  <t>SUIT_Record Elements</t>
  <t>SUIT_Report Reasons</t>
  <t>SUIT Capability Report Elements</t>
</list></t>

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

<t><list style="symbols">
  <t>-256 to 255: Standards Action</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>

<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-registration"><name>Media Type Registration</name>

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

<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>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>n/a</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-content-format-registration"><name>CoAP Content-Format Registration</name>

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

<texttable>
      <ttcol align='left'>Media type</ttcol>
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>application/suit-report+cose</c>
      <c>cbor+cose</c>
      <c>TBA</c>
      <c>&SELF;</c>
</texttable>

</section>
<section anchor="cbor-tag-registration"><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>map</c>
      <c>SUIT_Reference</c>
      <c>TBA</c>
      <c>map</c>
      <c>SUIT_Capability_Report</c>
</texttable>

</section>
<section anchor="suitreport-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'>Reference</ttcol>
      <c>2</c>
      <c>Nonce</c>
      <c><xref target="suit-report"/></c>
      <c>3</c>
      <c>Records</c>
      <c><xref target="suit-report"/></c>
      <c>4</c>
      <c>Result</c>
      <c><xref target="suit-report"/></c>
      <c>5</c>
      <c>Result Code</c>
      <c><xref target="suit-report"/></c>
      <c>6</c>
      <c>Result Record</c>
      <c><xref target="suit-report"/></c>
      <c>7</c>
      <c>Result Reason</c>
      <c><xref target="suit-report"/></c>
      <c>8</c>
      <c>Capability Report</c>
      <c><xref target="suit-report"/></c>
      <c>99</c>
      <c>Reference</c>
      <c><xref target="suit-report"/></c>
</texttable>

</section>
<section anchor="suitrecord-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'>Reference</ttcol>
      <c>0</c>
      <c>Manifest ID</c>
      <c><xref target="suit-record"/></c>
      <c>1</c>
      <c>Manifest Section</c>
      <c><xref target="suit-record"/></c>
      <c>2</c>
      <c>Section Offset</c>
      <c><xref target="suit-record"/></c>
      <c>3</c>
      <c>Component Index</c>
      <c><xref target="suit-record"/></c>
      <c>4</c>
      <c>Dependency Index</c>
      <c><xref target="suit-record"/></c>
      <c>5</c>
      <c>Record Properties</c>
      <c><xref target="suit-record"/></c>
</texttable>

</section>
<section anchor="suitreport-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'>Reference</ttcol>
      <c>0</c>
      <c>Result OK</c>
      <c><xref target="suit-report-result"/></c>
      <c>1</c>
      <c>CBOR Parse Failure</c>
      <c><xref target="suit-report-result"/></c>
      <c>2</c>
      <c>Unsupported COSE Structure or Header</c>
      <c><xref target="suit-report-result"/></c>
      <c>3</c>
      <c>Unsupported COSE Algorithm</c>
      <c><xref target="suit-report-result"/></c>
      <c>4</c>
      <c>Signature / MAC verification failed</c>
      <c><xref target="suit-report-result"/></c>
      <c>5</c>
      <c>Unsupported SUIT Command</c>
      <c><xref target="suit-report-result"/></c>
      <c>6</c>
      <c>Unsupported SUIT Component</c>
      <c><xref target="suit-report-result"/></c>
      <c>7</c>
      <c>Unauthorized SUIT Component</c>
      <c><xref target="suit-report-result"/></c>
      <c>8</c>
      <c>Unsupported SUIT Parameter</c>
      <c><xref target="suit-report-result"/></c>
      <c>9</c>
      <c>Severing Unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>10</c>
      <c>Condition Failed</c>
      <c><xref target="suit-report-result"/></c>
      <c>11</c>
      <c>Operation Failed</c>
      <c><xref target="suit-report-result"/></c>
</texttable>

</section>
<section anchor="suit-capability-report-elements"><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'>Reference</ttcol>
      <c>1</c>
      <c>Components</c>
      <c><xref target="capabilities"/></c>
      <c>2</c>
      <c>Commands</c>
      <c><xref target="capabilities"/></c>
      <c>3</c>
      <c>Parameters</c>
      <c><xref target="capabilities"/></c>
      <c>4</c>
      <c>Cryptographic Algorithms</c>
      <c><xref target="capabilities"/></c>
      <c>5</c>
      <c>Envelope Elements</c>
      <c><xref target="capabilities"/></c>
      <c>6</c>
      <c>Manifest Elements</c>
      <c><xref target="capabilities"/></c>
      <c>7</c>
      <c>Common Elements</c>
      <c><xref target="capabilities"/></c>
      <c>8</c>
      <c>Text Elements</c>
      <c><xref target="capabilities"/></c>
      <c>9</c>
      <c>Component Text Elements</c>
      <c><xref target="capabilities"/></c>
</texttable>

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

<t>There are two aspects to the security considerations for SUIT_Reports:
authenticity and confidentiality. SUIT_Reports must have guaranteed
authenticity for them to be useful. Several options are available to
ensure the authenticity of a SUIT_Report. The report <bcp14>MAY</bcp14> be bundled
as the payload of a cryptographic container as described in <xref target="container"/>.
communicated over a secure transport. It may also be communicated as
part of an existing authenticated protocol, such as within an EAT
token. Ideally, the SUIT_Report <bcp14>SHOULD</bcp14> be communicated as part of an
attestation flow, such as within an EAT token, since this proves the
authenticity of the environment (hardware, software, or both) in which
the SUIT_Report was generated.</t>

<t>The SUIT_Report <bcp14>MAY</bcp14> require confidentiality as well. A SUIT_Report
could potentially reveal confidential information about the kinds of
device that a particular user has. It could also reveal confidential
information about intellectual property contained in a device. Where
these concerns are relevant, the SUIT_Report <bcp14>MUST</bcp14> be encrypted, for
example using a COSE_Encrypt as described in <xref target="container"/>, or by using
secure transport. When reporting failures, particularly in the
cryptographic primitives, reporting can
increase an attacker's insight into exploitable weaknesses and vulnerabilities. Therefore, SUIT_Reports
<bcp14>SHOULD</bcp14> be encrypted wherever possible.</t>

<t>There are also operational considerations that intersect with these
security considerations. In situations where the SUIT_Report is
encrypted as an element of a message within another protocol, care must
be taken to ensure that this does not leak information and that the
principle of least privilege is respected. For example, in an EAT-based
attestation workflow, the Verifier often will not need the full SUIT_Report.
Similarly, the Relying Party may also not need the SUIT_Report.
To enable the principle of least privilege in this and similar
scenarios, the SUIT_Report should be independently encrypted even if
the EAT token or encrypted transport that contains it is also encrypted.</t>

<t>In contrast, however, there are scenarios where the EAT Verifier
consumes the SUIT_Report and translates it into one or more other
EAT claims. For example, a SUIT_Report that shows a particular digest
was matched using an suit-condition-image can be translated into a
EAT measres (Measurement Results) claim. In this scenario, the Verifier
must have access to the full SUIT_Report.</t>

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

<t>The authors would like to thank Dave Thaler for his feedback.</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="28" month="May" year="2025"/>
      <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-34"/>
   
</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="I-D.ietf-suit-mti">
   <front>
      <title>Cryptographic Algorithm Recommendations for Software Updates of Internet of Things 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="9" month="June" year="2025"/>
      <abstract>
	 <t>   This document specifies cryptographic algorithm profiles to be used
   with the Software Updates for Internet of Things (suit) manifest.
   These profiles define mandatory-to-implement algorithms to ensure
   interoperability.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-mti-17"/>
   
</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.birkholz-rats-corim">
   <front>
      <title>Concise Reference Integrity Manifest</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>arm</organization>
      </author>
      <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
         <organization>arm</organization>
      </author>
      <author fullname="Ned Smith" initials="N." surname="Smith">
         <organization>Intel</organization>
      </author>
      <author fullname="Wei Pan" initials="W." surname="Pan">
         <organization>Huawei Technologies</organization>
      </author>
      <date day="11" month="July" year="2022"/>
      <abstract>
	 <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether to engage in secure interactions with it.  Evidence about
   trustworthiness can be rather complex and it is deemed unrealistic
   that every Relying Party is capable of the appraisal of Evidence.
   Therefore that burden is typically offloaded to a Verifier.  In order
   to conduct Evidence appraisal, a Verifier requires not only fresh
   Evidence from an Attester, but also trusted Endorsements and
   Reference Values from Endorsers and Reference Value Providers, such
   as manufacturers, distributors, or device owners.  This document
   specifies Concise Reference Integrity Manifests (CoRIM) that
   represent Endorsements and Reference Values in CBOR format.
   Composite devices or systems are represented by a collection of
   Concise Module Identifiers (CoMID) and Concise Software Identifiers
   (CoSWID) bundled in a CoRIM document.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-corim-03"/>
   
</reference>

<reference anchor="I-D.ietf-suit-trust-domains">
   <front>
      <title>SUIT Manifest Extensions for Multiple Trust Domains</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="3" month="March" year="2025"/>
      <abstract>
	 <t>   This specification describes extensions to the SUIT Manifest format
   for use in deployments with multiple trust domains.  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.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-trust-domains-10"/>
   
</reference>

<reference anchor="I-D.ietf-scitt-architecture">
   <front>
      <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Cedric Fournet" initials="C." surname="Fournet">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
         <organization>ARM</organization>
      </author>
      <author fullname="Steve Lasker" initials="S." surname="Lasker">
         <organization>DataTrails</organization>
      </author>
      <date day="8" month="May" year="2025"/>
      <abstract>
	 <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document proposes a
   scalable architecture for single-issuer signed statement transparency
   applicable to any supply chain.  It ensures flexibility,
   interoperability between different transparency services, and
   compliance with various auditing procedures and regulatory
   requirements.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-12"/>
   
</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="LwM2M" target="https://www.openmobilealliance.org/specifications/lwm2m">
  <front>
    <title>OMA Lightweight M2M</title>
    <author >
      <organization>Open Mobile Alliance</organization>
    </author>
    <date year="2025" month="April" day="20"/>
  </front>
</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 695?>

<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 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="comma" target="RFC9052"/>. It must also have the CDDL from <xref target="I-D.ietf-suit-mti"/> appended to it.</t>

<figure><sourcecode type="CDDL"><![CDATA[
=============== 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-uri : tstr,
    suit-report-manifest-digest : SUIT_Digest
]

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-dependency-index = 4
suit-record-properties = 5

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-severing-unsupported
SUIT_Report_Reasons /= suit-report-reason-condition-failed
SUIT_Report_Reasons /= suit-report-reason-operation-failed

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-severing-unsupported = 9
suit-report-reason-condition-failed = 10
suit-report-reason-operation-failed = 11

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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
FYxjRooAAA==

-->

</rfc>

