<?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.30 (Ruby 3.4.1) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-edn-mapkey-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="Numeric Map Labels from Textual EDN">CBOR: Generating Numeric Map Labels from Textual EDN</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-edn-mapkey-00"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="29"/>
    <keyword>CBOR EDN</keyword>
    <keyword>References to CDDL numbers</keyword>
    <abstract>
      <?line 50?>

<t>The Concise Binary Object Representation (CBOR, STD 94 == RFC 8949) 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.</t>
      <t>CBOR diagnostic notation (EDN) is widely used to represent CBOR data
items in a way that is accessible to humans, for instance for examples
in a specification.
Complex examples often use nested maps, the map keys (labels) for each
of which are often sourced from different specifications.
While the <tt>e''</tt> application extension provides a way to import data items,
particularly constant values, from a CDDL model, it does not help with
automatically selecting the right kind of map depending on its
position in the nested maps.</t>
      <t><cref anchor="status">The present document is intended to capture ideas initially
discussed at the CBOR WG interim 2025-06-25 and demonstrate some
design alternatives.  It is not ready for adoption yet in any way.</cref></t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://cabo.github.io/mapkey/draft-bormann-cbor-edn-mapkey.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-cbor-edn-mapkey/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        cbor Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/mapkey"/>.</t>
    </note>
  </front>
  <middle>
    <?line 73?>

<section anchor="intro">
      <name>Introduction</name>
      <t>(Please see abstract.)
<xref target="STD94"/> <xref target="I-D.ietf-cbor-edn-literals"/> <xref target="I-D.ietf-cbor-edn-e-ref"/></t>
    </section>
    <section anchor="the-mapkey-application-extension-importing-map-labels-from-cddl">
      <name>The <tt>mapkey&lt;&lt;&gt;&gt;</tt> application extension: importing map labels from CDDL</name>
      <section numbered="false" anchor="problem">
        <name>Problem</name>
        <t>In diagnostic notation examples, authors often would prefer to use
text names in place of the integer map keys that are used in a
protocol message for efficiency.
While the <tt>e''</tt> application extension provides a way to associate
names with integer data items, the protocol designer must be very
careful to use the right name for the kind of map that uses the
integer key: Different specifications may use different integer numbers
for a key with the same textual name, and even in a single specification there
may be homonyms that resolve to different integer values in different
kinds of maps (e.g., in <xref target="STD96"/>, <tt>alg</tt> is represented by 1 in headers
and by 3 in <tt>COSE_Key</tt>).</t>
        <t>For example, Figure 4 in <xref section="3.5.2" sectionFormat="of" target="RFC9528"/> contains this
example that employs nested maps:</t>
        <sourcecode type="cbor-diag"><![CDATA[
{                                              /CCS/
  2 : "42-50-31-FF-EF-37-32-39",               /sub/
  8 : {                                        /cnf/
    1 : {                                      /COSE_Key/
      1 : 1,                                   /kty/
      2 : h'00',                               /kid/
     -1 : 4,                                   /crv/
     -2 : h'b1a3e89460e88d3a8d54211dc95f0b90   /x/
            3ff205eb71912d6db8f4af980d2db83a'
    }
  }
}
]]></sourcecode>
        <t>To check this example, a human reviewer has to look up the integer
labels in the specifications for the different maps employed and
translate them to the names of the map keys defined for each type of
map.
The outer map is a CWT Claims Set (CCS), for which the labels 2 (<tt>sub</tt>)
and 8 (<tt>cnf</tt>) are defined in <xref target="RFC8392"/> and <xref target="RFC8747"/>, respectively.
Within <tt>cnf</tt>, the label for <tt>COSE_Key</tt> is also defined by <xref target="RFC8747"/>, while
the labels within that map are defined in Section <xref target="RFC9052" section="7" sectionFormat="bare"/> of RFC 9052 <xref target="STD96"/>.
Map keys are also often an extension point, and obtaining their
numeric values therefore also may require consulting an IANA registry.</t>
        <t>The objective of the present proposal is that a specification writer
