<?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.18 (Ruby 3.3.3) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cbor-edn-e-ref-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="EDN external references">External References to Values in CBOR Diagnostic Notation (EDN)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-e-ref-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>
    <date year="2024" month="June" day="27"/>
    <keyword>CBOR numbers</keyword>
    <abstract>
      <?line 53?>

<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.</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.
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:</t>
      <t>The <tt>e''</tt> application extension provides a way to import data items,
particularly constant values, from a CDDL model (which itself has ways
to provide composition).</t>
      <t>The <tt>ref''</tt> application extension provides a way to import data items
that are described in EDN.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://cbor-wg.github.io/edn-e-ref/draft-ietf-cbor-edn-e-ref.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-cbor-edn-e-ref/"/>.
      </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/cbor-wg/edn-e-ref"/>.</t>
    </note>
  </front>
  <middle>
    <?line 76?>

<section anchor="intro">
      <name>Introduction</name>
      <t>(Please see abstract.)
<xref target="RFC8949"/> <xref target="I-D.ietf-cbor-edn-literals"/></t>
      <t>See <xref target="I-D.bormann-cbor-draft-numbers"/> for a more general discussion of working with assigned
numbers during development of a specification.</t>
    </section>
    <section anchor="the-e-application-extension-importing-from-cddl">
      <name>The <tt>e''</tt> application extension: importing from CDDL</name>
      <section numbered="false" anchor="problem">
        <name>Problem</name>
        <t>In diagnostic notation examples used during development of earlier
drafts, authors often used text strings in place of constants they
need, even though they actually mean a placeholder for a later,
to-be-registered integer.</t>
        <t>One example from a recent draft would be:</t>
        <figure anchor="fig-incorrect">
          <name>Misleading usage of text strings as stand-in for registered constants</name>
          <artwork><![CDATA[
{
    "group_mode" : true,
    "gp_enc_alg" : 10,
          "hkdf" : 5
}
]]></artwork>
        </figure>
        <t>Not only is the reader misled by seeing text strings in places that
are actually intended to be small integers, there are also small
integers that are not explained at all (here: 10, 5).
The usefulness of this example is greatly reduced.
Examples constructed in this are not actually machine-readable -- they
seem to be, but they mean the wrong thing in several places without
any warning that this is so.</t>
      </section>
      <section numbered="false" anchor="solution">
        <name>Solution</name>
        <t>In many cases, the constants needed to clean up this example are
already available in a CDDL model, or could be easily made available
in this way.</t>
        <t>If such a CDDL model can be identified, the EDN application extension
<tt>e'constant-name'</tt> can be used to reference a constant defined by that
model under the name <tt>constant-name</tt>.
(Hint: memorize the <tt>e</tt> as external constant, or enum.)</t>
        <t>For the example in <xref target="fig-incorrect"/>, such a CDDL model could have at
least the content shown in <xref target="fig-cddl"/>:</t>
        <figure anchor="fig-cddl">
          <name>CDDL model defining constants for e''</name>
          <sourcecode type="cddl"><![CDATA[
group_mode = 33
gp_enc_alg = 34
hkdf = 31
HMAC-256-256 = 5
AES-CCM-16-64-128 = 10
]]></sourcecode>
        </figure>
        <t>Note that such a model can have other, unrelated CDDL rules that
define more complex data items; only the ones used in an <tt>e''</tt>
construct need to be constant values.</t>
        <t>Using the CDDL model in <xref target="fig-cddl"/>, the example in <xref target="fig-incorrect"/> can be notated as:</t>
        <figure anchor="fig-using-e">
          <name>Example updated to use e'constantname' for registered constants</name>
          <artwork><![CDATA[
{
    e'group_mode' : true,
    e'gp_enc_alg' : e'HMAC-256-256',
          e'hkdf' : e'AES-CCM-16-64-128'
}
]]></artwork>
        </figure>
        <t>This example is equivalent to notating <tt>{33: true, 34: 10, 31: 5}</tt>,
which expresses the concise 10-byte data item that will actually be
interchanged for this example.</t>
        <t>Note that the application-oriented literal does not itself define
