<?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.43 (Ruby 4.0.6) -->


<!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-17" 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="November" day="02"/>

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

    <abstract>


<?line 58?>
<t>This document specifies extensions to the SUIT manifest format. These extensions allow a Manifest
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 66?>

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

<t>Full management of software updates for unattended, connected devices requires cooperation between Manifest Authors and management, distribution, policy enforcement, and auditing systems. This specification provides extensions to the SUIT manifest <xref target="I-D.ietf-suit-manifest"/> that enable Manifest Authors to coordinate with these other systems. These extensions enable Manifest 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. Knowledge of Recipient support for update-management extensions is deployment-specific and may be established out of band.</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 document uses SUIT terminology, including Manifest Author and Recipient, as defined in <xref target="I-D.ietf-suit-manifest"/>.</t>

<t>This document uses semantic versioning terminology from <xref target="semver"/>, including major, minor, patch, pre-release, and build metadata. The constrained integer encoding in <xref target="version-encoding"/> uses three non-negative release-number integers, a mandatory release-stage integer, and a pre-release end marker when applicable. It supports only the pre-release classes defined there and excludes build metadata from machine-readable comparisons. The integer-array comparison in <xref target="suit-parameter-version"/> also supports other version-numbering schemes and prefix selectors.</t>

<t>Deployment profile: A specification or agreement for a particular SUIT deployment that selects options left open by this document and defines their local mappings. A deployment profile can be a published specification or configuration agreed among Manifest Authors, Recipients, and the management system; it is not a new wire-format object defined by this document.</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 by the constrained version encoding defined in <xref target="suit-parameter-version"/> so that Recipients can compare manifests deterministically. Deployments that cannot supply such a version without loss of fidelity MUST omit suit-set-version and convey any human-facing numbering via suit-text-current-version (<xref target="text-current-version"/>). Because suit-set-version is a machine-readable parameter for determining compatibility and build metadata is ignored for semantic-version precedence, build metadata MUST NOT be included.</t>

<t>suit-set-version encodes a version using SUIT_Condition_Version_Comparison_Value, the version-value array defined for suit-parameter-version in <xref target="suit-parameter-version"/>. It does not include a SUIT_Condition_Version_Comparison_Types comparison operator. When using the constrained Semantic Versioning mapping, suit-set-version MUST contain a complete version encoding as defined in <xref target="version-encoding"/>, rather than a prefix selector.</t>

<t>If build metadata is desired, the Manifest Author MAY include it via suit-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. An implementation that cannot generate severable elements MAY include suit-coswid using the non-severable CDDL alternative.</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>A Recipient that claims support for suit-coswid MUST accept the non-severable form when it is well-formed and permitted by local policy. A Recipient that does not consume CoSWID metadata need not interpret the CoSWID fields beyond any validation needed to establish well-formedness. 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 communicates such a dependency to operators through the manifest, the Manifest Author MUST populate the suit-text map with a SUIT_Component_Identifier key for the dependency component and place a suit-text-version-required key with a free-text expression in the corresponding map. Deployments that provide operator guidance exclusively through other channels MAY omit this field. The expression is intended to provide enough context for a device operator to understand and validate the dependency; predefined tokens can be used when supporting documentation provides equivalent clarity.</t>

<t>Expressions in this field MUST be encoded as UTF-8 text containing only characters in Unicode general categories L, M, N, P, S, or Zs. The following ASCII strings are defined to represent the five comparison operators defined by suit-parameter-version: <spanx style="verb">&gt;</spanx> (Greater), <spanx style="verb">&gt;=</spanx> (Greater or Equal), <spanx style="verb">=</spanx> (Equal), <spanx style="verb">&lt;=</spanx> (Lesser or Equal), and <spanx style="verb">&lt;</spanx> (Lesser). No other comparison-operator syntax is defined by this document. When a Manifest Author uses comparison-operator syntax in this field, the Manifest Author MUST use these strings. All other content is free text, and there are no additional formatting rules. A Manifest Processor MUST NOT interpret or otherwise process the content of this field. An implementation that renders this text MUST do so in a manner that prevents markup, control-code, log, or user-interface injection.</t>

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

<figure><sourcecode type="cbor-diag"><![CDATA[
['x','y'] : {
    7 : ">=1.2.5,<2"
}
]]></sourcecode></figure>

