<?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-update-management-07" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SUIT Update Management Extensions">Update Management Extensions for Software Updates for Internet of Things (SUIT) Manifests</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="July" day="08"/>

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

    <abstract>


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

  <middle>


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

<t>Full management of software updates for unattended, connected devices requires a cooperation between the update author(s) and management, distribution, policy enforcement, and auditing systems. This specification provides the extensions to the SUIT manifest (<xref target="I-D.ietf-suit-manifest"/>) that enable an author to coordinate with these other systems. These extensions enable authors to instruct devices to examine update priority, local update authorisation, update lifetime, and system properties. They also enable devices to report and distributors to collect Software Bill of Materials information.</t>

<t>Extensions in this specification are OPTIONAL to implement and OPTIONAL to include in manifests unless otherwise designated.</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 proposed standard. While this software update mechanism is designed with the limitations and requirements of IoT devices in mind, there is no restriction preventing its use outside of IoT devices or for non-software payloads.</t>
</list></t>

</section>
<section anchor="extension-metadata"><name>Extension Metadata</name>

<t>Some additional metadata makes management of SUIT updates easier:</t>

<t><list style="symbols">
  <t>A semantic version number for the update represented by the manifest</t>
  <t>Concise Software Identifiers (CoSWID), Concise Module Identifiers (CoMID), Concise Reference Integrity Manifest (CoRIM)</t>
  <t>Text descriptions of requirements</t>
  <t>Text description of the current versions of components</t>
</list></t>

<section anchor="suit-set-version"><name>suit-set-version</name>

<t>This metadata encodes a semantic version for the component set that the manifest updates, including any dependencies. This enables version comparisons to be performed on manifests. Non-manifest images encode their versions independently of the manifest.</t>

<t>The version SHOULD be encoded as a semantic version, according to <xref target="semver"/>. There are several restrictions to these composition rules: alphanumeric pre-release indicators are not permitted. Because suit-set-version is a machine-readable parameter for determining compatibility and because <xref target="semver"/> mandates that the build-number is ignored, build numbers SHOULD NOT be included.</t>

<t>The composition of suit-set-version is the same as <xref target="suit-parameter-version"/>.</t>

<t>If a build number is desired, it SHOULD be included via <xref target="text-current-version"/>.</t>

</section>
<section anchor="manifest-digest-coswid"><name>suit-coswid</name>

<t>A CoSWID can enable Software Bill-of-Materials use-cases. A CoMID can enable monitoring of expected hardware. A CoRIM (which may contain both CoSWID and CoMID) can enable both of these use-cases, but can also act as the transport for expected values to an attestation Verifier (see <xref target="RFC9334"/>). Tightly coupling update and attestation ensures that verification infrastructure always knows what software to expect on each device.</t>

<t>suit-coswid is a member of the suit-manifest. It contains a Concise Software Identifier (CoSWID) as defined in <xref target="I-D.ietf-sacm-coswid"/>. This element SHOULD be made severable so that it can be discarded by the Recipient or an intermediary if it is not required by the Recipient.</t>

<t>suit-coswid typically requires no processing by the Recipient. However all Recipients MUST NOT fail if a suit-coswid is present.</t>

<t>suit-coswid is RECOMMENDED to implement and RECOMMENDED to include in manifests.</t>

<t>RFC EDITOR NOTE: Remove following 2 notes.</t>

<t><list style="symbols">
  <t>NOTE: CoRIM comprises a list of CoSWIDs and a list of CoMIDs, so it may be preferable to a CoSWID.</t>
  <t>NOTE: CoMID may be a preferable alternative to Vendor ID/Class ID, however it consumes more bandwidth, so a UUID based on CoMID may be appropriate.</t>
</list></t>

</section>
<section anchor="text-version-required"><name>text-version-required</name>

<t>suit-text-version-required is used to represent a version-based dependency on suit-parameter-version as described in <xref target="suit-parameter-version"/> and <xref target="suit-condition-version"/>. To describe a version dependency, a Manifest Author SHOULD populate the suit-text map with a SUIT_Component_Identifier key for the dependency component, and place in the corresponding map a suit-text-version-required key with a free text expression that is representative of the version constraints placed on the dependency. This text SHOULD be expressive enough that a device operator can be expected to understand the dependency. This is a free text field and there are no specific formatting rules.</t>

<t>By way of example only, to express a dependency on a component "['x', 'y']", where the version should be any v1.x later than v1.2.5, but not v2.0 or above, the author would add the following structure to the suit-text element. Note that this text is in cbor-diag notation.</t>

