<?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.43 (Ruby 4.0.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mahy-mls-new-content-types-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="New Content Types for MLS">New Content Types for Messaging Layer Security (MLS)</title>
    <seriesInfo name="Internet-Draft" value="draft-mahy-mls-new-content-types-02"/>
    <author fullname="Rohan Mahy">
      <organization/>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="01"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <keyword>new content type</keyword>
    <keyword>new ratchet</keyword>
    <keyword>presence</keyword>
    <keyword>status</keyword>
    <keyword>ephemeral messages</keyword>
    <keyword>istyping</keyword>
    <abstract>
      <?line 40?>

<t>This Messaging Layer Security (MLS) extension adds two new variations of the <tt>application</tt> content type, each with a separate key ratchet.
It also creates an MLS capability to negotiate use of the new types, and an IANA registry to register additional content types.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://rohanmahy.github.io/mls-new-content-types/draft-mahy-mls-new-content-types.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mahy-mls-new-content-types/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Messaging Layer Security Working Group mailing list (<eref target="mailto:mls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/rohanmahy/mls-new-content-types"/>.</t>
    </note>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Some messaging protocols (ex: XMPP <xref target="RFC6120"/>) make a distinction between regular messages--where each message is relevant, and status or "presence" messages--where only the most recent update per sender is relevant. In addition, some messages may have a sufficiently short relevance (for example, typing notifications) that they can be discarded if the receiver is offline. In large messaging systems with lots of updates, optimizing decryption of such messages, and optionally suppressing delivery of irrelevant message can result in improved performance.</t>
      <t>This document defines two new MLS <xref target="RFC9420"/> content types: <tt>status</tt> and <tt>ephemeral</tt>.
These largely act like the <tt>application</tt> content type, but the new content types each maintain distinct key ratchets in the secret tree.
Only the most recent <tt>status</tt> message of a particular type from each sender needs to be decrypted.
Only <tt>ephemeral</tt> messages received within a small amount of time (ex: 30 seconds) are relevant (and of those only the most recent per type from each sender).</t>
      <t>This allows an application to fast-forward over generations that contain irrelevant messages.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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>This document uses many terms and structures from MLS <xref target="RFC9420"/>, and terms and concepts discussed in the MLS Architecture <xref target="RFC9750"/>, including the term Distribution Service (DS).</t>
    </section>
    <section anchor="negotiating-support">
      <name>Negotiating Support</name>
      <t>If a client supports the mechanism in this document, it adds a <tt>supported_content_types</tt> extension to its <tt>LeafNode.Capabilities.ExtensionTypes</tt> with the specific non-default content types it supports (for example, <tt>status</tt> and/or <tt>ephemeral</tt> in this specification).</t>
      <t>If an MLS group <tt>GroupContext.RequiredCapabilities.extension_types</tt> contains a <tt>required_content_types</tt> extension, every member of the MLS group <bcp14>MUST</bcp14> be prepared to receive messages with any of the (non-default) content types listed.</t>
      <t>It also redefines the ContentType enum as shown below.</t>
      <sourcecode type="tls"><![CDATA[
enum {
    reserved(0),
    application(1),
    proposal(2),
    commit(3),
    status(4),
    ephemeral(5),
    (255)
} ContentType;

struct {
   ContentType content_types<V>;
} ContentTypes;

ContentTypes supported_content_types;
ContentTypes required_content_types;
]]></sourcecode>
    </section>
    <section anchor="sending-and-receiving">
      <name>Sending and Receiving</name>
      <t>If a group lists a specific content type in its <tt>required_content_types</tt> as described in the previous section, a member <bcp14>MAY</bcp14> send an MLS <tt>PrivateMessage</tt> with that content type.</t>
      <t>The construction of the <tt>PrivateMessage</tt> is the same as for sending an <tt>application</tt> message, except that the per-sender ratchet is used derived from the relevant content type, as shown in the figure below, which replaces Figure 26 of <xref target="RFC9420"/>, and the new version of three structs defined later in this section (<tt>FramedContent</tt>, <tt>FramedContentAuthData</tt>, and <tt>PrivateMessgeContent</tt>) replace those defined in <xref target="RFC9420"/>:</t>
      <figure>
        <name>Initialization of the Hash Ratchets from the Leaves of a Secret Tree</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="472" viewBox="0 0 472 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 72,40 L 72,224" fill="none" stroke="black"/>
              <path d="M 72,80 L 96,80" fill="none" stroke="black"/>
              <path d="M 72,128 L 96,128" fill="none" stroke="black"/>
              <path d="M 72,176 L 96,176" fill="none" stroke="black"/>
              <path d="M 72,224 L 96,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="104,224 92,218.4 92,229.6" fill="black" transform="rotate(0,96,224)"/>
              <polygon class="arrowhead" points="104,176 92,170.4 92,181.6" fill="black" transform="rotate(0,96,176)"/>
              <polygon class="arrowhead" points="104,128 92,122.4 92,133.6" fill="black" transform="rotate(0,96,128)"/>
              <polygon class="arrowhead" points="104,80 92,74.4 92,85.6" fill="black" transform="rotate(0,96,80)"/>
              <g class="text">
                <text x="84" y="36">tree_node_[N]_secret</text>
                <text x="180" y="84">ExpandWithLabel(.,</text>
                <text x="308" y="84">"handshake",</text>
                <text x="376" y="84">"",</text>
                <text x="424" y="84">KDF.Nh)</text>
                <text x="112" y="100">=</text>
                <text x="252" y="100">handshake_ratchet_secret_[N]_[0]</text>
                <text x="180" y="132">ExpandWithLabel(.,</text>
                <text x="316" y="132">"application",</text>
                <text x="392" y="132">"",</text>
                <text x="440" y="132">KDF.Nh)</text>
                <text x="112" y="148">=</text>
                <text x="260" y="148">application_ratchet_secret_[N]_[0]</text>
                <text x="180" y="180">ExpandWithLabel(.,</text>
                <text x="296" y="180">"status",</text>
                <text x="352" y="180">"",</text>
                <text x="400" y="180">KDF.Nh)</text>
                <text x="112" y="196">=</text>
                <text x="240" y="196">status_ratchet_secret_[N]_[0]</text>
                <text x="180" y="228">ExpandWithLabel(.,</text>
                <text x="308" y="228">"ephemeral",</text>
                <text x="376" y="228">"",</text>
                <text x="424" y="228">KDF.Nh)</text>
                <text x="112" y="244">=</text>
                <text x="252" y="244">ephemeral_ratchet_secret_[N]_[0]</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
tree_node_[N]_secret
        |
        |
        +--> ExpandWithLabel(., "handshake", "", KDF.Nh)
        |    = handshake_ratchet_secret_[N]_[0]
        |
        +--> ExpandWithLabel(., "application", "", KDF.Nh)
        |    = application_ratchet_secret_[N]_[0]
        |
        +--> ExpandWithLabel(., "status", "", KDF.Nh)
        |    = status_ratchet_secret_[N]_[0]
        |
        +--> ExpandWithLabel(., "ephemeral", "", KDF.Nh)
             = ephemeral_ratchet_secret_[N]_[0]
]]></artwork>
        </artset>
      </figure>
      <sourcecode type="tls"><![CDATA[
struct {
    opaque group_id<V>;
    uint64 epoch;
    Sender sender;
    opaque authenticated_data<V>;

    ContentType content_type;
    select (FramedContent.content_type) {
        case application:
        case status:
        case ephemeral:
          opaque application_data<V>;
        case proposal:
          Proposal proposal;
        case commit:
          Commit commit;
    };
} FramedContent;

struct {
    /* SignWithLabel(., "FramedContentTBS", FramedContentTBS) */
    opaque signature<V>;
    select (FramedContent.content_type) {
        case commit:
            /*
              MAC(confirmation_key,
                  GroupContext.confirmed_transcript_hash)
            */
            MAC confirmation_tag;
        case application:
        case status:
        case ephemeral:
        case proposal:
            struct{};
    };
} FramedContentAuthData;

struct {
    select (PrivateMessage.content_type) {
        case application:
        case status:
        case ephemeral:
          opaque application_data<V>;

        case proposal:
          Proposal proposal;

        case commit:
          Commit commit;
    };

    FramedContentAuthData auth;
    opaque padding[length_of_padding];
} PrivateMessageContent;
]]></sourcecode>
      <t>All clients in a group need to agree on the "maximum number of steps that clients will move a secret tree ratchet forward in response to a single message before rejecting it" as described in <xref section="7" sectionFormat="of" target="RFC9750"/>.