</section>
<section anchor="text-current-version"><name>suit-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>When a Manifest Author describes a version through the manifest, the Manifest Author MUST populate the suit-text map with a SUIT_Component_Identifier key for the component and place a suit-text-current-version key with a free-text version in the corresponding map. Deployments that provide human-facing version information exclusively through other channels MAY omit this field. The text is intended to provide enough context for a device operator to understand the version and reconcile machine-readable and human-readable records; environments that rely on catalog identifiers can use those identifiers when supporting documentation provides the necessary context. Values in this field MUST be encoded as UTF-8 text containing only characters in Unicode general categories L, M, N, P, S, or Zs. Implementations MUST treat suit-set-version and suit-parameter-version as authoritative when a discrepancy exists. A Manifest Processor MUST NOT interpret or otherwise process the content of this field and MUST treat it as display-only information. An implementation that renders this text MUST do so in a manner that prevents markup, control-code, log, or user-interface injection. This is a free-text field, and there are no additional formatting rules beyond the character restrictions above.</t>

<t>When the component uses Semantic Versioning, the Manifest Author SHOULD use the component's full Semantic Version in this field so that human-readable and machine-readable records remain aligned. A deployment that uses another versioning scheme MAY instead use its customary human-readable form. Unlike suit-set-version (<xref target="suit-set-version"/>), the full Semantic Versioning specification <xref target="semver"/> can be used in this field.</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>Numerically smaller values indicate higher update priority. Recipients and applications that compare suit-parameter-update-priority values MUST use this ordering. Local policy MAY assign deployment-specific meanings to particular values or ranges. 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 <xref target="RFC8949"/> array of integers. Comparisons are done on each integer in sequence. Comparison stops after all integers in the array defined by the manifest have been consumed OR after a 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 all compared integers are equal, the comparison result is Equal. If a manifest defines both "Greater or Equal [1,0]" and "Lesser [1,10]", then it will match versions 1.0.x up to, but not including 1.10.</t>

<t>If the component's version array is exhausted before comparison stops, the Manifest Processor MUST use zero for each subsequent component integer required by the comparison.</t>

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

<t>Manifest Authors MUST use the constrained Semantic Versioning encoding summarized in <xref target="conventions-and-terminology"/> unless the component uses another numbering scheme that cannot be represented faithfully. When another numbering scheme is used, the sequence of integers encoded here MUST preserve release ordering (for example, <spanx style="verb">[2025,12,6]</spanx> for a calendar-based release).</t>

<t>The following rules define a complete version encoding for this mapping. They apply both to the version asserted by a component for comparison and to complete versions encoded in a manifest:</t>

<t><list style="numbers" type="1">
  <t>The first three integers MUST encode the major, minor, and patch numbers, in that order. All three integers MUST be present and non-negative, including when their values are zero. If a deployment accepts abbreviated human-readable versions, omitted minor or patch numbers MUST be filled with zero before encoding. For example, 1.2 and 1.2.0 both encode the release-number portion as [1,2,0].</t>
  <t>The fourth integer MUST encode the release stage, using the values below. It MUST be present for both final releases and pre-releases.</t>
  <t>A final release MUST end immediately after its release-stage integer, which is zero.</t>
  <t>A pre-release MUST encode zero or more non-negative numeric suffix integers after its release-stage integer, followed by the end marker -24. Numeric suffix integers MUST be preserved in order, including trailing zero values. The end marker MUST be the final integer in the complete encoding and MUST NOT be used as a release-stage integer or a suffix integer.</t>
</list></t>

<t>Semantic Versioning permits arbitrary pre-release identifiers and build metadata. This specification only defines encodings for alpha, beta, and release-candidate pre-release classes. Because suit-parameter-version exists solely to enable the Manifest Processor to make a decision about version compatibility, and because build metadata is ignored for semantic-version precedence, build metadata MUST NOT be included.</t>

<t>In semantic versioning terminology:</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 release-stage integer is encoded as:</t>

<t><list style="symbols">
  <t>0: Final Release</t>
  <t>-1: Release Candidate (RC)</t>
  <t>-2: Beta</t>
  <t>-3: Alpha</t>
</list></t>

<t>The mandatory release-stage integer allows pre-releases to compare correctly with final releases without changing the integer-array comparison. For example, Version 2.0, RC1 is lower than Version 2.0.0 and higher than any Version 1.x: [2,0,0,-1,1,-24] compares as lower than [2,0,0,0]. Similarly, beta (-2) is lower than RC, and alpha (-3) is lower than beta for the same release-number portion.</t>

