<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mahy-mls-new-content-types-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-01"/>
    <author fullname="Rohan Mahy">
      <organization/>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="19"/>
    <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: 0x0009 (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: 0x000a (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="18" month="December" year="2025"/>
            <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-03"/>
        </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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
3/ZmCLiqR4Z3fnQuZD0TXv4/L+TcvzArAAA=

-->

</rfc>