where the CDDL definitions it uses come from.  This information needs
to come from the context of the example.</t>
      </section>
      <section numbered="false" removeInRFC="true" anchor="implementation">
        <name>Implementation</name>
        <t>The <tt>e''</tt> application extension is now implemented in the <tt>cbor-diag</tt>
tools <xref target="cbor-diag"/>, by the <tt>cbor-diag-e</tt> gem <xref target="cbor-diag-e"/>, which can
be installed as:</t>
        <artwork><![CDATA[
 gem install cbor-diag-e cddlc
]]></artwork>
        <t>(<tt>cbor-diag-e</tt> uses <tt>cddlc</tt> <xref target="cddlc"/> internally, so it must be in PATH.)
The provided</t>
        <t>Use of this extension has two prerequisites:</t>
        <ol spacing="normal" type="1"><li>
            <t>Opt-in to the application extension <tt>e</tt>, which in the <tt>cbor-diag</tt>
tools such as <tt>diag2</tt><em>x</em><tt>.rb</tt> is done using the <tt>-a</tt> command line
flag, here: <tt>-ae</tt>.</t>
          </li>
          <li>
            <t>Identification of the CDDL model to be used, which will give the
actual values for the constants.  </t>
            <t>
This can be a complete CDDL model for the application, no need to
limit it just to constant definitions.
(Where the constant values need to be obtained by registration at
the time of completion of the document using the examples, the CDDL
model can be set up with TBD values of the constants to be
assigned, and once they are, the necessary updates are all in one
place.)</t>
          </li>
        </ol>
        <t>Assuming that the example in <xref target="fig-using-e"/> is in a file called
<tt>gmadmin.diag</tt>, and that the CDDL model that includes the constants
defined in <xref target="fig-cddl"/> is in <tt>gmadmin.cddl</tt>, the following commands can
be used to translate the <tt>e'</tt>` constants into their actual values:</t>
        <sourcecode type="shell"><![CDATA[
$ export CBOR_DIAG_CDDL=gmadmin.cddl
$ diag2diag.rb -ae gmadmin.diag
{33: true, 34: 10, 31: 5}
]]></sourcecode>
      </section>
      <section numbered="false" removeInRFC="true" anchor="provisional-use">
        <name>Provisional use</name>
        <t>The need for this application is there now, while ratification of the
present specification might take a year or so.
Until then, each document using this scheme can simply use boilerplate
such as:</t>
        <blockquote>
          <t>In the CBOR diagnostic notation used in this document, constructs of
the form <tt>e’somename'</tt> are replaced by the value assigned to
<tt>somename</tt> in CDDL in figure 0815.
E.g., <tt>{e'group_mode': "bar"}</tt> stands for <tt>{33: "bar"}</tt>.</t>
        </blockquote>
        <t>(Choose 0815, group_mode and 33 along the lines of the figure you
include with the CDDL definitions needed.)</t>
      </section>
    </section>
    <section anchor="the-ref-application-extension-importing-from-edn">
      <name>The <tt>ref''</tt> application extension: importing from EDN</name>
      <section numbered="false" anchor="problem-1">
        <name>Problem</name>
        <t>Examples using CBOR diagnostic notation can get large.
One way to manage the size of an example is to make it incomplete.
This reduces the usefulness of the example for machine-processing.
It can also be misleading, unless the elision is made explicit (see
<xref section="3.2" sectionFormat="of" target="I-D.ietf-cbor-edn-literals"/>).</t>
      </section>
      <section numbered="false" anchor="solution-1">
        <name>Solution</name>
        <t>In a set of CBOR examples, recurring subtrees can often be identified,
the details of which do not need to be repeated in each example.</t>
        <t>By enabling examples to reference these subtrees from a separate piece
of EDN, each example can focus on what is specific for them.</t>
        <t>The <tt>ref''</tt> application-oriented literal enables composition by
standing for a CBOR data item from a separate EDN instance that is
referenced using its text as an identifier.</t>
        <t>So, for example, if <tt>123.diag</tt> is a file containing</t>
        <artwork><![CDATA[
[1, 2, 3]
]]></artwork>
        <t>the result of the EDN</t>
        <artwork><![CDATA[
[4711.0, true, ref’123.diag’]
]]></artwork>
        <t>is</t>
        <artwork><![CDATA[
[4711.0, true, [1, 2, 3]]
]]></artwork>
        <t>The text of the literal can be one of two kinds of identifiers:</t>
        <ol spacing="normal" type="1"><li>
            <t>a file name to be interpreted in the context of the referencing
