<?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-14" 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="July" day="22"/>

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

    <abstract>


<?line 57?>

<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 66?>

<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>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
includded.
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 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 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.</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>The SUIT_Report is a SUIT-specific logging container. It contains
the SUIT_Records needed to reconstruct the decisiosn 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. 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 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 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 (<xref target="I-D.ietf-scitt-architecture"/>, Section 3) 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 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 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> be either a <spanx style="verb">COSE_Encrypt0</spanx> or <spanx style="verb">COSE_Sign1</spanx> structure. The 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_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, 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>

</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 <xref target="RFC7252"/> 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>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>

</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 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="7" month="July" year="2025"/>
      <abstract>
	 <t>   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.

   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.

   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-22"/>
   
</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>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="7" 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-11"/>
   
</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">
         </author>
      <date day="20" month="July" 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-15"/>
   
</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="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 702?>

<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:
H4sIAAAAAAAAA+1963LcWHLmfzzFWbVjJGqqSiJ1a3GtaVMUNa2w1NJSbE9M
SAo1WEBVwUIB1QCKVDXFiX2IfQA/ix/FT+L8MvNccClK6tm2N2Jb4XGzgHPN
kyfvmRiPx1GTNXm6b16n03WVmuN0VVZNVsxNOTM/rpK4Sc3rJm7WdRSfnlbp
2Ze0TMppES9p0KSKZ804S5vZuF5nzbjiPuPdu9GUms/LarNvsmJWRlG2qvZN
U63rZu/27Ye396K4SmOdK2s20XlZfZhX5XpFz358dhJ9SDf0KNk3z4omrYq0
GT/BXFFUN3GRvI/zsqD5N2kdrbL9yJhqNk2Tutnk+tSYppwGf2ZFkhaNfVDT
Kqt0Vrvfm2XrZ1NlU9d4Wi6X1Ne9zYo8K/w06cdmnGd1M6ZBTsucmo3Lm3+k
NwSlZbxaEQSlbbxuFmVFix3TS/6XFdT68cS8KKu4sA8Fso+rtEjiov2qrOZx
kf0SN1lZ7JuDammeZ8usSRPbIF3GWb5vTqXzZInOExzPP83xZkJbsdPz3N9P
zOOs+rAo818iP/f3afGh/Zwm3jdPq3hdLMpZWpnXdEJ4blFm4JUuZUFjTU51
rH/CUmgRRRNPG25FkE5TgvTxIqUFNVVc16l5cI/fTcuEFnP9/t29h/euyxPC
lH3zJK6WhAVJo63WRQM8+3NaLeNiQ6hGCEd/NtlZCsx4Nn7iFjCu4qYeT8sq
W+6bw/L42Qtt4FGYcXSclLR8glDrNU3fjONquiCQTxu6I3h9/PTw4Z07d/ej
ojupH5PWlc3SurHtb9/b26eF16n+frC7u2+ODk76HRtG7mcHPxxMpqdlNW7i
ee2flFU6XsUVHRrdEXoeEZoCRNTg9dHzp/vmGo3eLLL6Gj2JxuMxHRiATMCP
ThZ0nctZc04X0V5vgptp6Lm9c7j5JwtC4NrcwK3cMXYnZlWVZ1kCrDbn8YZ7
AvomyWaEBbQOs5Yx6baa07Js+IbP8vK8putoTlNDnadVdprS642J+ZaVhZGj
m9DystrUq3SazbIpI7zrUFPrPJsvmvMU/9/M0jQ5jacfzDKdLmh99ZI2ETdR
nPNsMXU8S/NyRciZFWZVEorVNQak3cV+R7SqKiXcJACtpw3gECU0PVrW1CqR
rRDs+AGNhqXa1YdwmdLwZTWJGODLLEnyNIq+AVCrMllz/+hz+wO0x/Z1lJfz
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
uvEiCCQUVaTeQc6mliJjKhsJuUtrl/KitXNdhRzzkyYC2AIV/Emdn+RbVTb4
UeIQ9TJI2J1c8Eh37BIoVytB5jZxDYq5BW5nn5Db2JxWX6VlpfEh1oOh32Sp
aO8rrJXmYFnVRYx6clql6CQ2f++z6Q1da7B3w4L2YBFchKFwiXgfisLLtItT
h96MToJxQqma1lB2NZ9IDs+WK/ahERMWgNeLeO/e/fGirvNlPcbfH875P9Om
+mlHP34Tu5lK5AWIRR0pb7Zctnwu1bL1AAa2tPF//O//M7OxtJyX25qdYMn/
mSaLcby79y3mltvV+lCIsOtsRptlRwDPbldmo8hh9bNOLSmwoGWjSYCAazvI
aLeZPutCPhLBmkac21xBvbgx6s1o/YMpEqLolOZWreGzZTJSa8Q2nKHqKCk+
mCfwDZ0s4lxLDEpegnwLUT/GiD8x+lMQBo4wuvgGRGI8TZL8kkmMqy9h9SVO
ymvvIohqTcMiRrZcd4ixbAqwLFBymRMJIS8HYookBZ2jcfhqCuE/TWUVo6Ee
PCb7xdgKDd2fn0vWoSh/mTrr/Fs9wjDYyY8rcchVUJr94oJrOvms9t3JXb4n
SieZMfhFSIDo1iivztI4joo7RY/a/4zUQb3+9rrhz4qdV/I9XXhe8eFU8+2D
h3um0+lRO9TxpCzz9yeQ11xUJX9j4nONujGZn4nU5KA6fKrkfYNhoq+Og+VY
tyviOrf/+78XIfvftAaOIPxvnPs32f7v8ba/x9sOxdv+v1PV/I3myuv4V5cz
/72a+fHWxNGwrPSb3kJbZZZ/VVVpwtD/Pz57dXFTYe3NwJef/fbVb1FSvreM
kc8S/g2S0n/PSf89J/3vyEkfKLz+yOwNFmB+ZO4MVd99ZO4OVbdlgv3I3Buu
fKu06P4VdXEfmQefKa/4yHwbdfjfI/PwobvV7Ytrbm//zB1eXknhHpndqz74
FIBskJgFoOP3AYbYBne3fToIMIwGGBRE0qFKnx++orGv4Ps1nToVer+ia6f2
7lf0DIvKftVaexV1v653v3rur+z/q5Y/WN/2S/oPFbD9qoW3C9B+Df51Ks12
S18rkoZXbhgjwzt3FfoN0KshXBsgXz3EGqBl27BogLRtR5kBSncFfvQo31XI
EBLBrScPsjg8f/uYAfLBU+keKhru6sluk1uUfdlD/Ix4Ys/wM0KJPcPPiCL2
GK8SP4w/wquEDuMP7ypRw/hTu0rAMP68rhIrjD+xq4QJIwdmjKQF/iep1R+P
sosAAA==

-->

</rfc>

