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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<?rfc toc_levels="4"?>

<rfc ipr="trust200902" docName="draft-ietf-suit-mti-09" category="std" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="MTI SUIT Algorithms">Mandatory-to-Implement Algorithms for Authors and Recipients of Software Update for the Internet of Things 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="Ø." surname="Rønningstad" fullname="Øyvind Rønningstad">
      <organization>Nordic Semiconductor</organization>
      <address>
        <email>oyvind.ronningstad@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Tsukamoto" fullname="Akira Tsukamoto">
      <organization>ALAXALA Networks Corp.</organization>
      <address>
        <email>akira.tsukamoto@alaxala.com</email>
      </address>
    </author>

    <date year="2025" month="March" day="03"/>

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

    <abstract>


<t>This document specifies cryptographic algorithm profiles to be used with the SUIT manifest (see draft-ietf-suit-manifest).  These are the mandatory-to-implement algorithms to ensure interoperability.</t>



    </abstract>



  </front>

  <middle>


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

<t>This document specifies algorithm profiles for SUIT manifest parsers and authors to ensure better interoperability. These profiles apply specifically to a constrained node software update use case. Mandatory algorithms may change over time due to an evolving threat landscape. Algorithms are grouped into algorithm profiles to account for this. Profiles may be deprecated over time. SUIT will define five choices of Mandatory To Implement (MTI) profile specifically for constrained node software update. These profiles are:</t>

<t><list style="symbols">
  <t>One Symmetric MTI profile</t>
  <t>Two "Current" Constrained Asymmetric MTI profiles</t>
  <t>Two "Current" AEAD Asymmetric MTI profiles</t>
  <t>One "Future" Constrained Asymmetric MTI profile</t>
</list></t>

<t>At least one MTI algorithm in each category MUST be FIPS qualified.</t>

<t>Because SUIT presents an asymmetric communication profile, where manifest authors have unlimited resources and manifest recipients have constrained resources, the requirements for Recipients and Authors are different.</t>

<t>Recipients MAY choose which MTI profile they wish to implement. It is RECOMMENDED that they implement the "Future" Asymmetric MTI profile. Recipients MAY implement any number of other profiles. Recipients MAY choose not to implement an encryption algorithm if encrypted payloads will never be used.</t>

<t>Authors MUST implement all MTI profiles. Authors MAY implement any number of other profiles.</t>

<t>Authenticated Encryption with Additional Data (AEAD) is preferred over un-authenticated encryption. Where possible an AEAD profile SHOULD be selected. Certain constrained IoT applications require on-the-fly decryption, which necessitates a non-AEAD encryption algorithm. If the application is not a constrained device, the two AEAD profiles are RECOMMENDED.</t>

<t>Other use-cases of the SUIT Manifest (<xref target="I-D.ietf-suit-manifest"/>) MAY define their own MTI algorithms.</t>

</section>
<section anchor="algorithms"><name>Algorithms</name>

<t>The algorithms that form a part of the profiles defined in this document are grouped into:</t>

<t><list style="symbols">
  <t>Digest Algorithms</t>
  <t>Authentication Algorithms</t>
  <t>Key Exchange Algorithms (OPTIONAL)</t>
  <t>Encryption Algorithms (OPTIONAL)</t>
</list></t>

</section>
<section anchor="profiles"><name>Profiles</name>

<t>Recognized profiles are defined below.</t>

<section anchor="suit-sha256-hmac-a128kw-a128ctr"><name> Symmetric MTI profile: suit-sha256-hmac-a128kw-a128ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>HMAC-256</c>
      <c>5</c>
      <c>Key Exchange</c>
      <c>A128KW Key Wrap</c>
      <c>-3</c>
      <c>Encryption</c>
      <c>A128CTR</c>
      <c>-65534</c>
</texttable>

</section>
<section anchor="suit-sha256-es256-ecdh-a128ctr"><name>Current Constrained Asymmetric MTI Profile 1: suit-sha256-es256-ecdh-a128ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>ES256</c>
      <c>-7</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>A128CTR</c>
      <c>-65534</c>