If a client is about to exhaust that number of steps for its own <tt>status</tt> or <tt>ephemeral</tt> ratchet, it <bcp14>MUST</bcp14> send a new commit.
A policy for conveying that number is described as <tt>OperationalParamaters.app_message_policy.max_generations_skipahead</tt> in <xref section="7.1" sectionFormat="of" target="I-D.ietf-mimi-room-policy"/>.</t>
      <t>On receipt of a <tt>PrivateMessage</tt> with a supported, non-default content type, the receiver first determines if it is outdated.
If the content is an <tt>ephemeral</tt> content type older than its handling threshold, (ex: older than several minutes), the recipient can drop the message.
If the content is a <tt>status</tt> content type, and the client has a more recent <tt>status</tt> message of the same type from the same sender, the client can drop the message.
If the message is not outdated, the client decrypts the message using the relevant ratchet.</t>
    </section>
    <section anchor="ds-behavior">
      <name>DS Behavior</name>
      <t>A DS <bcp14>MAY</bcp14> discard messages with an <tt>ephemeral</tt> content type which are considered "old" by the application (ex: several minutes).
A DS which knows the identity of the sender of a message and the type of status message, <bcp14>MAY</bcp14> discard <tt>status</tt> messages when there is a newer <tt>status</tt> message of the same type from the same sender. (For example, the type of status could be administratively limited to a single type, presented out-of-band, or in the Additional Authenticated Data of the message.)</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Use of one of the two content types defined here might allow the MLS DS (an on-path potential adversary) to infer more about the state of the sending client, by separating regular message, status message, and ephemeral message classes. However, the additional advantage is unlikely to reveal information not already available during timing and traffic analysis.</t>
      <t>Adding new content types potentially increases the amount of keying material that needs to be kept per member, however this mechanism allows for clients to aggressively throw away old generations without decrypting irrelevant messages. Clients <bcp14>MUST</bcp14> verify the authenticity of messages sent with these content types before deleting older generations.</t>
      <t>If the volume of messages using these content types regularly exceeds the number of ratchet steps (in instant messaging applications, typically around 10,000 steps), this extension could cause an increase in the number of Commit messages sent.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the addition of various new values under the heading of "Messaging Layer Security". Each registration is organized under the relevant registry Type.</t>
      <t>This document also requests the creation of a new MLS Content Types registry as described in <xref target="iana-content-types"/>.</t>
      <t>RFC EDITOR: Please replace XXXX throughout with the RFC number assigned to this document.</t>
      <section anchor="mls-extension-types">
        <name>MLS Extension Types</name>
        <section anchor="supportedcontenttypes-mls-extension">
          <name>supported_content_types MLS Extension</name>
          <t>The <tt>supported_content_types</tt> MLS Extension Type is used inside LeafNode objects. It contains a list of non-default ContentTypes supported by the client node.</t>
          <t>Value: 0x000F (suggested)</t>
          <t>Name: supported_content_types</t>
          <t>Message(s): LN: This extension may appear in LeafNode objects</t>
          <t>Recommended: Y</t>
          <t>Reference: RFC XXXX</t>
        </section>
        <section anchor="requiredcontenttypes-mls-extension">
          <name>required_content_types MLS Extension</name>
          <t>The <tt>required_content_types</tt> MLS Extension Type is used inside GroupContext objects. It contains a list of non-default ContentTypes that are mandatory for all MLS members of the group to support.</t>
          <t>Value: 0x0010 (suggested)</t>
          <t>Name: required_content_types</t>
          <t>Message(s): GC: This extension may appear in GroupContext objects</t>
          <t>Recommended: Y</t>
          <t>Reference: RFC XXXX</t>
        </section>
      </section>
      <section anchor="iana-content-types">
        <name>MLS Content Types</name>
        <t>This document requests the creation of a new IANA "MLS Content Types" registry under the "Messaging Layer Security" group registry heading. Assignments are via the Specification Required policy <xref target="RFC8126"/> using the MLS Designated Experts.</t>
        <t>Template:</t>
        <ul spacing="normal">
          <li>
            <t>Value: The numeric value of the component ID</t>
          </li>
          <li>
            <t>Name: The name of the component</t>
          </li>
          <li>
            <t>Recommended: Same as in Section 17.1 of <xref target="RFC9420"/></t>
          </li>
          <li>
            <t>Reference: The document where this content type is defined</t>
          </li>
        </ul>
        <t>Initial Contents:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">R</th>
              <th align="left">Ref</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">RESERVED</td>
              <td align="left">-</td>
              <td align="left">RFC9420</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">application</td>
              <td align="left">Y</td>
              <td align="left">RFC9420</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">proposal</td>
              <td align="left">Y</td>
              <td align="left">RFC9420</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">commit</td>
              <td align="left">Y</td>
              <td align="left">RFC9420</td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">status</td>
              <td align="left">Y</td>
              <td align="left">RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">ephemeral</td>
              <td align="left">Y</td>
              <td align="left">RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">0x06-</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">0xff</td>
              <td align="left">UNASSIGNED</td>
              <td align="left">-</td>
              <td align="left">RFC9420</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9420" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9420.xml">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
        <reference anchor="RFC9750">
          <front>
            <title>The Messaging Layer Security (MLS) Architecture</title>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="S. Inguva" initials="S." surname="Inguva"/>
            <author fullname="A. Duric" initials="A." surname="Duric"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>The Messaging Layer Security (MLS) protocol (RFC 9420) provides a group key agreement protocol for messaging applications. MLS is designed to protect against eavesdropping, tampering, and message forgery, and to provide forward secrecy (FS) and post-compromise security (PCS).</t>
              <t>This document describes the architecture for using MLS in a general secure group messaging infrastructure and defines the security goals for MLS. It provides guidance on building a group messaging system and discusses security and privacy trade-offs offered by multiple security mechanisms that are part of the MLS protocol (e.g., frequency of public encryption key rotation). The document also provides guidance for parts of the infrastructure that are not standardized by MLS and are instead left to the application.</t>
              <t>While the recommendations of this document are not mandatory to follow in order to interoperate at the protocol level, they affect the overall security guarantees that are achieved by a messaging application. This is especially true in the case of active adversaries that are able to compromise clients, the Delivery Service (DS), or the Authentication Service (AS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9750"/>
          <seriesInfo name="DOI" value="10.17487/RFC9750"/>
        </reference>
        <reference anchor="RFC8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6120" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6120.xml">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language (XML) that enables the near-real-time exchange of structured yet extensible data between any two or more network entities. This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions. This document obsoletes RFC 3920. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6120"/>
          <seriesInfo name="DOI" value="10.17487/RFC6120"/>
        </reference>
        <reference anchor="I-D.ietf-mimi-room-policy">
          <front>
            <title>Room Policy for the More Instant Messaging Interoperability (MIMI) Protocol</title>
            <author fullname="Rohan Mahy" initials="R." surname="Mahy">
              <organization>Rohan Mahy Consulting Services</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document describes a set of concrete room policies for the More
   Instant Messaging Interoperability (MIMI) Working Group.  It
   describes several independent properties and policy attributes which
   can be combined to model a wide range of chat and multimedia
   conference types.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mimi-room-policy-04"/>
        </reference>
      </references>
    </references>
    <?line 280?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
FX3bmyHgqh4Z3vnRuZD1THj5/wAW1geLMCsAAA==

-->

</rfc>
