<?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 toc_levels="4"?>

<rfc ipr="trust200902" docName="draft-ietf-suit-trust-domains-06" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SUIT Trust Domains">SUIT Manifest Extensions for Multiple Trust Domains</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="K." surname="Takayama" fullname="Ken Takayama">
      <organization>SECOM CO., LTD.</organization>
      <address>
        <email>ken.takayama.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2024" month="March" day="04"/>

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

    <abstract>


<t>This specification describes extensions to the SUIT Manifest format (as
defined in <xref target="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>

  <middle>


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

<t>Devices that go beyond single-signer update require more complex rules for deploying software updates. For example, devices may require:</t>

<t><list style="symbols">
  <t>software Components from multiple software signing authorities.</t>
  <t>a mechanism to remove an unneeded Component</t>
  <t>single-object Dependencies</t>
  <t>a partly encrypted Manifest so that distribution does not reveal private information</t>
  <t>installation performed by a different execution mode than payload fetch</t>
</list></t>

<t>Dependency Manifests enable several additional use cases. In particular, they enable two or more entities who are trusted for different privileges to coordinate. This can be used in many scenarios. For example:</t>

<t><list style="symbols">
  <t>A device may contain a processor in its radio in addition to the primary processor. These two processors may have separate Software with separate signing authorities. Dependencies allow the Software for the primary processor to reference a Manifest signed by a different authority.</t>
  <t>A network operator may wish to provide local caching of Update Payloads. The network operator overrides the URI of a Payload by providing a dependent Manifest that references the original Manifest, but replaces its URI.</t>
  <t>A device operator provides a device with some additional configuration. The device operator wants to test their configuration with each new Software version before releasing it. The configuration is delivered as a binary in the same way as a Software Image. The device operator references the Software Manifest from the Software author in their own Manifest which also defines the configuration.</t>
  <t>An Author wants to entrust a Distributor to provide devices with firmware decryption keys, but not permit the Distributor to sign code. Dependencies allow the Distributor to deliver a device's decryption information without also granting code signing authority.</t>
  <t>A Trusted Application Manager (TAM) wants to distribute personalisation information to a Trusted Execution Environment in addition to a Trusted Application (TA), but does not have code signing authority. Dependencies enable the TAM to construct an update containing the personalisation information and a dependency on the TA, but leaves the TA signed by the TA's Author.</t>
</list></t>

<t>By using Dependencies, Components such as Software, configuration, and other Resource data authenticated by different Trust Anchors can be delivered to devices.</t>

<t>These mechanisms are not part of the core Manifest specification, but they are needed for more advanced use cases, such as the architecture described in <xref target="I-D.ietf-teep-architecture"/>.</t>

<t>This specification extends the SUIT Manifest specification (<xref target="I-D.ietf-suit-manifest"/>).</t>

</section>
<section anchor="conventions-and-terminology"><name>Conventions and Terminology</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>Additionally, the following terminology is used throughout this document:</t>

<t><list style="symbols">
  <t>SUIT: Software Update for the Internet of Things, also the IETF working group for this standard.</t>
  <t>Payload: A piece of information to be delivered. Typically Firmware/Software, configuration, or Resource data such as text or images.</t>
  <t>Resource: A piece of information that is used to construct a Payload.</t>
  <t>Manifest: A Manifest is a bundle of metadata about one or more Components for a device, where to
find them, and the devices to which they apply.</t>
  <t>Envelope: A container with the Manifest, an authentication wrapper with cryptographic information protecting the Manifest, authorization information, and severable elements (see Section 5.1 of <xref target="I-D.ietf-suit-manifest"/>).</t>
  <t>Update: One or more Manifests that describe one or more Payloads.</t>
  <t>Update Authority: The owner of a cryptographic key used to sign Updates, trusted by Recipients.</t>
  <t>Recipient: The system that receives and processes a Manifest.</t>
  <t>Manifest Processor: A component of the Recipient that consumes Manifests and executes the Commands in the Manifest.</t>
  <t>Component: An updatable logical block of the Firmware, Software, configuration, or data of the Recipient.</t>
  <t>Component Set: A group of interdependent Components that must be updated simultaneously.</t>
  <t>Command: A Condition or a Directive.</t>
  <t>Condition: A test for a property of the Recipient or its Components.</t>
  <t>Directive: An action for the Recipient to perform.</t>
  <t>Trusted Invocation: A process by which a system ensures that only trusted code is executed, for example secure boot or launching a Trusted Application.</t>
  <t>A/B Images: Dividing a Recipient's storage into two or more bootable Images, at different offsets, such that the active Image can write to the inactive Image(s).</t>
  <t>Record: The result of a Command and any metadata about it.</t>
  <t>Report: A list of Records.</t>
  <t>Procedure: The process of invoking one or more sequences of Commands.</t>
  <t>Update Procedure: A superset of Staging Procedure and Installation Procedure.</t>
  <t>Staging Procedure: A procedure that fetches dependencies and images referenced by an Update and stores them to a Staging Area.</t>
  <t>Installation Procedure: A procedure that installs dependencies and images stored in a Staging Area; copying (and optionally, transforming them) into an active Image storage location.</t>
  <t>Invocation Procedure: A Procedure in which a Recipient verifies Dependencies and Images, loading Images, and invokes one or more Image.</t>
  <t>Staging Area: A Component or group of Components that are used for transient storage of Images between fetch and installation. Images in this area are opaque, except for use by the Installation Procedure.</t>
  <t>Software: Instructions and data that allow a Recipient to perform a useful function.</t>
  <t>Firmware: Software that is typically changed infrequently, stored in nonvolatile memory, and small enough to apply to <xref target="RFC7228"/> Class 0-2 devices.</t>
  <t>Image: Information that a Recipient uses to perform its function, typically Firmware/Software, configuration, or Resource data such as text or images. Also, a Payload, once installed is an Image.</t>
  <t>Slot: One of several possible storage locations for a given Component, typically used in A/B Image systems</t>
  <t>Abort: An event in which the Manifest Processor immediately halts execution of the current Procedure. It creates a Record of an error Condition.</t>
  <t>Trust Anchor: A Trust Anchor, as defined in <xref target="RFC6024"/>, represents an
    authoritative entity via a public key and associated data.  The
    public key is used to verify digital signatures, and the
    associated data is used to constrain the types of information for
    which the Trust Anchor is authoritative.</t>
</list></t>

</section>
<section anchor="changes-to-suit-workflow-model"><name>Changes to SUIT Workflow Model</name>

<t>The use of the features presented for use with multiple trust domains requires some augmentation of the workflow presented in the SUIT Manifest specification (<xref target="I-D.ietf-suit-manifest"/>):</t>

<t>One additional assumption is added for the Update Procedure:</t>

<t><list style="symbols">
  <t>All Dependency Manifests must be present before any Payload is fetched.</t>
</list></t>

<t>One additional assumption is added to the Invocation Procedure:</t>

<t><list style="symbols">
  <t>All Dependencies must be validated prior to loading.</t>
</list></t>

<t>Steps 3 and 5 are added to the expected installation workflow of a Recipient:</t>

<t><list style="numbers">
  <t>Verify the signature of the Manifest.</t>
  <t>Verify the applicability of the Manifest.</t>
  <t>Resolve Dependencies.</t>
  <t>Fetch Payload(s).</t>
  <t>Verify Candidate.</t>
  <t>Install Payload(s).</t>
</list></t>

<t>In addition, when multiple Manifests are used for an Update, each Manifest's steps occur in a lockstep fashion; all Manifests have Dependency resolution performed before any Manifest performs a Payload fetch, etc.</t>

</section>
<section anchor="metadata-structure-overview"><name>Changes to Manifest Metadata Structure</name>

<t>To accommodate the additional metadata needed to enable these features, the Envelope and Manifest have several new elements added.</t>

<t>The Envelope gains one more elements: Integrated Dependencies. The Common metadata section in the Manifest also gains a list of Dependencies.</t>

<t>The new metadata structure is shown below.</t>

<figure><artwork><![CDATA[
+-------------------------+
| Envelope                |
+-------------------------+
| Authentication Block    |
| Manifest           --------------> +------------------------------+
| Severable Elements      |          | Manifest                     |
| Human-Readable Text     |          +------------------------------+
| CoSWID                  |          | Structure Version            |
| Integrated Dependencies |          | Sequence Number              |
| Integrated Payloads     |          | Reference to Full Manifest   |
+-------------------------+    +------ Common Structure             |
                               | +---- Command Sequences            |
+-------------------------+    | |   | Digests of Envelope Elements |
| Common Structure        | <--+ |   +------------------------------+
+-------------------------+      |
| Dependency Indices      |      +-> +-----------------------+
| Component IDs           |          | Command Sequence      |
| Common Command Sequence ---------> +-----------------------+
+-------------------------+          | List of ( pairs of (  |
                                     |   * command code      |
                                     |   * argument /        |
                                     |      reporting policy |
                                     | ))                    |
                                     +-----------------------+
]]></artwork></figure>

</section>
<section anchor="dependencies"><name>Dependencies</name>

<t>A Dependency is another SUIT_Envelope that describes additional Components.</t>

<t>As described in <xref target="Introduction"/>, Dependencies enable several common use cases.</t>

<section anchor="required-checks"><name>  Changes to Required Checks</name>

<t>This section augments the definitions in Required Checks (Section 6.2) of <xref target="I-D.ietf-suit-manifest"/>.</t>

<t>More checks are required when handling Dependencies. By default, any signature of a Dependency MUST be verified. However, there are some exceptions to this rule: where a device supports only one level of access (no ACLs defining which authorities have access to different Components/Commands/Parameters), it MAY choose to skip signature verification of Dependencies, since they are verified by digest. Where a device differentiates between trust levels, such as with an ACL, it MAY choose to defer the verification of signatures of Dependencies until the list of affected Components is known so that it can skip redundant signature verifications. For example, if a dependent's signer has access rights to all Components specified in a Dependency, then that Dependency does not require a signature verification. Similarly, if the signer of the dependent has full rights to the device, according to the ACL, then no signature verification is necessary on the Dependency.</t>

<t>Components that should be treated as Dependency Manifests are identified in the suit-common metadata. See <xref target="structure-change"/> for details.</t>

<t>If the Manifest contains more than one Component and/or Dependency, each Command sequence MUST begin with a Set Component Index Command.</t>

<t>If a Dependency is specified, then the Manifest processor MUST perform the following checks:</t>

<t><list style="numbers">
  <t>The dependent MUST populate all Command sequences for the current Procedure (Update or Invoke).</t>
  <t>At the end of each section in the dependent: The corresponding section in each Dependency has been executed.</t>
</list></t>

<t>If the interpreter does not support Dependencies and a Manifest specifies a Dependency, then the interpreter MUST Abort.</t>

<t>If a Recipient supports groups of interdependent Components (a Component Set), then it SHOULD verify that all Components in the Component Set are specified by a single Manifest and all its Dependencies that together:</t>

<t><list style="numbers">
  <t>have sufficient permissions imparted by their signatures</t>
  <t>specify a digest and a Payload for every Component in the Component Set.</t>
</list></t>

<t>The single dependent Manifest is sometimes called a Root Manifest.</t>

</section>
<section anchor="structure-change"><name>Changes to Manifest Structure</name>

<t>This section augments the Manifest Structure (Section 8.4) in <xref target="I-D.ietf-suit-manifest"/>.</t>

<section anchor="manifest-id"><name>Manifest Component ID</name>

<t>In complex systems, it may not always be clear where the Root Manifest should be stored; this is particularly complex when a system has multiple, independent Root Manifests. The Manifest Component ID resolves this contention. The manifest-component-id is intended to be used by the Root Manifest. When a Dependency Manifest also declares a Component ID, the Dependency Manifest's Component ID is overridden by the Component ID declared by the dependent.</t>

<t>The following CDDL describes the Manifest Component ID:</t>

<figure><sourcecode type="CDDL"><![CDATA[
$$SUIT_Manifest_Extensions //= 
    (suit-manifest-component-id => SUIT_Component_Identifier)
]]></sourcecode></figure>

</section>
<section anchor="SUIT_Dependencies"><name>SUIT_Dependencies Manifest Element</name>

<t>The suit-common section, as described in <xref target="I-D.ietf-suit-manifest"/>, Section 8.4.5 is extended with a map of Component indices that indicate a Dependency Manifest. The keys of the map are the Component indices and the values of the map are any extra metadata needed to describe those Dependency Manifests.</t>

<t>Because some operations treat Dependency Manifests differently from other Components, it is necessary to identify them. SUIT_Dependencies identifies which Components from suit-components (see Section 8.4.5 of <xref target="I-D.ietf-suit-manifest"/>) are to be treated as Dependency Manifest Envelopes. SUIT_Dependencies is a map of Components, referenced by Component Index. Optionally, a Component prefix or other metadata may be delivered with the Component index. The CDDL for suit-dependencies is shown below:</t>

<figure><sourcecode type="CDDL"><![CDATA[
$$SUIT_Common-extensions //= (
    suit-dependencies => SUIT_Dependencies
)
SUIT_Dependencies = {
    + uint => SUIT_Dependency_Metadata
}
SUIT_Dependency_Metadata = {
    ? suit-dependency-prefix => SUIT_Component_Identifier
    * $$SUIT_Dependency_Extensions
}
]]></sourcecode></figure>

