<?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.29 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcnally-cbor-nan-bstr-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="nan-bstr">A CBOR Tag for Lossless Transport of IEEE-754 NaN Bit Patterns</title>
    <seriesInfo name="Internet-Draft" value="draft-mcnally-cbor-nan-bstr-01"/>
    <author initials="W." surname="McNally" fullname="Wolf McNally" role="editor">
      <organization>Blockchain Commons</organization>
      <address>
        <email>wolf@wolfmcnally.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="04"/>
    <area>ART</area>
    <workgroup>CBOR</workgroup>
    <keyword>CBOR</keyword>
    <keyword>IEEE-754</keyword>
    <keyword>NaN</keyword>
    <keyword>determinism</keyword>
    <keyword>interoperability</keyword>
    <abstract>
      <?line 46?>

<t>IEEE-754 NaN formations are not numbers and have no equivalence class. They are not comparable to anything, including reflexively, and therefore each attribute - sign bit, signaling/quiet bit, payload bits, and representation width (binary16, binary32, binary64, binary128) - can carry meaning for an implementation. CBOR permits encoding NaNs as floating-point values, but generic processing, preferred serialization, and deterministic profiles may canonicalize or otherwise alter NaN encodings, losing information. This document defines a CBOR tag, colloquially "nan-bstr", whose content is a byte string carrying the exact IEEE-754 NaN bit pattern so that all attributes are preserved across encode/decode, enabling use cases like NaN boxing, platform-specific error signaling, diagnostics, and forensics.</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-mcnally-cbor-nan-bstr/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        CBOR Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/BlockchainCommons/draft-mcnally-cbor-nan-bstr"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>CBOR defines an extensible binary format with semantic tags (major type 6) that can ascribe additional meaning to enclosed data items (<xref target="RFC8949"/>). While CBOR's floating-point types can encode NaN values, encoders and application profiles commonly canonicalize NaNs or collapse them to a single preferred representation. For applications that rely on specific NaN formations, this behavior is unacceptable. This specification defines a single CBOR tag that wraps a CBOR byte string (bstr) containing 2, 4, 8, or 16 octets representing the big-endian bit pattern of a single IEEE-754 NaN (binary16/32/64/128). The tag enables exact round-tripping of NaN attributes independent of the policies that an ecosystem applies to floating-point numbers.</t>
    </section>
    <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 anchor="motivation-and-rationale">
      <name>Motivation and Rationale</name>
      <t>IEEE-754 purposefully leaves NaNs incomparable and allows implementations to use sign, signaling/quiet, and payload bits for implementation-defined purposes (<xref target="IEEE754"/>). When CBOR encoders perform preferred serialization or when deterministic profiles constrain encodings for predictability (see <xref section="4.2" sectionFormat="comma" target="RFC8949"/>), the precise NaN formation can be lost. A narrowly scoped tag that treats a NaN as an opaque bit pattern avoids interfering with numeric semantics while providing an explicit, interoperable mechanism to preserve all attributes. This mechanism addresses concrete needs: (1) NaN boxing schemes use NaN payload space to embed tagged values and pointers; preserving those bits across transports is essential (<xref target="JSC-NaNBox"/>). (2) Some profiles, such as dCBOR, intentionally allow only a single canonical NaN and reject others to maximize determinism; those ecosystems still benefit from an explicit escape hatch when a precise NaN must be preserved (<xref target="I-D.mcnally-deterministic-cbor"/>). (3) Other communities canonicalize NaNs for determinism (for example, WebAssembly discussions), illustrating the tension between reproducibility and information retention (<xref target="WASM-NaN"/>). See also prior CBOR WG threads that discussed NaN handling and determinism (<xref target="CBOR-WG-NaN-Threads"/>). A tag solves the transport problem without weakening profile policies for ordinary numeric values.</t>
    </section>
    <section anchor="the-nan-bstr-tag">
      <name>The nan-bstr Tag</name>
      <section anchor="semantics">
        <name>Semantics</name>
        <t>The nan-bstr tag denotes that its content is a CBOR byte string whose bytes are, in network byte order (big-endian), the bit pattern of a single IEEE-754 NaN in one of the three interchange widths: 2 bytes (binary16), 4 bytes (binary32), 8 bytes (binary64), or 16 bytes (binary128). The tag does not change IEEE-754 NaN semantics: it does not define equality or ordering for NaNs. A tagged NaN is not a CBOR floating-point number; it is an opaque bit pattern that an application <bcp14>MAY</bcp14> convert to a native NaN when desired, acknowledging that the conversion could lose information if the platform cannot represent signaling NaNs or payload bits.</t>
      </section>
      <section anchor="validity">
        <name>Validity</name>
        <t>A decoder that understands this tag <bcp14>MUST</bcp14> enforce all of the following: (1) The enclosed bstr length is exactly 2, 4, 8, or 16. (2) The bytes are interpreted in network byte order, consistent with CBOR's encoding of multi-byte values (<xref target="RFC8949"/>). (3) The bit pattern is a NaN for the indicated width (that is, exponent is all ones and the significand/fraction field is non-zero per <xref target="IEEE754"/>). (4) No normalization or canonicalization of the payload, sign bit, signaling/quiet bit, or width is performed by the tag processing itself. If any check fails, the decoder <bcp14>MUST</bcp14> treat the tagged value as invalid for this tag and handle it per application error policy.</t>
      </section>
      <section anchor="deterministic-encoding-and-preferred-serialization">
        <name>Deterministic Encoding and Preferred Serialization</name>
        <t>CBOR's preferred serialization and deterministically encoded CBOR rules (<xref section="4.2" sectionFormat="comma" target="RFC8949"/>) apply to the tag and to the bstr's container (for example, definite length), not to the content bytes themselves. The content of the bstr is application-defined and <bcp14>MUST</bcp14> be preserved exactly. When an application needs exact preservation of a NaN, the sender <bcp14>SHOULD</bcp14> use this tag in place of a floating-point NaN literal.</t>
      </section>
      <section anchor="interoperability-with-deterministic-rules-and-dcbor">
        <name>Interoperability with Deterministic Rules and dCBOR</name>
        <t>Deterministic rules often restrict or canonicalize floating-point representations to ensure byte-for-byte stability. For example, the dCBOR rules allows only a single canonical NaN formation (half-width value with CBOR representation 0xf97e00) and rejects others (<xref target="I-D.mcnally-deterministic-cbor"/>). The output of deterministic rule sets can still carry non-canonical NaNs by allowing this tag: encoders emit nan-bstr when exact NaN preservation is required and emit the canonical NaN otherwise. This keeps deterministic rules for numbers intact while providing a precise transport for exceptional cases.</t>
      </section>
    </section>
    <section anchor="examples-and-diagnostic-notation">
      <name>Examples and Diagnostic Notation</name>
      <t>The requested tag number for this specification is 102. Diagnostic notation shows tags in decimal by default. The following table presents examples for each supported width:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Width</th>
            <th align="left">Description</th>
            <th align="left">Diagnostic Notation</th>
            <th align="left">CBOR Encoding (hex)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">binary16</td>
            <td align="left">Half-precision quiet NaN (0x7E00)</td>
            <td align="left">
              <tt>102( h'7E00' )</tt></td>
            <td align="left">
              <tt>D866 42 7E00</tt></td>
          </tr>
          <tr>
            <td align="left">binary32</td>
            <td align="left">Single-precision quiet NaN with payload 0x000001</td>
            <td align="left">
              <tt>102( h'7FC0 0001' )</tt></td>
            <td align="left">
              <tt>D866 44 7FC0 0001</tt></td>
          </tr>
          <tr>
            <td align="left">binary64</td>
            <td align="left">Double-precision signaling NaN with payload 0x00000000000001 and sign bit set</td>
            <td align="left">
              <tt>102( h'FFF0 0000 0000 0001' )</tt></td>
            <td align="left">
              <tt>D866 48 FFF0 0000 0000 0001</tt></td>
          </tr>
          <tr>
            <td align="left">binary128</td>
            <td align="left">Quad-precision quiet NaN with payload 0x0000000000000000000000000001</td>
            <td align="left">
              <tt>102( h'7FFF 8000 0000 0000 0000 0000 0000 0001' )</tt></td>
            <td align="left">
              <tt>D866 50 7FFF 8000 0000 0000 0000 0000 0000 0001</tt></td>
          </tr>
        </tbody>
      </table>
      <t>In all cases, the content preserves sign, signaling/quiet, payload bits, and width exactly; applications that cannot natively represent a formation still retain the bit pattern for pass-through or later analysis.</t>
    </section>
    <section anchor="cddl">
      <name>CDDL</name>
      <t>The following CDDL (<xref target="RFC8610"/>) defines the tagged value.</t>
      <t><tt>