<figure><artwork><![CDATA[
[h'78',h'79'] : {
    7 : ">=1.2.5,<2"
}
]]></artwork></figure>

</section>
<section anchor="text-current-version"><name>text-current-version</name>

<t>suit-text-current-version is used to provide human-readable version information equivalent to <xref target="suit-set-version"/>. This metadata MAY have a version listed for each or any component. The Manifest Processor MUST NOT consume this version; it is for human readability only.</t>

<t>To describe a version, a Manifest Author SHOULD populate the suit-text map with a SUIT_Component_Identifier key for the dependency component, and place in the corresponding map a suit-text-current-version key with a free text version that is representative of the version of the component. This text SHOULD be expressive enough that a device operator can be expected to understand the version. This is a free text field and there are no specific formatting rules.</t>

<t>It is RECOMMENDED that the Manifest Author use a Semantic Version (<xref target="semver"/>) in the free-text field. Unlike <xref target="suit-set-version"/>, the full semantic version specification can be used.</t>

</section>
</section>
<section anchor="extension-parameters"><name>Extension Parameters</name>

<t>Several parameters are needed to define the behaviour of the commands specified in <xref target="extension-commands"/>. These parameters follow the same considerations as defined in Section 8.4.8 of <xref target="I-D.ietf-suit-manifest"/>.</t>

<texttable>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Structure</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>Use Before</c>
      <c>suit-parameter-use-before</c>
      <c><xref target="suit-parameter-use-before"/></c>
      <c>Minimum Battery</c>
      <c>suit-parameter-minimum-battery</c>
      <c><xref target="suit-parameter-minimum-battery"/></c>
      <c>Update Priority</c>
      <c>suit-parameter-update-priority</c>
      <c><xref target="suit-parameter-update-priority"/></c>
      <c>Version</c>
      <c>suit-parameter-version</c>
      <c><xref target="suit-parameter-version"/></c>
      <c>Wait Info</c>
      <c>suit-parameter-wait-info</c>
      <c><xref target="suit-parameter-wait-info"/></c>
      <c>Component Metadata</c>
      <c>suit-parameter-component-metadata</c>
      <c><xref target="suit-parameter-component-metadata"/></c>
</texttable>

<section anchor="suit-parameter-use-before"><name>suit-parameter-use-before</name>

<t>An expiry date for the use of the manifest encoded as the positive integer number of seconds since 1970-01-01. Implementations that use this parameter MUST use a 64-bit internal representation of the integer. Used with <xref target="suit-condition-use-before"/>.</t>

</section>
<section anchor="suit-parameter-minimum-battery"><name>suit-parameter-minimum-battery</name>

<t>This parameter sets the minimum battery level in mWh. This parameter is encoded as a positive integer. Used with suit-condition-minimum-battery (<xref target="suit-condition-minimum-battery"/>).</t>

</section>
<section anchor="suit-parameter-update-priority"><name>suit-parameter-update-priority</name>

<t>This parameter sets the priority of the update. This parameter is encoded as an integer. It is used along with suit-condition-update-authorized (<xref target="suit-condition-update-authorized"/>) to ask an application for permission to initiate an update. This does not constitute a privilege inversion because an explicit request for authorization has been provided by the Update Authority in the form of the suit-condition-update-authorized command.</t>

<t>Applications MAY define their own meanings for the update priority. For example, critical reliability and vulnerability fixes might be given negative numbers, while bug fixes might be given small positive numbers, and feature additions might be given larger positive numbers, which allows an application to make an informed decision about whether and when to allow an update to proceed.</t>

</section>
<section anchor="suit-parameter-version"><name>suit-parameter-version</name>

<t>Indicates allowable versions for the specified component. One version comparison can be made with each suit-parameter-version. This parameter is compared with version asserted by the current component when suit-condition-version (<xref target="suit-condition-version"/>) is invoked. The current component may assert the current version in many ways, including storage in a parameter storage database, in a metadata object, or in a known location within the component itself.</t>

<t>Each suit-parameter-version contains a comparison operator and a version, according to the following CDDL:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Parameter_Version_Match = [
    suit-condition-version-comparison-type:
        SUIT_Condition_Version_Comparison_Types,
    suit-condition-version-comparison-value:
        SUIT_Condition_Version_Comparison_Value
]
]]></sourcecode></figure>

<t>The comparison type can be:</t>

<t><list style="symbols">
  <t>Greater.</t>
  <t>Greater or Equal.</t>
  <t>Equal.</t>
  <t>Lesser or Equal.</t>
  <t>Lesser.</t>
</list></t>

