<?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-11" 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="2026" month="May" day="26"/>

    <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 (SBOM) 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>

<t>In addition, this document uses the following term:</t>

<t><list style="symbols">
  <t><em>Primary cell</em>: a single-use battery chemistry that can be discharged but not recharged, making energy budgeting a one-way operation.</t>
</list></t>

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

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

<t><list style="symbols">
  <t>A semantic version number for the update represented by the manifest</t>
  <t>Concise Software Identifiers (CoSWID) <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>Manifest Authors SHOULD encode suit-set-version whenever the release can be represented as a semantic version so that Recipients can compare manifests deterministically. The version MUST be encoded as a semantic version, according to <xref target="semver"/>, to preserve that deterministic ordering. 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 (SBOM) 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 used 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 is optional extension metadata and typically requires no processing by the Recipient. Recipients that do not understand or do not use optional extension metadata are not required to interpret the CoSWID content. A Recipient MUST NOT fail solely because a well-formed, policy-permitted suit-coswid field is present. A Recipient MAY still fail or reject the manifest when the suit-coswid field or its digest is malformed, when local policy rejects the metadata, when processing would exhaust available resources, when validation of processed CoSWID metadata fails, or when a manifest relies on unsupported critical behaviour. This requirement does not imply that every Recipient implements CoSWID processing.</t>

<t>suit-coswid is RECOMMENDED to implement and RECOMMENDED to include in manifests because management systems commonly need a durable software identity after update installation. CoSWID and related Software Bill of Materials metadata can support inventory, vulnerability management, compliance checks, and reconciliation between the installed update state and management-system records. This recommendation is scoped to the operational and security value of identifying installed software; it does not imply that the presence of SBOM metadata proves that the software is free of vulnerabilities or policy issues. Other extension metadata is not generally RECOMMENDED unless required by deployment policy or by a SUIT profile.</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. Implementations that render this text SHOULD escape or filter it to prevent markup or control-code injection. This is a free text field and there are no additional specific formatting rules beyond the requirements above.</t>

<t>By way of example only, to express a dependency on a component "['x', 'y']", where the intended version is 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. Implementations that render this text SHOULD sanitize, escape, or otherwise filter it before presentation. This is a free text field and there are no additional specific formatting rules beyond the requirements above.</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 non-negative 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 non-negative 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 the version asserted by the current component when suit-condition-version (<xref target="suit-condition-version"/>) is invoked. The current component can 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"/>). Manifest Authors SHOULD keep their encoding aligned with Semantic Versioning so that Recipients can compare versions deterministically; if another numbering scheme is required, the sequence of integers encoded here MUST still preserve release ordering (for example, <spanx style="verb">[2025,12,6]</spanx> for a calendar-based release).</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 non-negative integers (allowing zero values as defined by <xref target="semver"/>)</t>
  <t>An optional pre-release indicator encoded as a negative integer, followed by zero or more non-negative 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 is 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 needs 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, and 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 / tstr / 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 = &(
    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
)
]]></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 is to 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>Implementations can structure code so 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 allocate the commands, parameters, and metadata values shown in the following tables.</t>

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

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>14</c>
      <c>CoSWID</c>
      <c><xref target="manifest-digest-coswid"/></c>
</texttable>

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

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>6</c>
      <c>Set Version</c>
      <c><xref target="suit-set-version"/></c>
      <c>14</c>
      <c>CoSWID</c>
      <c><xref target="manifest-digest-coswid"/></c>
</texttable>

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

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>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>
      <c>30</c>
      <c>Component Metadata</c>
      <c><xref target="suit-parameter-component-metadata"/></c>
</texttable>

</section>
<section anchor="suit-component-text-values"><name>SUIT Component Text Values</name>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>7</c>
      <c>Component Version Required</c>
      <c><xref target="text-version-required"/></c>
      <c>8</c>
      <c>Current Version</c>
      <c><xref target="text-current-version"/></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 523?>

<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-set-version =>
        bstr .cbor SUIT_Condition_Version_Comparison_Value
)
$$SUIT_severable-members-extensions //= (
    suit-coswid => bstr .cbor concise-swid-tag)

$$severable-manifest-members-choice-extensions //= (
    suit-coswid => bstr .cbor concise-swid-tag / 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_Events //= (suit-wait-event-time-of-day-utc
    => uint); Time of Day UTC (seconds since 00:00:00)
SUIT_Wait_Events //= (suit-wait-event-day-of-week-utc
    => uint); Days since Sunday UTC

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 => #6.1(uint),
    ? suit-meta-creation-time => #6.1(uint),
    ? suit-meta-creator => SUIT_meta_actor_id,
    * $$SUIT_Component_Metadata_Extensions
}

suit-meta-default-permissions = 1
suit-meta-user-permissions = 2
suit-meta-group-permissions = 3
suit-meta-role-permissions = 4
suit-meta-file-type = 5
suit-meta-modification-time = 6
suit-meta-creation-time = 7
suit-meta-creator = 8

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 / tstr / int
UUID_Tagged = #6.37(bstr)

SUIT_Filetype /= suit-filetype-regular
SUIT_Filetype /= suit-filetype-directory
SUIT_Filetype /= suit-filetype-symlink

suit-filetype-regular = 1
suit-filetype-directory = 2
suit-filetype-symlink = 3



$$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-wait-event-time-of-day-utc      = 8
suit-wait-event-day-of-week-utc      = 9

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-parameter-component-metadata = 30

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

</section>


  </back>

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

-->

</rfc>