<t>If no extended metadata is needed for an extension, SUIT_Dependency_Metadata is an empty map (this is the same encoding size as a null). SUIT_Dependencies MUST be sorted according to CBOR canonical encoding.</t>

<t>The Components specified by SUIT_Dependency will contain a Manifest Envelope that describes a Dependency of the current Manifest. The Manifest is identified, but the Recipient should expect an Envelope when it acquires the Dependency. This is because the Manifest is the one invariant element of the Envelope, where other elements may change by countersigning, adding authentication blocks, or severing elements.</t>

<t>When executing suit-condition-image-match over a Component that is designated in SUIT_Dependency, the digest MUST be computed over just the bstr-wrapped SUIT_Manifest contained in the Manifest Envelope designated by the Component Index. This enables a Dependency reference to uniquely identify a particular Manifest structure. This is identical to the digest that is present as the first element of the suit-authentication-block in the Dependency's Envelope. The digest is calculated over the Manifest structure to ensure that removing a signature from a Manifest does not break Dependencies due to missing signature elements. This is also necessary to support the trusted intermediary use case, where an intermediary re-signs the Manifest, removing the original signature, potentially with a different algorithm, or trading COSE_Sign for COSE_Mac.</t>

<t>The suit-dependency-prefix element contains a SUIT_Component_Identifier (see Section 8.4.5.1 of <xref target="I-D.ietf-suit-manifest"/>). This specifies the scope at which the Dependency operates. This allows the Dependency to be forwarded on to a Component that is capable of parsing its own Manifests. It also allows one Manifest to be deployed to multiple dependent Recipients without those Recipients needing consistent Component hierarchy. This element is OPTIONAL for Recipients to implement.</t>

<t>A Dependency prefix can be used with a Component identifier. This allows complex systems to understand where Dependencies need to be applied. The Dependency prefix can be used in one of two ways. The first simply prepends the prefix to all Component Identifiers in the Dependency.</t>

<t>A Dependency prefix can also be used to indicate when a Dependency Manifest needs to be processed by a secondary Manifest processor, as described in <xref target="hierarchical-interpreters"/>.</t>

</section>
</section>
<section anchor="changes-to-abstract-machine-description"><name>Changes to Abstract Machine Description</name>

<t>This section augments the Abstract Machine Description (Section 6.4) in <xref target="I-D.ietf-suit-manifest"/>.
With the addition of Dependencies, some changes are necessary to the abstract machine, outside the typical scope of added Commands. These changes alter the behaviour of an existing Command and way that the parser processes Manifests:</t>

<t><list style="symbols">
  <t>Five new Commands are introduced:  <list style="symbols">
      <t>Set Parameters</t>
      <t>Process Dependency</t>
      <t>Is Dependency</t>
      <t>Dependency Integrity</t>
      <t>Unlink</t>
    </list></t>
  <t>Dependency Manifests are also Components. All Commands may target Dependency Manifests as well as Components, with one exception: process Dependency. Commands defined outside of this draft and <xref target="I-D.ietf-suit-manifest"/> MAY have additional restrictions.</t>
  <t>Dependencies are processed in lockstep with the Root Manifest. This means that every Dependency's current Command sequence must be executed before a dependent's later Command sequence may be executed. For example, every Dependency's Dependency Resolution step MUST be executed before any dependent's Payload fetch step.</t>
  <t>When a Manifest Processor supports multiple independent Components, they MAY have shared Dependencies.</t>
  <t>When a Manifest Processor supports shared Dependencies, it MUST support reference counting of those Dependencies.</t>
  <t>When reference counting is used, Components MUST NOT be overwritten. The Manifest Uninstall section must be called, then the component MUST be Unlinked.</t>
</list></t>

</section>
<section anchor="processing-dependencies"><name>Processing Dependencies</name>

<t>As described in <xref target="required-checks"/>, each Manifest must invoke each of its Dependencies' sections from the corresponding section of the dependent. Any changes made to Parameters by the Dependency persist in the dependent.</t>

<t>When a Process Dependency Command is encountered, the Manifest processor:</t>

