<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 4.0.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-configuration-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="CBOR Configuration">CBOR Configuration</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-configuration-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="2026" month="September" day="04"/>
    <area>Applications and Real-Time</area>
    <workgroup>CBOR (Concise Binary Object Representation Maintenance and Extensions)</workgroup>
    <keyword>Ecosystem</keyword>
    <keyword>Serialization</keyword>
    <keyword>Subsetting</keyword>
    <keyword>Normalization</keyword>
    <keyword>Interoperability</keyword>
    <abstract>
      <?line 53?>

<t>This document discusses configuration of CBOR processors.
Using this information as a basis, it provides WGLC feedback on
draft-ietf-cbor-serialization-08.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-cbor-configuration/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        CBOR (Concise Binary Object Representation Maintenance and Extensions) 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/configuration"/>.</t>
    </note>
  </front>
  <middle>
    <?line 59?>

<section anchor="intro">
      <name>Introduction</name>
      <t>This document discusses configuration of CBOR processors, more
specifically, of libraries and other implementations that handle
generation and ingestion of encoded CBOR data items for an application.
Such a configuration will influence a number of individual <em>services</em>,
including <em>serialization</em> (while meeting specific <em>serialization constraints</em>),
<em>data model subsetting</em>, and <em>normalization services</em> (<xref target="configuration"/>).
Of these, only serialization/deserialization is a core service of such
a library, but that is often combined with other services for
convenience and ease of implementation.</t>
      <aside>
        <t>For convenience and easier reference to CBOR concepts, this document includes working-group last call comments on <xref target="I-D.draft-ietf-cbor-serialization-08"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Status: Not Ready
            </t>
            <ul spacing="normal">
              <li>
                <t>The document is difficult to appraise as it doesn’t reveal what it actually is trying to do and how. Reasons for a need for fundamental changes are not identified.  Lack of terminological clarity makes it hard to predict how the document will be (mis)understood, and thus more generally the outcome of publishing the document.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The introduction contains this statement:</t>
        <blockquote>
          <t>As a result, CBOR libraries and protocol implementations commonly
   support only the serialization forms required for their intended use
   cases.  This behavior is expected and aligns with CBOR’s design
   goals.</t>
        </blockquote>
        <t>(This sentence uses the word "support", which doesn't reveal whether
this is about decoder support for consuming the specific serialization
forms, or about encoder support for meeting arbitrary partial decoder
implementations' requirements. Imprecision of this kind makes it hard
to supply straightforward fixes.)</t>
        <t>It is not at all clear what the normative intent of this statement is.
This paints a picture of perpetuating a forest of barely interoperable
implementations with a thicket of restrictions.
Instead, the reality is that generic CBOR implementations exist, and
that it is much easier to build CBOR applications based on these.
The normative intent of any contribution to the CBOR ecosystem must be
to aid making this reality more universal, instead of encouraging a
world of dominating interoperability concerns.
(Partial implementations have their place, see below, but should not
be the usual situation an application developer is by default
confronted with.)</t>
        <t>Since another revision of <xref target="I-D.draft-ietf-cbor-serialization-08"/> is likely to be needed, this review
does not yet attempt detailed checking of the examples.</t>
        <!-- use of the word "largely" -->

</aside>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>For brevity, this revision of this document uses the definitions of
RFC 8949 <xref target="STD94"/> and of <xref section="1.2" sectionFormat="of" target="CDE"/>.
Please do consult these definitions while reading the present document.</t>
        <t>Additional Terms:</t>
        <dl>
          <dt>Service:</dt>
          <dd>
            <t>A potential function of a CBOR processor implementation.
This includes services that are combined with the core services
provided by that implementation, for convenience and ease of
implementation.</t>
          </dd>
          <dt>Partial implementation enabler (PIE):</dt>
          <dd>
            <t>An agreement between producers and consumers of data items used in a
CBOR-based protocol that allows for partial implementations on the consumer side.</t>
          </dd>
        </dl>
        <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?>

</section>
    </section>
    <section anchor="configuration">
      <name>Configuration</name>
      <t>A CBOR application often makes use of a <em>CBOR library</em> (more generally speaking, <em>CBOR implementation</em>) to perform certain services.
There may be a need to communicate preferences or instructions from the CBOR application to the CBOR library on how to perform the services; this document uses the term "configuration" in this specific sense.</t>
      <t>Some parameters of a configuration mechanism provided may be entirely
<em>local</em>, such as memory allocation parameters.
Some may be <em>unilateral</em>, i.e., they influence the generated CBOR, but
the consuming application does not need to agree to these influences.
Some may be <em>interoperability constraints</em>, i.e.,
certain parameters need to be known on both the producing and the
consuming side.</t>
      <ul spacing="normal">
        <li>
          <t><em>Serialization constraints</em> restrict the serialization variants