<t>The version comparison value is encoded as a CBOR list of integers. Comparisons are done on each integer in sequence. Comparison stops after all integers in the list defined by the manifest have been consumed OR after an non-equal comparison has occurred. For example, if the manifest defines a comparison, "Equal [1]", then this will match all version sequences starting with 1. If a manifest defines both "Greater or Equal [1,0]" and "Lesser [1,10]", then it will match versions 1.0.x up to, but not including 1.10.</t>

<t>suit-parameter-version is OPTIONAL to implement.</t>

<section anchor="suit-parameter-version-semantic-versioning-encoding-guidelines"><name>suit-parameter-version Semantic Versioning encoding guidelines</name>

<t>The encoded versions SHOULD be semantic versions (See <xref target="semver"/>). For example,</t>

<t><list style="symbols">
  <t>1.2.3 = [1,2,3].</t>
  <t>1.2-rc.3 = [1,2,-1,3].</t>
  <t>1.2-beta = [1,2,-2].</t>
  <t>1.2-alpha = [1,2,-3].</t>
  <t>1.2.3-alpha.4 = [1,2,3,-3,4].</t>
</list></t>

<t>Versions SHOULD be composed of:</t>

<t><list style="numbers">
  <t>A release version encoded as a sequence of 1 to 3 positive integers</t>
  <t>An optional pre-release indicator encoded as a negative integer, followed by zero or more positive integers</t>
</list></t>

<t>While <xref target="semver"/> allows a build number, it mandates that the build number is ignored. Because suit-parameter-version exists solely to enable the Manifest Processor to make a decision about version compatibility, build numbers SHOULD NOT be included.</t>

<t>In <xref target="semver"/>,</t>

<t><list style="numbers">
  <t>The first integer represents the major number. This indicates breaking changes to the component.</t>
  <t>The second integer represents the minor number. This is typically reserved for new features or large, non-breaking changes.</t>
  <t>The third integer is the patch version. This is typically reserved for bug fixes.</t>
</list></t>

<t>The pre-release indicator SHOULD NOT appear as element 0. The pre-release indicator is encoded as:</t>

<t><list style="symbols">
  <t>-1: Release Candidate</t>
  <t>-2: Beta</t>
  <t>-3: Alpha</t>
</list></t>

<t>This allows these releases to compare correctly with final releases. For example, Version 2.0, RC1 should be lower than Version 2.0.0 and higher than any Version 1.x. By encoding RC as -1, this works correctly: [2,0,-1,1] compares as lower than [2,0,0]. Similarly, beta (-2) is lower than RC and alpha (-3) is lower than RC.</t>

</section>
</section>
<section anchor="suit-parameter-wait-info"><name>suit-parameter-wait-info</name>

<t>suit-directive-wait (<xref target="suit-directive-wait"/>) directs the manifest processor to pause until a specified event occurs. The suit-parameter-wait-info encodes the parameters needed for the directive.</t>

<t>The exact implementation of the pause is implementation-defined. For example, this could be done by blocking on a semaphore, registering an event handler and suspending the manifest processor, polling for a notification, or aborting the update entirely, then restarting when a notification is received.</t>

<t>suit-parameter-wait-info is encoded as a map of wait events. When ALL wait events are satisfied, the Manifest Processor continues. The wait events currently defined are described in the following table.</t>

<texttable>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>suit-wait-event-authorization</c>
      <c>int</c>
      <c>Same as suit-parameter-update-priority</c>
      <c>suit-wait-event-power</c>
      <c>int</c>
      <c>Wait until power state</c>
      <c>suit-wait-event-network</c>
      <c>int</c>
      <c>Wait until network state</c>
      <c>suit-wait-event-other-device-version</c>
      <c>See below</c>
      <c>Wait for other device to match version</c>
      <c>suit-wait-event-time</c>
      <c>uint</c>
      <c>Wait until time (seconds since 1970-01-01)</c>
      <c>suit-wait-event-time-of-day</c>
      <c>uint</c>
      <c>Wait until seconds since 00:00:00 Local Time</c>
      <c>suit-wait-event-time-of-day-utc</c>
      <c>uint</c>
      <c>Wait until seconds since 00:00:00 UTC</c>
      <c>suit-wait-event-day-of-week</c>
      <c>uint</c>
      <c>Wait until days since Sunday Local Time</c>
      <c>suit-wait-event-day-of-week-utc</c>
      <c>uint</c>
      <c>Wait until days since Sunday UTC</c>
</texttable>

<t>suit-wait-event-other-device-version reuses the encoding of suit-parameter-version-match. It is encoded as a sequence that contains an implementation-defined bstr identifier for the other device, and a list of one or more SUIT_Parameter_Version_Match.</t>