<t><list style="numbers">
  <t>Checks whether the map of Dependencies contains an entry for the current Component Index. If not present, it causes an immediate Abort.</t>
  <t>Checks whether the Dependency has been the target of a Dependency integrity check. If not, it causes an immediate Abort.</t>
  <t>Loads the specified Component as a Dependency Manifest Envelope.</t>
  <t>Authenticates the Dependency Manifest.</t>
  <t>Executes the common-sequence section of the Dependency Manifest.</t>
  <t>Executes the section of the Dependency Manifest that corresponds to the currently executing section of the dependent.</t>
</list></t>

<t>If the specified Dependency does not contain the current section, Process Dependency succeeds immediately.</t>

<t>The interpreter also performs the checks described in <xref target="required-checks"/> to ensure that the dependent is processing the Dependency correctly.</t>

<section anchor="hierarchical-interpreters"><name>Multiple Manifest Processors</name>

<t>When a system has multiple trust domains, each domain might require independent verification of authenticity or security policies. Trust domains might be divided by separation technology such as Arm TrustZone, Intel SGX, or another Trusted Execution Environment (TEE) technology. Trust domains might also be divided into separate processors and memory spaces, with a communication interface between them.</t>

<t>For example, an application processor may have an attached communications module that contains a processor. The communications module might require metadata signed by a specific Trust Authority for regulatory approval. This may be a different Trust Authority than the application processor.</t>

<t>When there are two or more trust domains, a Manifest processor might be required in each. The first Manifest processor is the normal Manifest processor as described for the Recipient in Section 6 of <xref target="I-D.ietf-suit-manifest"/>. The second Manifest processor only executes sections when the first Manifest processor requests it. An API interface is provided from the second Manifest processor to the first. This allows the first Manifest processor to request a limited set of operations from the second. These operations are limited to: setting Parameters, inserting an Envelope, and invoking a Manifest Command Sequence. The second Manifest processor declares a prefix to the first, which tells the first Manifest processor when it should delegate to the second. These rules are enforced by underlying separation of privilege infrastructure, such as TEEs, or physical separation.</t>

<t>When the first Manifest processor encounters a Dependency prefix, that informs the first Manifest processor that it should provide the second Manifest processor with the corresponding Dependency Envelope. This is done when the Dependency is fetched. The second Manifest processor immediately verifies any authentication information in the Dependency Envelope. When a Parameter is set for any Component that matches the prefix, this Parameter setting is passed to the second Manifest processor via an API. As the first Manifest processor works through the Procedure (set of Command sequences) it is executing, each time it sees a Process Dependency Command that is associated with the prefix declared by the second Manifest processor, it uses the API to ask the second Manifest processor to invoke that Dependency section instead.</t>

<t>This mechanism ensures that the two or more Manifest processors do not need to trust each other, except in a very limited case. When Parameter setting across trust domains is used, it must be very carefully considered. Only Parameters that do not have an effect on security properties should be allowed. The Dependency Manifest MAY control which Parameters are allowed to be set by using the Override Parameters Directive. The second Manifest processor MAY also control which Parameters may be set by the first Manifest processor by means of an ACL that lists the allowed Parameters. For example, a URI may be set by a dependent without a substantial impact on the security properties of the Manifest.</t>

</section>
</section>
<section anchor="suit-dependency-resolution"><name>Dependency Resolution</name>

<t>The Dependency Resolution Command Sequence is a container for the Commands needed to acquire and process the Dependencies of the current Manifest. All Dependency Manifests SHOULD be fetched before any Payload is fetched to ensure that all Manifests are available and authenticated before any of the (larger) Payloads are acquired.</t>

</section>
<section anchor="added-and-modified-commands"><name>Added and Modified Commands</name>

<t>All Commands are modified in that they can also target Dependencies. However, Set Component Index has a larger modification.</t>

<texttable>
      <ttcol align='left'>Command Name</ttcol>
      <ttcol align='left'>Semantic of the Operation</ttcol>
      <c>Set Parameters</c>
      <c>current.params[k] := v if not k in current.params for-each k,v in arg</c>
      <c>Process Dependency</c>
      <c>exec(current[common]); exec(current[current-segment])</c>
      <c>Dependency Integrity</c>
      <c>verify(current, current.params[image-digest])</c>
      <c>Is Dependency</c>
      <c>assert(current exists in Dependencies)</c>
      <c>Unlink</c>
      <c>unlink(current)</c>
</texttable>

<section anchor="suit-directive-set-parameters"><name>suit-directive-set-parameters</name>

<t>Similar to suit-directive-override-parameters, suit-directive-set-parameters allows the Manifest to configure behavior of future Directives by changing Parameters that are read by those Directives. Set Parameters is for use when Dependencies are used because it allows a Manifest to modify the behavior of its Dependencies.</t>

<t>Available Parameters are defined in <xref target="I-D.ietf-suit-manifest"/>, section 8.4.8.</t>

<t>If a Parameter is already set, suit-directive-set-parameters will skip setting the Parameter to its argument. This allows dependent Manifests to change the behavior of a Manifest, a Dependency that wishes to enforce a specific value of a Parameter MAY use suit-directive-override-parameters instead.</t>

<t>suit-directive-set-parameters does not specify a reporting policy.</t>

</section>
<section anchor="suit-directive-process-dependency"><name>suit-directive-process-dependency</name>

<t>Execute the Commands in the common section of the current Dependency, followed by the Commands in the equivalent section of the current Dependency. For example, if the current section is "Payload Fetch," this will execute "Common metadata" in the current Dependency, then "Payload Fetch" in the current Dependency. Once this is complete, the Command following suit-directive-process-dependency will be processed.</t>

<t>If the current Component index does not have an entry in the suit-dependencies map, then this Command MUST Abort.</t>

<t>If the current Component index has not been the target of a suit-condition-dependency-integrity, then this Command MUST Abort.</t>

<t>If the current Component is True, then this Directive applies to all Dependencies. If the current section is "Common metadata," then the Command sequence MUST Abort.</t>

<t>When SUIT_Process_Dependency completes, it forwards the last status code that occurred in the Dependency.</t>

</section>
<section anchor="suit-condition-is-dependency"><name>suit-condition-is-dependency</name>

<t>Check whether the current Component index is present in the Dependency list. If the current Component is in the Dependency list, suit-condition-is-dependency succeeds. Otherwise, it fails. This can be used along with component-id = True to act on all Dependencies or on all non-Dependency Components. See <xref target="creating-manifests"/> for more details.</t>

</section>
<section anchor="suit-condition-dependency-integrity"><name>suit-condition-dependency-integrity</name>

<t>Verify the integrity of a Dependency Manifest. When a Manifest Processor executes suit-condition-dependency-integrity, it performs the following operations:</t>

<t><list style="numbers">
  <t>Verify the signature of the Manifest hash</t>
  <t>Compare the Manifest hash to the provided hash</t>
  <t>Verify the Manifest against the Manifest hash</t>
</list></t>

<t>If any of these steps fails, the Manifest Process MUST immediately Abort.</t>

<t>The Manifest Processor MAY cache the results of these operations for later use from the context of the current Manifest. The Manifest Processor MUST NOT use cached results from any other Manifest context. If the Manifest Processor caches the results of these checks, it MUST eliminate this cache if any Fetch, or Copy operation targets the Dependency Manifest's Component ID.</t>

</section>
<section anchor="suit-directive-unlink"><name>suit-directive-unlink</name>

<t>A manifest processor that supports multiple independent root manifests
MUST support suit-directive-unlink. When a Component is no longer
needed, the Manifest processor unlinks the Component to inform the 
Manifest processor that it is no longer needed.</t>

<t>If a Manifest is no longer needed, the Manifest Processor unlinks it.
This causes the Manifest Processor to execute the suit-uninstall section
of the unlinked Manifest, after which it decrements the reference count
of the unlinked Manifest. The suit-uninstall section of a manifest
typically contains an unlink of all its dependencies and components.</t>

<t>All components, including Manifests must be unlinked before deletion 
or overwrite. If the
reference count of a component is non-zero, any command that alters
that component MUST cause an immediate ABORT. Affected commands are:</t>

<t><list style="symbols">
  <t>suit-directive-copy</t>
  <t>suit-directive-fetch</t>
  <t>suit-directive-write</t>
</list></t>

<t>The unlink Command decrements an implementation-defined reference counter. This reference counter MUST persist across restarts. The reference counter MUST NOT be decremented by a given Manifest more than once, and the Manifest processor must enforce this. The Manifest processor MAY choose to ignore an Unlink Directive depending on device policy.</t>

<t>When the reference counter of a Manifest reaches zero, the suit-uninstall Command sequence is invoked (see <xref target="suit-uninstall"/>).</t>

<t>suit-directive-unlink is OPTIONAL to implement in Manifest processors,
but Manifest processors that support multiple independent Root Manifests
MUST support suit-directive-unlink.</t>