available for CBOR data items.
          </t>
          <ul spacing="normal">
            <li>
              <t>This may be motivated by enabling a partial implementation on the
consumer side which has to deal with fewer variants.</t>
            </li>
            <li>
              <t>In the area of serialization, the CBOR application may want to
make use of <em>deterministic serialization</em>, which needs to be
explicitly configured on the producer side and usually (depending
on application requirements) also on the consumer side.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><em>Data model subsetting</em> may be a service requested by an application
that does not need to handle certain CBOR data items.
For instance, a CBOR application may not need to handle floating
point values.
This can enable compiling the library used with special flags
to save the code space that would be needed (partial implementation enabler).
Data model subsetting on the consumer side typically is an
interoperability constraint (certain values can no longer be
interchanged).</t>
        </li>
        <li>
          <t><em>Normalization services</em> may be provided by a CBOR library as a
service that offloads some application code into the library, e.g.,
if the application desires to have all text strings sent in a
Unicode Normalization Form (such as NFC).
In certain cases, normalization services may be performed at the
consuming side before ingested CBOR is handed to the application;
this needs to be handled with caution as the application no longer
sees what was actually interchanged.</t>
        </li>
      </ul>
      <aside>
        <t><strong>WGLC</strong> <xref target="I-D.draft-ietf-cbor-serialization-08"/>:</t>
        <t>The draft in WGLC does not make this distinction, calling the entire
set of configuration information "a serialization".
This can be very confusing, e.g., in the abstract, where the text
announces the draft will define new "serializations", when in reality
it is fortunately entirely based on the encodings (serializations)
defined by <xref target="STD94"/>.
The muddiness of these terms also causes unnecessary verbosity, e.g.,
in <xref section="4.2" sectionFormat="of" target="I-D.draft-ietf-cbor-serialization-08"/>, where each bullet point about
serialization constraints apparently needs to be prefixed by a condition such as
"If floating-point numbers are encoded", which is about data model
subsetting and not about serialization variation.</t>
      </aside>
      <section anchor="partial-implementations">
        <name>Partial Implementations</name>
        <t>CBOR has been designed to be useful in constrained environments.
It therefore embraces <em>partial implementations</em>, i.e., implementations
that do not provide access to all the features of the CBOR
representation format.
Partial implementations often have interoperability considerations:
They can only be used for CBOR-based protocols that do not exercise
features that have been left out (for instance, a constrained
implementation that does not provide floating point values cannot be
used for high-resolution timestamps based on CBOR Tag 1).
To a certain extent, CBOR-based protocols can accommodate partial
implementations:
A protocol that uses Tag 1 could restrict the tag
content to an integer, enabling the use of partial implementations
without floating point support.</t>
        <t>While CBOR does embrace partial implementations in this way, this does
not mean a receiving CBOR protocol implementation is free to leave out
features and expect the CBOR generator to magically know that this
will be the case and implement workarounds.
Instead, the use of a partial implementation needs to be <em>enabled</em>;
the present document speaks about <em>partial implementation enablers</em>.</t>
        <t>While there is an infinite number of implementation omissions that
could be made in a CBOR implementation,
certain omissions are widely employed and therefore may be worth to be
explicitly called out, assigning them a name.
This facilitates using these names in the definition of a CBOR-based protocol
and in the configuration interface of a CBOR generator.</t>
        <t>Some of these are about serialization configuration, see
<xref target="serialization-configuration"/>; this leads to a small number of
easy-to-implement and widely considered useful partial implementation
enablers such as "definite-length only" (DLO) or "no integer overlap"
(NIO).</t>
        <t>Some of these are about data model subsetting (e.g., no floating
point), which actually have implications on the application data model
and are therefore much more numerous, but also don't <em>need</em> library
support (can be left to the control of the application).</t>
      </section>
      <section anchor="serialization-configuration">
        <name>Serialization Configuration</name>
        <section anchor="example-json">
          <name>Example: JSON</name>
          <t>For a given <xref target="JSON"/> value, there are often a large number of
JSON texts that could be used to serialize it.
For instance:</t>
          <ul spacing="normal">
            <li>
              <t>The number format provides significant serialization variation,