<t>The end marker -24 sorts before every permitted numeric suffix integer. Consequently, a pre-release with no numeric suffix sorts before the same pre-release with a numeric suffix, including zero. For example, [1,2,0,-2,-24] (1.2.0-beta) compares as lower than [1,2,0,-2,0,-24] (1.2.0-beta.0). The end marker has a one-byte CBOR encoding and leaves the values -4 through -23 available for future release-stage assignments; this document does not define those assignments.</t>

<t>Pre-release identifiers other than alpha, beta, and release candidate cannot be represented directly in this encoding. Deployments that need other identifiers MUST either map them to one of the defined classes while preserving the intended ordering or omit the machine-readable version field and convey the identifier as suit-text-current-version (<xref target="text-current-version"/>).</t>

<t>For example:</t>

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

<t>A manifest comparison value using this mapping MUST be either a complete version encoding or a non-empty prefix of a complete version encoding. A prefix selector intentionally omits subsequent integers; it does not omit zero values from within the selected prefix. The comparison rule in <xref target="suit-parameter-version"/> is unchanged: an Equal comparison against a complete encoding selects that exact version, while an Equal comparison against a shorter prefix selects all complete encodings with that prefix. For example:</t>

<t><list style="symbols">
  <t>Equal [1] selects all versions with major number 1, including pre-releases.</t>
  <t>Equal [1,2] selects all versions with major number 1 and minor number 2, including pre-releases.</t>
  <t>Equal [1,2,0] selects the 1.2.0 release and all its pre-releases.</t>
  <t>Equal [1,2,0,-2] selects the 1.2.0 beta family, with or without numeric suffixes.</t>
  <t>Equal [1,2,0,-2,-24] selects only 1.2.0-beta.</t>
  <t>Equal [1,2,3,0] selects only the final release 1.2.3. A Greater or Equal comparison against this encoding excludes 1.2.3-alpha.4 because its release-stage integer is lower.</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>Local Time means the Recipient's configured local civil time zone at the time the wait event is evaluated, including any daylight-saving-time rules available to the Recipient. If the local time zone changes while a Recipient is waiting, the Recipient reevaluates the wait event using the updated time-zone configuration. During daylight-saving-time transitions, a skipped local time is treated as satisfied at the first representable local time after the skipped interval, and a repeated local time is satisfied at its first occurrence. Recipients that do not have configured local-time and daylight-saving-time information MUST treat local-time wait events as unsupported. Manifest Authors SHOULD use the UTC wait events when a deployment does not have a common local-time policy.</t>

<t>suit-wait-event-other-device-version reuses the encoding of SUIT_Parameter_Version_Match. It is encoded as a sequence that contains an opaque bstr identifier for the other device and a list of one or more SUIT_Parameter_Version_Match. This document does not assign a namespace for the identifier. For interoperable use, the deployment profile MUST define the identifier namespace and byte-string encoding, the scope within which identifiers are unique, the mechanism by which the Recipient obtains the referenced device's version, and that device's version encoding. For example, a profile might use a fixed-width binary device identifier or the binary encoding of a management-inventory key. Manifests using this event are not portable between deployments that use different definitions. A Recipient MUST treat suit-wait-event-other-device-version as unsupported when these definitions are unavailable.</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 text-string values in this structure MUST be encoded as UTF-8 text containing only characters in Unicode general categories L, M, N, P, S, or Zs. Text-string values are intended for 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>

<t>The following map entries are excerpted from SUIT_Component_Metadata:</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,
    createdir_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>Both the Component Identifier naming the symbolic link and the link target carried in suit-parameter-content are untrusted inputs subject to local authorization. Authorization to create the link does not by itself authorize access to every object that the link could reference.</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.</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 a primary cell is a single-use, non-rechargeable battery and energy budgeting is therefore a one-way operation. 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. Smaller integer values indicate higher priority; deployment policy defines the action taken for a given priority. 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>

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Override_Mult_Arg = {
    + uint => {+ $$SUIT_Parameters}
}
]]></sourcecode></figure>

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

