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


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

]>

<?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-06" 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>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>

    <date year="2023" month="July" day="07"/>

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

    <abstract>


<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. However, this does not
provide a feedback mechanism for developers in the event that an update
or boot fails.</t>

<t>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>


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

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

<t>This document provides a definition of a SUIT-specific logging container
that may be used in a variety of scenarios.</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>

<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="the-suit-record"><name>The SUIT Record</name>

<t>If the developer can be assumed to have 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>Then, to reconstruct the flow of a manifest, all a developer needs is
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 simply the actual value.</t>

<t>Since it is possible that a non-condition command (directive) may fail in an
exceptional circumstance, this 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 added as well. 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>Reconstructing what a device has done in this way is compact,
however it requires some reconstruction effort. This is an issue that
can be solved by tooling.</t>

<figure><artwork><![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
]
]]></artwork></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      <list style="symbols">
          <t>Dependency A0</t>
          <t>Dependency A1</t>
        </list></t>
      <t>Dependency B      <list style="symbols">
          <t>Dependency B0</t>
          <t>Dependency B1</t>
        </list></t>
      <t>Dependency C      <list style="symbols">
          <t>Dependency C0</t>
          <t>Dependency C1</t>
        </list></t>
    </list></t>
</list></t>

<t>A manifest-id of [1,0] would indicate that the current command was
contained within Dependency B0. Similarly, a manifest-id of [2,1]
would indicate Dependency C1</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="the-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 occured.</t>

<figure><artwork><![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, ; could condense to enum later
    suit-report-result-record => SUIT_Record,
  }
  $$SUIT_Report_Extensions
}
system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + SUIT_Parameters,
}
]]></artwork></figure>

<t>The suit-reference provides a reference URI and digest for a suit
manifest. The uri <bcp14>SHOULD</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>

<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. 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>

<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>The suit-report-result-code indicates the reason for the failure. Values
are expected to be CBOR parsing failures, Schema validation failures,
COSE validation failures or SUIT processing failures.</t>

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

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

<t>This document describes how a well-informed verifier can infer 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 an append-only log to collect both measurements and debug/failure information into 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="I-D.ietf-rats-eat"/>), 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 verification 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="capability-reporting"><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-component-capabilities => [+ int],
  ? suit-text-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-claim"><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 measres claim that contains the digest of a component, the vendor ID &amp; class ID of a component, etc.</t>

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

<t>IANA is requested to allocate a CBOR tag and a coap content-type each for the SUIT_Report, SUIT_Reference, and SUIT_Capability_Report CBOR data structures.</t>

<t>IANA is also requested to add a table to the SUIT page for SUIT_Capability_Report_Extensions.</t>

</section>
<section anchor="security-considerations"><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 that provides authenticity,
such as COSE_Sign, COSE_MAC, or COSE_Encrypt. The SUIT Report <bcp14>MAY</bcp14> be
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, or secure transport.</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.
In this case, the SUIT Report <bcp14>MUST</bcp14> be encrypted even if the EAT token
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</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='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>Arm Limited</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='27' month='February' year='2023'/>
      <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 IoT device), where to find the that 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-22'/>
   
</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'>




<reference anchor='I-D.ietf-rats-eat'>
   <front>
      <title>The Entity Attestation Token (EAT)</title>
      <author fullname='Laurence Lundblade' initials='L.' surname='Lundblade'>
         <organization>Security Theory LLC</organization>
      </author>
      <author fullname='Giridhar Mandyam' initials='G.' surname='Mandyam'>
         <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <author fullname='Jeremy O&#x27;Donoghue' initials='J.' surname='O&#x27;Donoghue'>
         <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <author fullname='Carl Wallace' initials='C.' surname='Wallace'>
         <organization>Red Hound Software, Inc.</organization>
      </author>
      <date day='30' month='June' year='2023'/>
      <abstract>
	 <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine how much
   it wishes to trust the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-rats-eat-21'/>
   
</reference>


<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='19' month='June' year='2023'/>
      <abstract>
	 <t>   This specification describes extensions to the SUIT Manifest format
   (as defined in [I-D.ietf-suit-manifest]) 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-03'/>
   
</reference>




    </references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA71c65LbRnb+j6foyFtrSUvSku1cdhLv7mhmHE+VZDmj8W5t
ySpVE2ySiECARgMz4qrkZ8mz5MnynUs3unlRvPkRVy5DoC+nz/U7pw80nU6L
vuprd2ZeuXLonLlx27brq2Zl2qX5cbuwvTOvetsPvrDzeefufs3IRVs2doNF
F51d9tPK9cupH6p+2vGc6ZN/KkoMX7Xd7sxUzbItimrbnZm+G3z/5ZMnv3/y
ZWE7Z3Wvqt8V9233btW1wxbPfry+Ld65HR4tzsx107uucf30kvYqCt/bZvHW
1m2D/XfOF9vqrDCmW5Zu4ftdrU+N6dsy+bNqFq7pwwMPKju39PH3bpP97Luq
jIPLdrPB3Pi2auqqGbdx7/tpXfl+ikXmbY1h0/bx7/AGXNrY7RYclLF26Ndt
B2KneMn/VQ1GP5uZF21nm/BQOPusc83CNvmrtlvZpvqb7au2OTPn3cY8rzZV
7xZhgNvYqj4zc5k829DkGYnnTyt6M8NRsL3J9v9uZp5V3bt1W/8tJ+E717w7
eJWT8G1nh2bdLl1nXkFoORVrzJ/Ndf6ffNXPlnH4bOGgE9CMboOl7hyJ8Hp6
ybROO9v7qbMQwNX5rb4I68jLsu2qzZm5aG+uX6QzWQlZy6aLFlTgfEXRHN2E
h25wlqXzPUZNp1Nj55C8LaFlt2soe7vs76GmQflBrOnxPGgk2cXtGuL15iHp
7CMTljPbrr2rFiRzc293PBPvdmZRLXF4KJMZZE3ospm3bc/6v6zbew9lNXNn
MLnsqrnD652xrINtY4RfM/Nde+/uXDcBPZWHojlvGiyi22L80rnF3JbvzMaV
a1DlN0zEArPqdus6D9nzYfAA1PRr24MWparASCLKLCFHPyNuYBe/dWW1rEoW
faTPY7O6Wq37e0f/99jGtHhhaz6cHUkgCrat9857WhDMtCMDwYTOlW0DeQwl
0eeKBbankR6jFsI5iIofYDXiTGBWKoYSy7fdTOS7qRaLGor3GcmwaxcDzy+K
c/Y5R+aZEkwhLhBB0KYexzCBO5FfUb4FfJoHQTMYhvt5AGfr3UTY3HW0Wgu2
mZVrHLRYqPVDuYb78b3b+LBTlGMirvuqXxvXtMNqbaLdgG2gawnfZjqiqLSD
J4k0C1oCx3PYsgMjSfsDtybgrB9q9uwQAdxXZ41bYkllu04tiBoEApzmebta
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
I2NW/A8JhrRtoEcAAA==

-->

</rfc>