e.g., (in the <xref target="I-JSON"/> interpretation) the number 42 can be
serialized in an infinite number of ways, as <tt>42</tt>, <tt>42.0</tt>, <tt>42.00</tt>,
<tt>42.0000000</tt> (adding trailing insignificant zeros), <tt>42e0</tt>, <tt>4.2e1</tt>,
<tt>.42e2</tt>, <tt>420e-1</tt> (using exponents in various ways), <tt>42e00</tt>,
<tt>4.2e01</tt>, <tt>4.2e+1</tt>, <tt>4.2e+01</tt> (adding sign characters and/or
insignificant zeros to an exponent), etc.</t>
            </li>
            <li>
              <t>Each character in a text string may provide a choice between
directly including that character in the JSON text and using a
<tt>\uNNNN</tt> or <tt>\uHHHH\uLLLL</tt> escape; the <tt>/</tt> character can also be
escaped as <tt>\/</tt>.</t>
            </li>
            <li>
              <t>The serialization of containers (arrays and JSON objects (maps))
provide for the insertion of blank space between elements/entries.
Blank space can also be added outside (before or after) a
serialized JSON value to make a JSON text.</t>
            </li>
          </ul>
          <!-- edn-abnf -asame
`42` is different in CDN
same<<42.0, 42.00, 42.0000000, 42e0, 4.2e1, .42e2, 420e-1, 42e00, 4.2e+1, 4.2e+01>>
-->

<section anchor="json-implementations-serialization-controls">
            <name>JSON Implementations: Serialization Controls</name>
            <t>There are probably a few hundred "serious", open-source general-purpose JSON implementations.
These rarely provide controls that choose
specific serialization variants, beyond those that relate to human
consumption of the serialized JSON text (i.e., pretty printing).
With luck, there may be a control for the text string escaping choosing between direct representation of all Unicode characters where JSON allows this vs. an "ASCII-only" mode escaping non-ASCII characters.</t>
          </section>
          <section anchor="json-deterministic-serialization">
            <name>JSON Deterministic Serialization</name>
            <t>A specification for deterministic serialization of JSON data exists
<xref target="JCS"/>.
This is usually not implemented as a serialization option by general
JSON implementations, but by specially made JCS implementations
(of which there probably are a couple of dozen "serious", open-source ones in
existence).
For example, the implementation of JCS number formatting is generally considered highly error-prone.</t>
          </section>
        </section>
        <section anchor="example-cbor">
          <name>Example: CBOR</name>
          <t>For a given CBOR data item, there are often multiple encoded CBOR data
items ("encodings") that can be used to serialize it.
Deterministic serializations reduce this number to exactly one variant.</t>
          <t>In contrast to JSON, CBOR explicitly embraces <em>partial
implementations</em> of the CBOR data format.</t>
          <t>A partial implementation at a producer may involve data model
subsetting in the CBOR library; unless that data model subsetting is
part of the application data model, this may mean limitations to the
expressiveness that the producer can make use of.
As it is part of the library configuration it hands down, the producer
application will be aware of this subsetting and can
implement strategies for dealing with this subsetting (e.g., the
application might round tag 1 timestamp values to the nearest integer
if the additional resolution provided by floating point values is not
needed).</t>
          <t>If data model subsetting is to enable the consumer to use a partial
implementation, the producer needs to be aware of this; this then
becomes an interoperability constraint.</t>
          <t>This document speaks about a <em>Partial implementation enabler</em> (PIE):
An agreement between producers and consumers of data items as defined
in a CBOR-based protocol that allows for partial implementations on
the consumer side.
A PIE may place additional onus on the producer side, including the
application (e.g., converting all timestamps to integer in order to
avoid the interchange of floating point numbers), and/or reduced onus
(no need to encode floating point numbers if they are not used in the
data model).</t>
          <section anchor="cbor-implementations-serialization-controls">
            <name>CBOR Implementations: Serialization Controls</name>
            <t>Handling interoperability in an ecosystem that embraces partial
implementations requires more discipline.</t>
            <aside>
              <t>In particular, it is necessary to distinguish omissions that just
place an onus on the producer (e.g., providing an efficient
serialization variant), potentially unilaterally, from those that
transfer an onus from the consumer to the producer (which needs to
know that there is now some expected behavior).
Some rules concern the applications (data model subsetting plus
possibly normalization procedures that facilitate that subsetting),
some don't (serialization variants, except for the special case of
deterministic encoding).</t>
            </aside>
          </section>
          <section anchor="deterministic-serialization-for-cbor">
            <name>Deterministic Serialization for CBOR</name>
            <t>Deterministic serialization is generally easy to achieve in CBOR and
in many cases can be based on a generic implementation (encoder/decoder).
There are several different (completed and draft) specifications for deterministic serialization:</t>
            <ul spacing="normal">
              <li>
                <t>A common format specified in Section <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>.</t>
              </li>
              <li>
                <t>A legacy specification in Section <xref target="RFC8949" section="4.2.3" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>,