</section>
<section anchor="suit-parameter-component-metadata"><name>suit-parameter-component-metadata</name>

<t>In some instances, a system may need to know the file metadata for a component. This metadata can include:</t>

<t><list style="symbols">
  <t>creator</t>
  <t>creation time</t>
  <t>modification time</t>
  <t>default permissions (rwx)</t>
  <t>a map of user/permission pairs</t>
  <t>a map of role/permission pairs</t>
  <t>a map of group/permission pairs</t>
  <t>file type</t>
</list></t>

<t>Component metadata is applied at time of fetch, copy, or write; see <xref target="I-D.ietf-suit-manifest"/>, sections 8.4.10.4, 8.4.10.5, 8.4.10.6. Therefore, the component metadata parameter must be set in advance of the component being fetched, copied into, or written.</t>

<section anchor="suit-meta-creator"><name>Creator</name>

<t>Sometimes, management of file systems requires that the creator of each file is correctly recorded. Because the default creator of files will be the update agent, this can obscure the actual creator of each file. The Creator metadata element allows overriding the default behaviour and setting the correct creator.</t>

<t>The creator is defined as follows:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_meta_actor_id = UUID_Tagged / bstr / str / int
UUID_Tagged = #6.37(bstr)
]]></sourcecode></figure>

<t>The actor ID can be whatever is most appropriate for any given system. For example, the actor ID might be a string (e.g., username), integer (e.g., POSIX userid), or UUID (e.g., TEEP TA UUID).</t>

</section>
<section anchor="creation-modification-time"><name>Creation &amp; Modification Time</name>

<t>The creation and modification times are defined by CBOR time types. These are defined in <xref target="RFC8949"/>, Section 3.4.2. The CBOR tag is REQUIRED when either creation or modification time are provided.</t>

<figure><sourcecode type="CDDL"><![CDATA[
suit-meta-modification-time => #6.1(uint)
suit-meta-creation-time => #6.1(uint)
]]></sourcecode></figure>

</section>
<section anchor="component-default-permissions"><name>Component Default Permissions</name>

<t>Typical permissions management systems require read, write, and execute permissions that are applied to all users who do not have their own explicit permissions. These are the default permissions for the current component. Default permissions are described by the following CDDL:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_meta_permissions = uint .bits SUIT_meta_permission_bits
SUIT_meta_permission_bits = &(
    r: 2, w: 1, x: 0,
    * $$SUIT_meta_permission_bits_extensions
)
]]></sourcecode></figure>

</section>
<section anchor="user-role-group-permissions"><name>User, Role, Group permissions</name>

<t>Many filesystems have users and groups. Additionally some have roles. Actors that have these associations can have specific permissions associated with them for each component. Each of these sets of permissions is defined the same way: with a map of actor identifiers to permissions.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_meta_permission_map = {
    + SUIT_meta_actor_id => SUIT_meta_permissions
}
]]></sourcecode></figure>

<t>The SUIT_meta_actor_id is the same as defined for Creator, <xref target="suit-meta-creator"/>.</t>

</section>
<section anchor="file-type"><name>File Type</name>

<t>File Type typically identifies whether a file is a directory, regular file, or symbolic link. If not specified, File Type defaults to regular file.</t>

<t>This enables specific management operations for SUIT command sequences:</t>

<t><list style="symbols">
  <t>To create a directory  <list style="symbols">
      <t>Set the Component Index to the Component Identifier of the directory to be created</t>
      <t>Set the Component metadata, including the file type for directory</t>
      <t>Set suit-parameter-content to an empty bstr</t>
      <t>Invoke suit-directive-write</t>
    </list></t>
  <t>To create a symbolic link  <list style="symbols">
      <t>Set the Component Index to the Component Identifier of the link to be created</t>
      <t>Set the Component metadata, including the file type for symbolic link</t>
      <t>Set suit-parameter-content to the link target</t>
      <t>Invoke suit-directive-write</t>
    </list></t>
</list></t>

<t>For example, the following Payload Fetch &amp; Install sequences will create a new /usr/local/bin directory, download https://cdn.example/example3.bin into a new file: /usr/local/bin/example3, then create a symlink at /usr/bin/example that points to /usr/local/bin/example3.</t>