<figure><sourcecode type="cddl"><![CDATA[
SUIT_Directive_Copy_Params = {
    + uint => [+ int]
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="operational-and-deployment-considerations"><name>Operational and Deployment Considerations</name>

<t>This document defines how update-management information is encoded in a
SUIT manifest. Some of that information depends on local device
configuration and therefore cannot be fully defined by the manifest
itself. For each extension used by a deployment, the deployment
profile MUST define the applicable local interpretation and the
source of any information needed to evaluate it.</t>

<t>For example, a deployment profile may indicate:</t>

<t><list style="symbols">
  <t>how actor identifiers and permission values are mapped to the
Recipient's local access-control mechanisms;</t>
  <t>where battery-level information is obtained, the required accuracy and
freshness of that information, and the behaviour when it is
unavailable;</t>
  <t>the meanings assigned to update-priority values and the authorization
policy associated with those values;</t>
  <t>which local events indicate that time, network, power, authorization,
and other wait conditions have been satisfied; and</t>
  <t>the identifier namespace, version-information source, and version
encoding used for other-device version conditions, as described in
<xref target="suit-parameter-wait-info"/>.</t>
</list></t>

<t>A management interface SHOULD report which update-management extensions a
Recipient supports. It SHOULD also report whether an update was rejected, has failed, or is
waiting, together with the command, parameter, or event responsible for
that state. Without such information, an operator might be unable
to distinguish an unsupported manifest from a failed or
indefinitely waiting update.</t>

<t>For updates that can enter a waiting state, the deployment specification
MUST define whether that state persists across a Recipient restart and
how an operator can cancel the wait. It MUST also define whether a
deployment-specific timeout applies. A deployment MAY permit an
indefinite wait, but that choice needs to be explicit so that management
systems and operators can distinguish intended behaviour from a stalled
update.</t>

<t>These deployment requirements do not introduce additional fields or
change the SUIT wire format. They define the local configuration and
management behaviour needed to use the extensions in this document
interoperably.</t>

</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 in the registries of the Software Update for the Internet of Things (SUIT) registry group <xref target="IANA-SUIT"/>.</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. The extensions defined here are optional and do not make support for update-management extensions mandatory for implementations of the base SUIT manifest specification. A detailed security treatment can be found in the architecture <xref target="RFC9019"/> and in the information model <xref target="RFC9124"/> documents.</t>

<t>The free-text fields introduced by <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>The suit-coswid element can expose detailed software identity and SBOM information. Such information can help authorized operators assess inventory, vulnerability exposure, and compliance, but the same information can also help an attacker or unauthorized observer quickly identify software components and versions on a device. Deployments SHOULD treat manifests containing suit-coswid as sensitive metadata, limit access to authorized parties, and consider using severable suit-coswid content so that intermediaries and Recipients that do not need this metadata can discard it without invalidating the manifest signature.</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>

<t>Recipients that map Component Identifiers to file-system paths MUST defend against path traversal and symbolic-link races. Before a fetch, copy, or write, the Recipient MUST ensure that the resolved destination remains within storage authorized for the current component and manifest authority. This requirement applies both to pre-existing links and to links created by an earlier command or dependency manifest. Path validation and the file-system operation MUST be performed atomically with respect to namespace changes, or using descriptor-relative or non-link-following operations that provide an equivalent guarantee. A Recipient MUST NOT follow a symbolic link across component or authority boundaries unless local policy explicitly authorizes both the resolved target and that use of the link.</t>

</section>
<section anchor="contributors"><name>Contributors</name>

<t>Hannes Tschofenig contributed the operational and deployment considerations in this document.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors would like to thank Roman Danyliw, Mohamed Boucadair, Mahesh Jethanandani, Andy Newton, and Éric Vyncke for their detailed IESG reviews and constructive suggestions.</t>

<t>The authors also thank Hannes Tschofenig for the IoT Directorate review, Roni Even for the GEN-ART review, Niclas Comstedt for the Operations Directorate review, and Russ Housley for the ARTART review. Their comments substantially improved the clarity, interoperability, operational guidance, and security considerations of this document.</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="18" month="June" year="2026"/>
      <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-37"/>
   
</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="RFC8610">
  <front>
    <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="C. Vigano" initials="C." surname="Vigano"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2019"/>
    <abstract>
      <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8610"/>
  <seriesInfo name="DOI" value="10.17487/RFC8610"/>
</reference>

<reference anchor="semver" target="https://semver.org/spec/v2.0.0.html">
  <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="RFC9124">
  <front>
    <title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <date month="January" year="2022"/>
    <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.</t>
      <t>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="RFC" value="9124"/>
  <seriesInfo name="DOI" value="10.17487/RFC9124"/>
</reference>
<reference anchor="RFC9019">
  <front>
    <title>A Firmware Update Architecture for Internet of Things</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="D. Brown" initials="D." surname="Brown"/>
    <author fullname="M. Meriac" initials="M." surname="Meriac"/>
    <date month="April" year="2021"/>
    <abstract>
      <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
      <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9019"/>
  <seriesInfo name="DOI" value="10.17487/RFC9019"/>
</reference>

<reference anchor="IANA-SUIT" target="https://www.iana.org/assignments/suit/suit.xhtml">
  <front>
    <title>Software Update for the Internet of Things (SUIT)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 615?>

<section anchor="full-cddl"><name>Full CDDL</name>

<t>The following definitions use the CDDL notation specified in <xref target="RFC8610"/> and MUST be appended to the SUIT Manifest CDDL. The SUIT CDDL is defined in Appendix A of <xref target="I-D.ietf-suit-manifest"/>. The combined schema also requires the COSE CDDL definitions used by the SUIT Manifest and the CoSWID CDDL definitions in Section 2.10 of <xref target="RFC9393"/>, which define concise-swid-tag.</t>

<t>When assembling these definitions into a single CDDL schema, rename the CoSWID-local rule named label and all references to that rule within the CoSWID definitions to coswid-label, to avoid a rule-name collision with COSE. This local rule-name change does not change the encoded data.</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,
    createdir_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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
zivXhlApp9iSOi2DC4UPRvt7DCQqOoePD7HGAvsNxJJJF8hjUVUQp4ZNOtNb
slF4XVzkwv+j8kmS/sbxtwwAzw6DvYtUCvMxfEMmZVS/uKCjnJOmrQVwXaaf
3KuA95Djt0FtZJloCAEFExDM1NuAJMmrMqMadNB8WPCly3nOd1YQy8CFFv7n
gZIv2fLrLwn1lmB1zdIdHoFb+Xe/WxVOKnXbDpIdlgkeBkrxvXtPzI6/jC7U
lp5841K8qOrIaHwhScS3uYJuN5GokAAMGr3eMrxIzk++CUeMsWA3ga43Tq4e
srH/145i7hnxzVNyHQzannm30w02yYHe2/fWLs/fENPcvXVf3mI2aN0B+Ev6
igxpvw6u2AI6+OV9ueJy/l+nryhOIu6sbTUNe/pVnfUECvaHRe32dNnbY2Br
HYTg9UaAAKS/PgzrFwaYcDs0gJ6zhRo+1uoM/mltul/Kcdte4hfGwmIyt2zL
hXs/r41W7f28Vn1l+2iNtAaF7wH3geSFcwr0PX9OjZQg3nZALbBDtXW+9hlM
n9FcCvEqmEFPyF0xmninvxbvbWEMKupGgzyP6+h+PthYo3cL6FjQ9LcDv2ew
zhS4FPBnbba7LTZEnyPiLoPOc0WrI/ODHqhNl9C+T94nSedUB7PszcnTud2y
ZZwI85nN40AcPW+3ax3JGrGcsWFhbtu7L6m+oX+/wbftsqfw5oa+u6W5lPP8
v3rn8C3hMPee3BKSGd/U8E/rmO/z/e27/yd1m9MNu//c3jflMfWsHpXV+My1
piIYt1xA+PbwFt+GqwJN7t+6CXz8VSzVb0RvPJxfkmzkmsTH28lTYSU9Kd80
bBV421DPatBpjQl/t2mKNbS6rSl25Zc3x5pkv7y1qwPimmFNK3zQ/fbG2oRx
g631CXs/Lqs2+FolLCoI193V8xe+HJxmo23eWT0RG3ZPkX/T9ijCb1h/Re54
gQGPty6meZBsXDvzMH6HS2UeJf+/OuF//OqEv31Bvd+6Bm3SOvrAjfhgTuXB
UEra3fSZr/h2w4dSc0gOajyMP6Ddnv3pjDujc5mQ1Qlfc/SEkwMv7XqLrak3
EAM3oKHl+cVdxrf6uR6Trh1Pj7/avcx+h0kG6oP86+GkccUH4789+OqmCg7h
xw86w3dysP3HDzdlVnf+wceP+vOF+/7B14/jj7updu7jw/vbstWing+/6t6e
0TaAuE/3N9xf1IV2451F8eC3u7jDbXBsjegO/dXWK4WCDx9svdon+PDhjVcK
yYePbrzfRz583LlQq4vTfs6b1V8TYuhmNdeEuNnVZ9s792jzXV896Lhd2TSH
ezLTftLSXuBeWuHXFtPI/g90uTRq1MEAAA==

-->

</rfc>