compatible to a previous specification <xref section="3.9" sectionFormat="of" target="RFC7049"/>
(called "Canonical CBOR" there).
(Common and legacy deterministic serialization differ in the ordering of maps.)</t>
              </li>
              <li>
                <t><xref target="CBOR-42"/>, a "bespoke serialization of CBOR intended for use with
the special tag 42 in various end-to-end protocols that came out of
the IPFS community".</t>
              </li>
              <li>
                <t><xref target="I-D.draft-ietf-cbor-serialization-08"/>, also based on Section <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>, but
mixing some unrelated data model subsetting into the configuration.</t>
              </li>
            </ul>
            <t>Map sorting obviously requires additional effort in an encoder.
Map sorting can help taking an onus off the consumer:
Being able to process the map entries in any order can take more
code/be less efficient for the consumer than knowing what order they
will arrive in.
(The latter does require making the order available to the application processing.)
(CoAP Option processing is an example for how knowing the order in
which entries arrive can be quite beneficial for a constrained implementation.)</t>
            <!-- ## Serialization Constraints -->

</section>
        </section>
      </section>
      <section anchor="data-model-subsetting">
        <name>Data Model Subsetting</name>
        <t>The CBOR library may be made aware that certain parts of the CBOR
generic data model are not used in the application data model of a
CBOR application, possibly leading to a reusable subset of the generic
data model.
In this case, the producer may want to do a poor form of data model
validation, and the consumer may do the same or simply reject input
that doesn't respect the data model subset.
The producer also may want to offer a normalization service
(<xref target="normalization"/>), possibly in support of data model subsetting.</t>
        <t>A typical example is a constrained implementation for a platform that
doesn't provide a platform type for floating point numbers, or maybe
only for float32 and not float64.
In the latter case, a normalization service could round float64
numbers to a close float32 number.
Whether that is acceptable for the application needs to be defined by
the CBOR-based protocol.</t>
        <t>A disadvantage of performing data model subsetting in the CBOR library
is that, unless there is detail information supplied by some data
definition (e.g., an extension to CDDL), it applies equally whole-sale
to the entire CBOR data item.</t>
        <t>Data model subsetting can be a partial implementation enabler (PIE); a
bespoke CBOR consumer does not need to implement parts of the CBOR
functionality that are not in the protocol's data model subset.</t>
      </section>
      <section anchor="normalization">
        <name>Normalization</name>
        <t>Normalization services may be a convenient addition to a CBOR library.
For example, an application protocol that requires text strings to be
in some Unicode normalization form (in many cases where this is
needed, that will today be NFC) may want to flip a bit in the encoder
configuration instead of doing the processing in the application
implementation.
Similarly, an application protocol that needs NaNs as a distinct data
type but only one NaN value may want the encoder to normalize all NaN
values to the chosen one.</t>
        <t>Normalization is visible at the application layer; users of CBOR
libraries need to be aware of which normalization processes are
enabled in the library.
The CBOR-based protocol usually does not know (or care) whether the
normalized values came from the application or from a normalization
service in a library.</t>
        <t>As with data model subsetting, a disadvantage of performing
normalization in the CBOR library is that, unless it is controlled by
some data definition (e.g., an extension to CDDL), it applies
whole-sale to the entire CBOR data item.
On the other hand, normalization will typically not reach into the
internals of CBOR data items, in which case embedded CBOR or
homogeneous tagged arrays might not be covered.</t>
      </section>
    </section>
    <section anchor="other-wglc-feedback">
      <name>Other WGLC Feedback</name>
      <section anchor="new-tag-data-model-rule">
        <name>"New Tag Data Model Rule"</name>
        <aside>
          <t><strong>WGLC</strong> <xref target="I-D.draft-ietf-cbor-serialization-08"/>:</t>
          <t><xref section="7" sectionFormat="of" target="I-D.draft-ietf-cbor-serialization-08"/> attempts to reflect a valid concern that has
been brought to light in the WG's discussion of the special role of
CBOR tag 2/3.
The section needs to be more specific in what way new tags may not
"affect" existing data types of CBOR.
(Does tag 25 "affect" strings?
Some relevant discussion about serialization aspects also in <xref section="11.2.3" sectionFormat="of" target="I-D.bormann-cbor-notable-tags"/>.)</t>
          <t>The observation identified here is that tag 2/3 can be used not only
to serialize data items not in the basic generic data model (i.e.,
outside the space already covered by mt0/1), but can also be used as
an alternative serialization of existing integer data items that also
can be expressed as mt0/1.
This can be called the "integer overlap".</t>
          <t>Supporting the integer overlap in CBOR was a deliberate decision,