example, as shown above, or</t>
          </li>
          <li>
            <t>a URI that references the EDN to be embedded, as in  </t>
            <artwork><![CDATA[
  [4711.0, true, ref'http://tzi.de/~cabo/123.diag']
]]></artwork>
            <t><!-- URI-references that are not absolute would, again, be interpreted -->
            </t>
            <t><!-- in the context of the referencing example. -->
            </t>
          </li>
        </ol>
        <aside>
          <t>(ISSUE: We could use upper-case REF to unambiguously identify one of
he two; the current implementation however just tries to parse the
literal text as a URI and, if that fails, interprets it as a file
name.)</t>
        </aside>
        <t>Note that a <tt>ref''</tt> application-oriented literal can only be used for
a single CBOR data item; the extension point provided by EDN does not
work for splicing in CBOR sequences.</t>
      </section>
      <section numbered="false" removeInRFC="true" anchor="implementation-1">
        <name>Implementation</name>
        <t>The <tt>ref''</tt> application extension is now implemented in the <tt>cbor-diag</tt>
tools <xref target="cbor-diag"/>, by the <tt>cbor-diag-ref</tt> gem, which can be installed as:</t>
        <artwork><![CDATA[
 gem install cbor-diag-ref
]]></artwork>
        <t>For using the application extension, the <tt>cbor-diag</tt> tools such as
<tt>diag2</tt><em>x</em><tt>.rb</tt> need to be informed by the <tt>-a</tt> command line flag,
here: <tt>-aref</tt>.</t>
        <t>For experimenting with the implementation, the web resource
<tt>http://tzi.de/~cabo/123.diag</tt> contains <tt>[1, 2, 3]</tt>.
This example enables usage as in:</t>
        <sourcecode type="shell"><![CDATA[
$ echo "[4711.0, true, ref'http://tzi.de/~cabo/123.diag']" >my.diag
$ diag2diag.rb -aref my.diag
[4711.0, true, [1, 2, 3]]

$ echo "[4, 5, 6]" >456.diag
$ echo "[4711.0, true, ref'456.diag']" >my.diag
$ diag2diag.rb -aref my.diag
[4711.0, true, [4, 5, 6]]
]]></sourcecode>
        <t>If a referenced EDN file parses as a CBOR sequence this is currently
treated as an error.</t>
      </section>
      <section numbered="false" removeInRFC="true" anchor="provisional-use-1">
        <name>Provisional use</name>
        <t>Documents that want to use the application extension <tt>ref''</tt> now can
use boilerplate similar to that given above for <tt>e''</tt>.</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]:</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">e</td>
            <td align="left">import value from external CDDL</td>
          </tr>
          <tr>
            <td align="left">ref</td>
            <td align="left">import value from external EDN</td>
          </tr>
        </tbody>
      </table>
      <t>All entries 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 new registry group, 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="RFC8949"/>, and <xref target="I-D.bormann-t2trg-deref-id"/> apply.</t>
      <t>The proof of concept implementations described do not do any