</texttable>

</section>
<section anchor="suit-sha256-eddsa-ecdh-a128ctr"><name>Current Constrained Asymmetric MTI Profile 2: suit-sha256-eddsa-ecdh-a128ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>EDDSA</c>
      <c>-8</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>A128CTR</c>
      <c>-65534</c>
</texttable>

</section>
<section anchor="suit-sha256-es256-ecdh-a128gcm"><name>Current AEAD Asymmetric MTI Profile 1: suit-sha256-es256-ecdh-a128gcm</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>ES256</c>
      <c>-7</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>A128GCM</c>
      <c>1</c>
</texttable>

</section>
<section anchor="suit-sha256-eddsa-ecdh-chacha-poly"><name>Current AEAD Asymmetric MTI Profile 2: suit-sha256-eddsa-ecdh-chacha-poly</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>EDDSA</c>
      <c>-8</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>ChaCha20/Poly1305</c>
      <c>24</c>
</texttable>

</section>
<section anchor="suit-sha256-hsslms-a256kw-a256ctr"><name>Future Constrained Asymmetric MTI Profile 1: suit-sha256-hsslms-a256kw-a256ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>HSS-LMS</c>
      <c>-46</c>
      <c>Key Exchange</c>
      <c>A256KW</c>
      <c>-5</c>
      <c>Encryption</c>
      <c>A256CTR</c>
      <c>-65532</c>
</texttable>

<t>This draft does not specify a particular set of HSS-LMS parameters. Deep trees are RECOMMENDED due to key lifetimes in IoT devices.</t>

</section>
</section>
<section anchor="reporting-profiles"><name>Reporting Profiles</name>

<t>When using Manifest Recipients Response communication, particularly data structures that are designed for reporting of update capabilities, status, progress, or success, the same profile as the is used on the SUIT manifest SHOULD be used. There are cases where this is not possible, such as suit-sha256-hsslms-a256kw-a256ctr. In this case, the closest equivalent profile SHOULD be used, for example suit-sha256-es256-ecdh-a128ctr.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>For the avoidance of doubt, there are scenarios where payload or manifest encryption are not required. In these scenarios, the encryption element of the selected profile is simply not used.</t>

<t>AES-CTR mode is specified, see <xref target="RFC9459"/>. All of the AES-CTR security considerations in <xref target="RFC9459"/> apply. A non-AEAD encryption mode is specified in this draft due to the following mitigating circumstances:</t>

<t><list style="symbols">
  <t>On-the-fly decryption (without the whole payload) must be supported. Therefore, there is no difference between AEAD and plaintext hash verification.</t>
  <t>Out-of-order decryption must be supported. Therefore, we must use a stream cipher that supports random access.</t>
  <t>Chosen plaintext attacks are extremely difficult to achieve, since the payloads are typically constructed in a relatively secure environment--the developer's computer or build infrastructure--and should be signed in an air-gapped or similarly protected environment. In short, the plaintext is authenticated prior to encryption.</t>
  <t>Content Encryption Keys must be used to encrypt only once. See <xref target="I-D.ietf-suit-firmware-encryption"/>.</t>
</list></t>

<t>As a result of these mitigating circumstances, AES-CTR is an acceptable cipher for typical software/firmware delivery scenarios.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to create a page for COSE Algorithm Profiles within
the category for Software Update for the Internet of Things (SUIT)</t>

<t>IANA is also requested to create a registry for COSE Alforithm Profiles
within this page. The initial content of the registry is:</t>