enabling e.g. a more efficient representation of 40-bit integers; more
generally it is part of the strategy of CBOR to work well with no
longer than 64-bit arguments (i.e., "ai" values from 28 to 30 are not used).
It does have consequences on how a generic decoder needs to work.
(This makes decoding tag 2/3 a requirement for generic decoders, even
if the application data model does not contain integers outside mt0/1.)
In short, while acceptable for the legacy case of integers,
implementing such an overlap for a new tag would require more effort
than the WG found acceptable for definitions of new tags.</t>
          <t>For certain applications, a "no integer overlap" PIE for the tag 2/3
case is useful.
(No integer overlap is also implied by Preferred Serialization, see Section <xref target="RFC8949" section="4.2.1" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>.)
Beyond that, it is not so easy and will be time-consuming to formulate
an exact rule for what a new tag is allowed or is not allowed to do;
the important contribution here might be writing up the problem and
giving the protocol designer (and later the Designated Expert) enough
information to diagnose whether the concern would apply to a new tag.</t>
        </aside>
      </section>
      <section anchor="cddl-serialization-control-operator">
        <name>CDDL Serialization Control Operator</name>
        <aside>
          <t><strong>WGLC</strong> <xref target="I-D.draft-ietf-cbor-serialization-08"/>:</t>
          <t>The new ".serial" CDDL control operator introduced in <xref section="8" sectionFormat="of" target="I-D.draft-ietf-cbor-serialization-08"/> is only sketched.
The CDDL processing model does not provide for controlling
serialization.
Functionality like this can be added to CDDL by extending its
processing model, but generally requires more careful considerations.
Questions such as how nested applications of the operators combine
have already come up on the mailing list.</t>
          <t>The registry to be set up appears to try to limit the kinds of
serialization constraints that can be expressed.</t>
          <blockquote>
            <t>New controller values for new serializations are possible but are
  highly discouraged. Standards action is required to add them.</t>
          </blockquote>
          <t>Given that there are several deterministic serializations in use, as
well as a number of partial implementation enablers identified, this
is not going to address a sufficient part of reality.</t>
          <t>The solution definitely should make it easy to do the right thing.
It should not try to make it impossible or very hard to express not
doing a greenfield design where a different deterministic encoding is
already deployed.</t>
        </aside>
      </section>
      <section anchor="nans-appendix-c">
        <name>NaNs (Appendix C)</name>
        <aside>
          <t>The technical arguments are well known, they will not be repeated here.</t>
          <t>What is maybe less obvious is what role CBOR plays in this.</t>
          <t>There actually is no requirement that CBOR has to heal all of
IEEE 754's shortcomings in this space before it can make floating
point values available for interchange.</t>
          <t>CBOR's data model calls for serializations in binary64, and, for preferred
serializations, in binary32 and binary16.</t>
          <t>For platforms that already support IEEE 754, it is usually trivial to
obtain a binary64 that is ready for interchange.
(Certain legacy platforms such as PA-RISC and pre-R6 MIPS may have
an additional step, but that is well-known for those platforms.)</t>
          <t>The small piece of work a CBOR implementation has to do here (if it wants
to support deterministic encoding) is narrowing these values to
binary32 and binary16 where that is possible.
<xref target="STD94"/> defines exactly how this is to be done, for the purposes of CBOR.
<xref section="F" sectionFormat="of" target="CDE"/> shows one way how to do this, which was example
code sorely missing from previous documents about CBOR.
Since most modern CPUs have instructions for doing this work (to which
CBOR is compatible by design), there may be an even simpler way to do
this.</t>
          <t>The WG may not have a lot of interest in financial or instrumentation
applications of CBOR.
This does not mean we should simply steamroll over them by trying to
create a world where NaNs are actively ostracized.</t>
        </aside>
      </section>
      <section anchor="implementation-aid-appendix-d">
        <name>Implementation aid (Appendix D)</name>
        <aside>
          <t>Appendix D contains a reformulated and extended form of <xref section="F" sectionFormat="of" target="CDE"/>.
This is great.</t>
          <t>It is a bit suspicious why the reformulated code no longer covers all
of CBOR.
In the process of amputating the (zero-LOC) solution for that, the
code also became wrong.
(The code that may be using the example code was not shown, but in a
likely implementation, the effect is that a NaN that is different from
the chosen one will be serialized as binary64, which is not what
<xref target="STD94"/> says.)</t>
        </aside>
      </section>
      <section anchor="serialization-checking-appendix-h">
        <name>Serialization Checking (Appendix H)</name>
        <aside>
          <t>The kind of checking that is being discussed here makes a lot of sense
