<?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.6 (Ruby 3.2.2) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-e-ref-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="EDN external references">External References to Values in CBOR Diagnostic Notation (EDN)</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-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="February" day="29"/>
    <keyword>CBOR numbers</keyword>
    <abstract>
      <?line 48?>

<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>
  </front>
  <middle>
    <?line 71?>

<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="1" month="February" 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-08"/>
        </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="2" month="September" year="2023"/>
            <abstract>
              <t>   CBOR-based protocols often make use of numbers allocated in a
   registry.  While developing 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.  Such changes are very well
   possible in the future, at which time this draft will be updated.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-draft-numbers-02"/>
        </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="19" month="December" year="2023"/>
            <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 -01 version is a stub to draw some attention to the
   // opportunity that this pattern would benefit from a common
   // description, documenting its benefits and pitfalls, and some
   // mitigations for the latter.

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

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
+puT0+Tw0WP+4cojdXL+Kjk9/SY5eJw8Pk4ODp/g6sE+SXd4QxY6oEtPalEu
fXTtY1KG7e4G9DDee8N+15aXjdYM9wFsYQ1hOPf6sG0ZocPbzmdFFgGl+dBL
4V96aKKWUHCFTENnrXyCU10Yi+MHyNmqSOCeb5yPMtO3x5amB/caNTqjZECi
krsjIZjdtZl2b2cE3O6sxttmt2+r3Vv5wezSqn7lLSPubueMlvtMzJ0ZI0Af
ECEX6aErqFOvQ04i7pO54vUWvJq/tgV0TOcFNV8YQM/j66OjsHG4pcfrowOk
uJvxQPlSENCOvsAZFyNA2qeD/WSyakyvtBXXuiqA/R0oT4ykC8tSeRa6lT7E
DfteSeo9rEkQ6pAWT4XeHfU6ZCDoh+LU+yOkZJbqHMYHQSOFexFqe3irrxaG
WotiugGAtE0mlwK3W7UO9Q+NT1WmJzHg/oJfF7Fb3AB9GGRRXyIN22l2c38N
X3BHV6zyPMGY4giCsdsdQ7ga/eX1dXeJITBZba1LgIgzGKK3LjFc6e2IiFCE
eDpJWW7ExEw6E7neHxX4cQcq6U0eotKx3BuTGb8g4sTSFe3OyRV1v2gBm8JS
f3/y+msAMtUR2oFcM9ZNrxSIOmHTwT4Lbmfptug1DEU9GOrvlg2LpNBD3a1S
JIZB14rdUiXHDKJND4LYCK8fjn/94dfjoZ2MtTSGFdNYxKFxko5l3sZ+vKTL
gci0TNGs+iIHC5ilDof6IuTPIFTwnR6QedQjNkYZJWJmxaW4MCn76AmAGEKm
VzYMxWbixQHj0oDGzQan+GBPSQP4WgRfEimLRcFo0n+hoSQC+mnaB9GQK/f+
0AXZFmL3wbyeNGnM7h6XrNcDkgf13mv3g8Q9JfW68aj42LUMOi2SzEbB4kzD
uknasNfPz6JQgWavLaGAot3Qq/npSs3yxPcm1ng2leFsg6Mhj74uFMCShGpv
fCkPWV+cONcuelXhHUkp4DwDJExSpgUHExKDajxDrQYKQ/FOL1RHq+83Mnnx
Aya3uTcVa6qtJBn4dRx4dez3OK3Lsr7ylYK4tYvoEIs3WK5yLANCrbU7Hve0
GacYhd30VgSplEBubtAp/AdTB/t8zpPenV2c/O4dd/SsLxAWSfzxfwg/jUjS
fZWoj+YnKYhCJ3xZMPIhBsS/D427sZnvI3oQ4rsqaSyuJDphJjrwVjirOCbb
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
eunzEXaf7VS1nLA8P1P/D/S7CkKNKgAA

-->

</rfc>