<texttable>
      <ttcol align='left'>Profile</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Digest</ttcol>
      <ttcol align='left'>Auth</ttcol>
      <ttcol align='left'>Key Exchange</ttcol>
      <ttcol align='left'>Encryption</ttcol>
      <ttcol align='left'>Descriptor Array</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>suit-sha256-hmac-a128kw-a128ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>5</c>
      <c>-3</c>
      <c>-65534</c>
      <c>[-16,   5,  -3, -65534]</c>
      <c><xref target="suit-sha256-hmac-a128kw-a128ctr"/></c>
      <c>suit-sha256-es256-ecdh-a128ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-7</c>
      <c>-29</c>
      <c>-65534</c>
      <c>[-16,  -7, -29, -65534]</c>
      <c><xref target="suit-sha256-es256-ecdh-a128ctr"/></c>
      <c>suit-sha256-eddsa-ecdh-a128ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-8</c>
      <c>-29</c>
      <c>-65534</c>
      <c>[-16,  -8, -29, -65534]</c>
      <c><xref target="suit-sha256-eddsa-ecdh-a128ctr"/></c>
      <c>suit-sha256-es256-ecdh-a128gcm</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-7</c>
      <c>-29</c>
      <c>1</c>
      <c>[-16,  -7, -29,      1]</c>
      <c><xref target="suit-sha256-es256-ecdh-a128gcm"/></c>
      <c>suit-sha256-eddsa-ecdh-chacha-poly</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-8</c>
      <c>-29</c>
      <c>24</c>
      <c>[-16,  -8, -29,     24]</c>
      <c><xref target="suit-sha256-eddsa-ecdh-chacha-poly"/></c>
      <c>suit-sha256-hsslms-a256kw-a256ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-46</c>
      <c>-5</c>
      <c>-65532</c>
      <c>[-16, -46,  -5, -65532]</c>
      <c><xref target="suit-sha256-hsslms-a256kw-a256ctr"/></c>
</texttable>

<t>New entries to this registry require standards action.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC8152'>
  <front>
    <title>CBOR Object Signing and Encryption (COSE)</title>
    <author fullname='J. Schaad' initials='J.' surname='Schaad'/>
    <date month='July' year='2017'/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need for the ability to have basic security services defined for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8152'/>
  <seriesInfo name='DOI' value='10.17487/RFC8152'/>
</reference>

<reference anchor='RFC8778'>
  <front>
    <title>Use of the HSS/LMS Hash-Based Signature Algorithm with CBOR Object Signing and Encryption (COSE)</title>
    <author fullname='R. Housley' initials='R.' surname='Housley'/>
    <date month='April' year='2020'/>
    <abstract>
      <t>This document specifies the conventions for using the Hierarchical Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based signature algorithm with the CBOR Object Signing and Encryption (COSE) syntax. The HSS/LMS algorithm is one form of hash-based digital signature; it is described in RFC 8554.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8778'/>
  <seriesInfo name='DOI' value='10.17487/RFC8778'/>
</reference>

<reference anchor='RFC9052'>
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname='J. Schaad' initials='J.' surname='Schaad'/>
    <date month='August' year='2022'/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
      <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name='STD' value='96'/>
  <seriesInfo name='RFC' value='9052'/>
  <seriesInfo name='DOI' value='10.17487/RFC9052'/>
</reference>

<reference anchor='RFC9459'>
  <front>
    <title>CBOR Object Signing and Encryption (COSE): AES-CTR and AES-CBC</title>
    <author fullname='R. Housley' initials='R.' surname='Housley'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <date month='September' year='2023'/>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) data format is designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) is specified in RFC 9052 to provide basic security services using the CBOR data format. This document specifies the conventions for using AES-CTR and AES-CBC as content encryption algorithms with COSE.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9459'/>
  <seriesInfo name='DOI' value='10.17487/RFC9459'/>
</reference>


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

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-manifest-33'/>
   
</reference>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.ietf-suit-firmware-encryption'>
   <front>
      <title>Encrypted Payloads in SUIT Manifests</title>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname='Russ Housley' initials='R.' surname='Housley'>
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Brendan Moran' initials='B.' surname='Moran'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='David Brown' initials='D.' surname='Brown'>
         <organization>Linaro</organization>
      </author>
      <author fullname='Ken Takayama' initials='K.' surname='Takayama'>
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day='29' month='January' year='2025'/>
      <abstract>
	 <t>   This document specifies techniques for encrypting software, firmware,
   machine learning models, and personalization data by utilizing the
   IETF SUIT manifest.  Key agreement is provided by ephemeral-static
   (ES) Diffie-Hellman (DH) and AES Key Wrap (AES-KW).  ES-DH uses
   public key cryptography while AES-KW uses a pre-shared key.
   Encryption of the plaintext is accomplished with conventional
   symmetric key cryptography.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-firmware-encryption-23'/>
   