sanitizing of URLs or file names at all.
Upcoming versions of the present document will need to define the
right restrictions for external references like this.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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): Application-Oriented Literals, ABNF, and Media Type</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="18" month="May" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation, CBOR (STD 94, RFC 8949),
   defines a "diagnostic notation" in order to be able to converse about
   CBOR data items without having to resort to binary data.

   This document specifies how to add application-oriented extensions to
   the diagnostic notation.  It then defines two such extensions for
   text representations of epoch-based date/times and of IP addresses
   and prefixes (RFC 9164).

   A few further additions close some gaps in usability.  To facilitate
   tool interoperation, this document specifies a formal ABNF definition
   for extended diagnostic notation (EDN) that accommodates application-
   oriented literals.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-09"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.bormann-cbor-draft-numbers">
          <front>
            <title>Managing CBOR numbers in Internet-Drafts</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="29" month="February" year="2024"/>
            <abstract>
              <t>   CBOR-based protocols often make use of numbers allocated in a
   registry.  During development of the protocols, those numbers may not
   yet be available.  This impedes the generation of data models and
   examples that actually can be used by tools.

   This short draft proposes a common way to handle these situations,
   without any changes to existing tools.  Also, in conjunction with the
   application-oriented EDN literal "e", a further reduction in
   editorial processing of CBOR examples around the time of approval can
   be achieved.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-draft-numbers-03"/>
        </reference>
        <reference anchor="cddlc" target="https://github.com/cabo/cddlc">
          <front>
            <title>CDDL conversion utilities</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="cbor-diag" target="https://github.com/cabo/cbor-diag">
          <front>
            <title>CBOR diagnostic utilities</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="cbor-diag-e" target="https://github.com/cabo/cbor-diag-e">
          <front>
            <title>CBOR diagnostic extension e''</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="cbor-diag-ref" target="https://github.com/cabo/cbor-diag-ref">
          <front>
            <title>CBOR diagnostic extension ref''</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.bormann-t2trg-deref-id">
          <front>
            <title>The "dereferenceable identifier" pattern</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="2" month="March" year="2024"/>
            <abstract>
              <t>   In a protocol or an application environment, it is often important to
   be able to create unambiguous identifiers for some meaning (concept
   or some entity).

   Due to the simplicity of creating URIs, these have become popular for
   this purpose.  Beyond the purpose of identifiers to be uniquely
   associated with a meaning, some of these URIs are in principle
   _dereferenceable_, so something can be placed that can be retrieved
   when encountering such a URI.


   // The present -03 revision discusses the continuum between entirely
   // relying on the result of dereferencing an identifier and building
   // in knowledge of all expected identifiers, and it mentions further
   // pitfalls of using dereferenceable identifiers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-deref-id-03"/>
        </reference>
      </references>
    </references>
    <?line 347?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
13MxjcsBW2ilFc8xJFadgLafggpFh95LbP+bWt7PHgj9vza94CRtb6/N1V/U
5so5MQeF687jXrEH2xJudpJqu5PsJRg/blhXUXdaSt9Pqq6f5KZSLxXSqbEF
1dSdN5HEpvd62a7NmJgph5xq9LlIH0XoRQPcgeIo3ZwaxWziDy0EW4ZbBf5k
XuudL0aZHf3NYuXr+zv1P57W8eZn0HvNe6BRGT4hzZPHTyLRTwoW1/x2ISLD
d74DuZzKCVSXHRldkhQEOZwP/42A6g4PAhCVK8XXkPyUUmo7a2ubfmlzcx7K
+4DV15mf9LUevj41LAlxynBkC7jVdbAZKVCS+okLqHJQETKUr9c52oKo6vL0
+1O+WkHU9l2/2ziOjYeysk4KUyjDhdmmlK+bjSnzru8y/J6Kdaej7nud7LSH
n+vtXa4TtgoTiZX+958oRNrFsSeVxFL8HbvYXx4kqH/R53JUvewfRW98flG/
JA9+Hl4CMtrcy6DPK56p+wZNarruaERaHpKhX/92MnRtkOEAu8nGSYHGJB5C
nOZ56KZgzgdV9yqYgnPq05Jla8i3tLCMiulKjYU3YPUO387bCaMRs37TUO+8
enmW/Cs+O/DAn/4jHhozKPJ3d68M5XWeCwha26Fe+pcDQn+rI6k1wOKKf3NO
wq2bU+Ly4EEXCq8FyPO9TqEOE6Zr3TmjtLR+7uPl9FxAid2Hes1mhy/+TB4K
rRBfTL7u/oe4Bb78EE5QuvcgPHf8lFembm8FKlah7UDhgMf8Cf/ELLerJtd7
XyP0VfiHb/m5jP31z4xlPP321Z/kBZyuXHbhnDhVb5dIhFwWXmPqutM4Z+nm
JTIqjVk1HEaxMrMyesFqeNHES+W7jzvvkyLXfvAaDq+VjLPJB/jg5AMAELXC
THZ2V730+Qi7z3eqWg5YXpyr/wVWxjzRFCsAAA==

-->

</rfc>