</section>
</section>
</section>
<section anchor="suit-uninstall"><name>Uninstall</name>

<t>In some systems, particularly with multiple, independent, optional Components, it may be that there is a need to uninstall the Components that have been installed by a Manifest. Where this is expected, the uninstall Command sequence can provide the sequence needed to cleanly remove the Components defined by the Manifest and its Dependencies. In general, the suit-uninstall Command Sequence will contain primarily unlink Directives.</t>

<t>WARNING: This can cause faults where there are loose Dependencies (e.g., version range matching, see <xref target="I-D.ietf-suit-update-management"/>), since a Component can be removed while it is depended upon by another Component. To avoid Dependency faults, a Manifest author MAY use explicit Dependencies where possible, or a Manifest processor MAY track references to loose Dependencies via reference counting in the same way as explicit Dependencies, as described in <xref target="suit-directive-unlink"/>.</t>

<t>The suit-uninstall Command Sequence is not severable, since it must always be available to enable uninstalling.</t>

</section>
<section anchor="staging-and-installation"><name>Staging and Installation</name>

<t>In order to coordinate between download and installation in different trust domains, the Update Procedure defined in <xref target="I-D.ietf-suit-manifest"/>, Section 8.4.6 is divided into two sub-procedures:</t>

<t><list style="symbols">
  <t>The Staging Procedure: This procedure is responsible for dependency resolution and acquiring all payloads required for the Update to proceed. It is composed of two command sequences  <list style="symbols">
      <t>suit-dependency-resolution</t>
      <t>suit-payload-fetch</t>
    </list></t>
  <t>The Installation Procedure: This procedure is responsible for validating staged components and installing them. It is composed of:  <list style="symbols">
      <t>suit-candidate-validation</t>
      <t>suit-install</t>
    </list></t>
</list></t>

<t>This extension is backwards compatible when used with a Manifest Processor that supports the Update Procedure but = does not support the Staging Procedure and Installation Procedure: the payload-fetch command sequence already contains suit-condition-image tests for each payload (see <xref target="I-D.ietf-suit-manifest"/>, section 7.3) which means that images are already validated when suit-install is invoked. This makes suit-candidate-verification OPTIONAL to implement and OPTIONAL to parse.</t>

<t>The Staging and Installation Procedures are only required when Staging occurs in a different trust domain to Installation.</t>

<section anchor="suit-candidate-verification"><name>suit-candidate-verification</name>

<t>This command sequence is responsible for verifying that all elements of an update are present and correct prior to installation. This is only required when Installation occurs in a trust domain different from Staging, such as an installer invoked by the bootloader.</t>

</section>
</section>
<section anchor="creating-manifests"><name>Creating Manifests</name>

<t>This section details a set of templates for creating Manifests. These templates explain which Parameters, Commands, and orders of Commands are necessary to achieve a stated goal.</t>

<section anchor="template-dependency"><name>Dependency Template</name>

<t>The goal of the Dependency template is to obtain, verify, and process a Dependency Manifest as appropriate.</t>

<t>The following Commands are added to the shared sequence:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for digest (see Section 8.4.8.6 of <xref target="I-D.ietf-suit-manifest"/>). Note that the digest MUST match the SUIT_Digest in the Dependency's suit-authentication-block (see Section 8.3 of <xref target="I-D.ietf-suit-manifest"/>).</t>
</list></t>