nan-bstr = #6.102 (bstr .size (2 / 4 / 8 / 16))
</tt></t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Treat the bstr as untrusted input. A decoder <bcp14>MUST</bcp14> validate NaN well-formedness for the indicated width. Implementations <bcp14>MUST</bcp14> avoid triggering floating-point exceptions when merely transporting the bit pattern. Because payload bits can carry platform-specific metadata, applications should consider confidentiality and integrity requirements when transporting tagged NaNs. The tag restricts size to 2/4/8 bytes and introduces no variable-length resource concerns beyond those of CBOR bstr handling (<xref target="RFC8949"/>).</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to register one new entry in the CBOR Tags registry (<xref target="IANA-CBOR-TAGS"/>) using the template of <xref section="9.2" sectionFormat="comma" target="RFC8949"/>.</t>
      <ul spacing="normal">
        <li>
          <t>Tag: 102 (Specification Required range).</t>
        </li>
        <li>
          <t>Data item: byte string.</t>
        </li>
        <li>
          <t>Semantics: IEEE-754 NaN encoded as a 2, 4, 8, or 16 octet byte string (nan-bstr).</t>
        </li>
        <li>
          <t>Reference: This document.</t>
        </li>
      </ul>
    </section>
    <section anchor="implementation-notes">
      <name>Implementation Notes</name>
      <t>This section is non-normative.</t>
      <ul spacing="normal">
        <li>
          <t>Encoders <bcp14>SHOULD</bcp14> use definite-length bstrs.</t>
        </li>
        <li>
          <t>Decoders <bcp14>SHOULD</bcp14> expose APIs that surface width, sign, signaling/quiet, and payload without mutating bits.</t>
        </li>
        <li>
          <t>Implementations <bcp14>SHOULD</bcp14> avoid using nan-bstr values as map keys because NaN equivalence is undefined; generic CBOR guidance on key equivalence applies (<xref target="RFC8949"/>).</t>
        </li>
        <li>
          <t>Rules that otherwise canonicalize floating-point NaNs can retain those rules and treat nan-bstr as the explicit mechanism for exact preservation when needed.</t>
        </li>
      </ul>
    </section>
    <section anchor="alternatives-considered">
      <name>Alternatives Considered</name>
      <t>This section is non-normative.</t>
      <t>The CBOR Tags registry defines tags 80-87 for various permutations of "IEEE 754 binary&lt;length&gt;, &lt;endianness&gt;, Typed Array" (<xref target="IANA-CBOR-TAGS"/>). These tags may be used to preserve exact bit patterns of floating-point values, including NaNs. However, they do not connote the special semantics of NaNs, such as incomparability and payload significance. Using those tags for NaNs could mislead implementers into treating tagged values as ordinary numbers, risking unintended comparisons or arithmetic. A dedicated nan-bstr tag clarifies intent and avoids semantic confusion.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="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="IEEE754" target="https://ieeexplore.ieee.org/document/8766229">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="IEEE" value="Std 754-2019"/>
        </reference>
        <reference anchor="IANA-CBOR-TAGS" target="https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags Registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.mcnally-deterministic-cbor">
          <front>
            <title>dCBOR: Deterministic CBOR</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>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="1" month="November" year="2025"/>
            <abstract>
              <t>   The purpose of determinism is to ensure that semantically equivalent
   data items are encoded into identical byte streams.  CBOR (RFC 8949)
   defines "Deterministically Encoded CBOR" in its Section 4.2, but
   leaves some important choices up to the application developer.  The
   present document specifies dCBOR, a set of narrowing rules for CBOR
   that can be used to help achieve interoperable deterministic encoding
   for a variety of applications desiring a narrow and clearly defined
   set of choices.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcnally-deterministic-cbor-14"/>
        </reference>
        <reference anchor="WASM-NaN" target="https://github.com/WebAssembly/design/issues/1463">
          <front>
            <title>WebAssembly issue</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="JSC-NaNBox" target="https://browser.training.ret2.systems/content/module_1/8_jsc_internals/exercises/jsc_nan_boxing">
          <front>
            <title>JavaScriptCore NaN Boxing exercise</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CBOR-WG-NaN-Threads" target="https://mailarchive.ietf.org/arch/browse/cbor/?q=NaN">
          <front>
            <title>CBOR WG mailing list threads on NaN and determinism</title>
            <author>
              <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 149?>