(actually, is usually required) for a deterministic encoding, where it
also has a trivial definition.</t>
          <t>For
anything else,
there is very little reason to perform this kind of checking (outside
of diagnostic implementations).
Requiring this checking for anything else in a CBOR-based protocol would
dramatically reduce the selection of CBOR decoders that can be used.
The damage caused to the CBOR ecosystem unfortunately will not be
limited to the CBOR-based protocol; we should not encourage that.</t>
        </aside>
      </section>
      <section anchor="nits">
        <name>Nits</name>
        <aside>
          <ul spacing="normal">
            <li>
              <t>Consistent Notation for encoded data items    </t>
              <t>
The notation for encoded data items switches between a hex string preceded with a <tt>0x</tt>, as in:    </t>
              <artwork><![CDATA[
  0xfb3fb999999999999a
]]></artwork>
              <t>
or    </t>
              <artwork><![CDATA[
  0xf90000
]]></artwork>
              <t>
and a sequence of bytes as in    </t>
              <artwork><![CDATA[
  0xf9 0x7e 0x00
]]></artwork>
              <t>
(The habit of using the <tt>0x</tt> prefix for notating encoded data
  items has been criticized for good reasons but seems hard to get
  rid of; this comment is just about consistently using one form.)</t>
            </li>
            <li>
              <t>Confusing statements about COSE</t>
            </li>
          </ul>
          <blockquote>
            <t>It is also <bcp14>RECOMMENDED</bcp14> that CBOR libraries support deterministic serialization, as some
protocols (for example, COSE) require it.</t>
          </blockquote>
          <t>While this statement is technically true, what COSE needs is a rather
limited form of <em>producer</em> support for COSE's deterministic encoding
(which is defined on a data model subset that makes it compatible with
both CDE and LDE), to enable creating signing input only.
COSE does not use deterministic encoding for anything exchanged over
the wire.
The text looks like it is saying that, and it certainly will be
misinterpreted and misquoted.</t>
          <ul spacing="normal">
            <li>
              <t>Terms Bignum, Big Integer</t>
            </li>
          </ul>
          <t>The various terms in use here are ambiguous whether they refer (1) to the
numeric range or (2) to the specific encoding by either mt0/1 or tag 2/3.
We probably should decide on two pairs of terms and unambiguously define them.</t>
          <ul spacing="normal">
            <li>
              <t>Terms Subset/Superset</t>
            </li>
          </ul>
          <t>Most of the configuration options discussed in the present document
are about requiring subsetting the set of choices.
Combining requirements can also be perceived as creating a superset of
requirements.
These interpretations with an opposing sense are probably best avoided
unless accompanied by text that makes clear which kind subset/superset
is being discussed.</t>
          <t>There are related sentences such as (5.1):</t>
          <blockquote>
            <t>All of preferred-plus serialization defined in Section 4.1 <bcp14>MUST</bcp14> be used.</t>
          </blockquote>
          <t>This probably does not mean that all of preferred-plus needs to be
exercised, but that all requirements stated must be fulfilled.
(The unease some of us feel about "plus" is another manifestation of
this ambiguity.)</t>
          <ul spacing="normal">
            <li>
              <t>Term "Preserve"</t>
            </li>
          </ul>
          <blockquote>
            <t>A CBOR library is not required to preserve the order of keys when decoding a map,</t>
          </blockquote>
          <t>The point here appears to be that there is no need for the CBOR
application to be informed about the order of the entries in the map.
Whether that would be trivial ("preserve") or hard to do (e.g., if the
platform only has an unordered map) depends on the platform.</t>
        </aside>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>TODO configuration security</t>
      <aside>
        <t><strong>WGLC</strong> <xref target="I-D.draft-ietf-cbor-serialization-08"/>:</t>
        <t>The security considerations of <xref target="I-D.draft-ietf-cbor-serialization-08"/> only seem to be concerned with exploiting
serialization variation as a covert channel (between the CBOR encoder
and a third party?).
This is somewhat surprising, as JSON and a lot of other IETF
specifications have exactly the same considerations.
More generally, if the document wants to focus on this subject, it
should provide context on how this is a general problem of a wide
selection of protocols, and probably reference research such as
<xref target="DOI.10.1109_MNET.2024.3352411"/>.</t>
        <t>One solution suggested in the text is "to require preferred-plus or