<t><list style="symbols">
  <t>Common has components for:  <list style="symbols">
      <t>/usr/bin/example</t>
      <t>/usr/local/bin</t>
      <t>/usr/local/bin/example3</t>
    </list></t>
  <t>Payload fetch:  <list style="symbols">
      <t>set component index = 1</t>
      <t>set parameters:      <list style="symbols">
          <t>content = h''</t>
          <t>metadata = {file-type: directory}</t>
        </list></t>
      <t>write</t>
      <t>set component index = 2</t>
      <t>set URI = "https://cdn.example/example3.bin"</t>
      <t>fetch</t>
      <t>condition image digest</t>
    </list></t>
  <t>Install:  <list style="symbols">
      <t>set component index = 0</t>
      <t>set parameters:      <list style="symbols">
          <t>content = "/usr/local/bin/example3"</t>
          <t>metadata = {file-type: symlink}</t>
        </list></t>
      <t>write</t>
    </list></t>
</list></t>

</section>
</section>
</section>
<section anchor="extension-commands"><name>Extension Commands</name>

<t>The following table defines the semantics of the commands defined in this specification in the same way as in the Abstract Machine Description, Section 6.4, of <xref target="I-D.ietf-suit-manifest"/>.</t>

<texttable>
      <ttcol align='left'>Command Name</ttcol>
      <ttcol align='left'>CDDL Identifier</ttcol>
      <ttcol align='left'>Semantic of the Operation</ttcol>
      <c>Use Before</c>
      <c>suit-condition-use-before</c>
      <c>assert(now() &lt; current.params[use-before])</c>
      <c>Check Image Not Match</c>
      <c>suit-condition-image-not-match</c>
      <c>assert(not binary-match(digest(current), current.params[digest]))</c>
      <c>Check Minimum Battery</c>
      <c>suit-condition-minimum-battery</c>
      <c>assert(battery &gt;= current.params[minimum-battery])</c>
      <c>Check Update Authorized</c>
      <c>suit-condition-update-authorized</c>
      <c>assert( isAuthorized( current.params[priority]))</c>
      <c>Check Version</c>
      <c>suit-condition-version</c>
      <c>assert(version_check(current, current.params[version]))</c>
      <c>Wait For Event</c>
      <c>suit-directive-wait</c>
      <c>until event(arg), wait</c>
      <c>Override Multiple</c>
      <c>suit-directive-override-multiple</c>
      <c>components[i].params[k] := v for-each k,v in d for-each i,d in arg</c>
      <c>Copy Params</c>
      <c>suit-directive-copy-params</c>
      <c>current.params[k] = components[i].params[k] for k in l for i,l in arg</c>
</texttable>

<section anchor="suit-condition-use-before"><name>suit-condition-use-before</name>

<t>Verify that the current time is BEFORE the specified time. suit-condition-use-before is used to specify the last time at which an update should be installed. The recipient evaluates the current time against the suit-parameter-use-before parameter (<xref target="suit-parameter-use-before"/>), which must have already been set as a parameter, encoded as seconds after 1970-01-01 00:00:00 UTC. Timestamp conditions MUST be evaluated in 64 bits, regardless of encoded CBOR size. suit-condition-use-before is OPTIONAL to implement.</t>

</section>
<section anchor="suit-condition-image-not-match"><name>suit-condition-image-not-match</name>

<t>Verify that the current component does not match the suit-parameter-image-digest (Section 8.4.8.6 of <xref target="I-D.ietf-suit-manifest"/>). If no digest is specified, the condition fails. suit-condition-image-not-match is OPTIONAL to implement.</t>

</section>
<section anchor="suit-condition-minimum-battery"><name>suit-condition-minimum-battery</name>

<t>suit-condition-minimum-battery provides a mechanism to test a Recipient's battery level before installing an update. This condition is primarily for use in primary-cell applications, where the battery is only ever discharged. For batteries that are charged, suit-directive-wait is more appropriate, since it defines a "wait" until the battery level is sufficient to install the update. suit-condition-minimum-battery is specified in mWh. suit-condition-minimum-battery is OPTIONAL to implement. suit-condition-minimum-battery consumes suit-parameter-minimum-battery (<xref target="suit-parameter-minimum-battery"/>).</t>

</section>
<section anchor="suit-condition-update-authorized"><name>suit-condition-update-authorized</name>

<t>Request authorization from the application and fail if not authorized. This can allow a user to decline an update. suit-parameter-update-priority (<xref target="suit-parameter-update-priority"/>) provides an integer priority level that the application can use to determine whether or not to authorize the update. Priorities are application defined. suit-condition-update-authorized is OPTIONAL to implement.</t>

</section>
<section anchor="suit-condition-version"><name>suit-condition-version</name>

<t>suit-condition-version allows comparing versions of firmware. Verifying image digests is preferred to version checks because digests are more precise. suit-condition-version examines a component's version against the version info specified in suit-parameter-version (<xref target="suit-parameter-version"/>).</t>

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