<t>The following Commands are placed into the Dependency resolution sequence:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for a URI (see Section 8.4.8.10 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Fetch Directive (see Section 8.4.10.4 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Dependency Integrity Condition (see <xref target="suit-condition-dependency-integrity"/>)</t>
  <t>Process Dependency Directive (see <xref target="suit-directive-process-dependency"/>)</t>
</list></t>

<t>Then, the validate sequence contains the following operations:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Dependency Integrity Condition (see <xref target="suit-condition-dependency-integrity"/>)</t>
  <t>Process Dependency Directive (see <xref target="suit-directive-process-dependency"/>)</t>
</list></t>

<t>If any Dependency is declared, the dependent MUST populate all Command sequences for the current Procedure (Update or Invoke).</t>

<t>NOTE: Any changes made to Parameters in a Dependency persist in the dependent.</t>

<section anchor="integrated-dependencies"><name>Integrated Dependencies</name>

<t>An implementer MAY choose to place a Dependency's Envelope in the Envelope of its dependent. The dependent Envelope key for the Dependency Envelope MUST be a text string. The URI for the Dependency MUST match the text string key of the dependent's Envelope key. It is RECOMMENDED to make the text string key a resolvable URI so that a Dependency Manifest that is removed from the Envelope can still be fetched.</t>

</section>
</section>
<section anchor="template-encrypted-manifest"><name>Encrypted Manifest Template</name>

<t>The goal of the Encrypted Manifest template is to fetch and decrypt a Manifest so that it can be used as a Dependency. To use an encrypted Manifest, create a plaintext dependent, and add the encrypted Manifest as a Dependency. The dependent can include very little information.</t>

<t>NOTE: This template also requires the extensions defined in <xref target="I-D.ietf-suit-firmware-encryption"/>.</t>

<t>The following Commands are added to the shared sequence:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for digest (see Section 8.4.8.6 of <xref target="I-D.ietf-suit-manifest"/>). Note that the digest MUST match the SUIT_Digest in the Dependency's suit-authentication-block (see Section 8.3 of <xref target="I-D.ietf-suit-manifest"/>).</t>
</list></t>

<t>The following operations are placed into the Dependency resolution block:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for
  <list style="symbols">
      <t>URI (see Section 8.4.8.9 of <xref target="I-D.ietf-suit-manifest"/>)</t>
      <t>Encryption Info (See <xref target="I-D.ietf-suit-firmware-encryption"/>)</t>
    </list></t>
  <t>Fetch Directive (see Section 8.4.10.4 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Dependency Integrity Condition (see <xref target="suit-condition-dependency-integrity"/>)</t>
  <t>Process Dependency Directive (see <xref target="suit-directive-process-dependency"/>)</t>
</list></t>

<t>Then, the validate block contains the following operations:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Check Image Match Condition (see Section 8.4.9.2 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Process Dependency Directive (see <xref target="suit-directive-process-dependency"/>)</t>
</list></t>

<t>A plaintext Manifest and its encrypted Dependency may also form a composite Manifest (<xref target="integrated-dependencies"/>).</t>

</section>
<section anchor="template-override-encryption-info"><name>Overriding Encryption Info Template</name>

<t>The goal of overriding the Encryption Info template is to separate the role of generating encrypted Payload and Encryption Info with Key-Encryption Key addressing Section 3 of <xref target="I-D.ietf-suit-firmware-encryption"/>.</t>

<t>As an example, this template describes two manifests:
- The dependent Manifest created by the Distribution System contains Encryption Info, allowing the Device to generate the Content-Encryption Key.
- The dependency Manifest created by the Author contains Commands to decrypt the encrypted Payload using Encryption Info above and to validate the plaintext Payload with SUIT_Digest.</t>

<t>NOTE: This template also requires the extensions defined in <xref target="I-D.ietf-suit-firmware-encryption"/>.</t>

<t>The following operations are placed into the Dependency resolution block of dependent Manifest:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>) pointing at dependency Manifest</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for
  <list style="symbols">
      <t>Image Digest (see Section 8.4.8.6 of <xref target="I-D.ietf-suit-manifest"/>)</t>
      <t>URI (see Section 8.4.8.9 of <xref target="I-D.ietf-suit-manifest"/>) of dependency Manifest</t>
    </list></t>
  <t>Fetch Directive (see Section 8.4.10.4 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Dependency Integrity Condition (see <xref target="suit-condition-dependency-integrity"/>)</t>
</list></t>

<t>The following Commands are placed into the Fetch/Install block of dependent Manifest</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>) pointing at encrypted Payload</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for
  <list style="symbols">
      <t>URI (see Section 8.4.8.9 of <xref target="I-D.ietf-suit-manifest"/>)</t>
    </list></t>
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>) pointing at dependency Manifest</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for
  <list style="symbols">
      <t>Encryption Info (See <xref target="I-D.ietf-suit-firmware-encryption"/>)</t>
    </list></t>
  <t>Process Dependency Directive (see <xref target="suit-directive-process-dependency"/>)</t>
</list></t>

<t>The following Commands are placed into the same block of dependency Manifest:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>) pointing at encrypted Payload</t>
  <t>Fetch Directive (see Section 8.4.10.4 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>) pointing at to be decrypted Payload</t>
  <t>Override Parameters Directive (see Section 8.4.10.3 of <xref target="I-D.ietf-suit-manifest"/>) for
  <list style="symbols">
      <t>Source Component (see Section 8.4.8.11 of <xref target="I-D.ietf-suit-manifest"/>) pointing at encrypted Payload</t>
    </list></t>
  <t>Copy Directive (see Section 8.4.10.5 of <xref target="I-D.ietf-suit-manifest"/>) consuming the Encryption Info above</t>
</list></t>

<t>The Distribution System can Set the Parameter URI in the Fetch/Install block of dependent Manifest if it wants to overwrite the URI of encrypted Payload.</t>

<t>Because the Author and the Distribution System have different roles and MAY be separate entities, it is highly RECOMMENDED to leverage permissions (see Section 9 of <xref target="I-D.ietf-suit-manifest"/>).
For example, The Device can protect itself from attacker who breaches the Distribution System by allowing only the Author's Manifest to modify the Component of (to be) decrypted Payload.</t>

</section>
<section anchor="operating-on-multiple-components"><name>Operating on Multiple Components</name>

<t>In order to produce compact encoding, it is efficient to perform operations on multiple Components simultaneously. Because Dependency Manifests and Component Images are processed at different times, there is a mechanism to distinguish between these elements: suit-condition-is-dependency. This can be used with suit-directive-try-each to perform operations just on Dependency Manifests or just on Component Images.</t>

<t>For example, to fetch all Dependency Manifests, the following Commands are added to the Dependency resolution block:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for a URI (see Section 8.4.8.9 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Component Index Directive, with argument "True" (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Try Each Directive
  <list style="symbols">
      <t>Sequence 0
      <list style="symbols">
          <t>Condition Is Dependency Manifest</t>
          <t>Fetch</t>
          <t>Dependency Integrity Condition (see <xref target="suit-condition-dependency-integrity"/>)</t>
          <t>Process Dependency</t>
        </list></t>
      <t>Sequence 1 (Empty; no Commands, succeeds immediately)</t>
    </list></t>
</list></t>

<t>Another example is to fetch and validate all Component Images. The Image fetch sequence contains the following Commands:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for a URI (see Section 8.4.8.9 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Component Index Directive, with argument "True" (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Try Each Directive
  <list style="symbols">
      <t>Sequence 0
      <list style="symbols">
          <t>Condition Is Dependency Manifest</t>
          <t>Process Dependency</t>
        </list></t>
      <t>Sequence 1
      <list style="symbols">
          <t>Fetch</t>
          <t>Condition Image Match</t>
        </list></t>
    </list></t>
</list></t>

<t>When some Components are "installed" or "loaded" it is more productive to use lists of Component indices rather than Component Index = True. For example, to install several Components, the following Commands should be placed in the Image Install Sequence:</t>

<t><list style="symbols">
  <t>Set Component Index Directive (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Parameters Directive (see <xref target="suit-directive-set-parameters"/>) for the Source Component (see Section 8.4.8.11 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Set Component Index Directive, with argument containing list of destination Component indices (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Copy</t>
  <t>Set Component Index Directive, with argument containing list Dependency Component indices (see Section 8.4.10.1 of <xref target="I-D.ietf-suit-manifest"/>)</t>
  <t>Process Dependency</t>
</list></t>

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

<t>IANA is requested to allocate the following numbers in the listed registries created by draft-ietf-suit-manifest:</t>

<section anchor="suit-envelope-elements"><name>SUIT Envelope Elements</name>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>15</c>
      <c>Dependency Resolution</c>
      <c><xref target="suit-dependency-resolution"/></c>
      <c>18</c>
      <c>Candidate Verification</c>
      <c><xref target="suit-candidate-verification"/></c>
</texttable>

</section>
<section anchor="suit-manifest-elements"><name>SUIT Manifest Elements</name>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>5</c>
      <c>Manifest Component ID</c>
      <c><xref target="manifest-id"/></c>
      <c>15</c>
      <c>Dependency Resolution</c>
      <c><xref target="suit-dependency-resolution"/></c>
      <c>24</c>
      <c>Uninstall</c>
      <c><xref target="suit-uninstall"/></c>
</texttable>

</section>
<section anchor="suit-common-elements"><name>SUIT Common Elements</name>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>1</c>
      <c>Dependencies</c>
      <c><xref target="SUIT_Dependencies"/></c>
</texttable>

</section>
<section anchor="suit-commands"><name>SUIT Commands</name>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>7</c>
      <c>Dependency Integrity</c>
      <c><xref target="suit-condition-dependency-integrity"/></c>
      <c>8</c>
      <c>Is Dependency</c>
      <c><xref target="suit-condition-is-dependency"/></c>
      <c>11</c>
      <c>Process Dependency</c>
      <c><xref target="suit-directive-process-dependency"/></c>
      <c>19</c>
      <c>Set Parameters</c>
      <c><xref target="suit-directive-set-parameters"/></c>
      <c>33</c>
      <c>Unlink</c>
      <c><xref target="suit-directive-unlink"/></c>
</texttable>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This document is about a Manifest format protecting and describing how to retrieve, install, and invoke Images and as such it is part of a larger solution for delivering software updates to devices. A detailed security treatment can be found in the architecture <xref target="RFC9019"/> and in the information model <xref target="RFC9124"/> documents.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC3986'>
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname='T. Berners-Lee' initials='T.' surname='Berners-Lee'/>
    <author fullname='R. Fielding' initials='R.' surname='Fielding'/>
    <author fullname='L. Masinter' initials='L.' surname='Masinter'/>
    <date month='January' year='2005'/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='STD' value='66'/>
  <seriesInfo name='RFC' value='3986'/>
  <seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>

<reference anchor='RFC6024'>
  <front>
    <title>Trust Anchor Management Requirements</title>
    <author fullname='R. Reddy' initials='R.' surname='Reddy'/>
    <author fullname='C. Wallace' initials='C.' surname='Wallace'/>
    <date month='October' year='2010'/>
    <abstract>
      <t>A trust anchor represents an authoritative entity via a public key and associated data. The public key is used to verify digital signatures, and the associated data is used to constrain the types of information for which the trust anchor is authoritative. A relying party uses trust anchors to determine if a digitally signed object is valid by verifying a digital signature using the trust anchor's public key, and by enforcing the constraints expressed in the associated data for the trust anchor. This document describes some of the problems associated with the lack of a standard trust anchor management mechanism and defines requirements for data formats and push-based protocols designed to address these problems. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6024'/>
  <seriesInfo name='DOI' value='10.17487/RFC6024'/>
</reference>

<reference anchor='RFC7228'>
  <front>
    <title>Terminology for Constrained-Node Networks</title>
    <author fullname='C. Bormann' initials='C.' surname='Bormann'/>
    <author fullname='M. Ersue' initials='M.' surname='Ersue'/>
    <author fullname='A. Keranen' initials='A.' surname='Keranen'/>
    <date month='May' year='2014'/>
    <abstract>
      <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7228'/>
  <seriesInfo name='DOI' value='10.17487/RFC7228'/>
</reference>

<reference anchor='RFC8392'>
  <front>
    <title>CBOR Web Token (CWT)</title>
    <author fullname='M. Jones' initials='M.' surname='Jones'/>
    <author fullname='E. Wahlstroem' initials='E.' surname='Wahlstroem'/>
    <author fullname='S. Erdtman' initials='S.' surname='Erdtman'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <date month='May' year='2018'/>
    <abstract>
      <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8392'/>
  <seriesInfo name='DOI' value='10.17487/RFC8392'/>
</reference>

<reference anchor='RFC8747'>
  <front>
    <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
    <author fullname='M. Jones' initials='M.' surname='Jones'/>
    <author fullname='L. Seitz' initials='L.' surname='Seitz'/>
    <author fullname='G. Selander' initials='G.' surname='Selander'/>
    <author fullname='S. Erdtman' initials='S.' surname='Erdtman'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <date month='March' year='2020'/>
    <abstract>
      <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8747'/>
  <seriesInfo name='DOI' value='10.17487/RFC8747'/>
</reference>

<reference anchor='RFC9019'>
  <front>
    <title>A Firmware Update Architecture for Internet of Things</title>
    <author fullname='B. Moran' initials='B.' surname='Moran'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <author fullname='D. Brown' initials='D.' surname='Brown'/>
    <author fullname='M. Meriac' initials='M.' surname='Meriac'/>
    <date month='April' year='2021'/>
    <abstract>
      <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
      <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9019'/>
  <seriesInfo name='DOI' value='10.17487/RFC9019'/>
</reference>

<reference anchor='RFC9124'>
  <front>
    <title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</title>
    <author fullname='B. Moran' initials='B.' surname='Moran'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <author fullname='H. Birkholz' initials='H.' surname='Birkholz'/>
    <date month='January' year='2022'/>
    <abstract>
      <t>Vulnerabilities with Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism that is also suitable for constrained devices. Ensuring that devices function and remain secure over their service lifetime requires such an update mechanism to fix vulnerabilities, update configuration settings, and add new functionality.</t>
      <t>One component of such a firmware update is a concise and machine-processable metadata document, or manifest, that describes the firmware image(s) and offers appropriate protection. This document describes the information that must be present in the manifest.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9124'/>
  <seriesInfo name='DOI' value='10.17487/RFC9124'/>
</reference>


<reference anchor='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'>
         </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='5' month='February' year='2024'/>
      <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 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-25'/>
   
</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-suit-update-management'>
   <front>
      <title>Update Management Extensions for Software Updates for Internet of Things (SUIT) Manifests</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='8' month='November' year='2023'/>
      <abstract>
	 <t>   This specification describes extensions to the SUIT manifest format
   defined in [I-D.ietf-suit-manifest].  These extensions allow an
   update author, update distributor or device operator to more
   precisely control the distribution and installation of updates to
   devices.  These extensions also provide a mechanism to inform a
   management system of Software Identifier and Software Bill Of
   Materials information about an updated device.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-update-management-05'/>
   
</reference>


<reference anchor='I-D.ietf-suit-firmware-encryption'>
   <front>
      <title>Encrypted Payloads in SUIT Manifests</title>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         </author>
      <author fullname='Russ Housley' initials='R.' surname='Housley'>
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Brendan Moran' initials='B.' surname='Moran'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='David Brown' initials='D.' surname='Brown'>
         <organization>Linaro</organization>
      </author>
      <author fullname='Ken Takayama' initials='K.' surname='Takayama'>
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day='3' month='March' year='2024'/>
      <abstract>
	 <t>   This document specifies techniques for encrypting software, firmware,
   machine learning models, and personalization data by utilizing the
   IETF SUIT manifest.  Key agreement is provided by ephemeral-static
   (ES) Diffie-Hellman (DH) and AES Key Wrap (AES-KW).  ES-DH uses
   public key cryptography while AES-KW uses a pre-shared key.
   Encryption of the plaintext is accomplished with conventional
   symmetric key cryptography.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-firmware-encryption-19'/>
   
</reference>


<reference anchor='I-D.ietf-teep-architecture'>
   <front>
      <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
      <author fullname='Mingliang Pei' initials='M.' surname='Pei'>
         <organization>Broadcom</organization>
      </author>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Dave Thaler' initials='D.' surname='Thaler'>
         <organization>Microsoft</organization>
      </author>
      <author fullname='Dave Wheeler' initials='D. M.' surname='Wheeler'>
         <organization>Amazon</organization>
      </author>
      <date day='24' month='October' year='2022'/>
      <abstract>
	 <t>A Trusted Execution Environment (TEE) is an environment that enforces the following: any code within the environment cannot be tampered with, and any data used by such code cannot be read or tampered with by any code outside the environment.  This architecture document discusses the motivation for designing and standardizing a protocol for managing the lifecycle of Trusted Applications running inside such a TEE.
	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teep-architecture-19'/>
   
</reference>




    </references>


<section anchor="full-cddl"><name>A. Full CDDL</name>

<t>To be valid, the following CDDL MUST be appended to the SUIT Manifest CDDL. The SUIT CDDL is defined in Appendix A of <xref target="I-D.ietf-suit-manifest"/></t>

<figure><sourcecode type="CDDL"><![CDATA[
$$SUIT_Envelope_Extensions //= 
    (suit-delegation => bstr .cbor SUIT_Delegation)
$$SUIT_Envelope_Extensions //= (
    suit-integrated-dependency-key => bstr .cbor SUIT_Envelope)

SUIT_Delegation = [ + [ + bstr .cbor CWT ] ]

CWT = SUIT_Authentication_Block

$$SUIT_Manifest_Extensions //= 
    (suit-manifest-component-id => SUIT_Component_Identifier)

$$SUIT_severable-members-extensions //= 
    (suit-dependency-resolution => bstr .cbor SUIT_Command_Sequence)

$$SUIT_severable-members-extensions //=
    (suit-candidate-verification => bstr .cbor SUIT_Command_Sequence)

$$unseverable-manifest-member-extensions //= 
    (suit-uninstall => bstr .cbor SUIT_Command_Sequence)

suit-integrated-dependency-key = tstr

$$severable-manifest-members-choice-extensions //= (
    suit-dependency-resolution =>
        bstr .cbor SUIT_Command_Sequence / SUIT_Digest)

$$SUIT_Common-extensions //= (
    suit-dependencies => SUIT_Dependencies
)
SUIT_Dependencies = {
    + uint => SUIT_Dependency_Metadata
}
SUIT_Dependency_Metadata = {
    ? suit-dependency-prefix => SUIT_Component_Identifier
    * $$SUIT_Dependency_Extensions
}

SUIT_Condition //= (
    suit-condition-dependency-integrity, SUIT_Rep_Policy)
SUIT_Condition //= (
    suit-condition-is-dependency, SUIT_Rep_Policy)

SUIT_Directive //= (
    suit-directive-process-dependency, SUIT_Rep_Policy)
SUIT_Directive //= (suit-directive-set-parameters,
    {+ $$SUIT_Parameters})
SUIT_Directive //= (
    suit-directive-unlink, SUIT_Rep_Policy)

suit-manifest-component-id = 5

suit-delegation = 1
suit-dependency-resolution = 15
suit-candidate-verification = 18
suit-uninstall = 24

suit-dependencies = 1

suit-dependency-prefix = 1

suit-condition-dependency-integrity     = 7
suit-condition-is-dependency            = 8
suit-directive-process-dependency       = 11
suit-directive-set-parameters           = 19
suit-directive-unlink                   = 33

]]></sourcecode></figure>