deterministic serialization".
A CBOR-based protocol that requires a deterministic serialization
indeed reduces the attack surface.
However, preferred-plus serialization should not be listed as a
solution: it provides a false sense of security unless map ordering
also is deterministic; only the agreement on actual deterministic encoding
provides at least some protection in a checking decoder.
(Data model subsetting can be combined with preferred-plus, limiting
any maps encoded to zero or one entries, to achieve a specialized
variant of deterministic encoding.
It is not really clear why a somewhat risky combination of
configuration settings are acceptable here when explicitly identifying
the encoding as deterministic would be straightforward instead.)</t>
      </aside>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <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">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CDE">
          <front>
            <title>CBOR Common Deterministic Encoding (CDE)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="13" month="October" year="2025"/>
            <abstract>
              <t>   CBOR (STD 94, RFC 8949) defines the concept of "Deterministically
   Encoded CBOR" in its Section 4.2, determining one specific way to
   encode each particular CBOR value.  This definition is instantiated
   by "core requirements", providing some flexibility for application
   specific decisions; this makes it harder than necessary to offer
   Deterministic Encoding as a selectable feature of generic CBOR
   encoders.

   The present specification documents the Best Current Practice for
   CBOR _Common Deterministic Encoding_ (CDE), which can be shared by a
   large set of applications with potentially diverging detailed
   application requirements.

   The document also discusses the desire for partial implementations,
   which can be another reason for constraining CBOR encoders, and
   singles out the encoding constraint "definite-length-only" as a
   likely constraint to be used in application protocol and media type
   definitions.

   This specification updates RFC 8949 in that it provides
   clarifications and definitions of additional terms as well as more
   examples and explanatory text; it does not make technical changes to
   RFC 8949.


   // This revision -13 merges all active pull requests in preparation
   // for the 2025-cbor-17 interim on 2025-10-15.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cde-13"/>
        </reference>
        <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="RFC7049">
          <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="October" year="2013"/>
            <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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7049"/>
          <seriesInfo name="DOI" value="10.17487/RFC7049"/>
          <annotation>Obsoleted by <xref target="STD94"/>, cited here for historical interest in legacy Section 3.9 "Canonical CBOR"</annotation>
        </reference>
        <reference anchor="CBOR-42">
          <front>
            <title>The tag-42 profile of CBOR</title>
            <author fullname="Bumblefudge" initials="" surname="Bumblefudge">
              <organization>IPFS Foundation</organization>
            </author>
            <author fullname="Robin Berjon" initials="R." surname="Berjon">
              <organization>IPFS Foundation</organization>
            </author>
            <date day="17" month="March" year="2026"/>
            <abstract>
              <t>   This document defines a bespoke serialization of CBOR intended for
   use with the special tag 42 in various end-to-end protocols that came
   out of the IPFS community.  Much of its design dates to the first
   CBOR RFC and predates much of the terminology and the layered
   approach to determinism elaborated in later years.

   CBOR-42 can be used as an internet-scale serialization for JSON, and
   is optimized for objects that compose into a directed acyclical
   graph.  Since CBOR-42 objects link to one another by hash-based
   identifiers tagged "42", deterministic encoding is mandated to verify
   dereferenced links and encode new ones.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-caballero-cbor-cbor42-02"/>
          <annotation><strong>FIX ME</strong>: https://github.com/ietf-tools/bibxml-service/issues/458</annotation>
        </reference>
        <referencegroup anchor="JSON" target="https://www.rfc-editor.org/info/std90">
          <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259">
            <front>
              <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
              <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
              <date month="December" year="2017"/>
              <abstract>
                <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
                <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="90"/>
            <seriesInfo name="RFC" value="8259"/>
            <seriesInfo name="DOI" value="10.17487/RFC8259"/>
          </reference>
        </referencegroup>
        <reference anchor="I-JSON">
          <front>
            <title>The I-JSON Message Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2015"/>
            <abstract>
              <t>I-JSON (short for "Internet JSON") is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7493"/>
          <seriesInfo name="DOI" value="10.17487/RFC7493"/>
        </reference>
        <reference anchor="JCS">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="I-D.draft-ietf-cbor-serialization-08">
          <front>
            <title>CBOR Serialization and Determinism</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="29" month="July" year="2026"/>
            <abstract>
              <t>   This document defines two CBOR serializations: "preferred-plus
   serialization" and "deterministic serialization."  It also introduces
   the term "general serialization" to name the complete set of all
   serializations defined in RFC 8949.  Together, these three form a set
   of serializations that cover the majority of CBOR serialization use
   cases.

   These serializations are largely compatible with those widely
   implemented by the CBOR community.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-serialization-08"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-notable-tags">
          <front>
            <title>Notable CBOR Tags</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="29" month="August" year="2026"/>
            <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.

   In CBOR, one point of extensibility is the definition of CBOR tags.
   RFC 8949's original edition, RFC 7049, defined a basic set of 16 tags
   as well as a registry that can be used to contribute additional tag
   definitions [IANA.cbor-tags].  Since RFC 7049 was published, at the
   time of writing some 250 definitions of tags and ranges of tags have
   been added to that registry.

   The present document provides a roadmap to a large subset of these
   tag definitions.  Where applicable, it points to an IETF standards or
   standard development document that specifies the tag.  Where no such
   document exists, the intention is to collect specification
   information from the sources of the registrations.  After some more
   development, the present document is intended to be useful as a
   reference document for the IANA registrations of the CBOR tags the
   definitions of which have been collected.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-notable-tags-17"/>
        </reference>
        <reference anchor="DOI.10.1109_MNET.2024.3352411">
          <front>
            <title>You Can’t Do That on Protocols Anymore: Analysis of Covert Channels in IETF Standards</title>
            <author fullname="Luca Caviglione" initials="L." surname="Caviglione">
              <organization>National Research Council of Italy (CNR), Institute for Applied Mathematics and Information Technologies &amp;#x201D;Enrico Magenes&amp;#x201D; (IMATI), Genova, Italy</organization>
            </author>
            <author fullname="Wojciech Mazurczyk" initials="W." surname="Mazurczyk">
              <organization>Institute of Computer Science, Warsaw University of Technology, Warsaw, Poland</organization>
            </author>
            <date month="September" year="2024"/>
          </front>
          <seriesInfo name="IEEE Network" value="vol. 38, no. 5, pp. 255-263"/>
          <seriesInfo name="DOI" value="10.1109/mnet.2024.3352411"/>
          <refcontent>Institute of Electrical and Electronics Engineers (IEEE)</refcontent>
        </reference>
      </references>
    </references>
    <?line 701?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61923YbSXLte35FGv3QAAcARYndLVE93UOR1DS9JFEW1auP