</reference>


<reference anchor="IANA-COSE" target="https://www.iana.org/assignments/cose/cose.xhtml">
  <front>
    <title>CBOR Object Signing and Encryption (COSE)</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022"/>
  </front>
</reference>


    </references>


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

<t>The following CDDL creates a subset of COSE for use with SUIT. Both tagged and untagged messages are defined. SUIT only uses tagged COSE messages, but untagged messages are also defined for use in protocols that share a ciphersuite with SUIT.</t>

<t>To be valid, the following CDDL MUST have the COSE CDDL appended to it. The COSE CDDL can be obtained by following the directions in <xref section="1.4" sectionFormat="comma" target="RFC9052"/>.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_COSE_tool_tweak /= suit-sha256-hmac-a128kw-a128ctr
SUIT_COSE_tool_tweak /= suit-sha256-es256-ecdh-a128ctr
SUIT_COSE_tool_tweak /= suit-sha256-eddsa-ecdh-a128ctr
SUIT_COSE_tool_tweak /= suit-sha256-es256-ecdh-a128gcm
SUIT_COSE_tool_tweak /= suit-sha256-eddsa-ecdh-chacha-poly
SUIT_COSE_tool_tweak /= suit-sha256-hsslms-a256kw-a256ctr
SUIT_COSE_tool_tweak /= SUIT_COSE_Profiles

SUIT_COSE_Profiles /= SUIT_COSE_Profile_HMAC_A128KW_A128CTR
SUIT_COSE_Profiles /= SUIT_COSE_Profile_ES256_ECDH_A128CTR
SUIT_COSE_Profiles /= SUIT_COSE_Profile_EDDSA_ECDH_A128CTR
SUIT_COSE_Profiles /= SUIT_COSE_Profile_ES256_ECDH_A128GCM
SUIT_COSE_Profiles /= SUIT_COSE_Profile_EDDSA_ECDH_CHACHA20_POLY1304
SUIT_COSE_Profiles /= SUIT_COSE_Profile_HSSLMS_A256KW_A256CTR

suit-sha256-hmac-a128kw-a128ctr    = [-16, 5, -3, -65534]
suit-sha256-es256-ecdh-a128ctr     = [-16, -7, -29, -65534]
suit-sha256-eddsa-ecdh-a128ctr     = [-16, -8, -29, -65534]
suit-sha256-es256-ecdh-a128gcm     = [-16, -7, -29, 1]
suit-sha256-eddsa-ecdh-chacha-poly = [-16, -8, -29, 24]
suit-sha256-hsslms-a256kw-a256ctr  = [-16, -46, -5, -65532]

SUIT_COSE_Profile_HMAC_A128KW_A128CTR = SUIT_COSE_Profile<5, -65534> .and COSE_Messages
SUIT_COSE_Profile_ES256_ECDH_A128CTR = SUIT_COSE_Profile<-7,-65534> .and COSE_Messages
SUIT_COSE_Profile_EDDSA_ECDH_A128CTR = SUIT_COSE_Profile<-8,-65534> .and COSE_Messages
SUIT_COSE_Profile_ES256_ECDH_A128GCM = SUIT_COSE_Profile<-7,1> .and COSE_Messages
SUIT_COSE_Profile_EDDSA_ECDH_CHACHA20_POLY1304 = SUIT_COSE_Profile<-8,24> .and COSE_Messages
SUIT_COSE_Profile_HSSLMS_A256KW_A256CTR = SUIT_COSE_Profile<-46,-65532> .and COSE_Messages

