<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.5) -->


<!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-10" category="std" consensus="true" submissionType="IETF" 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="December" day="12"/>

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

    <abstract>


<?line 53?>
<t>This specification describes extensions to the SUIT manifest format. 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>


<?line 61?>

<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. A Recipient that encounters a command or parameter it does not implement MUST reject the manifest as defined in <xref target="I-D.ietf-suit-manifest"/> Section 8.4.2, ensuring that update behaviour is never ambiguous. Conversely, when a deployment relies on update-management behaviour defined here, the manifest author MUST ensure that targeted recipients advertise support for the required extensions (for example via enablement policy or capability negotiation) before shipping such manifests so that required commands will be honoured rather than rejected.</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.
<?line -6?></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 MUST be encoded as a semantic version, according to <xref target="semver"/>, so that recipients can compare manifests deterministically. Deployments that cannot supply a semantic version without loss of fidelity MUST omit suit-set-version and convey any human-facing numbering via text-current-version (<xref target="text-current-version"/>). 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 MUST 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, the manifest author MAY include it 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 while preserving the manifest signature. Implementations that cannot support severable elements MAY include suit-coswid non-severably, but MUST ensure that Recipients can still process the manifest.</t>

<t>suit-coswid typically requires no processing by the Recipient. However, 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"/>. When a Manifest Author needs to communicate such a dependency to operators, the 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 so that field personnel can validate compliance. Deployments that provide operator guidance exclusively through other channels MAY omit this field. This text SHOULD be expressive enough that a device operator can be expected to understand the dependency; predefined tokens MAY be used when supporting documentation ensures equivalent clarity. Expressions in this field MUST be encoded as UTF-8 text limited to printable characters (Unicode general categories L, N, P, or Zs) and SHOULD use simple relational operators (for example <spanx style="verb">&gt;</spanx>, <spanx style="verb">&gt;=</spanx>, <spanx style="verb">&lt;</spanx>, <spanx style="verb">&lt;=</spanx>, <spanx style="verb">=</spanx>) so that automated tooling can perform lint checks. 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 so that operators can reconcile machine and human-readable records. Deployments that provide human-facing version information through other configuration channels MAY omit this text. This text SHOULD be expressive enough that a device operator can be expected to understand the version; environments that rely on catalog identifiers MAY use those identifiers when supporting documentation provides the necessary context. Values in this field MUST be encoded as UTF-8 text limited to printable characters, and implementations MUST treat suit-set-version and suit-parameter-version as authoritative when a discrepancy exists. Recipients MUST NOT interpret this text as executable code or markup and MUST treat it as display-only information. 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 to keep human-readable and machine-readable versions aligned. 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>

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

<t>The encoded versions follow semantic versioning (see <xref target="semver"/>).</t>

<t>Versions are composed of:</t>

<t><list style="numbers" type="1">
  <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 MUST NOT be included.</t>

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

<t><list style="numbers" type="1">
  <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 MUST NOT appear as element 0. The pre-release indicator is encoded as:</t>

<t><list style="symbols">
  <t>-1: Release Candidate (RC)</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>

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

</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. All wait events MUST be satisfied before 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>Unless otherwise stated, all string values in this structure MUST be encoded as UTF-8 without control characters (Unicode general categories Cc or Cf) and SHOULD be limited to human-readable identifiers such as names or POSIX-style paths. Binary values conveyed via <spanx style="verb">bstr</spanx> MUST be well-formed for the consuming platform (for example, a UUID or permissions bitmap) and MUST NOT exceed the minimum length required to represent the value canonically.</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>

<t>All commands defined in this specification are OPTIONAL to implement. A Recipient that encounters a command it does not implement MUST reject the manifest as defined in <xref target="I-D.ietf-suit-manifest"/> Section 8.4.2, ensuring that update behaviour is never ambiguous.</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" type="1">
  <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>

<t>The free-text fields introduced in Sections <xref target="text-version-required"/> and <xref target="text-current-version"/> are intended solely for human consumption. Recipients MUST treat those values as untrusted input: they MUST NOT evaluate the text, execute embedded markup, or override machine-readable decisions derived from suit-set-version or suit-parameter-version. Implementations SHOULD bound the length of displayed text to mitigate interface flooding and log injection.</t>

<t>Component metadata (<xref target="suit-parameter-component-metadata"/>) can expose operator identifiers, file paths, or other locally meaningful strings. Deployments SHOULD validate these values against local policy before applying them, and MUST handle missing or malformed metadata defensively so that the update agent does not escalate privileges or disclose sensitive information inadvertently.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-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-suit-manifest">
   <front>
      <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
         <organization>Inria</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <date day="28" month="May" year="2025"/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an Internet of Things (IoT) device), where to find
   the code/data, the devices to which it applies, and cryptographic
   information protecting the manifest.  Software updates and Trusted
   Invocation both tend to use sequences of common operations, so the
   manifest encodes those sequences of operations, rather than declaring
   the metadata.

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



    </references>

</references>


<?line 490?>

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

-->

</rfc>