PWOPCqgEUFahClMXUhgureXfOG9+OA/+DvtP/CUndkRk1gWAetbYfJBwqcrK
jIzrjsjAZDIxVVKl7swOLl7cvLMXebZIlnURVUmeDUw0mxXu7sCX86hyy7zY
ntkkW+TGxPk8i9Y0VFxEi2oyy4t1lGWTOb2YzNu3TlK6s6xMWc/WSVnSJ9V2
Q/ddX71/ae1XNkrLnJ6ZZLHbOPonqwZjO3BxUuVFEqV4c33+gv7LC3r17v3L
gcnq9cwVZyamkc8MPa10WVmXZ7YqamdoBU9MVLiIRj3fbNJkzvMobZTF9p2L
0sn7ZO0G5j4vPi6LvN74FQ9pyfOkdPZFkkXF1t7M/tXNK7plUzh6QsXD2NdR
klUui7K54xGvPtE7LKscDcxHt6Vh4zNjJ/ZqnpfbsnJrvLl1WEzyFx6DP6hn
pauqJFvi3RuQr/31NT2jyDeuiGZJmlRbc+eymhZr7TpK0jMLOv8ucdVimhc0
gv3fXgiNmFSrekZDzqNZfjzvcoOJ6mqVF5jPxAofXEQFLTazL4QT6BtLW7Y8
sz9nyZ0ryqT6r/9X2ReFW9NF7//pmi8oq8K56sy+zctqEc1X9smTR6enj/i7
OS37TG+QD/KYnnM5efz0yTfP9JM6q8CTv3d46JY/3KzyjK77zemzyenjk8nj
k6eTb588e3zCXzolH63pd9VfEqaeyTDlimZ5Zgy4O7yz9uLyilh1cjkFrZW7
Y0df3L6/fHYq+0BMbN+9vHj67PQZbqGX3z2Sl5YIm50R/cs8dZWL7Wxr/8B3
/vMY66NPVq5wlh5pV0kJjp9HqcW+0E5V9MKmbhnNt8Q/c960J9NntMlRlmd8
JbYbm4X/abVnlh/6W5kyLTJKU2IjnTf9c/q4mdUP/NLao6OX1//Hvr46Ojqz
q6ralGfHx7L503m+PuaFV3melsezZPZpnU5KV9wlc3dM0ly78vj0m6c00t/f
3rw5Y6pg964n8h60OH32BN9f3PLbp989/YYvuJyK5mgIW7ZlZPLo6ZmlT/Ta
jn7J8iqapW5SRUsSen1nptOpMZPJxEYzYqtoXhnznohqSVPVxEKVjZNyXpel
K22Hm22+YPrZTZHPXVnmRTk1P5ckmbbC/YEj6NKItIidRWVSjm1S4Y67JKYB
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

-->

</rfc>