could employ an EDN app-extension that allows the example to read a
bit like:</t>
        <sourcecode type="cbor-diag"><![CDATA[
mapkey<<"Claims-Set",
  {
    "sub": "42-50-31-FF-EF-37-32-39"
    "cnf": {
      "COSE_Key": {
        "kty": "OKP"
        "kid": h'00'
        "crv": "X25519"
        "x": h'b1a3e89460e88d3a8d54211dc95f0b90
              3ff205eb71912d6db8f4af980d2db83a'
      }
    }
  }
>>
]]></sourcecode>
        <t>Note that this example not only uses names for map keys, but also uses
names for map values 1 ("OKP") and 4 ("X25519").</t>
        <t><cref anchor="Discussion">Discussion:</cref> For use in EDN, the names need to be provided in some
form that is a valid CBOR data item.
In the example above, this is done in text strings; for increased
clarity, it could be done in a more eye-catching way, e.g., as single-quoted (byte) strings or
even in an <tt>e'...'</tt>-like construct.</t>
      </section>
      <section numbered="false" anchor="solution">
        <name>Solution</name>
        <t>In many cases, the constants needed to handle the numeric map labels
in this example are already available in a CDDL model, or could be
easily made available in this way.</t>
        <t>For the example used in this section, <xref target="RFC9781"/> provides CDDL for <xref target="RFC8392"/>
and <xref target="RFC8747"/>, and <xref target="STD96"/> provides CDDL for its own data types.
Note that, to remain useful with extension points where new map keys
are defined regularly, there needs to be a way to reference
IANA registries for the name-to-integer translation; this is a
separate problem for which a potential solution is presented in
<xref section="A.2.1" sectionFormat="of" target="I-D.bormann-cbor-cddl-2-draft"/>.</t>
        <t>This section needs to define where in the CDDL the names to be
