<?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-08" 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="2025" month="March" day="03"/>

    <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 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.</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>This draft makes use of terminology defined in <xref target="RFC9019"/> and <xref target="I-D.ietf-suit-manifest"/>.</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) <xref target="RFC9393"/></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 suit-parameter-version (<xref target="suit-parameter-version"/>).</t>

<t>If a build number is desired, it SHOULD be included via text-current-version (<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. 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="RFC9393"/>. 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>

</section>
<section anchor="text-version-required"><name>suit-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><sourcecode type="CDDL"><![CDATA[
["x","y"] : {
    7 : ">=1.2.5,<2"
}
]]></sourcecode></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 suit-set-version (<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 suit-set-version (<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 Extension Commands (<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='RFC9393'>
  <front>
    <title>Concise Software Identification Tags</title>
    <author fullname='H. Birkholz' initials='H.' surname='Birkholz'/>
    <author fullname='J. Fitzgerald-McKay' initials='J.' surname='Fitzgerald-McKay'/>
    <author fullname='C. Schmidt' initials='C.' surname='Schmidt'/>
    <author fullname='D. Waltermire' initials='D.' surname='Waltermire'/>
    <date month='June' 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='RFC' value='9393'/>
  <seriesInfo name='DOI' value='10.17487/RFC9393'/>
</reference>


<reference anchor='I-D.ietf-rats-corim'>
   <front>
      <title>Concise Reference Integrity Manifest</title>
      <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'>
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Thomas Fossati' initials='T.' surname='Fossati'>
         <organization>Linaro</organization>
      </author>
      <author fullname='Yogesh Deshpande' initials='Y.' surname='Deshpande'>
         <organization>arm</organization>
      </author>
      <author fullname='Ned Smith' initials='N.' surname='Smith'>
         <organization>Intel</organization>
      </author>
      <author fullname='Wei Pan' initials='W.' surname='Pan'>
         <organization>Huawei Technologies</organization>
      </author>
      <date day='18' month='October' year='2024'/>
      <abstract>
	 <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether or not to engage in secure interactions with it.  Evidence
   about trustworthiness can be rather complex and it is deemed
   unrealistic that every Relying Party is capable of the appraisal of
   Evidence.  Therefore that burden is typically offloaded to a
   Verifier.  In order to conduct Evidence appraisal, a Verifier
   requires not only fresh Evidence from an Attester, but also trusted
   Endorsements and Reference Values from Endorsers and Reference Value
   Providers, such as manufacturers, distributors, or device owners.
   This document specifies the information elements for representing
   Endorsements and Reference Values in CBOR format.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-rats-corim-06'/>
   
</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='24' month='February' year='2025'/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an Internet of Things (IoT) device), where to find
   the code/data, the devices to which it applies, and cryptographic
   information protecting the manifest.  Software updates and Trusted
   Invocation both tend to use sequences of common operations, so the
   manifest encodes those sequences of operations, rather than declaring
   the metadata.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-manifest-33'/>
   
</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="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>

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




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

-->

</rfc>

