<?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.6.39 (Ruby 3.2.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-dcbor-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="dCBOR">dCBOR – an Application Profile for Use with CBOR Deterministic Encoding</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-dcbor-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="2023" month="July" day="23"/>
    <area>Applications and Real-Time</area>
    <workgroup>CBOR</workgroup>
    <abstract>
      <?line 81?>

<t>CBOR (STD 94, RFC 8949) defines "Deterministically Encoded CBOR" in
its Section 4.2.  The present document provides the application
profile "dCBOR" that can be used with Deterministic Encoding.</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-dcbor/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Concise Binary Object Representation Maintenance and Extensions (CBOR) Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/det"/>.</t>
    </note>
  </front>
  <middle>
    <?line 87?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>CBOR (<xref target="STD94"/>, also RFC 8949) defines "Deterministically Encoded CBOR" in
its Section 4.2.  The present document provides the application
profile "dCBOR" that can be used with Deterministic Encoding.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="application-profile">
      <name>Application Profile</name>
      <t>The dCBOR Application Profile specifies the use of Deterministic
Encoding as defined in <xref section="4.2" sectionFormat="of" target="STD94"/> (see also <xref target="I-D.bormann-cbor-det"/> for more
information) together with some application-level rules specified in
this section.</t>
      <t>The application-level rules specified here do not "fork" CBOR.
A dCBOR implementation produces well-formed, deterministically encoded
CBOR according to <xref target="STD94"/>, and existing generic CBOR decoders will
therefore be able to decode it, including those that check for
Deterministic Encoding.
Similarly, generic CBOR encoders will be able to produce valid dCBOR
if handed dCBOR conforming data model level information from an
application.</t>
      <t>Please note that the separation between standard CBOR processing and the
processing required by the dCBOR application profile is a conceptual
one:
Both dCBOR processing and standard CBOR processing can be combined
into a special dCBOR/CBOR encoder/decoder.</t>
      <t>This application profile is intended to be used in conjunction with an
application, which typically will use a subset of CBOR, which in turn
influences which subset of the application profile is used.
As a result, this application profile places no direct requirement on what
subset of CBOR is implemented.
For instance, there is no requirement that dCBOR implementations
support floating point numbers (or any other kind of number, such as
arbitrary precision integers or 64-bit negative integers) when they
are used with applications that do not use them.</t>
      <section anchor="numeric-reduction">
        <name>Numeric reduction</name>
        <t>dCBOR implementations that do support floating point numbers <bcp14>MUST</bcp14>
perform the following two reductions of numeric values when
constructing CBOR data items:</t>
        <ol spacing="normal" type="1"><li>
            <t>When representing integral floating point values (floating point
values with a zero fractional part), check whether the
mathematically identical value can be represented as a basic (major
type 0/1) integer value.
If that is the case, convert the integral floating point
to that mathematically identical integer value before encoding it.
(Deterministic Encoding will then ensure the shortest length encoding
is used.)
This means that if a floating point value has a non-zero fractional part, or an
exponent that takes it out of the range of basic integers, the
original floating point value is used for encoding.
(Specifically, conversion to a bignum is never considered.)  </t>
            <t>
This also means that the three representations of a zero number in CBOR
(0, 0.0, -0.0 in diagnostic notation) are all reduced to the basic
integer 0 (with preferred encoding 0x00).  </t>
            <t>
Note that this reduction can turn valid maps into invalid ones, as it
can create duplicate keys, e.g., for:  </t>
            <sourcecode type="cbor-diag"><![CDATA[
{
   10: "integer ten",
   10.0: "floating ten"
}
]]></sourcecode>
            <t>
This means that, at the application level, the application <bcp14>MUST</bcp14>
prevent the creation of maps that would turn invalid in dCBOR
processing.</t>
          </li>
          <li>In addition, represent all <tt>NaN</tt> values by using the quiet <tt>NaN</tt>
value having the half-width CBOR representation <tt>0xf97e00</tt> before
encoding.</li>
        </ol>
        <t>dCBOR-based applications <bcp14>MUST</bcp14> accept these "reduced" numbers in place
of the original value, e.g., a dCBOR-based application that expects a
floating point value needs to accept a basic integer value in its
place (and, if needed, convert it to a floating point value for
further processing).</t>
        <t>dCBOR-based applications <bcp14>MUST NOT</bcp14> accept numbers that have not been
reduced as specified in this section, except maybe by making the
unreduced numbers available for their diagnostic value when there has
been an explicit request to do so.
This is similar to a checking flag mentioned in Section 5.1 (API
Considerations) of <xref target="I-D.bormann-cbor-det"/> being set by default.</t>
      </section>
    </section>
    <section removeInRFC="true" anchor="implementation-status">
      <name>Implementation Status</name>
      <t>(Boilerplate as per <xref section="2.1" sectionFormat="of" target="RFC7942"/>:)</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -22?>
      </t>
      <section anchor="typescript">
        <name>TypeScript</name>
        <ul spacing="normal">
          <li>Implementation Location: <xref target="bc-dcbor-ts"/></li>
          <li>Primary Maintainer:</li>
          <li>Languages: TypeScript (transpiles to JavaScript)</li>
          <li>Coverage:</li>
          <li>Testing:</li>
          <li>Licensing:</li>
        </ul>
      </section>
      <section anchor="swift">
        <name>Swift</name>
        <ul spacing="normal">
          <li>Implementation Location: <xref target="BCSwiftDCBOR"/></li>
          <li>Primary Maintainer:</li>
          <li>Languages: Swift</li>
          <li>Coverage:</li>
          <li>Testing:</li>
          <li>Licensing: BSD-2-Clause-Patent</li>
        </ul>
      </section>
      <section anchor="rust">
        <name>Rust</name>
        <ul spacing="normal">
          <li>Implementation Location: <xref target="bc-dcbor-rust"/></li>
          <li>Primary Maintainer:</li>
          <li>Languages: Rust</li>
          <li>Coverage:</li>
          <li>Testing:</li>
          <li>Licensing: Custom</li>
        </ul>
      </section>
      <section anchor="ruby">
        <name>Ruby</name>
        <ul spacing="normal">
          <li>Implementation Location: <xref target="cbor-dcbor"/></li>
          <li>Primary Maintainer: Carsten Bormann</li>
          <li>Languages: Ruby</li>
          <li>Coverage: Complete specification; complemented by CBOR
encoder/decoder and command line interface from <xref target="cbor-diag"/> and
deterministic encoding from <xref target="cbor-deterministic"/></li>
          <li>Testing:</li>
          <li>Licensing: Apache-2.0</li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="STD94">
          <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="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>
        <name>Informative References</name>
        <reference anchor="I-D.bormann-cbor-det">
          <front>
            <title>CBOR: On Deterministic Encoding</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="23" month="July" year="2023"/>
            <abstract>
              <t>   CBOR (STD 94, RFC 8949) defines "Deterministically Encoded CBOR" in
   its Section 4.2.  The present document provides additional
   information about use cases, deployment considerations, and
   implementation choices for Deterministic Encoding.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-det-00"/>
        </reference>
        <reference anchor="I-D.mcnally-deterministic-cbor">
          <front>
            <title>Gordian dCBOR: Deterministic CBOR Implementation Practices</title>
            <author fullname="Wolf McNally" initials="W." surname="McNally">
              <organization>Blockchain Commons</organization>
            </author>
            <author fullname="Christopher Allen" initials="C." surname="Allen">
              <organization>Blockchain Commons</organization>
            </author>
            <date day="4" month="May" year="2023"/>
            <abstract>
              <t>   CBOR has many advantages over other data serialization formats.  One
   of its strengths is specifications and guidelines for serializing
   data deterministically, such that multiple agents serializing the
   same data automatically achieve consensus on the exact byte-level
   form of that serialized data.  Nonetheless, determinism is an opt-in
   feature of the specification, and most existing CBOR codecs put the
   primary burden of correct deterministic serialization and validation
   of deterministic encoding during deserialization on the engineer.
   This document specifies a set of norms and practices for CBOR codec
   implementors intended to support deterministic CBOR ("dCBOR") at the
   codec API level.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcnally-deterministic-cbor-01"/>
        </reference>
        <reference anchor="bc-dcbor-ts" target="https://github.com/BlockchainCommons/bc-dcbor-ts">
          <front>
            <title>Blockchain Commons Deterministic CBOR ("dCBOR") for TypeScript</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BCSwiftDCBOR" target="https://github.com/BlockchainCommons/BCSwiftDCBOR">
          <front>
            <title>Blockchain Commons Deterministic CBOR ("dCBOR") for Swift</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="bc-dcbor-rust" target="https://github.com/BlockchainCommons/bc-dcbor-rust">
          <front>
            <title>Blockchain Commons Deterministic CBOR ("dCBOR") for Rust</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="cbor-dcbor" target="https://github.com/cabo/cbor-dcbor">
          <front>
            <title>PoC of the McNally/Allen "dCBOR" application-level CBOR representation rules</title>
            <author initials="C." surname="Bormann" fullname="Carsten Bormann">
              <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 initials="C." surname="Bormann" fullname="Carsten Bormann">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="cbor-deterministic" target="https://github.com/cabo/cbor-deterministic">
          <front>
            <title>cbor-deterministic gem</title>
            <author initials="C." surname="Bormann" fullname="Carsten Bormann">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 301?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is based on the work of Wolf McNally and Christopher
Allen as documented in <xref target="I-D.mcnally-deterministic-cbor"/> and discussed in 2023 in the CBOR
working group.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="W." surname="McNally" fullname="Wolf McNally">
        <organization>Blockchain Commons</organization>
        <address>
          <email>wolf@wolfmcnally.com</email>
        </address>
      </contact>
      <contact initials="C." surname="Allen" fullname="Christopher Allen">
        <organization>Blockchain Commons</organization>
        <address>
          <email>christophera@lifewithalacrity.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
7t3dZDOWzlG/EDbhSxFOb3wCrb8q6TrgfmEUXJp6Bm8Tm3ftLDcMprNi9OQW
5U3BSamyoX+zWehAT+iSo9R+dEwvVaHJw3BwKdpOHodN1Aj0LkDE7e1XnTTx
oinMVy0Y3Wf7nkvhFNHvEBScug680vNXjBvqG0NxGh2f0i3fVM1cbF/4iY3j
EAzV4GVtV5abVm4qjnFyahYmbag+WbVvbLG5yvc8Se1xal0dCvPQlgniEWe9
DGFJ1wJDKuF1llGtSuUEOzRsUbILI8pNFrb2+8pl0cbnBuymSGwomoNRWR29
16R6GQnMYqtEVQfzFQ30GMJbxuK2bcKwgJ4cVW6DJro4feBjbdhmyC6ou0iv
b7SiPpvLfpUuTB2oLvUcOo77pAAZ4doA0XSwerWwdKGhHLBzcL2nqIBHSCyM
vmY4gVD0pkklHj9c1q3DzJDTGt0VOxG7bXeb1wc8Uv1UlwgWLtVcU5bc/aKT
bRtJYrXWbsERrOmSlJ48sZgQi/QkKCU4s/QWYi0Dlk8VCvflWQU0FQrnZefX
BWzNt0hUMEOx0OsJF95N1VZIPd+MUofn2lpgQWimuLteepFi4CDegbjGD8bd
rdrubrhVe9J7qxLik/ug9som8cnv9rb3LnV3R2vPITA1ivwMjH+a6qNP5CvU
uY2a6XrSoy030FSWdWXo3grs/h4uFmY2ac8RENNhDxO41BySgZhJ6EmZf4FZ
foMSH2C0/1T1sZxGwh/FiTy8OB7tjo5yBaWPzgHs6HiIO3rD+lgl0nvVxzLX
0v0Y3o6wll5YmZ3pzQfYWT4/PcrLgxee+7yFQzre6NEP53m9mm9+Q/dInc8T
fMWa897dEUcOlhb0l32Vr9szqpL4sq1lGmUDsjNWgcbqI1PXJqys7y8Jwj6i
wYNKoXYY7Y63+doZqbqhh2u5WiQgT58dn3WzvPTk4PTg4bKVVwRKAEgHvDK0
kvU4Pm0RVPA9d0LpPdfpjJEKFUUon3T65SBDo6YHd/ep9hMzIQXBA8FT/z8P
sGJ7j/siPGyqJZn25nu0fBoPGkaNVidNHe/pdrd3n4akrYMNV8BoLP4DbW25
OU0jAAA=

-->

</rfc>
