<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-ace-oscore-gm-kem-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="KEMs via the OSCORE Group Manager">Quantum-Resistant Key Encapsulation Mechanisms (KEMs) via the Object Security for Constrained RESTful Environments (OSCORE) Group Manager Using Authentication and Authorization for Constrained Environments (ACE)</title>
    <seriesInfo name="Internet-Draft" value="draft-tiloca-ace-oscore-gm-kem-01"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>164 40</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 138?>

<t>RFC 9594 defines a Key Distribution Center (KDC) to provision keying material for secure group communication, using the Authentication and Authorization for Constrained Environments (ACE) framework. An instance of KDC is the Group Manager for provisioning keying material in group communication scenarios that use the Constrained Application Protocol (CoAP) and the security protocol Group Object Security for Constrained RESTful Environments (Group OSCORE). To make the pairwise mode of Group OSCORE post-quantum secure, it is possible to rely on a quantum-resistant Key Encapsulation Mechanism (KEM) as the Pairwise Key Agreement Algorithm used to derive pairwise keys. This document extends the interface of the ACE-based Group Manager to allow for the exchange of KEM public keys and encapsulated KEM shared secrets among group members via the Group Manager, thus enabling the post-quantum secure derivation of pairwise keys in Group OSCORE. Furthermore, this document accordingly extends the set of parameters that can be used to specify the configuration of an OSCORE group at the Group Manager.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Authentication and Authorization for Constrained Environments Working Group mailing list (ace@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://gitlab.com/crimson84/draft-tiloca-ace-oscore-gm-kem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 142?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Building on Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/>, the security protocol Group Object Security for Constrained RESTful Environments (Group OSCORE) <xref target="I-D.ietf-core-oscore-groupcomm"/> provides end-to-end security for the Constrained Application Protocol (CoAP) <xref target="RFC7252"/> when used in group communication setups <xref target="I-D.ietf-core-groupcomm-bis"/>. An OSCORE group is associated with a Group Manager, i.e., an entity responsible for managing identifiers and keying material in the group and for handling the join process to add group members, among other tasks.</t>
      <t>As a notable feature, two group members can exchange messages protected with the pairwise mode of Group OSCORE (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), achieving pairwise data confidentiality and source authentication by means of integrity tags. That is, the message sender performs authenticated encryption of the CoAP message by using a symmetric pairwise key that is exclusively shared with another group member as the intended message recipient. Symmetric pairwise keys are derived from a pairwise shared secret, which in turn is computed from asymmetric keys of the message sender and recipient, ensuring authenticated key agreement.</t>
      <t>In the event that a Cryptographically Relevant Quantum Computer (CRQC) is constructed, drop-in replacements are not available for the Pairwise Key Agreement Algorithm (see <xref section="2.1.10" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>), which is used to compute the shared secret from which pairwise keys are derived (see <xref section="2.5.1" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>). In particular, the currently available Pairwise Key Agreement Algorithms are based on a direct Elliptic Curve Diffie-Hellman Static-Static key agreement <xref target="NIST-800-56A"/>.</t>
      <t>At the time of writing, there is no standardized Diffie-Hellman/Non-Interactive Key Exchange (DH/NIKE) that can be used for post-quantum secure establishment of the shared secret, which makes the pairwise mode of Group OSCORE vulnerable to quantum attacks.</t>
      <t>This can be addressed by using a quantum-resistant Key Encapsulation Mechanism (KEM), such as ML-KEM <xref target="FIPS203"/>, as the Pairwise Key Agreement Algorithm for computing shared secrets, from which pairwise keys are derived according to the construct defined in <xref target="I-D.tiloca-core-group-oscore-kem"/>. Such construct also makes it seamlessly possible to use a KEM that builds on a future quantum-resistant DH/NIKE, as the latter might not be (immediately) usable as a drop-in replacement for Group OSCORE (see <xref section="A" sectionFormat="of" target="I-D.tiloca-core-group-oscore-kem"/>).</t>
      <t>Building on the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>, the specification <xref target="RFC9594"/> defines a Key Distribution Center (KDC) to provision keying material for secure group communication.</t>
      <t>The specification <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> is an application profile of <xref target="RFC9594"/> and defines an instance of KDC, i.e., the Group Manager for provisioning keying material in group communication scenarios that use CoAP and the security protocol Group OSCORE.</t>
      <t>This document extends the interface of the Group Manager defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> to enable the exchange of KEM public keys and encapsulated KEM shared secrets among group members via the Group Manager. This facilitates the use of a KEM-based Pairwise Key Agreement Algorithm, thus enabling the post-quantum secure derivation of pairwise keys in Group OSCORE.</t>
      <t><xref target="sec-profile-reqs"/> updates how the requirements listed in <xref section="A" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> are additionally fulfilled.</t>
      <t>Furthermore, <xref target="sec-group-configuration"/> extends the set of parameters originally defined in <xref target="I-D.ietf-ace-oscore-gm-admin"/> that can be used to specify the configuration of an OSCORE group at the Group Manager, and it defines how the new parameters are processed by a Group Manager that uses the administrator interface specified in <xref target="I-D.ietf-ace-oscore-gm-admin"/>.</t>
      <t>An existing OSCORE group that uses a non quantum-resistant Pairwise Key Agreement Algorithm is not meant to be dynamically updated so that it switches to using a quantum-resistant Pairwise Key Agreement Algorithm. Instead, if the derivation of pairwise keys is rightly desired to be post-quantum secure, such existing OSCORE group ought to be deleted and replaced by a new one that uses a quantum-resistant Pairwise Key Agreement Algorithm from the start. Regardless of its specific configuration, it is desirable (and, eventually, even expected) that a newly created OSCORE group uses only quantum-resistant algorithms.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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.</t>
        <?line -18?>

<t>Readers are expected to be familiar with:</t>
        <ul spacing="normal">
          <li>
            <t>The terms and concepts related to Concise Data Definition Language (CDDL) <xref target="RFC8610"/>, Concise Binary Object Representation (CBOR) <xref target="RFC8949"/>, and CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/><xref target="RFC9053"/>.</t>
          </li>
          <li>
            <t>The terms and concepts related to CoAP <xref target="RFC7252"/> and group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/>.</t>
          </li>
          <li>
            <t>The terms and concepts for protection and processing of CoAP messages through OSCORE <xref target="RFC8613"/> and through Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> in group communication scenarios. These especially include:  </t>
            <ul spacing="normal">
              <li>
                <t>Group Manager, as the entity responsible for one or more groups where communications are secured with Group OSCORE.</t>
              </li>
              <li>
                <t>Authentication credential, as the set of information associated with an entity, including that entity's public key and parameters associated with the public key.</t>
              </li>
              <li>
                <t>Group mode: the mode of Group OSCORE providing group-level data confidentiality and providing source authentication through a signature embedded in the protected CoAP message (see <xref section="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
              </li>
              <li>
                <t>Pairwise mode: the mode of Group OSCORE used for providing pairwise secure communication between two members of an OSCORE group (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
              </li>
              <li>
                <t>Pairwise keys: symmetric keys used to process messages with the pairwise mode of Group OSCORE.</t>
              </li>
              <li>
                <t>Pairwise Key Agreement Algorithm: the algorithm used in Group OSCORE for computing a pairwise shared secret from which pairwise keys are derived (see <xref section="2.1.10" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The derivation of pairwise keys as defined in <xref target="I-D.tiloca-core-group-oscore-kem"/>, for the case where the Pairwise Key Agreement Algorithm used in the OSCORE group is a quantum-resistant Key Encapsulation Mechanism (KEM).</t>
          </li>
        </ul>
        <t>Furthermore, readers are expected to be familiar with:</t>
        <ul spacing="normal">
          <li>
            <t>The terms and concepts described in the ACE framework for authentication and authorization <xref target="RFC9200"/>. The terminology for entities in the considered architecture is defined in OAuth 2.0 <xref target="RFC6749"/>. This includes Client (C), Resource Server (RS), and Authorization Server (AS).  </t>
            <t>
Unless otherwise indicated, the term "endpoint" is used here following its OAuth definition <xref target="RFC6749"/>, aimed at denoting resources such as /token and /introspect at the AS, and /authz-info at the RS. The CoAP definition, which is "[a]n entity participating in the CoAP protocol" <xref target="RFC7252"/>, is not used in this document.</t>
          </li>
          <li>
            <t>The terms and concepts related to the message formats and processing specified in <xref target="RFC9594"/>, for provisioning and renewing keying material in group communication scenarios by using the ACE framework, through a KDC acting as Resource Server.  </t>
            <t>
These include the abbreviations REQx and OPTx denoting the numbered mandatory-to-address and optional-to-address requirements, respectively. In particular, the abbreviations REQx and OPTx refer to the requirements initially specified in <xref section="A" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and updated in <xref target="sec-profile-reqs"/> of the present document.</t>
          </li>
          <li>
            <t>The terms and concepts related to the application profile of <xref target="RFC9594"/> specified in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>, which defines the Group Manager as an instance of KDC to provision keying material for Group OSCORE. These especially include:  </t>
            <ul spacing="normal">
              <li>
                <t>Requester: member of an OSCORE group that sends request messages to other members of the group.</t>
              </li>
              <li>
                <t>Responder: member of an OSCORE group that receives request messages from other members of the group. A responder may reply, by sending a response message to the requester which has sent the request message.</t>
              </li>
              <li>
                <t>Monitor: member of an OSCORE group that is configured as a responder and never sends response messages protected with Group OSCORE. This corresponds to the term "silent server" used in <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
              </li>
              <li>
                <t>Signature-only group: an OSCORE group that uses only the group mode (see <xref section="7" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
              </li>
              <li>
                <t>Pairwise-only group: an OSCORE group that uses only the pairwise mode (see <xref section="8" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>).</t>
              </li>
              <li>
                <t>GROUPNAME: The text string used in URIs to identify a group. Once established, it is invariant. Its value coincides with the group name of the associated group.</t>
              </li>
              <li>
                <t>NODENAME: The text string used in URIs to identify a member of a group. Once established, it is invariant. Its value coincides with the node name of the associated group member.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Finally, this document uses the following term:</t>
        <ul spacing="normal">
          <li>
            <t>KEM-based group: an OSCORE group that uses the pairwise mode and uses a KEM as Pairwise Key Agreement Algorithm.</t>
          </li>
        </ul>
      </section>
      <section anchor="notations">
        <name>Notations</name>
        <t>Throughout this document, examples for CBOR data items are expressed in CBOR extended diagnostic notation as defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/> ("diagnostic notation"). Diagnostic notation comments are often used to provide a textual representation of the parameters' keys and values.</t>
        <t>In the CBOR diagnostic notation used in this document, constructs of the form e'SOME_NAME' are replaced by the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. For example, {e'kem_enc_sec': h'ccfa0151...1948', e'kem_pubkey_hash': h'55fc1eaa...ae05'} stands for {37: h'ccfa0151...1948', 38: h'55fc1eaa...ae05'}.</t>
        <t>Note to RFC Editor: Please delete the paragraph immediately preceding this note. Also, in the CBOR diagnostic notation used in this document, please replace the constructs of the form e'SOME_NAME' with the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. Finally, please delete this note.</t>
      </section>
    </section>
    <section anchor="sec-overview">
      <name>Overview of New Operations</name>
      <t>This document extends the interface of the Group Manager defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> as follows.</t>
      <t>When a node exchanges a Token Transfer Request and Token Transfer Response with the Group Manager (see <xref section="5.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the node can ask the Group Manager to provide information about the KEM-based groups that the node has been authorized to join. This is defined in <xref target="sec-token-transferring"/>.</t>
      <t>When a node joins a KEM-based group (see <xref section="6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>):</t>
      <ul spacing="normal">
        <li>
          <t>The Join Request sent to the Group Manager can include a KEM public key of the node to be stored at the Group Manager. This is defined in <xref target="sec-send-join-request"/> and <xref target="sec-receive-join-request"/>.</t>
        </li>
        <li>
          <t>The Join Response from the Group Manager specifies the KEM used as Pairwise Key Agreement Algorithm in the group, together with corresponding parameters. This is defined in <xref target="sec-send-join-response"/> and <xref target="sec-receive-join-response"/>.</t>
        </li>
      </ul>
      <t>When a member of a KEM-based group retrieves updated keying material from the Group Manager (see <xref section="9.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), the Key Distribution Response from the Group Manager specifies the KEM used as Pairwise Key Agreement Algorithm in the group, together with corresponding parameters. This is defined in <xref target="sec-retrieve-keying-material"/>.</t>
      <t>When a signature verifier retrieves from the Group Manager data required to verify signatures of messages protected with the group mode of Group OSCORE and sent to a KEM-based group (see <xref section="9.6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), the Signature Verification Data Response from the Group Manager specifies the KEM used as Pairwise Key Agreement Algorithm in the group, together with corresponding parameters. This is defined in <xref target="sec-retrieve-sig-verif-data"/>.</t>
      <t>According to the new resources defined in <xref target="sec-interface"/>, a member P of a KEM-based group can perform the following actions by interacting with the Group Manager:</t>
      <ul spacing="normal">
        <li>
          <t>Upload at the Group Manager an own KEM public key as intended to any and exactly one other member of the group. This is defined in <xref target="sec-nodename-kem-pub-keys-post"/>.</t>
        </li>
        <li>
          <t>Retrieve the number of own KEM public keys that are currently stored at the Group Manager as intended to other members of the group. This is defined in <xref target="sec-nodename-kem-pub-keys-get"/>.</t>
        </li>
        <li>
          <t>Discard all its own KEM public keys stored at the Group Manager as intended to other members of the group. This is defined in <xref target="sec-nodename-kem-pub-keys-put"/>.</t>
        </li>
        <li>
          <t>Retrieve from the Group Manager a KEM public key of a specific other group member Q, which Q generated and uploaded at the Group Manager as intended to other members of the group. This is defined in <xref target="sec-kem-pub-keys"/>.</t>
        </li>
        <li>
          <t>Upload at the Group Manager an encapsulated KEM shared secret, which is computed by P and is intended to a specific other group member Q. This is defined in <xref target="sec-nodename-kem-ciphertexts"/>.</t>
        </li>
        <li>
          <t>Retrieve from the Group Manager the encapsulated KEM shared secret that a specific other group member Q uploaded at the Group Manager as intended to P. This is defined in <xref target="sec-kem-ciphertexts"/>.</t>
        </li>
      </ul>
      <t><xref target="sec-interactions"/> defines the operations that the group member P can perform by accessing the new resources above.</t>
      <t>Editor's note: further extend the interface at the Group Manager, to also cover the case where the KEM-based group is specifically a pairwise-only group.</t>
    </section>
    <section anchor="sec-token-transferring">
      <name>Token Transferring</name>
      <t>In addition to what is defined in <xref section="5.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the following applies to the exchange of Token Transfer Request and Token Transfer Response originally defined in <xref section="3.3" sectionFormat="of" target="RFC9594"/>.</t>
      <ul spacing="normal">
        <li>
          <t>The Token Transfer Request <bcp14>MAY</bcp14> additionally contain the following parameter, which, if included, <bcp14>MUST</bcp14> have the corresponding values defined below (OPT2):  </t>
          <ul spacing="normal">
            <li>
              <t>'pqkem_info' defined in <xref target="pqkem-info"/> of this document, with value the CBOR simple value <tt>null</tt> (0xf6) to request information about the quantum-resistant KEM used as Pairwise Key Agreement Algorithm, the KEM algorithm parameters, the KEM key parameters, and the exact format of authentication credentials used in the KEM-based groups that the Client has been authorized to join. This is relevant if the joining node supports the pairwise mode of Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
            </li>
          </ul>
          <t>
Alternatively, the joining node may retrieve this information by other means.</t>
        </li>
        <li>
          <t>If the 'pqkem_info' parameter is present in the Token Transfer Response, the following applies for each element 'pqkem_info_entry'.  </t>
          <ul spacing="normal">
            <li>
              <t>'id' is associated exclusively with OSCORE groups that are KEM-based groups.</t>
            </li>
            <li>
              <t>'pqkem_alg' takes value from the "Value" column of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/>.</t>
            </li>
            <li>
              <t>'pqkem_parameters' has the same format and value of the COSE capabilities array for the KEM algorithm indicated in 'pqkem_alg', as specified for that algorithm in the "Capabilities" column of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/>.</t>
            </li>
            <li>
              <t>'pqkem_key_parameters' has the same format and value of the COSE capabilities array for the COSE key type of the keys used with the KEM algorithm indicated in 'pqkem_alg', as specified for that key type in the "Capabilities" column of the "COSE Key Types" registry <xref target="COSE.Key.Types"/>.</t>
            </li>
            <li>
              <t>'cred_fmt' takes value from the "Label" column of the "COSE Header Parameters" registry <xref target="COSE.Header.Parameters"/>. To align with <xref section="2.4" sectionFormat="of" target="I-D.ietf-core-oscore-groupcomm"/>, acceptable values denote a format of authentication credential that provides the public key as well as a comprehensive set of information related to the public key algorithm. The same considerations provided in <xref section="3.3" sectionFormat="of" target="RFC9594"/> on acceptable formats currently available for the 'cred_fmt' element of 'sign_info' apply.</t>
            </li>
          </ul>
          <t>
The Group Manager omits the 'pqkem_info' parameter in the Token Transfer Response even if 'pqkem_info' is included in the Token Transfer Request, in the case that all the OSCORE groups that the Client is authorized to join are not KEM-based groups.</t>
        </li>
      </ul>
      <t>Note that, other than through the above parameters as defined in <xref section="3.3" sectionFormat="of" target="RFC9594"/>, the joining node may have obtained such information by alternative means. For example, information conveyed in the 'pqkem_info' parameter may have been pre-configured, or the joining node may early retrieve it, e.g., by using the approach described in <xref target="I-D.tiloca-core-oscore-discovery"/> to discover the OSCORE group and the link to the associated group-membership resource at the Group Manager.</t>
      <section anchor="pqkem-info">
        <name>'pqkem_info' Parameter</name>
        <t>The 'pqkem_info' parameter is an <bcp14>OPTIONAL</bcp14> parameter of the request and response messages exchanged between the Client and the /authz-info endpoint at the RS (see <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>).</t>
        <t>This parameter allows the Client and the RS to exchange information about a quantum-resistant KEM as well as about the authentication credentials and public keys to accordingly use for deriving shared secrets. Its exact semantics and content are application specific.</t>
        <t>In application profiles that build on <xref target="RFC9594"/>, this parameter is used to exchange information about the KEM as well as about the authentication credentials and public keys to be used with it, in the groups indicated by the transferred access token as per its 'scope' claim (see <xref section="3.2" sectionFormat="of" target="RFC9594"/>).</t>
        <t>When used in the Token Transfer Request sent to the KDC (see <xref section="3.3" sectionFormat="of" target="RFC9594"/>), the 'pqkem_info' parameter specifies the CBOR simple value <tt>null</tt> (0xf6). This is done to ask for information about the KEM and about the authentication credentials used to compute shared secrets and pairwise keys, in the groups that the Client has been authorized to join or interact with.</t>
        <t>When used in the following Token Transfer Response from the KDC (see <xref section="3.3" sectionFormat="of" target="RFC9594"/>), the 'pqkem_info' parameter is a CBOR array of one or more elements. The number of elements is at most the number of groups that the Client has been authorized to join or interact with. Each element contains information about KEM parameters and about authentication credentials for one or more groups and is formatted as follows.</t>
        <ul spacing="normal">
          <li>
            <t>The first element 'id' is a group name or a CBOR array of group names, which is associated with groups for which the next four elements apply. Each specified group name is a CBOR text string and is hereafter referred to as 'gname'.</t>
          </li>
          <li>
            <t>The second element 'pqkem_alg' is a CBOR integer or a text string that indicates the KEM algorithm used in the groups identified by the 'gname' values.  </t>
            <t>
For application profiles of <xref target="RFC9594"/> that use the 'pqkem_info' parameter, it is <bcp14>REQUIRED</bcp14> to define specific values that 'pqkem_alg' can take, which are selected from the set of quantum-resistant KEM algorithms of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/>.</t>
          </li>
          <li>
            <t>The third element 'pqkem_parameters' is a CBOR array that indicates the parameters of the KEM used in the groups identified by the 'gname' values. Its content depends on the value of 'pqkem_alg'.  </t>
            <t>
For application profiles of <xref target="RFC9594"/> that use the 'pqkem_info' parameter, it is <bcp14>REQUIRED</bcp14> to define the possible values and structure for the elements of 'pqkem_parameters'.</t>
          </li>
          <li>
            <t>The fourth element 'pqkem_key_parameters' is a CBOR array that indicates the parameters of the key used with the KEM in the groups identified by the 'gname' values. Its content depends on the value of 'pqkem_alg'.  </t>
            <t>
For application profiles of <xref target="RFC9594"/> that use the 'pqkem_info' parameter, it is <bcp14>REQUIRED</bcp14> to define the possible values and structure for the elements of 'pqkem_key_parameters'.</t>
          </li>
          <li>
            <t>The fifth element 'cred_fmt' either is a CBOR integer indicating the format of authentication credentials used in the groups identified by the 'gname' values or is the CBOR simple value <tt>null</tt> (0xf6), which indicates that the KDC does not act as a repository of authentication credentials for group members. Its acceptable integer values are taken from the "Label" column of the "COSE Header Parameters" registry <xref target="COSE.Header.Parameters"/>, with some of those values also indicating the type of container to use for exchanging the authentication credentials with the KDC (e.g., a chain or bag of certificates).  </t>
            <t>
For application profiles of <xref target="RFC9594"/> that use the 'pqkem_info' parameter, it is <bcp14>REQUIRED</bcp14> to define specific values to use for 'cred_fmt', consistent with the acceptable formats of authentication credentials.</t>
          </li>
        </ul>
        <t>If 'pqkem_info' is included in the Token Transfer Request, the KDC <bcp14>SHOULD</bcp14> include the 'pqkem_info' parameter in the Token Transfer Response, as per the format defined above. Note that the field 'id' of each 'pqkem_info_entry' specifies the name or array of group names to which that 'pqkem_info_entry' applies. As an exception, the KDC <bcp14>MAY</bcp14> omit the 'pqkem_info' parameter in the Token Transfer Response even if 'pqkem_info' is included in the Token Transfer Request, in the case that none of the groups that the Client is authorized to join uses a KEM algorithm to derive shared secrets.</t>
        <t>The CDDL notation <xref target="RFC8610"/> of the 'pqkem_info' parameter is given below.</t>
        <sourcecode type="cddl"><![CDATA[
pqkem_info = pqkem_info_req / pqkem_info_resp

pqkem_info_req = null                   ; in the Token Transfer
                                        ; Request to the KDC

pqkem_info_resp = [+ pqkem_info_entry]  ; in the Token Transfer
                                        ; Response from the KDC

pqkem_info_entry =
[
  id: gname / [+ gname],
  pqkem_alg: int / tstr,
  pqkem_parameters: [any],
  pqkem_key_parameters: [+ parameter: any],
  cred_fmt: int / null
]

gname = tstr
]]></sourcecode>
        <t>This format is consistent with every KEM algorithm currently registered by <xref target="I-D.ietf-cose-pqc-kem"/>, i.e., with algorithms that have only the COSE key type as their COSE capability. <xref target="sec-future-cose-algs"/> of this document describes how the format of each 'pqkem_info_entry' can be generalized for possible future registered algorithms that have a different set of COSE capabilities.</t>
      </section>
    </section>
    <section anchor="sec-group-joining">
      <name>Group Joining</name>
      <t>Building on <xref section="6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, this section specifies additions to the joining process that are relevant when the joined group is a KEM-based group.</t>
      <section anchor="sec-send-join-request">
        <name>Send the Join Request</name>
        <t>In addition to what is defined in <xref section="6.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the following applies at a joining node when sending a Join Request message for joining a KEM-based group.</t>
        <t>If the joining node requests to (re-)join the group not exclusively as a monitor, the Join Request message <bcp14>MAY</bcp14> include the following parameter:</t>
        <ul spacing="normal">
          <li>
            <t>'client_kem_pubkey': encoded as a CBOR byte string, whose value is a KEM public key newly generated by the joining node and whose CBOR label is registered in <xref target="iana-ace-groupcomm-parameters"/>.  </t>
            <t>
Consistent with the KEM used as Pairwise Key Agreement Algorithm in the group, the joining node generates the specified KEM public key and the corresponding KEM private key.  </t>
            <t>
As associated with the group in question, the joining node stores the generated key pair, together with the SHA-256 hash <xref target="SHA-256"/> of the KEM public key as the corresponding identifier.</t>
          </li>
        </ul>
        <t>Editor's note: once also covered the case of a KEM-based group that is a pairwise-only group, explain here that other (to-be-defined) resources at the Group Manager are used by the joining node in such case, so that the joining node remains able to prove possession of its own private key upon joining the group, through a MAC used as PoP evidence and encoded by the 'client_cred_verify' parameter of the Join Request.</t>
      </section>
      <section anchor="sec-receive-join-request">
        <name>Receive the Join Request</name>
        <t>In addition to what is defined in <xref section="6.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the following applies at the Group Manager when receiving a Join Request message for joining a KEM-based group.</t>
        <t>If the joining node is going to join the group exclusively as a monitor, then the Group Manager silently ignores the 'client_kem_pubkey' parameter, if present.</t>
        <t>Otherwise, in the case that the 'client_kem_pubkey' parameter is present in the Join Request, the Group Manager retrieves the joining node's KEM public key specified therein.</t>
        <t>If the Group Manager is currently storing the maximum admitted number of KEM public keys for that joining node in the group, the Group Manager <bcp14>MUST</bcp14> reply with a 5.03 (Service Unavailable) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 13 ("Reached limit of KEM public keys").</t>
        <t>If the KEM public key is not compatible with the KEM used as Pairwise Key Agreement Algorithm in the group, the Group Manager <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 14 ("KEM public key incompatible with the group configuration").</t>
        <t>In the case that the Group Manager replies with a 4.00 (Bad Request) error response with Content-Format "application/ace-groupcomm+cbor", the format of the CBOR map conveyed in the response payload is updated as follows (OPT4), consistent with the fact that the group is a KEM-based group:</t>
        <ul spacing="normal">
          <li>
            <t>Differently from the case considered in <xref section="6.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> in which the group is not a KEM-based group, the CBOR map <bcp14>MUST NOT</bcp14> contain the parameters 'ecdh_info' and 'kdc_dh_creds'.</t>
          </li>
          <li>
            <t>The CBOR map <bcp14>MUST</bcp14> contain the 'pqkem_info' parameter, whose CBOR label is registered in <xref target="iana-ace-groupcomm-parameters"/>. This parameter has the same format of 'pqkem_info_resp' defined in <xref target="pqkem-info"/> and includes a single element 'pqkem_info_entry', which pertains to the OSCORE group that the joining node has tried to join with the Join Request.</t>
          </li>
        </ul>
        <t>Editor's note: once also covered the case of a KEM-based group that is a pairwise-only group, explain here that other (to-be-defined) resources at the Group Manager are used by the joining node in such case, so that the joining node remains able to prove possession of its own private key upon joining the group, through a MAC used as PoP evidence and encoded by the 'client_cred_verify' parameter of the Join Request.</t>
      </section>
      <section anchor="sec-send-join-response">
        <name>Send the Join Response</name>
        <t>If the processing of the Join Request is successful and the group targeted by the Join Request is a KEM-based group, the Group Manager proceeds as defined in <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, with the following modifications.</t>
        <t>In the case that the joining node has not taken exclusively the role of monitor, the Group Manager performs also the following actions.</t>
        <t>After having registered the joining node NODENAME as a member of the OSCORE group GROUPNAME as described in <xref section="4.3.1" sectionFormat="of" target="RFC9594"/>, the handler that processed the Join Request creates two additional resources associated with the joining node, unless those resources already exist (i.e., in the case of a group re-joining):</t>
        <ul spacing="normal">
          <li>
            <t>/ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys (see <xref target="sec-nodename-kem-pub-keys"/>). Upon creating the resource, its representation is set to the CBOR unsigned integer encoding the value 0.</t>
          </li>
          <li>
            <t>/ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets (see <xref target="sec-nodename-kem-ciphertexts"/>).</t>
          </li>
        </ul>
        <t>When the Group Manager sends the Join Response, the following applies:</t>
        <ul spacing="normal">
          <li>
            <t>If the joining node has not taken exclusively the role of monitor, the Join Response <bcp14>MUST</bcp14> include the 'max_kem_pubkeys' parameter, which is registered in <xref target="iana-ace-groupcomm-parameters"/> of this document.  </t>
            <t>
The parameter is encoded as a CBOR unsigned integer, and it specifies the maximum number of KEM public keys that the Group Manager stores as associated with the same Client within the group.</t>
          </li>
          <li>
            <t>The content of the 'key' parameter is updated as follows (REQ17), consistent with the fact that the group is a KEM-based group:  </t>
            <ul spacing="normal">
              <li>
                <t>Differently from the case considered in <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> in which the group is not a KEM-based group, the parameters 'ecdh_alg' and 'ecdh_params' <bcp14>MUST NOT</bcp14> be included in the Group_OSCORE_Input_Material object.</t>
              </li>
              <li>
                <t>The 'pqkem_alg' parameter <bcp14>MUST</bcp14> be included in the Group_OSCORE_Input_Material object, specifying the KEM used as Pairwise Key Agreement Algorithm in the group for computing the shared secret to derive the pairwise keys for the pairwise mode. This parameter takes values from the "Value" column of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/>.</t>
              </li>
              <li>
                <t>The 'pqkem_params' parameter <bcp14>MUST</bcp14> be included in the Group_OSCORE_Input_Material object, specifying the parameters of the KEM used as Pairwise Key Agreement Algorithm. This parameter is a CBOR array, which includes the following two elements:      </t>
                <ul spacing="normal">
                  <li>
                    <t>'pqkem_alg_capab': a CBOR array, with the same format and value of the COSE capabilities array for the KEM algorithm indicated in 'pqkem_alg', as specified for that algorithm in the "Capabilities" column of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/>.</t>
                  </li>
                  <li>
                    <t>'pqkem_key_type_capab': a CBOR array, with the same format and value of the COSE capabilities array for the COSE key type of the keys used with the KEM algorithm indicated in 'pqkem_alg', as specified for that key type in the "Capabilities" column of the "COSE Key Types" registry <xref target="COSE.Key.Types"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>The format of 'key' defined above is consistent with every KEM algorithm currently registered by <xref target="I-D.ietf-cose-pqc-kem"/>, i.e., with algorithms that have only the COSE key type as their COSE capability. <xref target="sec-future-cose-algs-key"/> of this document describes how the format of the 'key' parameter can be generalized for possible future registered algorithms that have a different set of COSE capabilities.</t>
        <t>If the Join Request included the 'client_kem_pubkey' parameter and the joining node has not joined the group exclusively as a monitor, the Group Manager performs the following actions:</t>
        <ul spacing="normal">
          <li>
            <t>The Group Manager stores the KEM public key specified in the 'client_kem_pubkey' parameter, as the latest KEM public key of the joining node and pertaining to the group.  </t>
            <t>
Furthermore, the Group Manager associates the KEM public key with the OSCORE Sender ID assigned to the joining node in the group. The assigned OSCORE Sender ID is specified by the 'group_senderId' parameter within the 'key' parameter of the Join Response (see <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>). The Group Manager <bcp14>MUST</bcp14> keep this association up-to-date over time, in the event that the joining node changes its OSCORE Sender ID in the group.</t>
          </li>
          <li>
            <t>The Group Manager updates the representation of the resource at /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys to reflect the number of currently stored KEM public keys of the group member NODENAME and pertaining to the group. That is, if such number is N upon receiving the Join Request, the updated resource representation is the CBOR unsigned integer encoding the value (N + 1).</t>
          </li>
        </ul>
        <t>Editor's note: once also covered the case of a KEM-based group that is a pairwise-only group, explain here that other (to-be-defined) resources at the Group Manager are used by the joining node in such case. That allows the joining node to compute and include in the Join Request an encapsulated KEM shared secret. Building on that, the Group Manager remains able to prove possession of its own private key, through a MAC used as PoP evidence and encoded by the 'kdc_cred_verify' parameter of the Join Response.</t>
      </section>
      <section anchor="sec-receive-join-response">
        <name>Receive the Join Response</name>
        <t>Upon receiving a Join Response resulting from having joined a KEM-based group, the joining node proceeds as defined in <xref section="6.4" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, with the following modifications.</t>
        <ul spacing="normal">
          <li>
            <t>If the group is a pairwise-only group, the PoP evidence is a MAC. The joining node recomputes the MAC through the same process that is taken by the Group Manager when computing the value of the 'kdc_cred_verify' parameter (see <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>), with the difference that ... TBD  </t>
            <t>
Editor's note: once also covered the case of a KEM-based group that is a pairwise-only group, explain here that other (to-be-defined) resources at the Group Manager are used by the joining node in such case. That allows the joining node to compute and include in the Join Request an encapsulated KEM shared secret. Building on that, the Group Manager remains able to prove possession of its own private key, through a MAC used as PoP evidence and encoded by the 'kdc_cred_verify' parameter of the Join Response.</t>
          </li>
          <li>
            <t>When processing the 'key' parameter of the Join Response, the following applies:  </t>
            <ul spacing="normal">
              <li>
                <t>If both the parameters 'ecdh_alg' and 'pqkem_alg' are absent, the parameter Pairwise Key Agreement Algorithm in the Common Context of the Group OSCORE Security Context is not set.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The joining node <bcp14>MUST NOT</bcp14> use the pairwise mode of Group OSCORE to process messages in the group, if the 'key' parameter of the Join Response does not include both the parameters 'alg' and 'ecdh_alg' or both the parameters 'alg' and 'pqkem_alg'.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-retrieve-keying-material">
      <name>Retrieve Updated Keying Material</name>
      <t>Building on <xref section="9.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the following two subsections define additions to the operations by which a member of a KEM-based group retrieves updated security parameters and group keying material from the Group Manager.</t>
      <section anchor="sec-retrieve-group-keying-material">
        <name>Get Group Keying Material</name>
        <t>This section builds on and updates what is defined in <xref section="9.1.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
        <t>After successfully processing a Key Distribution Request as a GET request to the endpoint /ace-group/GROUPNAME, the Group Manager composes the Key Distribution Response as defined in <xref section="9.1.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, with the following modifications.</t>
        <ul spacing="normal">
          <li>
            <t>If the requesting group member does not have exclusively the role of monitor, the Key Distribution Response <bcp14>MUST</bcp14> include the 'max_kem_pubkeys' parameter, whose encoding and semantics is the same as in the Join Response (see <xref target="sec-send-join-response"/> of the present document).</t>
          </li>
          <li>
            <t>The 'key' parameter is formatted as defined in <xref target="sec-send-join-response"/> of the present document, with the difference that it does not include the 'group_SenderId' parameter.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-retrieve-group-keying-material-sid">
        <name>Get Group Keying Material and OSCORE Sender ID</name>
        <t>This section builds on and updates what is defined in <xref section="9.1.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
        <t>After successfully processing a Key Distribution Request as a GET request to the endpoint /ace-group/GROUPNAME/nodes/NODENAME, the Group Manager composes the Key Distribution Response as defined in <xref section="9.1.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, with the following modifications.</t>
        <ul spacing="normal">
          <li>
            <t>If the requesting group member does not have exclusively the role of monitor, the Key Distribution Response <bcp14>MUST</bcp14> include the 'max_kem_pubkeys' parameter, whose encoding and semantics is the same as in the Join Response (see <xref target="sec-send-join-response"/> of the present document).</t>
          </li>
          <li>
            <t>The 'key' parameter is formatted as defined in <xref target="sec-send-join-response"/> of the present document. If the requesting group member has exclusively the role of monitor, then the 'key' parameter does not include the 'group_SenderId' parameter.  </t>
            <t>
Note that, in any other case, the current Sender ID of the group member is not specified as a separate parameter, but instead by the 'group_SenderId' parameter within the 'key' parameter.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-retrieve-sig-verif-data">
      <name>Retrieve Signature Verification Data</name>
      <t>Building on <xref section="9.6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the following defines additions to the operations by which a signature verifier retrieves from the Group Manager data required to verify signatures of messages protected with the group mode of Group OSCORE and sent to a group.</t>
      <t>After successfully processing a Signature Verification Data Request as a GET request to the endpoint /ace-group/GROUPNAME/verif-data, the Group Manager composes the Signature Verification Data Response as defined in <xref section="9.6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, with the following modifications.</t>
      <ul spacing="normal">
        <li>
          <t>Of the parameters present in the Join Response message (see <xref target="sec-send-join-response"/> of the present document), only the parameters 'gkty', 'key', 'num', 'exp', 'exi', and 'ace_groupcomm_profile' are present in the Signature Verification Data Response.  </t>
          <t>
The 'key' parameter includes only the following data:  </t>
          <ul spacing="normal">
            <li>
              <t>The parameters 'hkdf', 'contextId', 'cred_fmt', 'gp_enc_alg', 'sign_alg', and 'sign_params'. These parameters <bcp14>MUST</bcp14> be present.</t>
            </li>
            <li>
              <t>The 'alg' parameter. This parameter <bcp14>MUST NOT</bcp14> be present if the group is a signature-only group. Otherwise, it <bcp14>MUST</bcp14> be present.</t>
            </li>
            <li>
              <t>The 'ecdh_alg' parameter. This parameter <bcp14>MUST NOT</bcp14> be present if the group is a signature-only group or is a KEM-based group. Otherwise, it <bcp14>MUST</bcp14> be present.</t>
            </li>
            <li>
              <t>The 'pqkem_alg' parameter. This parameter <bcp14>MUST NOT</bcp14> be present if the group is not a KEM-based group. Otherwise, it <bcp14>MUST</bcp14> be present.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="sec-interface">
      <name>Interface at the Group Manager</name>
      <t>In addition to what is specified in <xref section="8" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, this document extends the interface at the Group Manager by defining the new sub-resources specified in <xref target="sec-nodename-kem-pub-keys"/>, <xref target="sec-kem-pub-keys"/>, <xref target="sec-nodename-kem-ciphertexts"/>, and <xref target="sec-kem-ciphertexts"/>.</t>
      <t>The Group Manager hosts those resources for each KEM-group that it is responsible for.</t>
      <t>In addition to what is defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>, each handler of each new resource performs the following verifications.</t>
      <ul spacing="normal">
        <li>
          <t>The handler verifies that the requesting Client is a current member of the group. If the verification fails, the handler replies with a 4.03 (Forbidden) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 0 ("Operation permitted only to group members").</t>
        </li>
        <li>
          <t>The handler verifies that the requesting Client has not exclusively the role of monitor in the group. If the verification fails, the handler replies with a 4.00 (Bad Request) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 1 ("Request inconsistent with the current roles").</t>
        </li>
        <li>
          <t>The handler verifies that the OSCORE group identified by GROUPNAME is currently active (see <xref section="8.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>). If the verification fails, the handler replies with a 5.03 (Service Unavailable) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 9 ("Group currently not active").  </t>
          <t>
The method to set the current group status is out of the scope of this document, and it is defined for the administrator interface of the Group Manager specified in <xref target="I-D.ietf-ace-oscore-gm-admin"/>.</t>
        </li>
      </ul>
      <t><xref target="sec-methods-gm"/> provides a summary of the CoAP methods that are permitted to use for accessing the new resources at the Group Manager, for nodes with different roles in the group (REQ11).</t>
      <section anchor="sec-nodename-kem-pub-keys">
        <name>/ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys</name>
        <t>The Group Manager creates this resource after successfully processing a Join Request, if and only if both the following conditions hold:</t>
        <ul spacing="normal">
          <li>
            <t>The OSCORE group GROUPNAME is a KEM-group.</t>
          </li>
          <li>
            <t>The resource does not already exist and, through the processed Join Request, the node NODENAME has joined the group GROUPNAME not exclusively as a monitor.  </t>
            <t>
This takes into account the case where the node re-joins the group possibly changing roles (i.e., sometimes exclusively as a monitor, while sometimes not), which does not result in re-creating the resource and re-initializing its representation.</t>
          </li>
        </ul>
        <t>The resource representation is a CBOR unsigned integer, which encodes the number of KEM public keys that are generated by the node NODENAME as a member of the group GROUPNAME and are currently stored at the Group Manager as intended to other members of the group. When creating the resource, its representation is set to the CBOR unsigned integer encoding the value 0 (see <xref target="sec-send-join-response"/>).</t>
        <t>This resource implements the POST, GET, and PUT handlers.</t>
        <t>Each handler of this resource verifies that the node name of the requesting Client is equal to NODENAME used in the url-path. If the verification fails, the handler replies with a 4.03 (Forbidden) error response.</t>
        <section anchor="sec-nodename-kem-pub-keys-post">
          <name>POST Handler</name>
          <t>The handler expects a POST request whose payload is a CBOR map, which includes a KEM public key generated by the requesting Client and intended to any and exactly one other member of the group (see <xref target="sec-upload-kem-pub-key"/>).</t>
          <t>If all verifications succeed, the handler replies with a 2.04 (Changed) response specifying the updated resource representation, i.e., the updated number of KEM public keys that the Group Manager currently stores as generated by the node NODENAME and pertaining to the group GROUPNAME. The payload of the response is formatted as defined in <xref target="sec-upload-kem-pub-key"/>.</t>
        </section>
        <section anchor="sec-nodename-kem-pub-keys-get">
          <name>GET Handler</name>
          <t>The handler expects a GET request.</t>
          <t>If all verifications succeed, the handler replies with a 2.05 (Content) response specifying the current resource representation, i.e., the number of KEM public keys that the Group Manager currently stores as generated by the node NODENAME and pertaining to the group GROUPNAME. The payload of the response is formatted as defined in <xref target="sec-counter-kem-pub-keys"/>.</t>
          <t>The Group Manager <bcp14>SHOULD</bcp14> make the resource at /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys also observable <xref target="RFC7641"/>, thus making it possible for the node NODENAME to subscribe for updates about the resource representation, instead of limiting the node to only rely on polling.</t>
        </section>
        <section anchor="sec-nodename-kem-pub-keys-put">
          <name>PUT Handler</name>
          <t>The handler expects a PUT request, whose payload is the CBOR unsigned integer encoding the value 0 (see <xref target="sec-delete-kem-pub-keys"/>).</t>
          <t>If all verifications succeed, the handler replies with a 2.04 (Changed) response specifying the updated resource representation, i.e., the updated number (0) of KEM public keys that the Group Manager currently stores as generated by the node NODENAME and pertaining to the group GROUPNAME. The payload of the response is formatted as defined in <xref target="sec-delete-kem-pub-keys"/>.</t>
        </section>
      </section>
      <section anchor="sec-kem-pub-keys">
        <name>/ace-group/GROUPNAME/kem-pub-keys</name>
        <t>The Group Manager creates this resource upon establishing the OSCORE group GROUPNAME, if and only if the  group is a KEM-group.</t>
        <t>This resource implements the POST handler.</t>
        <section anchor="sec-kem-pub-keys-post">
          <name>POST Handler</name>
          <t>The handler expects a POST request whose payload is a CBOR map, specifying a set of OSCORE Sender IDs associated with members of the group (see <xref target="sec-retrieve-kem-pub-keys"/>).</t>
          <t>If all verifications succeed, the handler replies with a 2.04 (Changed) response specifying a set of KEM public keys, each of which is a KEM public key of a specific member of the group indicated in the request. The payload of the response is formatted as defined in <xref target="sec-retrieve-kem-pub-keys"/>.</t>
        </section>
      </section>
      <section anchor="sec-nodename-kem-ciphertexts">
        <name>/ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets</name>
        <t>The Group Manager creates this resource after successfully processing a Join Request, if and only if both the following conditions hold:</t>
        <ul spacing="normal">
          <li>
            <t>The OSCORE group GROUPNAME is a KEM-group.</t>
          </li>
          <li>
            <t>The resource does not already exist and, through the processed Join Request, the node NODENAME has joined the group GROUPNAME not exclusively as a monitor.  </t>
            <t>
This takes into account the case where the node re-joins the group possibly changing roles (i.e., sometimes exclusively as a monitor, while sometimes not), which does not result in re-creating the resource.</t>
          </li>
        </ul>
        <t>This resource implements the POST handler.</t>
        <section anchor="sec-nodename-kem-ciphertexts-post">
          <name>POST Handler</name>
          <t>The handler expects a POST request whose payload is a CBOR map, specifying an encapsulated KEM shared secret computed by the requesting Client for a specific other member of the group, together with related information associated with that group member (see <xref target="sec-upload-kem-ciphertext"/>).</t>
          <t>The handler verifies that the node name of the requesting Client is equal to NODENAME used in the url-path. If the verification fails, the handler replies with a 4.03 (Forbidden) error response.</t>
          <t>If all verifications succeed, the handler replies with a 2.04 (Changed) response that has no payload.</t>
        </section>
      </section>
      <section anchor="sec-kem-ciphertexts">
        <name>/ace-group/GROUPNAME/kem-enc-secrets</name>
        <t>The Group Manager creates this resource upon establishing the OSCORE group GROUPNAME, if and only if the  group is a KEM-group.</t>
        <t>This resource implements the POST handler.</t>
        <section anchor="sec-kem-ciphertexts-post">
          <name>POST</name>
          <t>The handler expects a POST request whose payload is a CBOR map, specifying the OSCORE Sender ID associated with a specific member of the group that computed an encapsulated KEM shared secret intended to the requesting Client (see <xref target="sec-retrieve-kem-ciphertext"/>).</t>
          <t>If all verifications succeed, the handler replies with a 2.04 (Changed) response, specifying an encapsulated KEM shared secret intended to the requesting Client, together with related information associated with the requesting Client. The payload of the response is formatted as defined in <xref target="sec-retrieve-kem-ciphertext"/>.</t>
        </section>
      </section>
      <section anchor="sec-methods-gm">
        <name>Permitted Methods</name>
        <t><xref target="tab-methods"/> below extends Table 2 of <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> and summarizes the CoAP methods that are permitted for accessing different resources at the Group Manager, for (non-)members of a group with group name GROUPNAME, and considering different roles. The last two rows of the table apply to a node with node name NODENAME.</t>
        <t>The table uses the following abbreviations.</t>
        <ul spacing="normal">
          <li>
            <t>G = CoAP method GET</t>
          </li>
          <li>
            <t>P = CoAP method POST</t>
          </li>
          <li>
            <t>Pu = CoAP method PUT</t>
          </li>
          <li>
            <t>Type1 = Member as a Requester and/or Responder</t>
          </li>
          <li>
            <t>Type2 = Member as a Monitor</t>
          </li>
          <li>
            <t>Type3 = Non-member (authorized to be signature verifier)</t>
          </li>
          <li>
            <t>Type4 = Non-member (not authorized to be signature verifier)</t>
          </li>
        </ul>
        <table align="center" anchor="tab-methods">
          <name>Permitted CoAP Methods on the Group Manager Resources</name>
          <thead>
            <tr>
              <th align="left">Resource</th>
              <th align="left">Type1</th>
              <th align="left">Type2</th>
              <th align="left">Type3</th>
              <th align="left">Type4</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">/ace-group/GROUPNAME/kem-pub-keys</td>
              <td align="left">P</td>
              <td align="left">-</td>
              <td align="left">-</td>
              <td align="left">-</td>
            </tr>
            <tr>
              <td align="left">/ace-group/GROUPNAME/kem-enc-secrets</td>
              <td align="left">P</td>
              <td align="left">-</td>
              <td align="left">-</td>
              <td align="left">-</td>
            </tr>
            <tr>
              <td align="left">/ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys</td>
              <td align="left">G P Pu</td>
              <td align="left">-</td>
              <td align="left">-</td>
              <td align="left">-</td>
            </tr>
            <tr>
              <td align="left">/ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets</td>
              <td align="left">P</td>
              <td align="left">-</td>
              <td align="left">-</td>
              <td align="left">-</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-operations-clients">
        <name>Operations Supported by Clients</name>
        <t>Building on what is defined in <xref section="4.1.1" sectionFormat="of" target="RFC9594"/> and in <xref section="8.6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, and with reference to the additional resources at the Group Manager defined in <xref target="sec-interface"/> of the present document, a Client with node name NODENAME that supports the pairwise mode of Group OSCORE and joins a KEM-based group GROUPNAME not exclusively as a monitor is expected to support all the operations available at such additional resources and the corresponding interactions with the Group Manager (REQ12), i.e.:</t>
        <ul spacing="normal">
          <li>
            <t>POST request to /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys, in order to upload at the Group Manager an own KEM public key as intended to any and exactly one other member of the group GROUPNAME.</t>
          </li>
          <li>
            <t>GET request to /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys, in order to retrieve the number of own KEM public keys that are currently stored at the Group Manager as intended to other members of the group GROUPNAME.</t>
          </li>
          <li>
            <t>PUT request to /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys, in order to discard all its own KEM public keys stored at the Group Manager as intended to other members of the group GROUPNAME.</t>
          </li>
          <li>
            <t>POST request to /ace-group/GROUPNAME/kem-pub-keys, in order to retrieve from the Group Manager a set of KEM public keys, each of which is a KEM public key of a specific other member of the group GROUPNAME.</t>
          </li>
          <li>
            <t>POST request to /ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets, in order to upload at the Group Manager an encapsulated KEM shared secret computed by the requesting Client for a specific other member of the group GROUPNAME, together with related information associated with that group member.</t>
          </li>
          <li>
            <t>POST request to /ace-group/GROUPNAME/kem-enc-secrets, in order to retrieve from the Group Manager an encapsulated KEM shared secret intended to the requesting Client, together with related information associated with the requesting Client.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-interactions">
      <name>Additional Interactions with the Group Manager</name>
      <t>This section defines the possible interactions with the Group Manager, in addition to those specified in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/>.</t>
      <t>These additional interactions are relevant only for members of a KEM-based group that support the pairwise mode of Group OSCORE and have not exclusively the role of monitor in the group.</t>
      <section anchor="sec-upload-kem-pub-key">
        <name>Upload a KEM Public Key</name>
        <t>A group member can upload at the Group Manager an own KEM public key, intended to any and exactly one other member of the group. To this end, the group member sends a KEM Public Key Upload Request to the Group Manager.</t>
        <t>That is, the group member sends a CoAP POST request to the endpoint /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys at the Group Manager (see <xref target="sec-nodename-kem-pub-keys-post"/>), where GROUPNAME is the name of the OSCORE group and NODENAME is the node name of the group member.</t>
        <t>The request <bcp14>MUST</bcp14> have Content-Format "application/ace-groupcomm+cbor". The payload of the request is formatted as a CBOR map, which <bcp14>MUST</bcp14> contain the following field with the value specified below:</t>
        <ul spacing="normal">
          <li>
            <t>'client_kem_pubkey': encoded as a CBOR byte string, whose value is the binary representation of a KEM public key newly generated by the requesting Client.</t>
          </li>
        </ul>
        <t>If the Group Manager is currently storing the maximum admitted number of KEM public keys for that requesting Client in the group, the Group Manager <bcp14>MUST</bcp14> reply with a 5.03 (Service Unavailable) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 13 ("Reached limit of KEM public keys").</t>
        <t>If the KEM public key is not compatible with the KEM used as Pairwise Key Agreement Algorithm in the group, the Group Manager <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 14 ("KEM public key incompatible with the group configuration").</t>
        <t>If all verifications succeed, the Group Manager performs the following actions:</t>
        <ul spacing="normal">
          <li>
            <t>The Group Manager stores the KEM public key specified in the 'client_kem_pubkey' parameter, as the latest KEM public key generated by the requesting Client and pertaining to the group.  </t>
            <t>
Furthermore, the Group Manager associates the KEM public key with the OSCORE Sender ID of the requesting Client in the group. The Group Manager <bcp14>MUST</bcp14> keep this association up-to-date over time, in the event that the requesting Client changes its OSCORE Sender ID in the group.</t>
          </li>
          <li>
            <t>The Group Manager updates the resource representation to reflect the number of currently stored KEM public keys generated by the requesting Client and pertaining to the group. That is, if such number is N upon receiving the KEM Public Key Upload Request, the updated resource representation is the CBOR unsigned integer encoding the value (N + 1).</t>
          </li>
        </ul>
        <t>Then, the Group Manager replies with a 2.04 (Changed) KEM Public Key Upload Response, which <bcp14>MUST</bcp14> have Content-Format "application/cbor". The payload of the response specifies the latest, just updated resource representation, i.e., the CBOR unsigned integer encoding the value (N + 1).</t>
        <t>After receiving the KEM Public Key Upload Response, the group member stores the KEM public key uploaded at the Group Manager, the corresponding KEM private key, and the SHA-256 hash <xref target="SHA-256"/> of the KEM public key as the corresponding identifier.</t>
        <t><xref target="fig-kem-pub-key-req-resp"/> gives an overview of the exchange described above,  while <xref target="fig-kem-pub-key-resp-ex"/> shows an example of KEM Public Key Upload Request-Response.</t>
        <figure anchor="fig-kem-pub-key-req-resp">
          <name>Message Flow of KEM Public Key Upload Request-Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="568" viewBox="0 0 568 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,64 L 24,160" fill="none" stroke="black"/>
                <path d="M 536,64 L 536,160" fill="none" stroke="black"/>
                <path d="M 32,96 L 528,96" fill="none" stroke="black"/>
                <path d="M 32,144 L 88,144" fill="none" stroke="black"/>
                <path d="M 480,144 L 528,144" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="536,96 524,90.4 524,101.6" fill="black" transform="rotate(0,528,96)"/>
                <polygon class="arrowhead" points="40,144 28,138.4 28,149.6" fill="black" transform="rotate(180,32,144)"/>
                <g class="text">
                  <text x="24" y="36">Group</text>
                  <text x="536" y="36">Group</text>
                  <text x="28" y="52">Member</text>
                  <text x="536" y="52">Manager</text>
                  <text x="176" y="84">KEM</text>
                  <text x="220" y="84">Public</text>
                  <text x="264" y="84">Key</text>
                  <text x="308" y="84">Upload</text>
                  <text x="368" y="84">Request</text>
                  <text x="84" y="116">POST</text>
                  <text x="300" y="116">/ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys</text>
                  <text x="112" y="148">KEM</text>
                  <text x="156" y="148">Public</text>
                  <text x="200" y="148">Key</text>
                  <text x="244" y="148">Upload</text>
                  <text x="312" y="148">Response:</text>
                  <text x="372" y="148">2.04</text>
                  <text x="432" y="148">(Changed)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Group                                                           Group
Member                                                         Manager
  |                                                               |
  |                 KEM Public Key Upload Request                 |
  |-------------------------------------------------------------->|
  |     POST /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys     |
  |                                                               |
  |<------- KEM Public Key Upload Response: 2.04 (Changed) -------|
  |                                                               |
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-kem-pub-key-resp-ex">
          <name>Example of KEM Public Key Upload Request-Response</name>
          <artwork><![CDATA[
   Request:

   Header: POST (Code=0.02)
   Uri-Host: "kdc.example.com"
   Uri-Path: "ace-group"
   Uri-Path: "g1"
   Uri-Path: "nodes"
   Uri-Path: "c101"
   Uri-Path: "kem-pub-keys"
   Content-Format: 261 (application/ace-groupcomm+cbor)
   Payload (in CBOR diagnostic notation):
   {
     e'client_kem_pubkey': h'4199...6c5a' / elided for brevity /
   }


   Response:

   Header: Changed (Code=2.04)
   Content-Format: 60 (application/cbor)
   Payload (in CBOR diagnostic notation):
     5
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-counter-kem-pub-keys">
        <name>Retrieve Number of Available Own KEM Public Keys</name>
        <t>A group member can retrieve from the Group Manager the number of own KEM public keys that the Group Manager currently stores as pertaining to the group. To this end, the group member sends a KEM Public Key Number Request to the Group Manager.</t>
        <t>That is, the group member sends a CoAP GET request to the endpoint /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys at the Group Manager (see <xref target="sec-nodename-kem-pub-keys-get"/>), where GROUPNAME is the name of the OSCORE group and NODENAME is the node name of the group member.</t>
        <t>The 2.05 (Content) KEM Public Key Number Response <bcp14>MUST</bcp14> have Content-Format "application/cbor". The payload of the response specifies the current resource representation, i.e., it is a CBOR unsigned integer encoding the number of KEM public keys that the Group Manager currently stores as generated by the node NODENAME and pertaining to the group GROUPNAME.</t>
        <t><xref target="fig-kem-pub-key-num-req-resp"/> gives an overview of the exchange described above,  while <xref target="fig-kem-pub-key-num-resp-ex"/> shows an example of KEM Public Key Number Request-Response.</t>
        <figure anchor="fig-kem-pub-key-num-req-resp">
          <name>Message Flow of KEM Public Key Number Request-Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="568" viewBox="0 0 568 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,64 L 24,160" fill="none" stroke="black"/>
                <path d="M 536,64 L 536,160" fill="none" stroke="black"/>
                <path d="M 32,96 L 528,96" fill="none" stroke="black"/>
                <path d="M 32,144 L 88,144" fill="none" stroke="black"/>
                <path d="M 480,144 L 528,144" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="536,96 524,90.4 524,101.6" fill="black" transform="rotate(0,528,96)"/>
                <polygon class="arrowhead" points="40,144 28,138.4 28,149.6" fill="black" transform="rotate(180,32,144)"/>
                <g class="text">
                  <text x="24" y="36">Group</text>
                  <text x="536" y="36">Group</text>
                  <text x="28" y="52">Member</text>
                  <text x="536" y="52">Manager</text>
                  <text x="176" y="84">KEM</text>
                  <text x="220" y="84">Public</text>
                  <text x="264" y="84">Key</text>
                  <text x="308" y="84">Number</text>
                  <text x="368" y="84">Request</text>
                  <text x="80" y="116">GET</text>
                  <text x="292" y="116">/ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys</text>
                  <text x="112" y="148">KEM</text>
                  <text x="156" y="148">Public</text>
                  <text x="200" y="148">Key</text>
                  <text x="244" y="148">Number</text>
                  <text x="312" y="148">Response:</text>
                  <text x="372" y="148">2.05</text>
                  <text x="432" y="148">(Content)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Group                                                           Group
Member                                                         Manager
  |                                                               |
  |                 KEM Public Key Number Request                 |
  |-------------------------------------------------------------->|
  |     GET /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys      |
  |                                                               |
  |<------- KEM Public Key Number Response: 2.05 (Content) -------|
  |                                                               |
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-kem-pub-key-num-resp-ex">
          <name>Example of KEM Public Key Number Request-Response</name>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Host: "kdc.example.com"
   Uri-Path: "ace-group"
   Uri-Path: "g1"
   Uri-Path: "nodes"
   Uri-Path: "c101"
   Uri-Path: "kem-pub-keys"


   Response:

   Header: Content (Code=2.05)
   Content-Format: 60 (application/cbor)
   Payload (in CBOR diagnostic notation):
     5
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-delete-kem-pub-keys">
        <name>Discard Own KEM Public Keys</name>
        <t>A group member can request the Group Manager to delete from its local storage all the KEM public keys generated by the group member and pertaining to the group. To this end, the group member sends a KEM Public Key Discard Request to the Group Manager.</t>
        <t>That is, the group member sends a CoAP PUT request to the endpoint /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys at the Group Manager (see <xref target="sec-nodename-kem-pub-keys-put"/>), where GROUPNAME is the name of the OSCORE group and NODENAME is the node name of the group member.</t>
        <t>The request <bcp14>MUST</bcp14> have Content-Format "application/cbor". The payload of the request is the CBOR unsigned integer encoding the value 0.</t>
        <t>If the Group Manager receives a KEM Public Key Discard Request whose payload is different from the CBOR unsigned integer encoding the value 0, the Group Manager <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) error response.</t>
        <t>If all verifications succeed, the Group Manager performs the following actions.</t>
        <t>First, the Group Manager deletes from its local storage all the KEM public keys generated by the node NODENAME and pertaining to the group GROUPNAME. Then, the Group Manager updates the resource representation to be the CBOR unsigned integer encoding the value 0.</t>
        <t>Finally, the Group Manager replies with a 2.04 (Changed) KEM Public Key Discard Response, which <bcp14>MUST</bcp14> have Content-Format "application/cbor". The payload of the response specifies the latest, just updated resource representation, i.e., the CBOR unsigned integer encoding the value 0.</t>
        <t>After receiving the KEM Public Key Discard Response, the group member deletes from its local storage all its own KEM public keys that it uploaded at the Group Manager as pertaining to the group GROUPNAME, as well as the corresponding KEM private keys and SHA-256 hashes <xref target="SHA-256"/> of the KEM public keys as the corresponding identifiers.</t>
        <t><xref target="fig-kem-pub-key-discard-req-resp"/> gives an overview of the exchange described above, while <xref target="fig-kem-pub-key-discard-resp-ex"/> shows an example of KEM Public Key Discard Request-Response.</t>
        <figure anchor="fig-kem-pub-key-discard-req-resp">
          <name>Message Flow of KEM Public Key Discard Request-Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="568" viewBox="0 0 568 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,64 L 24,160" fill="none" stroke="black"/>
                <path d="M 536,64 L 536,160" fill="none" stroke="black"/>
                <path d="M 32,96 L 528,96" fill="none" stroke="black"/>
                <path d="M 32,144 L 80,144" fill="none" stroke="black"/>
                <path d="M 480,144 L 528,144" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="536,96 524,90.4 524,101.6" fill="black" transform="rotate(0,528,96)"/>
                <polygon class="arrowhead" points="40,144 28,138.4 28,149.6" fill="black" transform="rotate(180,32,144)"/>
                <g class="text">
                  <text x="24" y="36">Group</text>
                  <text x="536" y="36">Group</text>
                  <text x="28" y="52">Member</text>
                  <text x="536" y="52">Manager</text>
                  <text x="168" y="84">KEM</text>
                  <text x="212" y="84">Public</text>
                  <text x="256" y="84">Key</text>
                  <text x="304" y="84">Discard</text>
                  <text x="368" y="84">Request</text>
                  <text x="80" y="116">PUT</text>
                  <text x="292" y="116">/ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys</text>
                  <text x="104" y="148">KEM</text>
                  <text x="148" y="148">Public</text>
                  <text x="192" y="148">Key</text>
                  <text x="240" y="148">Discard</text>
                  <text x="312" y="148">Response:</text>
                  <text x="372" y="148">2.04</text>
                  <text x="432" y="148">(Changed)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Group                                                           Group
Member                                                         Manager
  |                                                               |
  |                KEM Public Key Discard Request                 |
  |-------------------------------------------------------------->|
  |     PUT /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys      |
  |                                                               |
  |<------ KEM Public Key Discard Response: 2.04 (Changed) -------|
  |                                                               |
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-kem-pub-key-discard-resp-ex">
          <name>Example of KEM Public Key Discard Request-Response</name>
          <artwork><![CDATA[
   Request:

   Header: PUT (Code=0.03)
   Uri-Host: "kdc.example.com"
   Uri-Path: "ace-group"
   Uri-Path: "g1"
   Uri-Path: "nodes"
   Uri-Path: "c101"
   Uri-Path: "kem-pub-keys"
   Content-Format: 60 (application/cbor)
   Payload (in CBOR diagnostic notation):
     0


   Response:

   Header: Changed (Code=2.04)
   Content-Format: 60 (application/cbor)
   Payload (in CBOR diagnostic notation):
     0
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-retrieve-kem-pub-keys">
        <name>Retrieve KEM Public Keys of Group Members</name>
        <t>A group member can retrieve from the Group Manager a KEM public key of a specific other group member. To this end, the group member sends a KEM Public Key Retrieval Request to the Group Manager.</t>
        <t>That is, the group member sends a CoAP POST request to the endpoint /ace-group/GROUPNAME/kem-pub-keys at the Group Manager (see <xref target="sec-kem-pub-keys-post"/>), where GROUPNAME is the name of the OSCORE group.</t>
        <t>The request <bcp14>MUST</bcp14> have Content-Format "application/ace-groupcomm+cbor". The payload of the request is formatted as a CBOR map, which <bcp14>MUST</bcp14> contain the following field with the value specified below:</t>
        <ul spacing="normal">
          <li>
            <t>'peer_identifiers': encoded as a CBOR array REQ_ARRAY. Each element of the array is a CBOR byte string, whose value is the OSCORE Sender ID of a member of the group GROUPNAME.  </t>
            <t>
The array <bcp14>MUST NOT</bcp14> be empty, <bcp14>MUST NOT</bcp14> include an element that specifies the OSCORE Sender ID of the requesting Client, and <bcp14>MUST NOT</bcp14> include multiple elements that specify the same OSCORE Sender ID.</t>
          </li>
        </ul>
        <t>When receiving a KEM Public Key Retrieval Request, the Group Manager <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) response if the CBOR array REQ_ARRAY conveyed in the request payload is empty, or any of its elements specifies the OSCORE Sender ID of the requesting Client, or it includes multiple elements that specify the same OSCORE Sender ID.</t>
        <t>Otherwise, if all verifications succeed, the Group Manager performs the following actions.</t>
        <ul spacing="normal">
          <li>
            <t>The Group Manager composes a CBOR array RESP_ARRAY of N elements, where N is the number of elements of REQ_ARRAY. Each element of RESP_ARRAY is provisionally set to the CBOR simple value <tt>null</tt> (0xf6).</t>
          </li>
          <li>
            <t>The Group Manager sequentially considers the elements of REQ_ARRAY.  </t>
            <t>
When considering the i-th element of REQ_ARRAY, the Group Manager checks whether it is currently storing any KEM public key that was uploaded by the group member NODENAME of the group GROUPNAME identified by the OSCORE Sender ID specified by the array element under consideration.  </t>
            <t>
If the Group Manager is not storing any such KEM public key, the Group Manager moves on to consider the next element of REQ_ARRAY (if any).  </t>
            <t>
Otherwise, the Group Manager sets the i-th element of RESP_ARRAY as a CBOR byte string, whose value is the binary representation of the oldest KEM public key stored for the identified group member.  </t>
            <t>
Then, the Group Manager deletes that oldest KEM public key from its local storage, and it updates the representation of the resource at /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys to reflect the number of currently stored KEM public keys of the group member NODENAME and pertaining to the group. That is, if such number is N upon receiving the KEM Public Key Retrieval Request, the updated resource representation is the CBOR unsigned integer encoding the value (N - 1).  </t>
            <t>
After that, the Group Manager moves on to consider the next element of REQ_ARRAY (if any).</t>
          </li>
        </ul>
        <t>Then, the Group Manager replies with a 2.04 (Changed) KEM Public Key Retrieval Response, which <bcp14>MUST</bcp14> have Content-Format "application/ace-groupcomm+cbor". The payload of the response is formatted as a CBOR map, which <bcp14>MUST</bcp14> contain the following field with the value specified below:</t>
        <ul spacing="normal">
          <li>
            <t>'kem_pubkeys': specifying the CBOR array RESP_ARRAY.</t>
          </li>
        </ul>
        <t><xref target="fig-kem-pub-key-retrieval-req-resp"/> gives an overview of the exchange described above,  while <xref target="fig-kem-pub-key-retrieval-resp-ex"/> shows an example of KEM Public Key Retrieval Request-Response.</t>
        <figure anchor="fig-kem-pub-key-retrieval-req-resp">
          <name>Message Flow of KEM Public Key Retrieval Request-Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="568" viewBox="0 0 568 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,64 L 24,160" fill="none" stroke="black"/>
                <path d="M 536,64 L 536,160" fill="none" stroke="black"/>
                <path d="M 32,96 L 528,96" fill="none" stroke="black"/>
                <path d="M 32,144 L 72,144" fill="none" stroke="black"/>
                <path d="M 488,144 L 528,144" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="536,96 524,90.4 524,101.6" fill="black" transform="rotate(0,528,96)"/>
                <polygon class="arrowhead" points="40,144 28,138.4 28,149.6" fill="black" transform="rotate(180,32,144)"/>
                <g class="text">
                  <text x="24" y="36">Group</text>
                  <text x="536" y="36">Group</text>
                  <text x="28" y="52">Member</text>
                  <text x="536" y="52">Manager</text>
                  <text x="160" y="84">KEM</text>
                  <text x="204" y="84">Public</text>
                  <text x="248" y="84">Key</text>
                  <text x="304" y="84">Retrieval</text>
                  <text x="376" y="84">Request</text>
                  <text x="140" y="116">POST</text>
                  <text x="296" y="116">/ace-group/GROUPNAME/kem-pub-keys</text>
                  <text x="96" y="148">KEM</text>
                  <text x="140" y="148">Public</text>
                  <text x="184" y="148">Key</text>
                  <text x="240" y="148">Retrieval</text>
                  <text x="320" y="148">Response:</text>
                  <text x="380" y="148">2.04</text>
                  <text x="440" y="148">(Changed)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Group                                                           Group
Member                                                         Manager
  |                                                               |
  |               KEM Public Key Retrieval Request                |
  |-------------------------------------------------------------->|
  |            POST /ace-group/GROUPNAME/kem-pub-keys             |
  |                                                               |
  |<----- KEM Public Key Retrieval Response: 2.04 (Changed) ------|
  |                                                               |
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-kem-pub-key-retrieval-resp-ex">
          <name>Example of KEM Public Key Retrieval Request-Response</name>
          <artwork><![CDATA[
   Request:

   Header: POST (Code=0.02)
   Uri-Host: "kdc.example.com"
   Uri-Path: "ace-group"
   Uri-Path: "g1"
   Uri-Path: "kem-pub-keys"
   Content-Format: 261 (application/ace-groupcomm+cbor)
   Payload (in CBOR diagnostic notation):
   {
     / peer_identifiers / 15: [h'01', h'02', h'03']
   }


   Response:

   Header: Changed (Code=2.04)
   Content-Format: 261 (application/ace-groupcomm+cbor)
   Payload (in CBOR diagnostic notation):
   {
     e'kem_pubkeys': [
                       h'acb6...976e', / elided for brevity /
                       h'bbf2...ae88', / elided for brevity /
                       null
                     ]
   }
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-upload-kem-ciphertext">
        <name>Upload an Encapsulated KEM Shared Secret</name>
        <t>A group member P can upload at the Group Manager an encapsulated KEM shared secret, which is computed by P and is intended to a specific other group member Q. To this end, the group member P sends an Encapsulated KEM Shared Secret Upload Request to the Group Manager.</t>
        <t>That is, the group member P sends a CoAP POST request to the endpoint /ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets at the Group Manager (see <xref target="sec-nodename-kem-ciphertexts-post"/>), where GROUPNAME is the name of the OSCORE group and NODENAME is the node name of the group member P.</t>
        <t>The request <bcp14>MUST</bcp14> have Content-Format "application/ace-groupcomm+cbor". The payload of the request is formatted as a CBOR map, which <bcp14>MUST</bcp14> contain the following fields with the value specified below:</t>
        <ul spacing="normal">
          <li>
            <t>'kem_enc_sec': encoded as a CBOR byte string, whose value is the encapsulated KEM shared secret computed by P and intended to Q. The encapsulated KEM shared secret is associated with a shared secret computed by P and intended to Q.  </t>
            <t>
Consistent with what is specified in <xref section="3" sectionFormat="of" target="I-D.tiloca-core-group-oscore-kem"/>, P uses the shared secret to derive its Pairwise Sender Key associated with Q. That is, such Pairwise Sender Key is used by P for processing outgoing messages protected with the pairwise mode of Group OSCORE and intended to Q.</t>
          </li>
          <li>
            <t>'kem_pubkey_hash': encoded as a CBOR byte string, whose value is the SHA-256 hash <xref target="SHA-256"/> of a KEM public key of Q. In particular, the SHA-256 hash identifies Q's KEM public key that P used to compute the shared secret associated with the encapsulated KEM shared secret that is specified in the 'kem_enc_sec' parameter</t>
          </li>
          <li>
            <t>'group_senderId': encoded as a CBOR byte string, whose value is the OSCORE Sender ID of Q in the group.</t>
          </li>
        </ul>
        <t>When receiving an Encapsulated KEM Shared Secret Upload Request, the Group Manager <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) response if any of the following conditions holds:</t>
        <ul spacing="normal">
          <li>
            <t>The 'group_senderId' parameter specifies an OSCORE Sender ID that is not associated with any current member of the group.</t>
          </li>
          <li>
            <t>The 'group_senderId' parameter specifies the OSCORE Sender ID of the requesting Client. The Group Manager ultimately identifies the requesting Client (and thereby determines its Sender ID in the group) by means of the secure communication association that it has with the requesting Client.</t>
          </li>
        </ul>
        <t>If the encapsulated KEM shared secret specified in the 'kem_enc_sec' parameter of the Encapsulated KEM Shared Secret Upload Request is not compatible with the KEM used as Pairwise Key Agreement Algorithm in the group, the Group Manager <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) error response. The response <bcp14>MUST</bcp14> have Content-Format set to "application/concise-problem-details+cbor" <xref target="RFC9290"/> and is formatted as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>. Within the Custom Problem Detail entry 'ace-groupcomm-error', the value of the 'error-id' field <bcp14>MUST</bcp14> be set to 15 ("Encapsulated KEM shared secret incompatible with the group configuration").</t>
        <t>Otherwise, if all verifications succeed, the Group Manager stores a tuple composed of the following elements, as pertaining to the group GROUPNAME:</t>
        <ul spacing="normal">
          <li>
            <t>The encapsulated KEM shared secret specified in the 'kem_enc_sec' parameter of the Encapsulated KEM Shared Secret Upload Request.</t>
          </li>
          <li>
            <t>The hash of the KEM public key of Q specified in the 'kem_pubkey_hash' parameter of the Encapsulated KEM Shared Secret Upload Request.</t>
          </li>
          <li>
            <t>The OSCORE Sender ID of Q in the group specified in the 'group_senderId' parameter of the Encapsulated KEM Shared Secret Upload Request, as identifying the intended consumer of the encapsulated KEM shared secret.</t>
          </li>
          <li>
            <t>The OSCORE Sender ID of P in the group as identifying the producer of the encapsulated KEM shared secret, which the Group Manager determines as the current Sender ID of the requesting Client in the group.</t>
          </li>
        </ul>
        <t>The Group Manager <bcp14>MUST</bcp14> keep up-to-date the stored tuple over time, in the event that any of the two group members P and Q changes its OSCORE Sender ID in the group.</t>
        <t>If a new encapsulated KEM shared secret is uploaded at the Group Manager together with the same consumer Sender ID and producer Sender ID for which another encapsulated KEM shared secret is already stored for the group GROUPNAME, then the latest uploaded encapsulated KEM shared secret and accompanying hash of a KEM public key <bcp14>MUST</bcp14> overwrite the current ones in the tuple stored for those two Sender IDs.</t>
        <t>Finally, the Group Manager replies with a 2.04 (Changed) Encapsulated KEM Shared Secret Upload Response, which has no payload.</t>
        <t><xref target="fig-kem-ciphertext-upload-req-resp"/> gives an overview of the exchange described above,  while <xref target="fig-kem-ciphertext-upload-resp-ex"/> shows an example of Encapsulated KEM Shared Secret Upload Request-Response.</t>
        <figure anchor="fig-kem-ciphertext-upload-req-resp">
          <name>Message Flow of Encapsulated KEM Shared Secret Upload Request-Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="568" viewBox="0 0 568 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,64 L 24,192" fill="none" stroke="black"/>
                <path d="M 536,64 L 536,192" fill="none" stroke="black"/>
                <path d="M 32,112 L 528,112" fill="none" stroke="black"/>
                <path d="M 32,160 L 152,160" fill="none" stroke="black"/>
                <path d="M 424,160 L 528,160" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="536,112 524,106.4 524,117.6" fill="black" transform="rotate(0,528,112)"/>
                <polygon class="arrowhead" points="40,160 28,154.4 28,165.6" fill="black" transform="rotate(180,32,160)"/>
                <g class="text">
                  <text x="24" y="36">Group</text>
                  <text x="536" y="36">Group</text>
                  <text x="28" y="52">Member</text>
                  <text x="536" y="52">Manager</text>
                  <text x="212" y="84">Encapsulated</text>
                  <text x="280" y="84">KEM</text>
                  <text x="324" y="84">Shared</text>
                  <text x="380" y="84">Secret</text>
                  <text x="252" y="100">Upload</text>
                  <text x="312" y="100">Request</text>
                  <text x="68" y="132">POST</text>
                  <text x="296" y="132">/ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets</text>
                  <text x="212" y="164">Encapsulated</text>
                  <text x="280" y="164">KEM</text>
                  <text x="324" y="164">Shared</text>
                  <text x="380" y="164">Secret</text>
                  <text x="188" y="180">Upload</text>
                  <text x="256" y="180">Response:</text>
                  <text x="316" y="180">2.04</text>
                  <text x="376" y="180">(Changed)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Group                                                           Group
Member                                                         Manager
  |                                                               |
  |                 Encapsulated KEM Shared Secret                |
  |                         Upload Request                        |
  |-------------------------------------------------------------->|
  |   POST /ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets    |
  |                                                               |
  |<--------------- Encapsulated KEM Shared Secret  --------------|
  |                 Upload Response: 2.04 (Changed)               |
  |                                                               |
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-kem-ciphertext-upload-resp-ex">
          <name>Example of Encapsulated KEM Shared Secret Upload Request-Response</name>
          <artwork><![CDATA[
   Request:

   Header: POST (Code=0.02)
   Uri-Host: "kdc.example.com"
   Uri-Path: "ace-group"
   Uri-Path: "g1"
   Uri-Path: "nodes"
   Uri-Path: "c101"
   Uri-Path: "kem-enc-secrets"
   Content-Format: 261 (application/ace-groupcomm+cbor)
   Payload (in CBOR diagnostic notation):
   {
            e'kem_enc_sec': h'1388...aa42', / elided for brevity /
        e'kem_pubkey_hash': h'9bef...ccd2', / elided for brevity /
     / group_senderId / 21: h'07'
   }


   Response:

   Header: Changed (Code=2.04)
]]></artwork>
        </figure>
      </section>
      <section anchor="sec-retrieve-kem-ciphertext">
        <name>Retrieve an Encapsulated KEM Shared Secret</name>
        <t>A group member P can retrieve from the Group Manager the encapsulated KEM shared secret that a specific other group member Q computed and uploaded at the Group Manager as intended to P. To this end, the group member P sends an Encapsulated KEM Shared Secret Retrieval Request to the Group Manager.</t>
        <t>That is, the group member P sends a CoAP POST request to the endpoint /ace-group/GROUPNAME/kem-enc-secrets at the Group Manager (see <xref target="sec-kem-ciphertexts-post"/>), where GROUPNAME is the name of the OSCORE group.</t>
        <t>The request <bcp14>MUST</bcp14> have Content-Format "application/ace-groupcomm+cbor". The payload of the request is formatted as a CBOR map, which <bcp14>MUST</bcp14> contain the following field with the value specified below:</t>
        <ul spacing="normal">
          <li>
            <t>'group_senderId': encoded as a CBOR byte string, whose value is the OSCORE Sender ID of Q in the group.</t>
          </li>
        </ul>
        <t>When receiving an Encapsulated KEM Shared Secret Retrieval Request, the Group Manager <bcp14>MUST</bcp14> reply with a 4.00 (Bad Request) response if any of the following conditions holds:</t>
        <ul spacing="normal">
          <li>
            <t>The 'group_senderId' parameter specifies an OSCORE Sender ID that is not associated with any current member of the group.</t>
          </li>
          <li>
            <t>The 'group_senderId' parameter specifies the OSCORE Sender ID of the requesting Client. The Group Manager ultimately identifies the requesting Client (and thereby determines its Sender ID in the group) by means of the secure communication association that it has with the requesting Client.</t>
          </li>
        </ul>
        <t>Otherwise, if all verifications succeed, the Group Manager checks whether it is storing a tuple pertaining to the group GROUPNAME such that both the following conditions hold:</t>
        <ul spacing="normal">
          <li>
            <t>The OSCORE Sender ID of the producer of the encapsulated KEM shared secret is the Sender ID specified in the 'group_senderId' parameter of the Encapsulated KEM Shared Secret Retrieval Request.</t>
          </li>
          <li>
            <t>The OSCORE Sender ID of the intended consumer of the encapsulated KEM shared secret is the Sender ID of the requesting Client in the group.</t>
          </li>
        </ul>
        <t>If no such tuple is found, the Group Manager replies with a 2.04 (Changed) Encapsulated KEM Shared Secret Retrieval Response that has no payload.</t>
        <t>Instead, if such a tuple is found, the Group Manager retrieves from the tuple the encapsulated KEM shared secret ENC and the hash HASH of the KEM public key of the requesting Client. Then, the Group Manager deletes the tuple from its local storage.</t>
        <t>After that, the Group Manager replies with a 2.04 (Changed) Encapsulated KEM Shared Secret Retrieval Response, which <bcp14>MUST</bcp14> have Content-Format "application/ace-groupcomm+cbor". The payload of the response is formatted as a CBOR map, which <bcp14>MUST</bcp14> contain the following fields with the value specified below:</t>
        <ul spacing="normal">
          <li>
            <t>'kem_enc_sec': encoded as a CBOR byte string, whose value is the encapsulated KEM shared secret ENC retrieved above.</t>
          </li>
          <li>
            <t>'kem_pubkey_hash': encoded as a CBOR byte string, whose value is the hash HASH retrieved above.</t>
          </li>
        </ul>
        <t>When receiving an Encapsulated KEM Shared Secret Retrieval Response conveying a payload, the requesting Client P performs the following steps:</t>
        <ul spacing="normal">
          <li>
            <t>It retrieves the hash specified in the 'kem_pubkey_hash' parameter of the Encapsulated KEM Shared Secret Retrieval Response, and it uses the hash to retrieve the corresponding pair (KEM public key, KEM private key) from its local storage.  </t>
            <t>
That is, P retrieves the pair such that the hash from the Encapsulated KEM Shared Secret Retrieval Response is equal to the hash of the KEM public key within the pair.</t>
          </li>
          <li>
            <t>If such a pair is found, P uses the KEM private key within the pair with the encapsulated KEM shared secret specified in the 'kem_enc_sec' parameter of the Encapsulated KEM Shared Secret Retrieval Response, and it computes the same shared secret as the other group member Q.  </t>
            <t>
Consistent with what is specified in <xref section="3" sectionFormat="of" target="I-D.tiloca-core-group-oscore-kem"/>, P uses the shared secret to derive its Pairwise Recipient Key associated with Q. That is, such Pairwise Recipient Key is used by P for processing incoming messages from Q that are protected with the pairwise mode of Group OSCORE and intended to P.  </t>
            <t>
Finally, P deletes from its local storage the found pair (KEM public key, KEM private key) as well as the hash of the KEM public key as the corresponding identifier.</t>
          </li>
        </ul>
        <t><xref target="fig-kem-ciphertext-retrieval-req-resp"/> gives an overview of the exchange described above, while <xref target="fig-kem-ciphertext-retrieval-resp-ex"/> shows an example of Encapsulated KEM Shared Secret Retrieval Request-Response.</t>
        <figure anchor="fig-kem-ciphertext-retrieval-req-resp">
          <name>Message Flow of Encapsulated KEM Shared Secret Retrieval Request-Response</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="568" viewBox="0 0 568 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,64 L 24,192" fill="none" stroke="black"/>
                <path d="M 536,64 L 536,192" fill="none" stroke="black"/>
                <path d="M 32,112 L 528,112" fill="none" stroke="black"/>
                <path d="M 32,160 L 152,160" fill="none" stroke="black"/>
                <path d="M 416,160 L 528,160" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="536,112 524,106.4 524,117.6" fill="black" transform="rotate(0,528,112)"/>
                <polygon class="arrowhead" points="40,160 28,154.4 28,165.6" fill="black" transform="rotate(180,32,160)"/>
                <g class="text">
                  <text x="24" y="36">Group</text>
                  <text x="536" y="36">Group</text>
                  <text x="28" y="52">Member</text>
                  <text x="536" y="52">Manager</text>
                  <text x="212" y="84">Encapsulated</text>
                  <text x="280" y="84">KEM</text>
                  <text x="324" y="84">Shared</text>
                  <text x="380" y="84">Secret</text>
                  <text x="248" y="100">Retrieval</text>
                  <text x="320" y="100">Request</text>
                  <text x="132" y="132">POST</text>
                  <text x="300" y="132">/ace-group/GROUPNAME/kem-enc-secrets</text>
                  <text x="212" y="164">Encapsulated</text>
                  <text x="280" y="164">KEM</text>
                  <text x="324" y="164">Shared</text>
                  <text x="380" y="164">Secret</text>
                  <text x="184" y="180">Retrieval</text>
                  <text x="264" y="180">Response:</text>
                  <text x="324" y="180">2.04</text>
                  <text x="384" y="180">(Changed)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Group                                                           Group
Member                                                         Manager
  |                                                               |
  |                 Encapsulated KEM Shared Secret                |
  |                       Retrieval Request                       |
  |-------------------------------------------------------------->|
  |           POST /ace-group/GROUPNAME/kem-enc-secrets           |
  |                                                               |
  |<--------------- Encapsulated KEM Shared Secret ---------------|
  |               Retrieval Response: 2.04 (Changed)              |
  |                                                               |
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-kem-ciphertext-retrieval-resp-ex">
          <name>Example of Encapsulated KEM Shared Secret Retrieval Request-Response</name>
          <artwork><![CDATA[
   Request:

   Header: POST (Code=0.02)
   Uri-Host: "kdc.example.com"
   Uri-Path: "ace-group"
   Uri-Path: "g1"
   Uri-Path: "kem-enc-secrets"
   Content-Format: 261 (application/ace-groupcomm+cbor)
   Payload (in CBOR diagnostic notation):
   {
     / group_senderId / 21: h'00'
   }


   Response:

   Header: Changed (Code=2.04)
   Content-Format: 261 (application/ace-groupcomm+cbor)
   Payload (in CBOR diagnostic notation):
   {
         e'kem_enc_sec': h'1388...aa42', / elided for brevity /
     e'kem_pubkey_hash': h'9bef...ccd2' / elided for brevity /
   }
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="sec-removal">
      <name>Removal of a Group Member</name>
      <t>In addition to what is defined in <xref section="10" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the Group Manager performs the following actions when removing a node NODENAME from a KEM-based group GROUPNAME.</t>
      <ul spacing="normal">
        <li>
          <t>The Group Manager deletes from its local storage the leaving node's KEM public keys that the leaving node uploaded at the Group Manager, as intended to other members of the group.</t>
        </li>
        <li>
          <t>The Group Manager deletes from its local storage the encapsulated KEM shared secrets that the leaving node uploaded as intended to other members of the group, as well as the encapsulated KEM shared secrets that other members of the group uploaded as intended to the leaving node.  </t>
          <t>
Then, the Group Manager deletes the stored tuples pertaining to the deleted encapsulated KEM shared secrets above (see <xref target="sec-upload-kem-ciphertext"/> and <xref target="sec-retrieve-kem-ciphertext"/>). When doing so, the Group Manager deletes from its local storage the hashes of the KEM public keys associated with the deleted encapsulated KEM shared secrets. The deletion of a tuple in itself has no impact on the assignment and relinquishment of the OSCORE Sender IDs specified in the tuple.</t>
        </li>
      </ul>
      <t>The resources at /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys and at /ace-group/GROUPNAME/nodes/NODENAME/kem-enc-secrets are deleted when deleting their parent resource at /ace-group/GROUPNAME/nodes/NODENAME (see <xref section="5" sectionFormat="of" target="RFC9594"/>).</t>
    </section>
    <section anchor="sec-group-configuration">
      <name>Extended Group Configuration</name>
      <t>Editor's note: In its present form, the content of this section simply outlines the key points to cover; its presentation needs to be improved.</t>
      <t>With reference to <xref section="5.1" sectionFormat="of" target="I-D.ietf-ace-oscore-gm-admin"/>, the following applies.</t>
      <ul spacing="normal">
        <li>
          <t>Three new configuration parameters are defined:  </t>
          <ul spacing="normal">
            <li>
              <t>'kem_based'. This parameter specifies whether the group is a KEM-based group or not. When the configuration parameter 'pairwise_mode' has as value the CBOR simple value <tt>false</tt> (0xf4), this parameter has as value the CBOR simple value <tt>false</tt> (0xf4). When 'pairwise_mode' has as value the CBOR simple value <tt>true</tt> (0xf5), this parameter has as value the CBOR simple value <tt>true</tt> (0xf5) if the group is a KEM-based group, or the CBOR simple value <tt>false</tt> (0xf4) otherwise.</t>
            </li>
            <li>
              <t>'pqkem_alg'. When the configuration parameter 'kem_based' has as value the CBOR simple value <tt>false</tt> (0xf4), this parameter has as value the CBOR simple value <tt>null</tt> (0xf6). Otherwise, this parameter specifies the KEM used as Pairwise Key Agreement Algorithm in the group; it can take the same values that can be taken by the 'pqkem_alg' parameter of the Group_OSCORE_Input_Material object (see <xref target="sec-send-join-response"/>).</t>
            </li>
            <li>
              <t>'pqkem_params'. When the configuration parameter 'kem_based' has as value the CBOR simple value <tt>false</tt> (0xf4), this parameter has as value the CBOR simple value <tt>null</tt> (0xf6). Otherwise, this parameter specifies the parameters for the KEM used as Pairwise Key Agreement Algorithm in the group, as a CBOR array; it can take the same values that can be taken by the 'pqkem_params' parameter of the Group_OSCORE_Input_Material object (see <xref target="sec-send-join-response"/>).</t>
            </li>
          </ul>
        </li>
        <li>
          <t>One new status parameter is defined:  </t>
          <t>
'max_kem_pubkeys_admin'. This parameter specifies the maximum number of KEM public keys that the Group Manager stores as associated with the same Client within the group. Its value is an integer strictly greater than 0, which is encoded as a CBOR unsigned integer. This parameter is present if and only if the parameter 'kem_based' has as value the CBOR simple value <tt>true</tt> (0xf5).</t>
        </li>
      </ul>
      <t>The possible combinations of the different configuration parameters are as follows:</t>
      <ul spacing="normal">
        <li>
          <t>If 'pairwise_mode' in the group-configuration resource has value <tt>false</tt> (0xf4):  </t>
          <ul spacing="normal">
            <li>
              <t>'alg' is <tt>null</tt> (0xf6).</t>
            </li>
            <li>
              <t>'ecdh_alg' and 'ecdh_params' are both <tt>null</tt> (0xf6).</t>
            </li>
            <li>
              <t>'kem_based' is <tt>false</tt> (0xf4).</t>
            </li>
            <li>
              <t>'pqkem_alg' and 'pqkem_params' are both <tt>null</tt> (0xf6).</t>
            </li>
            <li>
              <t>'max_kem_pubkeys_admin' is not present.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>If 'pairwise_mode' in the group-configuration resource has value <tt>true</tt> (0xf5):  </t>
          <ul spacing="normal">
            <li>
              <t>'alg' is a text string or integer specifying the AEAD Algorithm used in the group.</t>
            </li>
          </ul>
          <t>
If 'kem_based' is <tt>false</tt> (0xf4):  </t>
          <ul spacing="normal">
            <li>
              <t>'ecdh_alg' and 'ecdh_params' specify the ECDH-based Pairwise Key Agreement Algorithm and related parameters used in the group.</t>
            </li>
            <li>
              <t>'pqkem_alg' and 'pqkem_params' are both <tt>null</tt> (0xf6).</t>
            </li>
            <li>
              <t>'max_kem_pubkeys_admin' is not present.</t>
            </li>
          </ul>
          <t>
If 'kem_based' is <tt>true</tt> (0xf5):  </t>
          <ul spacing="normal">
            <li>
              <t>'ecdh_alg' and 'ecdh_params' are both <tt>null</tt> (0xf6).</t>
            </li>
            <li>
              <t>'pqkem_alg' and 'pqkem_params' specify the KEM-based Pairwise Key Agreement Algorithm and related parameters used in the group.</t>
            </li>
            <li>
              <t>'max_kem_pubkeys_admin' is present, specifying an unsigned integer strictly greater than 0.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>If the value of 'pairwise_mode' is determined to be <tt>true</tt> (0xf5), then the following applies as to the default values of the new parameters:</t>
      <ul spacing="normal">
        <li>
          <t>'kem_based' should default to the value <tt>true</tt> (0xf5). This has the side effect of setting both 'ecdh_alg' and 'ecdh_params' to <tt>null</tt> (0xf6).</t>
        </li>
        <li>
          <t>If the value of 'kem_based' is determined to be <tt>true</tt> (0xf5), then the following applies:  </t>
          <ul spacing="normal">
            <li>
              <t>'pqkem_alg' should default to specifying ML-KEM-512 as per <xref target="sec-default-values"/>, according to which 'pqkem_params' defaults to the array [[AKP], [AKP]].</t>
            </li>
            <li>
              <t>'max_kem_pubkeys_admin' should default to the default value specified for 'max_kem_pubkeys' in <xref target="sec-default-values"/>.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>For setting/retrieving the parameters above when using the admin interface defined in <xref target="I-D.ietf-ace-oscore-gm-admin"/>, corresponding ACE groupcomm parameters are defined in <xref target="sec-ace-groupcomm-parameters"/> and registered in <xref target="iana-ace-groupcomm-parameters"/>. Furthermore the following applies:</t>
      <ul spacing="normal">
        <li>
          <t>If parameter values are not specified by the Administrator when creating or overwriting a group configuration, the Group Manager uses the default values defined above.</t>
        </li>
        <li>
          <t>The value of the configuration parameter 'kem_based' is set upon creating an OSCORE group and cannot be changed after that.</t>
        </li>
        <li>
          <t>When a group configuration is changed and the Group Manager informs the current group members, the following differences apply to <xref section="6.6.2" sectionFormat="of" target="I-D.ietf-ace-oscore-gm-admin"/> as to the content of the 'key' parameter:  </t>
          <ul spacing="normal">
            <li>
              <t>'alg' is included only if 'pairwise_mode' in the group-configuration resource has value <tt>true</tt> (0xf5).</t>
            </li>
            <li>
              <t>'ecdh_alg' and 'ecdh_params' are included only if, within the group-configuration resource, 'pairwise_mode' has value <tt>true</tt> (0xf5) and 'kem_based' has value <tt>false</tt> (0xf4).</t>
            </li>
            <li>
              <t>'pqkem_alg' and 'pqkem_params' are included only if, within the group-configuration resource, 'pairwise_mode' has value <tt>true</tt> (0xf5) and 'kem_based' has value <tt>true</tt> (0xf4).</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="sec-ace-groupcomm-parameters">
      <name>ACE Groupcomm Parameters</name>
      <t>In addition to what is defined in <xref section="8" sectionFormat="of" target="RFC9594"/> and <xref section="12" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, this document defines additional parameters used during the second part of the message exchange with the Group Manager, i.e., after the exchange of Token Transfer Request and Response (see <xref section="5.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>). The table below summarizes them and specifies the CBOR key to use instead of the full descriptive name.</t>
      <t>Note that the media type "application/ace-groupcomm+cbor" <bcp14>MUST</bcp14> be used when these parameters are transported in the respective message fields.</t>
      <table align="center" anchor="tab-ACE-Groupcomm-Parameters">
        <name>ACE Groupcomm Parameters</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">CBOR Key</th>
            <th align="left">CBOR Type</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">max_kem_pubkeys</td>
            <td align="left">22</td>
            <td align="left">uint</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">client_kem_pubkey</td>
            <td align="left">35</td>
            <td align="left">bstr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">kem_pubkeys</td>
            <td align="left">36</td>
            <td align="left">array</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">kem_enc_sec</td>
            <td align="left">37</td>
            <td align="left">bstr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">kem_pubkey_hash</td>
            <td align="left">38</td>
            <td align="left">bstr</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">pqkem_info</td>
            <td align="left">39</td>
            <td align="left">array</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">kem_based</td>
            <td align="left">-20</td>
            <td align="left">True of False</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">pqkem_alg</td>
            <td align="left">-21</td>
            <td align="left">Null or tstr or int</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">pqkem_params</td>
            <td align="left">-22</td>
            <td align="left">Null or array</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
          <tr>
            <td align="left">max_kem_pubkeys_admin</td>
            <td align="left">-23</td>
            <td align="left">uint</td>
            <td align="left">[RFC-XXXX]</td>
          </tr>
        </tbody>
      </table>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <t>The Group Manager is expected to support all the parameters listed in <xref target="tab-ACE-Groupcomm-Parameters"/> that have a positive CBOR key. If the Group Manager provides the admin interface defined in <xref target="I-D.ietf-ace-oscore-gm-admin"/>, the Group Manager <bcp14>MUST</bcp14> support all the parameters listed in <xref target="tab-ACE-Groupcomm-Parameters"/> that have a negative CBOR key.</t>
      <t>A Client that acts as a (candidate) group member supports the parameters listed in <xref target="tab-ACE-Groupcomm-Parameters"/> that have a positive CBOR key as specified below (REQ29):</t>
      <ul spacing="normal">
        <li>
          <t>The following parameters <bcp14>MUST</bcp14> be supported by a Client that intends to join a KEM-based group and to use the pairwise mode of Group OSCORE to process messages in the group:  </t>
          <ul spacing="normal">
            <li>
              <t>max_kem_pubkeys.</t>
            </li>
            <li>
              <t>client_kem_pubkey.</t>
            </li>
            <li>
              <t>kem_pubkeys.</t>
            </li>
            <li>
              <t>kem_enc_sec.</t>
            </li>
            <li>
              <t>kem_pubkey_hash.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>'pqkem_info' <bcp14>MUST</bcp14> be supported by a Client that intends to join a KEM-based group.</t>
        </li>
      </ul>
      <t>A Client that acts as an Administrator through the admin interface defined in <xref target="I-D.ietf-ace-oscore-gm-admin"/> <bcp14>MUST</bcp14> support all the parameters listed in <xref target="tab-ACE-Groupcomm-Parameters"/> that have a negative CBOR key.</t>
    </section>
    <section anchor="sec-ace-groupcomm-errors">
      <name>ACE Groupcomm Error Identifiers</name>
      <t>In addition to what is defined in <xref section="9" sectionFormat="of" target="RFC9594"/> and <xref section="13" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, this document defines new values that the Group Manager can use as error identifiers (OPT5). These are used in error responses with Content-Format "application/concise-problem-details+cbor" <xref target="RFC9290"/>, as values of the 'error-id' field within the Custom Problem Detail entry 'ace-groupcomm-error' (see <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>).</t>
      <table align="center" anchor="tab-ACE-Groupcomm-Error-Identifiers">
        <name>ACE Groupcomm Error Identifiers</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">13</td>
            <td align="left">Reached limit of KEM public keys</td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">KEM public key incompatible with the group configuration</td>
          </tr>
          <tr>
            <td align="left">15</td>
            <td align="left">Encapsulated KEM shared secret incompatible with the group configuration</td>
          </tr>
        </tbody>
      </table>
      <t>If the Client supports the problem-details format <xref target="RFC9290"/> and the Custom Problem Detail entry 'ace-groupcomm-error' defined in <xref section="4.1.2" sectionFormat="of" target="RFC9594"/>, and it is able to understand the error specified in the 'error-id' field therein, then the Client may use that information to determine what actions to take next. If the Concise Problem Details data item specified in the error response includes the 'detail' entry and the Client supports it, such an entry may provide additional context.</t>
      <ul spacing="normal">
        <li>
          <t>In the case of error 13, the Client should refrain from uploading at the Group Manager an own KEM public key intended to group members of the targeted group, until a pre-defined amount of time has elapsed or the Group Manager indicates that the number of the Client's currently stored KEM public keys is below the limit.  </t>
          <t>
In a group with group name GROUPNAME, a Client with name NODENAME can obtain that indication by sending a GET request to /ace-group/GROUPNAME/nodes/NODENAME/kem-pub-keys (see <xref target="sec-nodename-kem-pub-keys-get"/> and <xref target="sec-counter-kem-pub-keys"/>). If the resource is observable <xref target="RFC7641"/>, the Client can additionally subscribe for updates about the resource representation, instead of only relying on polling.</t>
        </li>
        <li>
          <t>In the case of error 14, the Client has to generate a different pair of KEM public key and KEM private key, as aligned to the Pairwise Key Agreement Algorithm and parameters used in the targeted group. After that, the Client should provide the Group Manager with the new KEM public key.</t>
        </li>
        <li>
          <t>In the case of error 15, the Client should retrieve from the Group Manager a different KEM public key associated with the other group member for which the encapsulated KEM shared secret was computed. After that, the Client computes a new shared secret using the latest retrieved KEM public key, it computes the associated encapsulated KEM shared secret, and it uploads that encapsulated KEM shared secret at the Group Manager.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-default-values">
      <name>Default Values for Parameters of a Group Configuration</name>
      <t>Building on what is defined in <xref section="14" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, this section defines additional default values that the Group Manager refers to for the parameters of the group configuration of a KEM-based group, in the case that values for those parameters are not explicitly specified when creating and configuring the group (for example, by means of the admin interface defined in <xref target="I-D.ietf-ace-oscore-gm-admin"/>). These default values are <bcp14>RECOMMENDED</bcp14> to use for the parameters of the group configuration.</t>
      <t>Exceptionally, the Group Manager <bcp14>MAY</bcp14> choose different default values instead of those recommended in this section. A possible reason is to ensure that each of those are consistent with what the Group Manager supports, e.g., in terms of the Pairwise Key Agreement Algorithm used in the OSCORE group.</t>
      <t>This ensures that the Group Manager is able to perform the operations defined in this document. For example, if the KEM-based group is specifically a pairwise-only group, this ensures that the Group Manager is able to achieve proof of possession of a joining node's private key, as well as to provide a joining node with its own authentication credential and the associated proof-of-possession evidence.</t>
      <t>Editor's note: in the document body, explicitly cover the case where the KEM-based group is specifically a pairwise-only group.</t>
      <t>The following builds on the "COSE Algorithms" registry <xref target="COSE.Algorithms"/> and the "COSE Key Types" registry <xref target="COSE.Key.Types"/>.</t>
      <ul spacing="normal">
        <li>
          <t>For 'max_kem_pubkeys', the Group Manager <bcp14>SHOULD</bcp14> consider the value 200 as the maximum number of KEM public keys that the Group Manager stores at any given time as associated with the same Client within the same group.</t>
        </li>
        <li>
          <t>For the Pairwise Key Agreement Algorithm 'pqkem_alg' used to compute quantum secure shared secrets in the group, the Group Manager <bcp14>SHOULD</bcp14> use ML-KEM-512 (COSE algorithm encoding: TBD) registered by <xref target="I-D.ietf-cose-pqc-kem"/>, which indicates the ML-KEM-512 parameter set of the standard ML-KEM <xref target="FIPS203"/>.  </t>
          <t>
In such case, the parameter 'pqkem_params' (see <xref target="sec-send-join-response"/>) specifies the array [[AKP], [AKP]]. This indicates to use the COSE key type AKP registered by <xref target="RFC9964"/>.</t>
        </li>
      </ul>
      <t>Editor's note: at the moment, the parameters above are not reflected by an admin interface such as that defined in <xref target="I-D.ietf-ace-oscore-gm-admin"/>. That interface can also be updated, in order for an Administrator to (re-)configure an OSCORE group as per those parameters too.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations from <xref target="RFC9200"/>, <xref target="RFC9594"/>, and <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> hold for this document too. The security considerations for the specific KEM used as Pairwise Key Agreement Algorithm in the OSCORE group also apply. Security considerations for ML-KEM are compiled in <xref target="I-D.sfluhrer-cfrg-ml-kem-security-considerations"/>.</t>
      <t>Editor's note: add further security considerations.</t>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="iana-oauth-parameters">
        <name>OAuth Parameters</name>
        <t>IANA is asked to register the following entry in the "OAuth Parameters" registry <xref target="OAuth.Parameters"/> within the "OAuth Parameters" registry group, following the procedure specified in <xref section="11.2" sectionFormat="of" target="RFC6749"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: pqkem_info</t>
          </li>
          <li>
            <t>Parameter Usage Location: client-rs request, rs-client response, as-rs request, rs-as response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="I-D.ietf-ace-workflow-and-params"/>[RFC-XXXX]</t>
          </li>
        </ul>
        <t>Note to RFC Editor: In the entry above, please replace "<xref target="I-D.ietf-ace-workflow-and-params"/>" with a reference to the RFC resulting from that referred document. Then, please delete this note.</t>
      </section>
      <section anchor="iana-oauth-parameters-cbor">
        <name>OAuth Parameters CBOR Mappings</name>
        <t>IANA is asked to register the following entry in the "OAuth Parameters CBOR Mappings" registry <xref target="OAuth.CBOR.Mappings"/> within the "Authentication and Authorization for Constrained Environments (ACE)" registry group, following the procedure specified in <xref section="8.10" sectionFormat="of" target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: pqkem_info</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: Null or array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-ace-groupcomm-parameters">
        <name>ACE Groupcomm Parameters</name>
        <t>IANA is asked to register the following entries to the "ACE Groupcomm Parameters" registry <xref target="ACE.Groupcomm.Parameters"/> within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Name: max_kem_pubkeys</t>
          </li>
          <li>
            <t>CBOR Key: 22 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: unsigned integer</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: client_kem_pubkey</t>
          </li>
          <li>
            <t>CBOR Key: 35 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: bstr</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: kem_pubkeys</t>
          </li>
          <li>
            <t>CBOR Key: 36 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: kem_enc_sec</t>
          </li>
          <li>
            <t>CBOR Key: 37 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: bstr</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: kem_pubkey_hash</t>
          </li>
          <li>
            <t>CBOR Key: 38 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: bstr</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: pqkem_info</t>
          </li>
          <li>
            <t>CBOR Key: 39 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: kem_based</t>
          </li>
          <li>
            <t>CBOR Key: -20 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: True of False</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: pqkem_alg</t>
          </li>
          <li>
            <t>CBOR Key: -21 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: Null or tstr or int</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: pqkem_params</t>
          </li>
          <li>
            <t>CBOR Key: -22 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: Null or array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: max_kem_pubkeys_admin</t>
          </li>
          <li>
            <t>CBOR Key: -23 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: uint</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oscore-security-context-parameter">
        <name>OSCORE Security Context Parameters</name>
        <t>IANA is asked to register the following entries in the "OSCORE Security Context Parameters" registry <xref target="OSCORE.Security.Context.Parameters"/> within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Name: pqkem_alg</t>
          </li>
          <li>
            <t>CBOR Label: 14 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: text string / integer</t>
          </li>
          <li>
            <t>Registry: <xref target="COSE.Algorithms"/> Values</t>
          </li>
          <li>
            <t>Description: OSCORE Pairwise Key Agreement Algorithm Value, identifying a Key Encapsulation Mechanism (KEM)</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: pqkem_params</t>
          </li>
          <li>
            <t>CBOR Label: 15 (suggested)</t>
          </li>
          <li>
            <t>CBOR Type: array</t>
          </li>
          <li>
            <t>Registry: <xref target="COSE.Algorithms"/> Capabilities, <xref target="COSE.Key.Types"/> Capabilities</t>
          </li>
          <li>
            <t>Description: OSCORE Pairwise Key Agreement Algorithm Parameters, when that algorithm is a Key Encapsulation Mechanism (KEM)</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-ace-groupcomm-errors">
        <name>ACE Groupcomm Errors</name>
        <t>IANA is asked to register the following entries in the "ACE Groupcomm Errors" registry <xref target="ACE.Groupcomm.Errors"/> within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Value: 13 (suggested)</t>
          </li>
          <li>
            <t>Description: Reached limit of KEM public keys</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Value: 14 (suggested)</t>
          </li>
          <li>
            <t>Description: KEM public key incompatible with the group configuration</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Value: 15 (suggested)</t>
          </li>
          <li>
            <t>Description: Encapsulated KEM shared secret incompatible with the group configuration</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </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="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </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="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="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</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 a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC9594">
          <front>
            <title>Key Provisioning for Group Communication Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document defines how to use the Authentication and Authorization for Constrained Environments (ACE) framework to distribute keying material and configuration parameters for secure group communication. Candidate group members that act as Clients and are authorized to join a group can do so by interacting with a Key Distribution Center (KDC) acting as the Resource Server, from which they obtain the keying material to communicate with other group members. While defining general message formats as well as the interface and operations available at the KDC, this document supports different approaches and protocols for secure group communication. Therefore, details are delegated to separate application profiles of this document as specialized instances that target a particular group communication approach and define how communications in the group are protected. Compliance requirements for such application profiles are also specified.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9594"/>
          <seriesInfo name="DOI" value="10.17487/RFC9594"/>
        </reference>
        <reference anchor="RFC9964">
          <front>
            <title>ML-DSA for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M. Prorock" initials="M." surname="Prorock"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="May" year="2026"/>
            <abstract>
              <t>This document specifies JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) serializations for the Module-Lattice-Based Digital Signature Standard (ML-DSA), a Post-Quantum Cryptography (PQC) digital signature scheme defined in US NIST FIPS 204.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9964"/>
          <seriesInfo name="DOI" value="10.17487/RFC9964"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for Group Object Security for Constrained RESTful Environments (Group OSCORE) Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="14" month="March" year="2026"/>
            <abstract>
              <t>   This document defines an application profile of the Authentication
   and Authorization for Constrained Environments (ACE) framework, to
   request and provision keying material in group communication
   scenarios that are based on the Constrained Application Protocol
   (CoAP) and are secured with Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  This application profile
   delegates the authentication and authorization of Clients, which join
   an OSCORE group through a Resource Server acting as Group Manager for
   that group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication, and proof of possession of a key owned by the Client
   and bound to an OAuth 2.0 access token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-21"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="February" year="2026"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) is a web transfer
   protocol for constrained devices and constrained networks.  In a
   number of use cases, constrained devices often naturally operate in
   groups (e.g., in a building automation scenario, all lights in a
   given room may need to be switched on/off as a group).  This document
   specifies the use of CoAP for group communication, including the use
   of UDP/IP multicast as the default underlying data transport.  Both
   unsecured and secured CoAP group communication are specified.
   Security is achieved by use of the Group Object Security for
   Constrained RESTful Environments (Group OSCORE) protocol.  The target
   application area of this specification is any group communication use
   cases that involve resource-constrained devices or networks that
   support CoAP.  This document replaces and obsoletes RFC 7390, while
   it updates RFC 7252 and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-18"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="23" month="December" year="2025"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of messages exchanged with the Constrained Application
   Protocol (CoAP) between members of a group, e.g., sent over IP
   multicast.  In particular, the described protocol defines how OSCORE
   is used in a group communication setting to provide source
   authentication for CoAP group requests, sent by a client to multiple
   servers, and for protection of the corresponding CoAP responses.
   Group OSCORE also defines a pairwise mode where each member of the
   group can efficiently derive a symmetric pairwise key with each other
   member of the group for pairwise OSCORE communication.  Group OSCORE
   can be used between endpoints communicating with CoAP or CoAP-
   mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-28"/>
        </reference>
        <reference anchor="I-D.ietf-cose-pqc-kem">
          <front>
            <title>Post-Quantum Key Encapsulation Mechanisms (PQ KEMs) for COSE</title>
            <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
              <organization>Nokia</organization>
            </author>
            <author fullname="Aritra Banerjee" initials="A." surname="Banerjee">
              <organization>Nokia</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of the Bundeswehr Munich</organization>
            </author>
            <date day="29" month="October" year="2026"/>
            <abstract>
              <t>   This document describes conventions for using Post-Quantum Key
   Encapsulation Mechanisms (PQ-KEMs) with CBOR Object Signing and
   Encryption (COSE).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-pqc-kem-00"/>
        </reference>
        <reference anchor="I-D.ietf-ace-workflow-and-params">
          <front>
            <title>Short Distribution Chain (SDC) Workflow and New OAuth Parameters for the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   The specification RFC 9200 defines the Authentication and
   Authorization for Constrained Environments (ACE) framework.  This
   document updates the ACE framework and therefore RFC 9200 as follows.
   (1) It defines the Short Distribution Chain (SDC) workflow that the
   authorization server (AS) can use for uploading an access token to a
   resource server on behalf of the client. (2) For the OAuth 2.0 token
   endpoint, it defines new parameters and encodings and it extends the
   semantics of the "ace_profile" parameter. (3) For the OAuth 2.0
   authz-info endpoint, it defines a new parameter and its encoding. (4)
   It defines how the client and the AS can coordinate on the exchange
   of the client's and resource server's public authentication
   credentials, when those can be transported by value or identified by
   reference; this extends the semantics of the "rs_cnf" parameter for
   the OAuth 2.0 token endpoint, thus updating RFC 9201. (5) It extends
   the error handling at the AS, for which it defines a new error code.
   (6) It deprecates the original payload format of error responses
   conveying an error code, when Concise Binary Object Representation
   (CBOR) is used to encode message payloads.  For those responses, it
   defines a new payload format aligned with RFC 9290, thus updating in
   this respect also the profiles defined in RFC 9202, RFC 9203, and RFC
   9431. (7) It amends two of the requirements on profiles of the
   framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-workflow-and-params-09"/>
        </reference>
        <reference anchor="I-D.ietf-ace-oscore-gm-admin">
          <front>
            <title>Admin Interface for the OSCORE Group Manager</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="26" month="March" year="2026"/>
            <abstract>
              <t>   Group communication for the Constrained Application Protocol (CoAP)
   can be secured using Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  A Group Manager is responsible for
   handling the joining of new group members, as well as for managing
   and distributing the group keying material.  This document defines a
   RESTful admin interface at the Group Manager that allows an
   Administrator entity to create and delete OSCORE groups, as well as
   to retrieve and update their configuration.  The Authentication and
   Authorization for Constrained Environments (ACE) framework is used to
   enforce authentication and authorization of the Administrator at the
   Group Manager.  Protocol-specific transport profiles of ACE are used
   to achieve communication security, proof of possession, and server
   authentication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oscore-gm-admin-17"/>
        </reference>
        <reference anchor="I-D.tiloca-core-group-oscore-kem">
          <front>
            <title>Using Quantum-Resistant Key Encapsulation Mechanisms (KEMs) in the Pairwise Mode of Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   Group communication for the Constrained Application Protocol (CoAP)
   can be protected end-to-end by using the security protocol Group
   Object Security for Constrained RESTful Environments (Group OSCORE).
   The pairwise mode of Group OSCORE provides authenticated encryption
   of CoAP messages, by means of symmetric keys that two group members
   establish only among themselves to achieve pairwise secure
   communication.  This document defines the use of quantum-resistant
   Key Encapsulation Mechanisms (KEMs) as Pairwise Key Agreement
   Algorithm of Group OSCORE, enabling post-quantum secure derivation of
   the symmetric keys used in the pairwise mode.  The Group Manager
   facilitates the exchange of KEM public keys and encapsulated KEM
   shared secrets among group members.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-group-oscore-kem-01"/>
        </reference>
        <reference anchor="FIPS203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST" value="FIPS 203"/>
        </reference>
        <reference anchor="SHA-256" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="NIST FIPS PUB 180-4, DOI 10.6028/NIST.FIPS.180-4" value=""/>
        </reference>
        <reference anchor="COSE.Header.Parameters" target="https://www.iana.org/assignments/cose/cose.xhtml#header-parameters">
          <front>
            <title>COSE Header Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="OAuth.Parameters" target="https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="OAuth.CBOR.Mappings" target="https://www.iana.org/assignments/ace/ace.xhtml#oauth-parameters-cbor-mappings">
          <front>
            <title>OAuth Parameters CBOR Mappings</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ACE.Groupcomm.Parameters" target="https://www.iana.org/assignments/ace/ace.xhtml#ace-groupcomm-parameters">
          <front>
            <title>ACE Groupcomm Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="OSCORE.Security.Context.Parameters" target="https://www.iana.org/assignments/ace/ace.xhtml#oscore-security-context-parameters">
          <front>
            <title>OSCORE Security Context Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ACE.Groupcomm.Errors" target="https://www.iana.org/assignments/ace/ace.xhtml#ace-groupcomm-errors">
          <front>
            <title>ACE Groupcomm Errors</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="COSE.Algorithms" target="https://www.iana.org/assignments/cose/cose.xhtml#algorithms">
          <front>
            <title>COSE Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="COSE.Key.Types" target="https://www.iana.org/assignments/cose/cose.xhtml#key-type">
          <front>
            <title>COSE Key Types</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.tiloca-core-oscore-discovery">
          <front>
            <title>Discovery of OSCORE Groups with the CoRE Resource Directory</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         </author>
            <date day="2" month="September" year="2026"/>
            <abstract>
              <t>   Group communication over the Constrained Application Protocol (CoAP)
   can be secured by means of Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  At deployment time, devices
   might not know the exact security groups to join, the respective
   Group Managers responsible for those groups, or other information
   required to perform the joining process.  This document defines how a
   CoAP endpoint can use descriptions and links of resources registered
   at the CoRE Resource Directory to discover security groups and to
   acquire information for joining them through the respective Group
   Managers.  A given security group can be used to protect
   communications in multiple application groups, which are separately
   announced in the Resource Directory as sets of endpoints sharing a
   pool of resources.  This approach is consistent with, but not limited
   to, the joining of security groups based on the Authentication and
   Authorization for Constrained Environments (ACE) framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-discovery-20"/>
        </reference>
        <reference anchor="I-D.sfluhrer-cfrg-ml-kem-security-considerations">
          <front>
            <title>ML-KEM Security Considerations</title>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Quynh Dang" initials="Q." surname="Dang">
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Kevin Milner" initials="K." surname="Milner">
              <organization>Individual</organization>
            </author>
            <author fullname="Daniel Shiu" initials="D." surname="Shiu">
              <organization>Arqit Quantum Inc</organization>
            </author>
            <date day="13" month="May" year="2026"/>
            <abstract>
              <t>   NIST standardized ML-KEM as FIPS 203 in August 2024.  This document
   discusses how to use ML-KEM within protocols - that is, what problem
   it solves, and what you need to do to use it securely.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sfluhrer-cfrg-ml-kem-security-considerations-05"/>
        </reference>
        <reference anchor="NIST-800-56A" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography - NIST Special Publication 800-56A, Revision 3</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky" fullname="Allen Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev" fullname="Apostol Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis" fullname="Richard Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1387?>

<section anchor="sec-profile-reqs">
      <name>Profile Requirements</name>
      <t>This section updates how the requirements listed in <xref section="A" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> are additionally fulfilled.</t>
      <t>The following includes only the requirements for which the present document provides an update.</t>
      <section anchor="mandatory-to-address-requirements">
        <name>Mandatory-to-Address Requirements</name>
        <t>The mandatory-to-address requirements initially specified in <xref section="A.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> are updated as below.</t>
        <ul spacing="normal">
          <li>
            <t>REQ11: Define what specific actions (e.g., CoAP methods) are allowed on each resource accessible through the KDC interface, depending on: whether the Client is a current group member; the roles that a Client is authorized to take as per the obtained access token; and the roles that the Client has as a current group member: see <xref section="8.5" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and <xref target="sec-methods-gm"/> of the present document.</t>
          </li>
          <li>
            <t>REQ12: Categorize possible newly defined operations for Clients into primary operations expected to be minimally supported and secondary operations, and provide accompanying considerations: see <xref section="8.6" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and <xref target="sec-operations-clients"/> of the present document.</t>
          </li>
          <li>
            <t>REQ14: TBD  </t>
            <t>
Editor's note: Approaches used to compute and verify the PoP evidence to include in the 'client_cred_verify' parameter. Reference from <xref target="sec-send-join-request"/> and <xref target="sec-receive-join-request"/>, once also covered the case of a KEM-based group that is a pairwise-only group, with the joining node still able to prove possession of its own private key upon joining the group, through a MAC used as PoP evidence and encoded by the 'client_cred_verify' parameter of the Join Request.</t>
          </li>
          <li>
            <t>REQ17: Specify the format of the group keying material that is conveyed in the 'key' parameter: see <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and <xref target="sec-send-join-response"/> of the present document.</t>
          </li>
          <li>
            <t>REQ21: TBD  </t>
            <t>
Editor's note: Approaches used to compute and verify the PoP evidence to include in the 'kdc_cred_verify' parameter. Reference from <xref target="sec-send-join-response"/> and <xref target="sec-receive-join-response"/>, once also covered the case of a KEM-based group that is a pairwise-only group, with the Group Manager still able to prove possession of its own private key, through a MAC used as PoP evidence and encoded by the 'kdc_cred_verify' parameter of the Join Response.</t>
          </li>
          <li>
            <t>REQ29: Categorize newly defined parameters according to the same criteria of <xref section="8" sectionFormat="of" target="RFC9594"/>: see <xref section="12" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and <xref target="sec-ace-groupcomm-parameters"/> of the present document.</t>
          </li>
        </ul>
      </section>
      <section anchor="optional-to-address-requirements">
        <name>Optional-to-Address Requirements</name>
        <t>The optional-to-address requirements initially specified in <xref section="A.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> are updated as below.</t>
        <ul spacing="normal">
          <li>
            <t>OPT2: Optionally, specify the additional parameters used in the exchange of Token Transfer Request and Response:  </t>
            <ul spacing="normal">
              <li>
                <t>'ecdh_info', to negotiate the ECDH algorithm, ECDH algorithm parameters, ECDH key parameters, and exact format of authentication credentials used in the group, in the case that the joining node supports the pairwise mode of Group OSCORE (see <xref section="5.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>).</t>
              </li>
              <li>
                <t>'kdc_dh_creds', to ask for and retrieve the Group Manager's Diffie-Hellman authentication credentials, in the case that the joining node supports the pairwise mode of Group OSCORE and the access token authorizes to join pairwise-only groups (see <xref section="5.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>).</t>
              </li>
              <li>
                <t>'pqkem_info', to negotiate the quantum-resistant KEM used as Pairwise Key Agreement Algorithm, the KEM algorithm parameters, the KEM key parameters, and exact format of authentication credentials used in the group, in the case that the group is a KEM-based group and the joining node supports the pairwise mode of Group OSCORE (see <xref target="sec-token-transferring"/> of the present document).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>OPT4: Optionally, specify possible or required payload formats for specific error cases: send a 4.00 (Bad Request) error response to a Join Request (see <xref section="6.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and <xref target="sec-receive-join-request"/> of the present document).</t>
          </li>
          <li>
            <t>OPT5: Optionally, specify additional identifiers of error types as values of the 'error-id' field within the Custom Problem Detail entry 'ace-groupcomm-error': see Sections <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="13" sectionFormat="bare"/> and <xref target="I-D.ietf-ace-key-groupcomm-oscore" section="17.11" sectionFormat="bare"/> of <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> as well as <xref target="sec-ace-groupcomm-errors"/> and <xref target="iana-ace-groupcomm-errors"/> of the present document.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-future-cose-algs">
      <name>Extensibility for Future COSE Algorithms</name>
      <t>As defined in <xref section="8.1" sectionFormat="of" target="RFC9053"/>, future algorithms can be registered in the "COSE Algorithms" registry <xref target="COSE.Algorithms"/> as specifying none or multiple COSE capabilities.</t>
      <t>To enable the seamless use of such future registered algorithms, this section defines a general, agile format for:</t>
      <ul spacing="normal">
        <li>
          <t>Each 'pqkem_info_entry' of the 'pqkem_info' parameter in the Token Transfer Response (see <xref target="pqkem-info"/>).  </t>
          <t><xref section="B" sectionFormat="of" target="RFC9594"/> describes the analogous general format for each 'sign_info_entry' of the 'sign_info' parameter in the Token Transfer Response (see <xref target="sec-token-transferring"/> of this document).  </t>
          <t><xref section="B.1" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> describes the analogous general format for each 'ecdh_info_entry' of the 'ecdh_info' parameter in the Token Transfer Response (see <xref target="sec-token-transferring"/> of this document).</t>
        </li>
        <li>
          <t>The 'pqkem_params' parameter within the 'key' parameter (see <xref target="sec-send-join-response"/>), as part of the response payloads used in <xref target="sec-send-join-response"/>, <xref target="sec-retrieve-group-keying-material"/>, and <xref target="sec-retrieve-group-keying-material-sid"/>.</t>
        </li>
      </ul>
      <t>If any of the currently registered COSE algorithms is considered, using this general format yields the same structure defined in this document for the items above, thus ensuring backward compatibility.</t>
      <section anchor="sec-future-cose-algs-pqkem-info-entry">
        <name>Format of 'pqkem_info_entry'</name>
        <t>The format of each 'pqkem_info_entry' (see <xref target="sec-token-transferring"/> and <xref target="pqkem-info"/>) is generalized as follows.</t>
        <ul spacing="normal">
          <li>
            <t>'pqkem_parameters' includes N &gt;= 0 elements, each of which is a COSE capability of the KEM algorithm indicated in 'pqkem_alg'.  </t>
            <t>
In particular, 'pqkem_parameters' has the same format and value of the COSE capabilities array for the KEM algorithm indicated in 'pqkem_alg', as specified for that algorithm in the 'Capabilities' column of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/>.</t>
          </li>
          <li>
            <t>'pqkem_key_parameters' is replaced by N elements 'pqkem_capab', each of which is a CBOR array.  </t>
            <t>
The i-th 'pqkem_capab' array (i = 0, ..., N-1) is the array of COSE capabilities for the algorithm capability specified in 'pqkem_parameters'[i].  </t>
            <t>
In particular, each 'pqkem_capab' array has the same format and value of the COSE capabilities array for the algorithm capability specified in 'pqkem_parameters'[i].  </t>
            <t>
Such a COSE capabilities array is currently defined for the algorithm capability COSE key type, in the "Capabilities" column of the "COSE Key Types" registry <xref target="COSE.Key.Types"/>.</t>
          </li>
        </ul>
        <t>The CDDL notation <xref target="RFC8610"/> of the 'pqkem_info_entry' parameter is given below.</t>
        <figure anchor="fig-pqkem-info-entry-general">
          <name>'pqkem_info_entry' with General Format</name>
          <sourcecode type="cddl"><![CDATA[
pqkem_info_entry =
[
    id: gname / [+ gname],
    pqkem_alg: int / tstr,
    pqkem_parameters : [* pqkem_capab: any],
  * pqkem_capab: [* capab: any],
    cred_fmt: int / null
]

gname = tstr
]]></sourcecode>
        </figure>
      </section>
      <section anchor="sec-future-cose-algs-key">
        <name>Format of 'key'</name>
        <t>In addition to what is defined in <xref section="B.2" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/>, the format of 'key' (see <xref section="6.3" sectionFormat="of" target="I-D.ietf-ace-key-groupcomm-oscore"/> and <xref target="sec-send-join-response"/> of the present document) is generalized as follows.</t>
        <ul spacing="normal">
          <li>
            <t>The 'pqkem_params' array includes M+1 elements, whose exact structure and value depend on the value of the KEM algorithm specified in 'pqkem_alg'.  </t>
            <ul spacing="normal">
              <li>
                <t>The first element, i.e., 'pqkem_params'[0], is the array of the M COSE capabilities for the KEM algorithm, as specified for that algorithm in the "Capabilities" column of the "COSE Algorithms" registry <xref target="COSE.Algorithms"/> (see <xref section="8.1" sectionFormat="of" target="RFC9053"/>).</t>
              </li>
              <li>
                <t>Each following element 'pqkem_params'[i], i.e., with index i &gt; 0, is the array of COSE capabilities for the algorithm capability specified in 'pqkem_params'[0][i-1].</t>
              </li>
            </ul>
            <t>
For example, if 'pqkem_params'[0][0] specifies the key type as capability of the algorithm, then 'pqkem_params'[1] is the array of COSE capabilities for the COSE key type associated with the KEM algorithm, as specified for that key type in the "Capabilities" column of the "COSE Key Types" registry <xref target="COSE.Key.Types"/> (see <xref section="8.2" sectionFormat="of" target="RFC9053"/>).</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-cddl-model" removeInRFC="true">
      <name>CDDL Model</name>
      <figure anchor="fig-cddl-model">
        <name>CDDL Model</name>
        <sourcecode type="cddl"><![CDATA[
; ACE Groupcomm Parameters
client_kem_pubkey = 35
kem_pubkeys = 36
kem_enc_sec = 37
kem_pubkey_hash = 38
]]></sourcecode>
      </figure>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author sincerely thanks <contact fullname="Tim Hollebeek"/> for his feedback and comments.</t>
      <t>The work on this document has been partly supported by the Sweden's Innovation Agency VINNOVA and the Celtic-Next project CYPRESS.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