<t>suit-directive-wait directs the manifest processor to pause until a specified event occurs. Some possible events include:</t>

<t><list style="numbers">
  <t>Authorization</t>
  <t>External power</t>
  <t>Network availability</t>
  <t>Other device firmware version</t>
  <t>Time</t>
  <t>Time of day</t>
  <t>Day of week</t>
</list></t>

</section>
<section anchor="suit-directive-override-multiple"><name>suit-directive-override-multiple</name>

<t>This directive enables setting parameters for multiple components at the same time. This allows a small reduction in encoding overhead:</t>

<t><list style="symbols">
  <t>without override-multiple, the encoding for each component consists of:  <list style="symbols">
      <t>set-component-index (2 bytes)</t>
      <t>override-parameters (1 byte + parameter map)</t>
    </list></t>
  <t>with override-multiple, the encoding for each component consists of:  <list style="symbols">
      <t>the component index key (1 byte)</t>
      <t>the parameter map</t>
    </list></t>
</list></t>

<t>Override-multiple requires the command (1-2 bytes) and one additional map to hold the parameter sets (1 byte). For one component, there is no savings. For multiple components, there is an encoding savings of 2 bytes per component.</t>

<t>Proper structuring of code should ensure that override-multiple follows a code-path nearly identical to set-component-index + override-parameters.</t>

<t>This command is purely an encoding alias for set-component-index and override-parameters. The component index is set to the last component listed in the override-multiple argument when override-multiple completes.</t>

<t>The following CDDL defines the argument for suit-directive-override-multiple:</t>

<t><spanx style="verb">CDDL
SUIT_Override_Mult_Arg = {
    uint =&gt; {+ $$SUIT_Parameters}
}
</spanx></t>

</section>
<section anchor="suit-directive-copy-params"><name>suit-directive-copy-params</name>

<t>suit-directive-copy-params enables a manifest author to specify one or more components to copy parameters from, and a list of parameters to copy from each specified source component.</t>

<t>The behaviour is exactly the same as override parameters, but with parameter values defined in existing components. Parameters are only copied between identical keys (no copying from URI to digest, for example).</t>

<t>For each entry in the map, the manifest processor sets the source component to be the component identified by the index contained in the map key. For each parameter identified in the copy list, the manifest processor copies the parameter from the source component to the current component.</t>

<t>The following CDDL defines the argument for suit-directive-copy-params:</t>

<t><spanx style="verb">CDDL
SUIT_Directive_Copy_Params = {
    uint =&gt; [+ int]
}
</spanx></t>

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

<t>IANA is requested to:</t>

<t><list style="symbols">
  <t>allocate key 14 in the SUIT Envelope registry for suit-coswid</t>
  <t>allocate key 14 in the SUIT Manifest registry for suit-coswid</t>
  <t>allocate key 7 in the SUIT Component Text registry for suit-text-version-required</t>
  <t>allocate the commands and parameters as shown in the following tables</t>
</list></t>

<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>4</c>
      <c>Use Before</c>
      <c><xref target="suit-condition-use-before"/></c>
      <c>25</c>
      <c>Image Not Match</c>
      <c><xref target="suit-condition-image-not-match"/></c>
      <c>26</c>
      <c>Minimum Battery</c>
      <c><xref target="suit-condition-minimum-battery"/></c>
      <c>27</c>
      <c>Update Authorized</c>
      <c><xref target="suit-condition-update-authorized"/></c>
      <c>28</c>
      <c>Version</c>
      <c><xref target="suit-condition-version"/></c>
      <c>29</c>
      <c>Wait For Event</c>
      <c><xref target="suit-directive-wait"/></c>
      <c>34</c>
      <c>Override Multiple</c>
      <c><xref target="suit-directive-override-multiple"/></c>
      <c>35</c>
      <c>Copy Params</c>
      <c><xref target="suit-directive-copy-params"/></c>
</texttable>

</section>
<section anchor="suit-parameters"><name>SUIT Parameters</name>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>4</c>
      <c>Use Before</c>
      <c><xref target="suit-parameter-use-before"/></c>
      <c>26</c>
      <c>Minimum Battery</c>
      <c><xref target="suit-parameter-minimum-battery"/></c>
      <c>27</c>
      <c>Update Priority</c>
      <c><xref target="suit-parameter-update-priority"/></c>
      <c>28</c>
      <c>Version</c>
      <c><xref target="suit-parameter-version"/></c>
      <c>29</c>
      <c>Wait Info</c>
      <c><xref target="suit-parameter-wait-info"/></c>
</texttable>

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