</section>
<section anchor="examples"><name>B. Examples</name>

<t>The following examples demonstrate a small subset of the functionalities in this document.</t>

<t>The examples are signed using the following ECDSA secp256r1 key:</t>

<figure><artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgApZYjZCUGLM50VBC
CjYStX+09jGmnyJPrpDLTz/hiXOhRANCAASEloEarguqq9JhVxie7NomvqqL8Rtv
P+bitWWchdvArTsfKktsCYExwKNtrNHXi9OB3N+wnAUtszmR23M4tKiW
-----END PRIVATE KEY-----
]]></artwork></figure>

<t>The corresponding public key can be used to verify these examples:</t>

<figure><artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhJaBGq4LqqvSYVcYnuzaJr6qi/Eb
bz/m4rVlnIXbwK07HypLbAmBMcCjbazR14vTgdzfsJwFLbM5kdtzOLSolg==
-----END PUBLIC KEY-----
]]></artwork></figure>

<t>Each example uses SHA256 as the digest function.</t>

<section anchor="example-0-process-dependency"><name>Example 0: Process Dependency</name>

<t>This example uses functionalities:</t>

<t><list style="symbols">
  <t>manifest component id</t>
  <t>dependency resolution</t>
  <t>process dependency</t>
</list></t>

<figure><artwork><![CDATA[
/ SUIT_Envelope_Tagged / 107({
  / authentication-wrapper / 2: << [
    << [
      / digest-algorithm-id: / -16 / SHA256 /,
      / digest-bytes: /
        h'4874ADC80A9128A2B2057F5FE59C45F8ED10A9BF9C5308FCF951B8BBAF434B95'
    ] >>,
    << / COSE_Sign1_Tagged / 18([
      / protected: / << {
        / algorithm-id / 1: -7 / ES256 /
      } >>,
      / unprotected: / {},
      / payload: / null,
      / signature: /
        h'C257E23A34960BE215BB9B927A5A3CEEDD675DFD81AE6E55A66FDD2209886889
          1DF42D71ADB962A64CC008AEF9465DA2153CCF383F00B505F079DB540F64B916'
    ]) >>
  ] >>,
  / manifest / 3: << {
    / manifest-version / 1: 1,
    / manifest-sequence-number / 2: 0,
    / common / 3: << {
      / dependencies / 1: {
        / component-index / 1: {
          / dependency-prefix / 1: [
            'dependent.suit'
          ]
        }
      },
      / components / 2: [
        [
          '10'
        ]
      ]
    } >>,
    / manifest-component-id / 5: [
      'depending.suit'
    ],
    / invoke / 9: << [
      / directive-set-component-index / 12, 0,
      / directive-override-parameters / 20, {
        / parameter-invoke-args / 23: 'cat 00 10'
      },
      / directive-invoke / 23, 15
    ] >>,
    / dependency-resolution / 15: << [
      / directive-set-component-index / 12, 1,
      / directive-override-parameters / 20, {
        / parameter-image-digest / 3: << [
          / digest-algorithm-id: / -16 / SHA256 /,
          / digest-bytes: /
            h'6C86246B90D644F021671F6D42523B2CB5E156F764BE618AA46BFCD0DB23E768'
        ] >>,
        / parameter-image-size / 14: 352,
        / parameter-uri / 21: "http://example.com/dependent.suit"
      },
      / directive-fetch / 21, 2,
      / condition-image-match / 3, 15
    ] >>,
    / install / 17: << [
      / directive-set-component-index / 12, 1,
      / directive-override-parameters / 20, {
        / parameter-image-digest / 3: << [
          / digest-algorithm-id: / -16 / SHA256 /,
          / digest-bytes: /
            h'6EA128D7BB19B86F77C4227F2A29F22026A41958ACC45CC0A35BA388B13E2F51'
        ] >>
      },
      / condition-dependency-integrity / 7, 15,
      / directive-process-dependency / 11, 0,

      / directive-set-component-index / 12, 0,
      / directive-override-parameters / 20, {
        / parameter-content / 18: ' in multiple trust domains'
      },
      / directive-write / 18, 15
    ] >>
  } >>
})
]]></artwork></figure>