SUIT_COSE_Profile<authid, encid> = SUIT_COSE_Messages<authid,encid>

SUIT_COSE_Messages<authid, encid> = SUIT_COSE_Untagged_Message<authid, encid> /
    SUIT_COSE_Tagged_Message<authid, encid> 
      
SUIT_COSE_Untagged_Message<authid, encid> = SUIT_COSE_Sign<authid> /
    SUIT_COSE_Sign1<authid> / SUIT_COSE_Encrypt<encid> / 
    SUIT_COSE_Encrypt0<encid> / SUIT_COSE_Mac<authid> /
    SUIT_COSE_Mac0<authid> 

SUIT_COSE_Tagged_Message<authid, encid> = SUIT_COSE_Sign_Tagged<authid> /
    SUIT_COSE_Sign1_Tagged<authid> / SUIT_COSE_Encrypt_Tagged<encid> /
    SUIT_COSE_Encrypt0_Tagged<encid> / SUIT_COSE_Mac_Tagged<authid> /
    SUIT_COSE_Mac0_Tagged<authid>

; Note: This is not the same definition as is used in COSE.
; It restricts a COSE header definition further without
; repeating the COSE definition. It should be merged
; with COSE by using the CDDL .and operator.
SUIT_COSE_Profile_Headers<algid> = (
    protected : bstr .cbor SUIT_COSE_alg_map<algid>,
    unprotected : SUIT_COSE_header_map
)
SUIT_COSE_alg_map<algid> = {
    1 => algid,
    * int => any
}

SUIT_COSE_header_map = {
    * int => any
}

SUIT_COSE_Sign_Tagged<authid> = #6.98(SUIT_COSE_Sign<authid>)


SUIT_COSE_Sign<authid> = [
    SUIT_COSE_Profile_Headers<authid>,
    payload : bstr / nil,
    signatures : [+ SUIT_COSE_Signature<authid>]
]


SUIT_COSE_Signature<authid> =  [
    SUIT_COSE_Profile_Headers<authid>,      
    signature : bstr
]


SUIT_COSE_Sign1_Tagged<authid> = #6.18(SUIT_COSE_Sign1<authid>)


SUIT_COSE_Sign1<authid> = [
    SUIT_COSE_Profile_Headers<authid>,
    payload : bstr / nil,
    signature : bstr
]


SUIT_COSE_Encrypt_Tagged<encid> = #6.96(SUIT_COSE_Encrypt<encid>)


SUIT_COSE_Encrypt<encid> = [
    SUIT_COSE_Profile_Headers<encid>,
    ciphertext : bstr / nil,
    recipients : [+SUIT_COSE_recipient<encid>]
]


SUIT_COSE_recipient<encid> = [    
    SUIT_COSE_Profile_Headers<encid>,
    ciphertext : bstr / nil,
    ? recipients : [+SUIT_COSE_recipient<encid>]
]


SUIT_COSE_Encrypt0_Tagged<encid> = #6.16(SUIT_COSE_Encrypt0<encid>)


SUIT_COSE_Encrypt0<encid> = [
    SUIT_COSE_Profile_Headers<encid>,
    ciphertext : bstr / nil,
]


SUIT_COSE_Mac_Tagged<authid> = #6.97(SUIT_COSE_Mac<authid>)


SUIT_COSE_Mac<authid> = [
   SUIT_COSE_Profile_Headers<authid>,      
   payload : bstr / nil,
   tag : bstr,
   recipients :[+SUIT_COSE_recipient<authid>]
]


SUIT_COSE_Mac0_Tagged<authid> = #6.17(SUIT_COSE_Mac0<authid>)


SUIT_COSE_Mac0<authid> = [
   SUIT_COSE_Profile_Headers<authid>,      
   payload : bstr / nil,
   tag : bstr,
]
]]></sourcecode></figure>

</section>


  </back>

<!-- ##markdown-source:
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
G++395tf8A0NGIL/AqHg7CaIMwAA

-->

</rfc>