<t>This document extends the SUIT manifest specification. A detailed security treatment can be found in the architecture <xref target="RFC9019"/> and in the information model <xref target="I-D.ietf-suit-information-model"/> documents.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>




<reference anchor='I-D.ietf-sacm-coswid'>
   <front>
      <title>Concise Software Identification Tags</title>
      <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'>
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Jessica Fitzgerald-McKay' initials='J.' surname='Fitzgerald-McKay'>
         <organization>National Security Agency</organization>
      </author>
      <author fullname='Charles Schmidt' initials='C.' surname='Schmidt'>
         <organization>The MITRE Corporation</organization>
      </author>
      <author fullname='David Waltermire' initials='D.' surname='Waltermire'>
         <organization>National Institute of Standards and Technology</organization>
      </author>
      <date day='24' month='February' year='2023'/>
      <abstract>
	 <t>ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles.  SWID tag representations can be too large for devices with network and storage constraints.  This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags.  CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.
	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-sacm-coswid-24'/>
   
</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='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='RFC8949'>
  <front>
    <title>Concise Binary Object Representation (CBOR)</title>
    <author fullname='C. Bormann' initials='C.' surname='Bormann'/>
    <author fullname='P. Hoffman' initials='P.' surname='Hoffman'/>
    <date month='December' year='2020'/>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
      <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
    </abstract>
  </front>
  <seriesInfo name='STD' value='94'/>
  <seriesInfo name='RFC' value='8949'/>
  <seriesInfo name='DOI' value='10.17487/RFC8949'/>
</reference>

<reference anchor='RFC9334'>
  <front>
    <title>Remote ATtestation procedureS (RATS) Architecture</title>
    <author fullname='H. Birkholz' initials='H.' surname='Birkholz'/>
    <author fullname='D. Thaler' initials='D.' surname='Thaler'/>
    <author fullname='M. Richardson' initials='M.' surname='Richardson'/>
    <author fullname='N. Smith' initials='N.' surname='Smith'/>
    <author fullname='W. Pan' initials='W.' surname='Pan'/>
    <date month='January' year='2023'/>
    <abstract>
      <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9334'/>
  <seriesInfo name='DOI' value='10.17487/RFC9334'/>
</reference>


<reference anchor="semver" target="https://semver.org">
  <front>
    <title>Semantic Versioning 2.0.0</title>
    <author >
      <organization></organization>
    </author>
    <date year="2013" month="June" day="18"/>
  </front>
</reference>


<reference anchor='RFC2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.ietf-suit-information-model'>
   <front>
      <title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</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>
      <date day='8' month='July' year='2021'/>
      <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.

 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='Internet-Draft' value='draft-ietf-suit-information-model-13'/>
   
</reference>




    </references>


<section anchor="full-cddl"><name>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[
$$unseverable-manifest-member-extensions //= (
    suit-current-version => \
        bstr .cbor SUIT_Condition_Version_Comparison_Value
)
$$SUIT_severable-members-extensions //= (
    suit-coswid => bstr)
;    suit-coswid => bstr .cbor concise-swid-tag)

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

SUIT_Condition //= (
    suit-condition-image-not-match,   SUIT_Rep_Policy)
SUIT_Condition //= (
    suit-condition-use-before,        SUIT_Rep_Policy)
SUIT_Condition //= (
    suit-condition-minimum-battery,   SUIT_Rep_Policy)
SUIT_Condition //= (
    suit-condition-update-authorized, SUIT_Rep_Policy)
SUIT_Condition //= (
    suit-condition-version,           SUIT_Rep_Policy)

SUIT_Directive //= (
    suit-directive-wait,              SUIT_Rep_Policy)

SUIT_Directive //= (
    suit-directive-override-multiple, SUIT_Override_Mult_Arg)
SUIT_Directive //=(
    suit-directive-copy-params,       SUIT_Directive_Copy_Params)


SUIT_Override_Mult_Arg = {
    + uint => {+ $$SUIT_Parameters}
}
SUIT_Directive_Copy_Params = {
    + uint => [+ int]
}

SUIT_Wait_Event = { + SUIT_Wait_Events }

SUIT_Wait_Events //= (suit-wait-event-authorization => int)
SUIT_Wait_Events //= (suit-wait-event-power => int)
SUIT_Wait_Events //= (suit-wait-event-network => int)
SUIT_Wait_Events //= (suit-wait-event-other-device-version
    => SUIT_Wait_Event_Argument_Other_Device_Version)
SUIT_Wait_Events //= (suit-wait-event-time => uint); Timestamp
SUIT_Wait_Events //= (suit-wait-event-time-of-day
    => uint); Time of Day (seconds since 00:00:00)