<section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of publication, 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>
      <section anchor="rust-implementation">
        <name>Rust Implementation</name>
        <t>Organization: Blockchain Commons</t>
        <t>Name: cbor-nan-bstr-rust</t>
        <t>Description: A Rust implementation providing encoding and decoding support for CBOR tag 102 (nan-bstr). The implementation includes functions to encode IEEE-754 NaN bit patterns as CBOR byte strings and decode them back, preserving all NaN attributes including sign, signaling/quiet bit, payload bits, and width.</t>
        <t>Level of Maturity: Development</t>
        <t>Coverage: The implementation covers encoding and decoding of all four supported widths (binary16, binary32, binary64, binary128) with full validation of NaN bit patterns.</t>
        <t>Version Compatibility: This implementation is compatible with the current draft specification.</t>
        <t>Licensing: BSD-2-Clause-Patent</t>
        <t>Implementation Experience: No issues have been encountered during development. The implementation demonstrates that the tag provides a practical mechanism for exact NaN preservation across CBOR encode/decode cycles.</t>
        <t>Contact: Wolf McNally (wolf@wolfmcnally.com)</t>
        <t>URL: https://github.com/BlockchainCommons/cbor-nan-bstr-rust</t>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to CBOR WG participants for discussion of determinism and floating-point edge cases, and to implementers who documented NaN canonicalization and processing behavior across platforms.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
719GZA8qLDQAAA==

-->

</rfc>
