<?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-12" 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="June" day="11"/>

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

<t>Recipients that do not use suit-coswid are not required to interpret the CoSWID content. When suit-coswid is severable, such Recipients or intermediaries can discard it without invalidating the manifest signature. When suit-coswid is not severable, a Recipient MUST NOT fail solely because a well-formed, policy-permitted suit-coswid field is present.</t>

<t>Recipients that use or validate suit-coswid 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. These requirements do not imply that every Recipient implements CoSWID processing.</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 525?>

<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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
t33tV+62N3iQV/i9xcIF/xdxTNbjVZMAAA==

-->

</rfc>