SUIT_Wait_Events //= (suit-wait-event-day-of-week
    => uint); Days since Sunday

SUIT_Wait_Event_Argument_Other_Device_Version = [
    other-device: bstr,
    other-device-version: [ + SUIT_Parameter_Version_Match ]
]

SUIT_Parameters //= (suit-parameter-use-before => uint)
SUIT_Parameters //= (suit-parameter-minimum-battery => uint)
SUIT_Parameters //= (suit-parameter-update-priority => int)
SUIT_Parameters //= (suit-parameter-version =>
    bstr .cbor SUIT_Parameter_Version_Match)
SUIT_Parameters //= (suit-parameter-wait-info =>
    bstr .cbor SUIT_Wait_Event)
SUIT_Parameters //= (suit-parameter-component-metadata =>
    bstr .cbor SUIT_Component_Metadata)

SUIT_Parameter_Version_Match = [
    suit-condition-version-comparison-type:
        SUIT_Condition_Version_Comparison_Types,
    suit-condition-version-comparison-value:
        SUIT_Condition_Version_Comparison_Value
]
SUIT_Condition_Version_Comparison_Types /=
    suit-condition-version-comparison-greater
SUIT_Condition_Version_Comparison_Types /=
    suit-condition-version-comparison-greater-equal
SUIT_Condition_Version_Comparison_Types /=
    suit-condition-version-comparison-equal
SUIT_Condition_Version_Comparison_Types /=
    suit-condition-version-comparison-lesser-equal
SUIT_Condition_Version_Comparison_Types /=
    suit-condition-version-comparison-lesser

suit-condition-version-comparison-greater = 1
suit-condition-version-comparison-greater-equal = 2
suit-condition-version-comparison-equal = 3
suit-condition-version-comparison-lesser-equal = 4
suit-condition-version-comparison-lesser = 5

SUIT_Condition_Version_Comparison_Value = [+int]


SUIT_Component_Metadata = {
    ? suit-meta-default-permissions => SUIT_meta_permissions,
    ? suit-meta-user-permissions => SUIT_meta_permission_map,
    ? suit-meta-group-permissions => SUIT_meta_permission_map,
    ? suit-meta-role-permissions => SUIT_meta_permission_map,
    ? suit-meta-file-type => SUIT_Filetype,
    ? suit-meta-modification-time => CBOR_Datetime,
    ? suit-meta-creation-time => CBOR_Datetime,
    ? suit-meta-creator => SUIT_meta_actor_id,
    * $$SUIT_Component_Metadata_Extensions
}

SUIT_meta_permissions = uint .bits SUIT_meta_permission_bits
SUIT_meta_permission_bits = &(
    write_attr_ex: 13,
    read_attr_ex: 12, 
    sync: 11,
    delete: 10,
    recurse_delete: 9,
    write_attr: 8,
    change_owner: 7,
    change_perm: 6,
    read_perm: 5,
    read_attr: 4,
    creatdir_append: 3,
    list_read: 2,
    create_write: 1,
    traverse_exec: 0,
    * $$SUIT_meta_permission_bits_extensions
)

SUIT_meta_permission_map = {
    + SUIT_meta_actor_id => SUIT_meta_permissions
}

SUIT_meta_actor_id = UUID_Tagged / bstr / str / int
UUID_Tagged = #6.37(bstr)



$$suit-text-component-key-extensions //= (
    suit-text-version-required => tstr)
$$suit-text-component-key-extensions //= (
    suit-text-current-version => tstr)

suit-set-version = 6
suit-coswid = 14
suit-condition-use-before        = 4
suit-condition-image-not-match          = 25
suit-condition-minimum-battery          = 26
suit-condition-update-authorized        = 27
suit-condition-version                  = 28

suit-directive-wait                     = 29
suit-directive-override-multiple        = 34
suit-directive-copy-params              = 35

suit-wait-event-authorization        = 1
suit-wait-event-power                = 2
suit-wait-event-network              = 3
suit-wait-event-other-device-version = 4
suit-wait-event-time                 = 5
suit-wait-event-time-of-day          = 6
suit-wait-event-day-of-week          = 7

suit-parameter-use-before        = 4
suit-parameter-minimum-battery   = 26
suit-parameter-update-priority   = 27
suit-parameter-version           = 28
suit-parameter-wait-info         = 29

suit-text-version-required      = 7
suit-text-current-version       = 8
]]></sourcecode></figure>

</section>


  </back>

<!-- ##markdown-source:
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
umb4v8000ISAegAA

-->

</rfc>