resolved are looked for; CDDL rule names are one obvious candidate, as
are member names for group choices that are often
employed for documentation (Figure 2 in <xref section="2" sectionFormat="of" target="RFC9290"/> shows
member names such as "title", "detail", etc.):</t>
        <sourcecode type="cddl"><![CDATA[
   problem-details = non-empty<{
     ? &(title: -1) => oltext
     ? &(detail: -2) => oltext
     ? &(instance: -3) => ~uri
     ? &(response-code: -4) => uint .size 1
     ? &(base-uri: -5) => ~uri
     ? &(base-lang: -6) => tag38-ltag
     ? &(base-rtl: -7) => tag38-direction
]]></sourcecode>
        <!-- {: #fig-cddl title="CDDL model defining the constants for e''"} -->

<t>This specification defines an app-extension <tt>mapkey&lt;&lt;&gt;&gt;</tt> with two parameters:</t>
        <ul spacing="normal">
          <li>
            <t>The name of the CDDL rule for the top level (here: <tt>Claims-Set</tt>),
and</t>
          </li>
          <li>
            <t>an EDN depiction of the data structure where names can be used in
place of numeric map keys and values.</t>
          </li>
        </ul>
        <t>Note that the app-extension does not itself define
where the CDDL definitions it uses come from.
This information needs to come from the context of the example, and
there is probably value in establishing a convention.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to make the following two assignments in the CBOR
Diagnostic Notation Application-extension Identifiers
registry [IANA.cbor-diagnostic-notation] established by <xref target="I-D.ietf-cbor-edn-literals"/>:</t>
      <table anchor="tab-iana">
        <name>Additions to Application-extension Identifier Registry</name>
        <thead>
          <tr>
            <th align="left">Application-extension Identifier</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">mapkey</td>
            <td align="left">import map labels from external CDDL</td>
          </tr>
        </tbody>
      </table>
      <t>All entries have the Change Controller "IETF" and the Reference "RFC-XXXX".</t>
      <t><cref anchor="to-be-removed">RFC Editor: please replace RFC-XXXX with the RFC
number of this RFC, [IANA.cbor-diagnostic-notation] with a
reference to the registry group established by <xref target="I-D.ietf-cbor-edn-literals"/>, and remove this note.</cref></t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8610"/>, <xref target="STD94"/>, <xref target="I-D.ietf-cbor-edn-literals"/> apply.</t>
      <t>TBD.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
        <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="I-D.ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="12" month="May" year="2025"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Extended Diagnostic Notation (EDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

   Replacing EDN's previous informal descriptions, it updates RFC 8949,
   obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G.

   It also specifies and uses registry-based extension points, using one
   to support text representations of epoch-based dates/times and of IP
   addresses and prefixes.


   // (This cref will be removed by the RFC editor:) The present -17 is
   // intended to fully address the WGLC comments.  It is intended for
   // use as a reference document for the CBOR WG interim meeting on
   // 2025-05-14.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-17"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-cbor-edn-e-ref">
          <front>
            <title>External References to Values in CBOR Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="29" month="December" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949) 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.

   CBOR diagnostic notation (EDN) is widely used to represent CBOR data
   items in a way that is accessible to humans, for instance for
   examples in a specification.  At the time of writing, EDN did not
   provide mechanisms for composition of such examples from multiple
   components or sources.  This document uses EDN application extensions
   to provide two such mechanisms, both of which insert an imported data
   item into the data item being described in EDN:

   The e'' application extension provides a way to import data items,
   particularly constant values, from a CDDL model (which itself has
   ways to provide composition).

   The ref'' application extension provides a way to import data items
   that are described in EDN.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-e-ref-01"/>
        </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="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <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="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC9781">
          <front>
            <title>A Concise Binary Object Representation (CBOR) Tag for Unprotected CBOR Web Token Claims Sets (UCCS)</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="N. Cam-Winget" initials="N." surname="Cam-Winget"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>This document defines the Unprotected CWT Claims Set (UCCS), a data format for representing a CBOR Web Token (CWT) Claims Set without protecting it by a signature, Message Authentication Code (MAC), or encryption. UCCS enables the use of CWT claims in environments where protection is provided by other means, such as secure communication channels or trusted execution environments. This specification defines a CBOR tag for UCCS and describes the UCCS format, its encoding, and its processing considerations. It also discusses security implications of using unprotected claims sets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9781"/>
          <seriesInfo name="DOI" value="10.17487/RFC9781"/>
        </reference>
        <referencegroup anchor="STD96" target="https://www.rfc-editor.org/info/std96">
          <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/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="RFC9338" target="https://www.rfc-editor.org/info/rfc9338">
            <front>
              <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
              <author fullname="J. Schaad" initials="J." surname="Schaad"/>
              <date month="December" year="2022"/>
              <abstract>
                <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR. This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE. This document updates RFC 9052.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="96"/>
            <seriesInfo name="RFC" value="9338"/>
            <seriesInfo name="DOI" value="10.17487/RFC9338"/>
          </reference>
        </referencegroup>
        <reference anchor="I-D.bormann-cbor-cddl-2-draft">
          <front>
            <title>CDDL 2.0 and beyond -- a draft plan</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="28" month="February" year="2025"/>
            <abstract>
              <t>   The Concise Data Definition Language (CDDL) today is defined by
   RFC 8610, RFC 9165, RFC 9682, and draft-ietf-cbor-cddl-more-control
   (RFC-to-be 9741).  RFC 9165 and the latter (as well as some more
   application specific specifications such as RFC 9090) have used the
   extension point provided in RFC 8610, the control operator.

   As CDDL is used in larger projects, feature requirements become known
   that cannot be easily mapped into this single extension point.
   Hence, there is a need for evolution of the base CDDL specification
   itself.

   The present document provides a roadmap towards a "CDDL 2.0"; it is
   intended to serve as a basis for implementations that evolve with the
   concept of CDDL 2.0.  It is based on draft-bormann-cbor-cddl-freezer,
   but is more selective in what potential features it takes up and more
   detailed in their discussion.  This document is intended to evolve
   over time; it might spawn specific documents and then retire, or it
   might eventually be published as a roadmap document.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-2-draft-06"/>
        </reference>
      </references>
    </references>
    <?line 233?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
vZIeAAA=

-->

</rfc>