<t>Total size of Envelope with COSE authentication object:  374</t>

<t>Envelope with COSE authentication object:</t>

<figure><artwork><![CDATA[
D86BA2025873825824822F58204874ADC80A9128A2B2057F5FE59C45F8ED
10A9BF9C5308FCF951B8BBAF434B95584AD28443A10126A0F65840C257E2
3A34960BE215BB9B927A5A3CEEDD675DFD81AE6E55A66FDD22098868891D
F42D71ADB962A64CC008AEF9465DA2153CCF383F00B505F079DB540F64B9
160358FAA70101020003581CA201A101A101814E646570656E64656E742E
7375697402818142313005814E646570656E64696E672E73756974095286
0C0014A11749636174203030203130170F0F5858880C0114A3035824822F
58206C86246B90D644F021671F6D42523B2CB5E156F764BE618AA46BFCD0
DB23E7680E190160157821687474703A2F2F6578616D706C652E636F6D2F
646570656E64656E742E737569741502030F1158538E0C0114A103582482
2F58206EA128D7BB19B86F77C4227F2A29F22026A41958ACC45CC0A35BA3
88B13E2F51070F0B000C0014A112581A20696E206D756C7469706C652074
7275737420646F6D61696E73120F
]]></artwork></figure>

</section>
<section anchor="example-1-integrated-dependency"><name>Example 1: Integrated Dependency</name>

<t><list style="symbols">
  <t>manifest component id</t>
  <t>dependency resolution</t>
  <t>process dependency</t>
  <t>integrated dependency</t>
</list></t>

<figure><artwork><![CDATA[
/ SUIT_Envelope_Tagged / 107({
  / authentication-wrapper / 2: << [
    << [
      / digest-algorithm-id: / -16 / SHA256 /,
      / digest-bytes: /
        h'318EAD5F671A6D2593D7ADB7B6CCADC49F72704507004F297A25AF16A48A2111'
    ] >>,
    << / COSE_Sign1_Tagged / 18([
      / protected: / << {
        / algorithm-id / 1: -7 / ES256 /
      } >>,
      / unprotected: / {},
      / payload: / null,
      / signature: /
        h'287D5AAB44D08A34954663942B2732825426893ACD735BF3A79B8B5B38EC3C99
          50D917D72D5586867C8FF58CF5827B0C2B94952359C3971DBF202B0774627DC3'
    ]) >>
  ] >>,
  / manifest / 3: << {
    / manifest-version / 1: 1,
    / manifest-sequence-number / 2: 0,
    / common / 3: << {
      / dependencies / 1: {
        / component-index / 1: {
          / dependency-prefix / 1: [
            'dependent.suit'
          ]
        }
      },
      / components / 2: [
        [
          '10'
        ]
      ]
    } >>,
    / manifest-component-id / 5: [
      'depending.suit'
    ],
    / invoke / 9: << [
      / directive-set-component-index / 12, 0,
      / directive-override-parameters / 20, {
        / parameter-invoke-args / 23: 'cat 00 10'
      },
      / directive-invoke / 23, 15
    ] >>,
    / dependency-resolution / 15: << [
      / directive-set-component-index / 12, 1,
      / directive-override-parameters / 20, {
        / parameter-image-digest / 3: << [
          / digest-algorithm-id: / -16 / SHA256 /,
          / digest-bytes: /
            h'6C86246B90D644F021671F6D42523B2CB5E156F764BE618AA46BFCD0DB23E768'
        ] >>,
        / parameter-image-size / 14: 352,
        / parameter-uri / 21: "#dependent.suit"
      },
      / directive-fetch / 21, 2,
      / condition-image-match / 3, 15
    ] >>,
    / install / 17: << [
      / directive-set-component-index / 12, 1,
      / directive-process-dependency / 11, 0,

      / directive-set-component-index / 12, 0,
      / directive-override-parameters / 20, {
        / parameter-content / 18: ' in multiple trust domains'
      },
      / directive-write / 18, 15
    ] >>
  } >>,
  / NOTE: Example 0 /
  "#dependent.suit":
    h'D86BA301589E8181589AD28443A10126A0584FA108A101A4010220012158200E
      908AA8F066DB1F084E0C3652C63952BD99F2A5BDB22F9E01367AAD03ABA68B22
      582077DA1BD8AC4F0CB490BA210648BF79AB164D49AD3551D71D314B2749EE42
      D29A5840FB2D5ACF66B9C8573CE92E13BFB8D113F798715CC10B5A0010B11925
      C155E7245A64E131073B87AC50CAC71650A21315B82D06CA2298CD1A95519AAE
      4C4B5315025874835824822F58206EA128D7BB19B86F77C4227F2A29F22026A4
      1958ACC45CC0A35BA388B13E2F51584AD28443A10126A0F6584099F949043701
      D7BDBA38904A0B49F004DED6B64A4900DECA5C66AE8A9EBA913576DEF136B74E
      A89C14FA64624DBD33B4C0BB41C153CA51548C73FF71A2BAF27440035842A601
      0102000347A102818142303005814E646570656E64656E742E73756974094D84
      14A11746636174203030170F11528414A1124B68656C6C6F20776F726C64120F'
})
]]></artwork></figure>

<t>Total size of Envelope with COSE authentication object:  683</t>

<t>Envelope with COSE authentication object:</t>

