<?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-08" 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="2024" month="October" day="21"/>

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

    <abstract>


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



    </abstract>



  </front>

  <middle>


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

<t>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 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, with powerful/complex manifest authors and constrained manifest recipients, 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>AEAD is preferred over un-authenticated encryption. Where possible an AEAD profile SHOULD be selected. Certain constrained IoT applications require streaming decryption, which necessitates a non-AEAD ecryption algorithm. If the application is not a constrained device, the two AEAD profiles are RECOMMENDED.</t>

<t>Other use-cases of SUIT 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 reverse-direction 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>Streaming decryption 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>There are no chosen plaintext attacks: 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 the most appropriate 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='21' month='October' year='2024'/>
      <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 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-28'/>
   
</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='21' month='October' year='2024'/>
      <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-21'/>
   
</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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
wtr1uhvv1/3iF3xHAwbv/2k0FY0lMQAA

-->

</rfc>