<figure><artwork><![CDATA[
D86BA3025873825824822F5820318EAD5F671A6D2593D7ADB7B6CCADC49F
72704507004F297A25AF16A48A2111584AD28443A10126A0F65840287D5A
AB44D08A34954663942B2732825426893ACD735BF3A79B8B5B38EC3C9950
D917D72D5586867C8FF58CF5827B0C2B94952359C3971DBF202B0774627D
C30358BCA70101020003581CA201A101A101814E646570656E64656E742E
7375697402818142313005814E646570656E64696E672E73756974095286
0C0014A11749636174203030203130170F0F5845880C0114A3035824822F
58206C86246B90D644F021671F6D42523B2CB5E156F764BE618AA46BFCD0
DB23E7680E190160156F23646570656E64656E742E737569741502030F11
58288A0C010B000C0014A112581A20696E206D756C7469706C6520747275
737420646F6D61696E73120F6F23646570656E64656E742E737569745901
60D86BA301589E8181589AD28443A10126A0584FA108A101A40102200121
58200E908AA8F066DB1F084E0C3652C63952BD99F2A5BDB22F9E01367AAD
03ABA68B22582077DA1BD8AC4F0CB490BA210648BF79AB164D49AD3551D7
1D314B2749EE42D29A5840FB2D5ACF66B9C8573CE92E13BFB8D113F79871
5CC10B5A0010B11925C155E7245A64E131073B87AC50CAC71650A21315B8
2D06CA2298CD1A95519AAE4C4B5315025874835824822F58206EA128D7BB
19B86F77C4227F2A29F22026A41958ACC45CC0A35BA388B13E2F51584AD2
8443A10126A0F6584099F949043701D7BDBA38904A0B49F004DED6B64A49
00DECA5C66AE8A9EBA913576DEF136B74EA89C14FA64624DBD33B4C0BB41
C153CA51548C73FF71A2BAF27440035842A6010102000347A10281814230
3005814E646570656E64656E742E73756974094D8414A117466361742030
30170F11528414A1124B68656C6C6F20776F726C64120F
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
vNNpt12ja8/e4gw60heyHZd9rEWC6zJZbOVFIsGcW3spquNsB2naytRnEcHB
P2+SO268iWf6liqviGSMVpihMttiyvGgnF0WsVjCxSVxov2TIlouZaD72yij
P7nK76ipDiVAibgKmt54oYFIzqX0B7FUuqZubdT5XCXbWElKal2MK6LrQ9+/
no2HTW94fy+AFmX8urkimNtAgvyg1+rAgxJraJMhIVLKP2LbBxGPlzHTpXLv
H2Nru/piucQKtkvyb5FiW5Lt+LRKVtqI8iNhm9lMBB9l/ZfPCb4ZWREcn96P
3gJiDkoBus3ONa+zk0z2wP2UooMoYuXZH+n+K7exmMNuidMsfz05NqZxSV5V
wHVXx/yoiinkeGBDFKYEHes791P6n/HS+JtL93v3e8fBD894DN/K/PhhhGau
8w++pFMOryqg6uuQJGTx9kAL2RUcuwopglv+IJW+h09nzLanuuCh021jYy6J
IJ70wBJ1ydjD5jlGMG4OYyA4e4HJ6oubBDjHQ25tLOBd2RrHAHVPzYis3o3x
v/h9kY54X9pphdUfa3dCb78ONz98SaXWJw8ezhLbFeMIpCgLprgrB4T4PqgK
gx0U6DWa6v2nEn1aGbivHq0KNJb5VYs7xLPcriwXN/mo5xw6B67XdQ5yDNcb
OMXT7bY6jlNB4zBXaTJJb+q3I1168J9nbr/4rN2vyPjnmTso1shXdPaSz3re
kf5v5sDecE/1ffmfZ2677YjLm90R3nVBbgG0t4SHQF7NrBUF+QPIe2AkeFUW
pcBma/IhbOeyOAlf2sZkE4K+QR1YI9F9S6ouIodDjUg30HMjft3bVs88HU8u
fFSwNq1uL/UwfZnvw3Wo7+Zo+tn5S/fL1+df+5dT94vpt/St8+L8s8/966n/
YvTis9Hup88uXnSG8Pdn47H4fDf9fPRZ8y64Ox/5f/7ztb/567c//nX81WfP
X3SbX4/GzvjHby/yv3zaHP742Tre/enLdDN5fvnu9Cb6y6ub1/7Lse9fTFfJ
FE3nn34a/unm67dR2H+ZrG9/+un54HV+63z56TzKv/lmcbO89dPL7OqLN3k2
/nb69u6Ll3n68vO/RMNXo/bLT+9i/6s8e7d+3Wq/6ORfRN/wsqYvJ+VF0ZZd
3hTbgm+2czhwlNdtBggwg0d1R8o0wiuw99Xo+fnYQN7szd307tvPv0j+ev7u
x+bY//O35+LzxP/zYgLomt78KRh99lPn+U8/3V58+/Xi23j7LvhT2vspOp3O
nfm703Un/XoVn/9lfvdFs//5bvN87q9HLxbjH+fBu9de5/byevnuKvvT3ez5
/EX3zTJ/9+r5RbK6fvbMWH8BLFo+uf+k85Za0Vx87gNlyHtCRV6uJEKRgy6e
b55Vuh9EIa0xZoGGqTRaMjKz+8oSvq+sfIbvZZXa0pgJl3Bq65M/XAbXWDV8
6nrN/lOUhKeFfuviotcUfmiduf/5n+53xIbVB3yDl11XF3ACjz2Dr+teD1UC
xtBprfj4fAc2DTyn9IubJ51Bv+NPxoOmDxbHwG+NWs1uf9adTbvDcac7G0wn
Hvw0mg3H3XZzMBvPhl1vNBiN/Fmn3RkNu09orO/dP/6xJqE81TeAesZqB081
+MLQCwloeOW9gujUNdeE75259T78e3pBaxIP3qsJ8ZVtbA34/l7/JKqE8Wu8
vVn/oLqT2fgYt7r9aavttzvDXnM0bXnd0Wg4Grb6ftdvj6fTyaTX705mk4Hn
T3vTbtfv9WaTSavVHA4GvcFgqIZyXW8y67Qmfc+fjIa9lt/rjMfN5sCfzoad
Xnfiw9Dt8XjWHrRnzeao2+zOmv3hZNTtNGc9wKzXE6g9gaU6GsWnmjBP3faZ
xp7+oS77WBD2vFrxZxnEqLPvjOmsKR8TbT3twYmITHlKQ5vbZoh7cjoWHrAG
UJKXHvrOeMh1n+hqHBRwT4wfv1ef7yUZ6P00qvBpPXpUc/wnXlOPKMfjf2uS
MlBlKTGnbleP+0S15jHg/F4OIDwSp+7wrHhwTeFegbRWTW6F/XhV41hYaLNm
7YL6sc4Q1EFg0XOwmU+AvbjNpqtRcF81kQK91a6hBkbrMnBTrawB5N2PWKr3
qyzVaFCt6PY7m/R+Dr+0XinxTPzn5klvPOi1Or3RsDnpdTqzZsvr9b1Zb9Jp
dVvtUWs86k69bm/Wh6M87XkD34dnZ+NJczJqtaf93sCgQoOVVa2Lrp8HbHXO
3Ha3Vf3kNo0QQ3CYHt3k+ebs9FSItwag/dQ+UY8ObT5HOXGomtsyD1fVveeA
6koKkbo4AN3/l6KJqQ8ydNIfjbzhaACb3x93Wq3+rOW3hjMQEa2e3/GG3YE/
BtEKwsBvd0d+ezAYee1pa9b1bJqoYnEHrZNTt4/bUYW9CqsDcO0Rq/nns6YF
p8GTUgBsCS2G6qvbDvIpTgXDMSwidJiTO2DRsv6c5HSj+TsqXVDhHQqEoZ5S
vOwmmf8IE5y5brsPhuSDn2ddbzLojXzY6O6g3x7A/7c6gxbs7KDVPK5nOYcV
re4A3m8NOp227zU9ICVQE+C7JisszsdrLN7E+SV6iuP1mu3uYOb7/SYA1mw1
m/i3NwY8eAgq/m/gdaY9GK3f7HV79Kk37XdaU6ff7nd7w36n2RrgQ6221242
u6XHh/D//dZUPT3stgY9pwlweh3f8/qw9HYP/tVqtuE/8P8wjNdvzpqA++5g
MIAnPXiyjZDxnji4KR/LxB3JxZtTb9gEBHjd/gBehj2G/zTbfmvWgt3pD3pe
bwKLGPe6rSlACEPDzFWIkCvzugh9c+Z5AHh7MBWAexJwh6np4ziNo1lNE5Ez
gq2SKARi9WDHENPw/xOAZtwHvAvgm3AW+q1+F8AEHAPYsBJYGzzcb3ut5gyJ
/++W6QWiqKq4e/crWVafuNo3+zuzuNreYOpPujMgNR/ooTtsT/pw9Pqj3ngM
HKIznAGmm50ubFGzM2sN+zC0P/NgR4FteJ73v83iag36k67vjzqdCXAd4GLd
Tq/XHnaARfbbLeCinVZvMGz740kfqHjW9vtA8qPuCE7HuD0emhZXtzkZev1J
vzUBdtkb9PrjwQzOyxjPTH8ErHI0hOFbbeC57WHfm4xmcFRGzT5Qeqs/Gbf/
bXH92+L6t8X1W9Wuf6sW1+P/DfbVv56FwKydS1iVw5iorrSjZw6TIKn3oFl2
B8Mp6qvw74JODhr5DD4PSPHtoDoM+rAHKjQobc2pgHEIv/uDWbPXm4y8WXPQ
ATWvDVrWGMRetzWaDEGH87sjINzWbDhteu1e3/cnoFaO/N4AvhTD4Jj9/sT3
RhNQ9OBEjEedYRPsDw80tMFo1h/6I6/XmXQAyHa364GKP2l7HRCrneF02pHD
TFpDHw2J2QjEpj+e9eCIjQeg6o2nw9bUa49mo8HE89ow3qDvgTbpgRXgw6qa
I88btrpimLHX7U77rQ7YFx14C1St9mjQ98fd5tgf971etwmAtcE4GbQmoFT6
rdZwMJ54Plg23tD3JW46486o20Y1GGyozqBt2lAP0XrFMIfM7H2WFKAd1INm
pw2GjMRNH3YB3oVv/SZgFyygzmQ66Y16HR8ebU6mY7877vX86cAfTkdg27W7
/d5kOoM9G/U7clH+YDj2gDBAcW51JqNJuz3qjJujUccbo3HlA0ydwbjfns1A
J2yByQdb1CEzqgP2mIJGWledPgAuDaZmpcFUMCuaw85koHDDJlPPNJnQWAKb
A7DC1kBnBOoT2ADwnxlSGSC7BZ87qOw/+eW2dW/Q/jjbul1lWx/XqJ3DKvU+
imDV1Pl43bQLpuIv0EidMVmso/Fv1bbudP8ZtjWQYPthRjPOPBj4CNLPs27R
uHX2WbfH5u8CnE6v+fHSwWHx8HFywdGC4edLBMcWCT9PFjhlYfBwKeBUi4GH
8X/n4xysfM6dw6z/MM93jjP9/dzeeRi7r+bzzsMZfZnDOz+PxRPD/f/SxY4E
t9IAAA==

-->

</rfc>

