rfc8742xml2.original.xml   rfc8742.xml 
<?xml version="1.0" encoding="UTF-8"?> <?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.12 --> nsus="true" docName="draft-ietf-cbor-sequence-02" indexInclude="true" ipr="trust
200902" number="8742" prepTime="2020-02-19T08:03:51" scripts="Common,Latin" sort
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ Refs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true"
]> xml:lang="en">
<link href="https://datatracker.ietf.org/doc/draft-ietf-cbor-sequence-02" rel=
<?rfc compact="yes"?> "prev"/>
<?rfc text-list-symbols="o*+-"?> <link href="https://dx.doi.org/10.17487/rfc8742" rel="alternate"/>
<?rfc subcompact="no"?> <link href="urn:issn:2070-1721" rel="alternate"/>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc toc="yes"?>
<rfc ipr="trust200902" docName="draft-ietf-cbor-sequence-02" category="std">
<front> <front>
<title abbrev="CBOR Sequences">Concise Binary Object Representation (CBOR) S equences</title> <title abbrev="CBOR Sequences">Concise Binary Object Representation (CBOR) S equences</title>
<seriesInfo name="RFC" value="8742" stream="IETF"/>
<author initials="C." surname="Bormann" fullname="Carsten Bormann"> <author initials="C." surname="Bormann" fullname="Carsten Bormann">
<organization>Universität Bremen TZI</organization> <organization ascii="Universitaet Bremen TZI" showOnFrontPage="true">Unive rsität Bremen TZI</organization>
<address> <address>
<postal> <postal>
<street>Postfach 330440</street> <street>Postfach 330440</street>
<city>Bremen</city> <city>Bremen</city>
<code>D-28359</code> <code>D-28359</code>
<country>Germany</country> <country>Germany</country>
</postal> </postal>
<phone>+49-421-218-63921</phone> <phone>+49-421-218-63921</phone>
<email>cabo@tzi.org</email> <email>cabo@tzi.org</email>
</address> </address>
</author> </author>
<date month="02" year="2020"/>
<date year="2019" month="September" day="25"/> <keyword>binary format</keyword>
<keyword>data interchange format</keyword>
<abstract> <keyword>JSON</keyword>
<abstract pn="section-abstract">
<t>This document describes the Concise Binary Object Representation <t pn="section-abstract-1">This document describes the Concise Binary Obje
ct Representation
(CBOR) Sequence format and associated media type (CBOR) Sequence format and associated media type
“application/cbor-seq”. A CBOR Sequence consists of any number of "application/cbor-seq". A CBOR Sequence consists of any number of
encoded CBOR data items, simply concatenated in sequence.</t> encoded CBOR data items, simply concatenated in sequence.</t>
<t pn="section-abstract-2">Structured syntax suffixes for media types allo
<t>Structured syntax suffixes for media types allow other media types to w other media types to
build on them and make it explicit that they are built on an existing build on them and make it explicit that they are built on an existing
media type as their foundation. This specification defines and media type as their foundation. This specification defines and
registers “+cbor-seq” as a structured syntax suffix for CBOR registers "+cbor-seq" as a structured syntax suffix for CBOR
Sequences.</t> Sequences.</t>
</abstract> </abstract>
<boilerplate>
<section anchor="status-of-memo" numbered="false" removeInRFC="false" toc=
"exclude" pn="section-boilerplate.1">
<name slugifiedName="name-status-of-this-memo">Status of This Memo</name
>
<t pn="section-boilerplate.1-1">
This is an Internet Standards Track document.
</t>
<t pn="section-boilerplate.1-2">
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by
the Internet Engineering Steering Group (IESG). Further
information on Internet Standards is available in Section 2 of
RFC 7841.
</t>
<t pn="section-boilerplate.1-3">
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
<eref target="https://www.rfc-editor.org/info/rfc8742" brackets="non
e"/>.
</t>
</section>
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl
ude" pn="section-boilerplate.2">
<name slugifiedName="name-copyright-notice">Copyright Notice</name>
<t pn="section-boilerplate.2-1">
Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved.
</t>
<t pn="section-boilerplate.2-2">
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<eref target="https://trustee.ietf.org/license-info" brackets="none
"/>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described in
Section 4.e of the Trust Legal Provisions and are provided without
warranty as described in the Simplified BSD License.
</t>
</section>
</boilerplate>
<toc>
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p
n="section-toc.1">
<name slugifiedName="name-table-of-contents">Table of Contents</name>
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to
c.1-1">
<li pn="section-toc.1-1.1">
<t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent
="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedCon
tent="" format="title" sectionFormat="of" target="name-introduction">Introductio
n</xref></t>
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio
n-toc.1-1.1.2">
<li pn="section-toc.1-1.1.2.1">
<t keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derive
dContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-conventions-u
sed-in-this-do">Conventions Used in This Document</xref></t>
</li>
</ul>
</li>
<li pn="section-toc.1-1.2">
<t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent
="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedCon
tent="" format="title" sectionFormat="of" target="name-cbor-sequence-format">CBO
R Sequence Format</xref></t>
</li>
<li pn="section-toc.1-1.3">
<t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent
="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedCon
tent="" format="title" sectionFormat="of" target="name-the-cbor-seq-structured-s
yn">The "+cbor-seq" Structured Syntax Suffix</xref></t>
</li>
<li pn="section-toc.1-1.4">
<t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent
="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedCon
tent="" format="title" sectionFormat="of" target="name-practical-considerations"
>Practical Considerations</xref></t>
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio
n-toc.1-1.4.2">
<li pn="section-toc.1-1.4.2.1">
<t keepWithNext="true" pn="section-toc.1-1.4.2.1.1"><xref derive
dContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-specifying-cb
or-sequences-i">Specifying CBOR Sequences in Concise Data Definition Language (C
DDL)</xref></t>
</li>
<li pn="section-toc.1-1.4.2.2">
<t keepWithNext="true" pn="section-toc.1-1.4.2.2.1"><xref derive
dContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-diagnostic-no
tation">Diagnostic Notation</xref></t>
</li>
<li pn="section-toc.1-1.4.2.3">
<t keepWithNext="true" pn="section-toc.1-1.4.2.3.1"><xref derive
dContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-optimizing-cb
or-sequences-f">Optimizing CBOR Sequences for Skipping Elements</xref></t>
</li>
</ul>
</li>
<li pn="section-toc.1-1.5">
<t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent
="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedCon
tent="" format="title" sectionFormat="of" target="name-security-considerations">
Security Considerations</xref></t>
</li>
<li pn="section-toc.1-1.6">
<t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent
="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedCon
tent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA
Considerations</xref></t>
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio
n-toc.1-1.6.2">
<li pn="section-toc.1-1.6.2.1">
<t keepWithNext="true" pn="section-toc.1-1.6.2.1.1"><xref derive
dContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-media-type">M
edia Type</xref></t>
</li>
<li pn="section-toc.1-1.6.2.2">
<t keepWithNext="true" pn="section-toc.1-1.6.2.2.1"><xref derive
dContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-coap-content-
format-registr">CoAP Content-Format Registration</xref></t>
</li>
<li pn="section-toc.1-1.6.2.3">
<t keepWithNext="true" pn="section-toc.1-1.6.2.3.1"><xref derive
dContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-structured-sy
ntax-suffix">Structured Syntax Suffix</xref></t>
</li>
</ul>
</li>
<li pn="section-toc.1-1.7">
<t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent
="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedCon
tent="" format="title" sectionFormat="of" target="name-references">References</x
ref></t>
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio
n-toc.1-1.7.2">
<li pn="section-toc.1-1.7.2.1">
<t keepWithNext="true" pn="section-toc.1-1.7.2.1.1"><xref derive
dContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-normative-ref
erences">Normative References</xref></t>
</li>
<li pn="section-toc.1-1.7.2.2">
<t keepWithNext="true" pn="section-toc.1-1.7.2.2.1"><xref derive
dContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xre
f derivedContent="" format="title" sectionFormat="of" target="name-informative-r
eferences">Informative References</xref></t>
</li>
</ul>
</li>
<li pn="section-toc.1-1.8">
<t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent
="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedC
ontent="" format="title" sectionFormat="of" target="name-acknowledgements">Ackno
wledgements</xref></t>
</li>
<li pn="section-toc.1-1.9">
<t keepWithNext="true" pn="section-toc.1-1.9.1"><xref derivedContent
="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedC
ontent="" format="title" sectionFormat="of" target="name-authors-address">Author
's Address</xref></t>
</li>
</ul>
</section>
</toc>
</front> </front>
<middle> <middle>
<section anchor="introduction" numbered="true" toc="include" removeInRFC="fa
<section anchor="introduction" title="Introduction"> lse" pn="section-1">
<name slugifiedName="name-introduction">Introduction</name>
<t>The Concise Binary Object Representation (CBOR) <xref target="RFC7049"/> can <t pn="section-1-1">The Concise Binary Object Representation (CBOR) <xref
be used target="RFC7049" format="default" sectionFormat="of" derivedContent="RFC7049"/>
for serialization of data in the JSON <xref target="RFC8259"/> data model or in can be used for serialization of
its own, data in the JSON <xref target="RFC8259" format="default" sectionFormat="of
somewhat expanded data model. When serializing a sequence of such " derivedContent="RFC8259"/> data model or
values, it is sometimes convenient to have a format where these in its own, somewhat expanded, data model. When serializing a sequence of
sequences can simply be concatenated to obtain a serialization of the such values, it is sometimes convenient to have a format where these
concatenated sequence of values, or to encode a sequence of values sequences can simply be concatenated to obtain a serialization of the
that might grow at the end by just appending further CBOR data items.</t> concatenated sequence of values or to encode a sequence of values that
might grow at the end by just appending further CBOR data items.</t>
<t>This document describes the concept and format of “CBOR Sequences”, <t pn="section-1-2">This document describes the concept and format of "CBO
which are composed of zero or more encoded CBOR data items. CBOR R Sequences",
Sequences can be consumed (and produced) incrementally without which are composed of zero or more encoded CBOR data items. CBOR
requiring a streaming CBOR parser that is able to deliver Sequences can be consumed (and produced) incrementally without requiring
substructures of a data item incrementally (or a a streaming CBOR parser that is able to deliver substructures of a data
streaming encoder able to encode from substructures incrementally).</t> item incrementally (or a streaming encoder able to encode from
substructures incrementally).</t>
<t>This document defines and registers the “application/cbor-seq” media <t pn="section-1-3">This document defines and registers the "application/c
type in the media type registry, along with a CoAP Content-Format bor-seq" media
identifier. Media type structured syntax suffixes <xref target="RFC6838"/> type in the "Media Types" registry along with a Constrained Application
were introduced as a way for a media type to signal that it is based Protocol (CoAP) Content-Format identifier. Media type structured syntax
on another media type as its foundation. CBOR <xref target="RFC7049"/> defines suffixes <xref target="RFC6838" format="default" sectionFormat="of" derive
the dContent="RFC6838"/> were introduced as a
“+cbor” structured syntax suffix. This document defines and registers way for a media type to signal that it is based on another media type as
the “+cbor-seq” structured syntax suffix in the “Structured Syntax its foundation. CBOR <xref target="RFC7049" format="default" sectionForma
Suffix Registry”.</t> t="of" derivedContent="RFC7049"/> defines
the "+cbor" structured syntax suffix. This document defines and
<section anchor="conventions-used-in-this-document" title="Conventions Used in T registers the "+cbor-seq" structured syntax suffix in the "Structured
his Document"> Syntax Suffix Registry".</t>
<section anchor="conventions-used-in-this-document" numbered="true" toc="i
<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL nclude" removeInRFC="false" pn="section-1.1">
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, <name slugifiedName="name-conventions-used-in-this-do">Conventions Used
“MAY”, and “OPTIONAL” in this document are to be interpreted as in This Document</name>
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and <t pn="section-1.1-1">
only when, they The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU
appear in all capitals, as shown here.</t> IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOUL
D</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>N
<t>In this specification, the term “byte” is used in its now-customary OT RECOMMENDED</bcp14>",
sense as a synonym for “octet”.</t> "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
be interpreted as
</section> described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="o
</section> f" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFor
<section anchor="cbor-sequence-format" title="CBOR Sequence Format"> mat="of" derivedContent="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.
<t>Formally, a CBOR Sequence is a sequence of bytes that is recursively </t>
defined as either</t> <t pn="section-1.1-2">In this specification, the term "byte" is used in
its now-customary
<t><list style="symbols"> sense as a synonym for "octet".</t>
<t>an empty (zero-length) sequence of bytes</t> </section>
<t>the sequence of bytes making up an encoded CBOR data item <xref target="RFC </section>
7049"/>, <section anchor="cbor-sequence-format" numbered="true" toc="include" removeI
followed by a CBOR Sequence.</t> nRFC="false" pn="section-2">
</list></t> <name slugifiedName="name-cbor-sequence-format">CBOR Sequence Format</name
>
<t>In short, concatenating zero or more encoded CBOR data items generates <t pn="section-2-1">Formally, a CBOR Sequence is a sequence of bytes that
is recursively
defined as either of the following:</t>
<ul spacing="normal" bare="false" empty="false" pn="section-2-2">
<li pn="section-2-2.1">an empty (zero-length) sequence of bytes</li>
<li pn="section-2-2.2">the sequence of bytes making up an encoded CBOR d
ata item <xref target="RFC7049" format="default" sectionFormat="of" derivedConte
nt="RFC7049"/>
followed by a CBOR Sequence.</li>
</ul>
<t pn="section-2-3">In short, concatenating zero or more encoded CBOR data
items generates
a CBOR Sequence. (Consequently, concatenating zero or more CBOR a CBOR Sequence. (Consequently, concatenating zero or more CBOR
Sequences also results in a CBOR Sequence.)</t> Sequences also results in a CBOR Sequence.)</t>
<t pn="section-2-4">There is no end-of-sequence indicator. (If one is des
<t>There is no end of sequence indicator. (If one is desired, ired, CBOR
CBOR-encoding an array of the CBOR data model values being encoded — encoding an array of the CBOR data model values being encoded, employing
employing either a definite or an indefinite length encoding — as a either a definite or an indefinite length encoding, as a single CBOR
single CBOR data item may actually be the more appropriate data item may actually be the more appropriate representation.)</t>
representation.)</t> <t pn="section-2-5">CBOR Sequences, unlike JSON Text Sequences <xref targe
t="RFC7464" format="default" sectionFormat="of" derivedContent="RFC7464"/>, do n
<t>CBOR Sequences, unlike JSON Text Sequences <xref target="RFC7464"/>, do not u ot use a
se a marker between items. This is possible because CBOR-encoded data
marker between items. This is possible because CBOR encoded data items are self delimiting and the end can always be calculated. (Note
items are self-delimiting and the end can always be calculated. (Note
that, while the early object/array-only form of JSON was that, while the early object/array-only form of JSON was
self-delimiting as well, this stopped being the case when simple self delimiting as well, this stopped being the case when simple
values such as single numbers were made valid JSON documents.)</t> values such as single numbers were made valid JSON documents.)</t>
<t pn="section-2-6">Decoding a CBOR Sequence works as follows:</t>
<t>Decoding a CBOR Sequence works as follows:</t> <ul spacing="normal" bare="false" empty="false" pn="section-2-7">
<li pn="section-2-7.1">If the CBOR Sequence is an empty sequence of byte
<t><list style="symbols"> s, the result is an
<t>If the CBOR Sequence is an empty sequence of bytes, the result is an empty sequence of CBOR data model values.</li>
empty sequence of CBOR data model values.</t> <li pn="section-2-7.2">Otherwise, one must decode a single CBOR data ite
<t>Otherwise, decode a single CBOR data item from the bytes of the CBOR m from the bytes
sequence, and insert the resulting CBOR data model value at the of the CBOR Sequence and insert the resulting CBOR data model value at
start of the result of repeating this decoding process recursively the start of the result of repeating this decoding process recursively
with the remaining bytes. (A streaming decoder would therefore with the remaining bytes. (A streaming decoder would therefore simply
simply deliver zero or more CBOR data model values, each as soon as deliver zero or more CBOR data model values, each as soon as the bytes
the bytes making it up are available.)</t> making it up are available.)</li>
</list></t> </ul>
<t pn="section-2-8">This means that if any data item in the sequence is no
<t>This means that if any data item in the sequence is not well-formed, t well formed,
it is not possible to reliably decode the rest of the sequence. (An it is not possible to reliably decode the rest of the sequence. (An
implementation may be able to recover from some errors in a sequence implementation may be able to recover from some errors in a sequence
of bytes that is almost, but not entirely a well-formed encoded CBOR of bytes that is almost, but not entirely, a well-formed encoded CBOR
data item. Handling malformed data is outside the scope of this data item. Handling malformed data is outside the scope of this
specification.)</t> specification.)</t>
<t pn="section-2-9">This also means that the CBOR Sequence format can reli
<t>This also means that the CBOR Sequence format can reliably detect ably detect
truncation of the bytes making up the last CBOR data item in the truncation of the bytes making up the last CBOR data item in the
sequence, but not sequence, but it cannot detect entirely missing CBOR data items at the end
entirely missing CBOR data items at the end. A CBOR Sequence decoder . A
that is used for consuming streaming CBOR Sequence data may simply CBOR Sequence decoder that is used for consuming streaming CBOR Sequence
pause for more data (e.g., by suspending and later resuming decoding) data may simply pause for more data (e.g., by suspending and later
in case a truncated final item is being received.</t> resuming decoding) in case a truncated final item is being received.</t>
</section>
</section> <section anchor="the-cbor-seq-structured-syntax-suffix" numbered="true" toc=
<section anchor="the-cbor-seq-structured-syntax-suffix" title="The “+cbor-seq” S "include" removeInRFC="false" pn="section-3">
tructured Syntax Suffix"> <name slugifiedName="name-the-cbor-seq-structured-syn">The "+cbor-seq" Str
uctured Syntax Suffix</name>
<t>The use case for the “+cbor-seq” structured syntax suffix is analogous <t pn="section-3-1">The use case for the "+cbor-seq" structured syntax suf
to that for “+cbor”: It SHOULD be used by a media type when parsing the fix is
bytes of the media type object as a CBOR Sequence leads to a analogous to that for "+cbor": it <bcp14>SHOULD</bcp14> be used by a
meaningful result that is at least sometimes not just a single CBOR media type when the result of parsing the bytes of the media type
data item. (Without the qualification at the end, this sentence is object as a CBOR Sequence is meaningful and is at least
trivially true for any +cbor media type, which of course should sometimes not just a single CBOR data item. (Without the qualification
continue to use the “+cbor” structured syntax suffix.)</t> at the end, this sentence is trivially true for any +cbor media type,
which of course should continue to use the "+cbor" structured syntax
<t>Applications encountering a “+cbor-seq” media type can then either simply suffix.)</t>
<t pn="section-3-2">Applications encountering a "+cbor-seq" media type can
then either simply
use generic processing if all they need is a generic view of the CBOR use generic processing if all they need is a generic view of the CBOR
Sequence, or they can use generic CBOR Sequence tools for Sequence or use generic CBOR Sequence tools for
initial parsing and then implement their own specific processing on initial parsing and then implement their own specific processing on
top of that generic parsing tool.</t> top of that generic parsing tool.</t>
</section>
</section> <section anchor="practical-considerations" numbered="true" toc="include" rem
<section anchor="practical-considerations" title="Practical Considerations"> oveInRFC="false" pn="section-4">
<name slugifiedName="name-practical-considerations">Practical Consideratio
<section anchor="specifying-cbor-sequences-in-cddl" title="Specifying CBOR Seque ns</name>
nces in CDDL"> <section anchor="specifying-cbor-sequences-in-cddl" numbered="true" toc="i
nclude" removeInRFC="false" pn="section-4.1">
<t>In CDDL <xref target="RFC8610"/>, CBOR sequences are already supported as con <name slugifiedName="name-specifying-cbor-sequences-i">Specifying CBOR S
tents of equences in Concise Data Definition Language (CDDL)</name>
byte strings using the <spanx style="verb">.cborseq</spanx> control operator (Se <t pn="section-4.1-1">In Concise Data Definition Language (CDDL) <xref t
ction 3.8.4 of arget="RFC8610" format="default" sectionFormat="of" derivedContent="RFC8610"/>,
<xref target="RFC8610"/>), by employing an array as the controller type:</t> CBOR Sequences are already supported as contents
of byte strings using the <tt>.cborseq</tt> control operator (<xref targ
<figure><artwork type="CDDL"><![CDATA[ et="RFC8610" sectionFormat="of" section="3.8.4" format="default" derivedLink="ht
my-embedded-cbor-seq = bytes .cborseq my-array tps://rfc-editor.org/rfc/rfc8610#section-3.8.4" derivedContent="RFC8610"/>) by e
mploying an
array as the controller type:</t>
<sourcecode type="cddl" markers="false" pn="section-4.1-2">my-embedded-c
bor-seq = bytes .cborseq my-array
my-array = [* my-element] my-array = [* my-element]
my-element = my-foo / my-bar my-element = my-foo / my-bar
]]></artwork></figure> </sourcecode>
<t pn="section-4.1-3">Currently, CDDL does not provide for unadorned CBO
<t>CDDL currently does not provide for unadorned CBOR sequences as a R Sequences as a
top-level subject of a specification. For now, the suggestion is to top-level subject of a specification.
use an array, as for the <spanx style="verb">.cborseq</spanx> control operator,
for the
top-level rule and add English text that explains that the
specification is really about a CBOR sequence with the elements of the
array:</t>
<figure><artwork type="CDDL"><![CDATA[ For now, the suggestion is to use an array for the top-level rule, as is used
; This defines an array, the elements of which are to be used for the <tt>.cborseq</tt> control operator, and add English text that
; in a CBOR sequence: explains that the specification is really about a CBOR Sequence with the
elements of the array:</t>
<sourcecode type="cddl" markers="false" pn="section-4.1-4">; This define
s an array, the elements of which are to be used
; in a CBOR Sequence:
my-sequence = [* my-element] my-sequence = [* my-element]
my-element = my-foo / my-bar my-element = my-foo / my-bar
]]></artwork></figure> </sourcecode>
<t pn="section-4.1-5">(Future versions of CDDL may provide a notation fo
<t>(Future versions of CDDL may provide a notation for top-level CBOR r top-level CBOR
sequences, e.g. by using a group as the top-level rule in a CDDL Sequences, e.g., by using a group as the top-level rule in a CDDL
specification.)</t> specification.)</t>
</section>
</section> <section anchor="diagnostic-notation" numbered="true" toc="include" remove
<section anchor="diagnostic-notation" title="Diagnostic Notation"> InRFC="false" pn="section-4.2">
<name slugifiedName="name-diagnostic-notation">Diagnostic Notation</name
<t>CBOR diagnostic notation (see Section 6 of <xref target="RFC7049"/>) or exten >
ded <t pn="section-4.2-1">CBOR diagnostic notation (see <xref target="RFC704
diagnostic notation (Appendix G of <xref target="RFC8610"/>) also does not provi 9" sectionFormat="of" section="6" format="default" derivedLink="https://rfc-edit
de or.org/rfc/rfc7049#section-6" derivedContent="RFC7049"/>) or extended
diagnostic notation (<xref target="RFC8610" sectionFormat="of" section="G" forma
t="default" derivedLink="https://rfc-editor.org/rfc/rfc8610#appendix-G" derivedC
ontent="RFC8610"/>) also does not provide
for unadorned CBOR Sequences at this time (the latter does provide for for unadorned CBOR Sequences at this time (the latter does provide for
CBOR Sequences embedded in a byte string in Appendix G.3 of CBOR Sequences embedded in a byte string as per <xref target="RFC8610" sectionFo
<xref target="RFC8610"/>).</t> rmat="of" section="G.3" format="default" derivedLink="https://rfc-editor.org/rfc
/rfc8610#appendix-G.3" derivedContent="RFC8610"/>).</t>
<t>In a similar spirit to the recommendation for CDDL above, this <t pn="section-4.2-2">In a similar spirit to the recommendation for CDDL
above, this
specification recommends enclosing the CBOR data items in an array. specification recommends enclosing the CBOR data items in an array.
In a more informal setting, where the boundaries within which the In a more informal setting, where the boundaries within which the
notation is used are obvious, it is also possible to leave off the notation is used are obvious, it is also possible to leave off the
outer brackets for this array, as shown in these two examples:</t> outer brackets for this array, as shown in these two examples:</t>
<artwork type="CBORdiag" name="" align="left" alt="" pn="section-4.2-3">
<figure><artwork type="CBORdiag"><![CDATA[
[1, 2, 3] [1, 2, 3]
1, 2, 3 1, 2, 3
]]></artwork></figure> </artwork>
<t pn="section-4.2-4">Note that it is somewhat difficult to discuss zero
<t>Note that it is somewhat difficult to discuss zero-length CBOR -length CBOR
Sequences in the latter form.</t> Sequences in the latter form.</t>
</section>
</section> <section anchor="optimizing-cbor-sequences-for-skipping-elements" numbered
<section anchor="optimizing-cbor-sequences-for-skipping-elements" title="Optimiz ="true" toc="include" removeInRFC="false" pn="section-4.3">
ing CBOR Sequences for Skipping Elements"> <name slugifiedName="name-optimizing-cbor-sequences-f">Optimizing CBOR S
equences for Skipping Elements</name>
<t>In certain applications, being able to efficiently skip an element <t pn="section-4.3-1">In certain applications, being able to efficiently
skip an element
without the need for decoding its substructure, or efficiently fanning without the need for decoding its substructure, or efficiently fanning
out elements to multi-threaded decoding processes, is of the utmost out elements to multi-threaded decoding processes, is of the utmost
importance. For these applications, byte strings importance. For these applications, byte strings
(which carry length information in bytes) containing embedded CBOR can (which carry length information in bytes) containing embedded CBOR can
be used as the elements of a CBOR sequence:</t> be used as the elements of a CBOR Sequence:</t>
<sourcecode type="cddl" markers="false" pn="section-4.3-2">; This define
<figure><artwork type="CDDL"><![CDATA[ s an array of CBOR byte strings, the elements of which
; This defines an array of CBOR byte strings, the elements of which ; are to be used in a CBOR Sequence:
; are to be used in a CBOR sequence:
my-sequence = [* my-element] my-sequence = [* my-element]
my-element = bytes .cbor my-element-structure my-element = bytes .cbor my-element-structure
my-element-structure = my-foo / my-bar my-element-structure = my-foo / my-bar
]]></artwork></figure> </sourcecode>
<t pn="section-4.3-3">Within limits, this may also enable recovering fro
<t>Within limits, this may also enable recovering from elements that m elements that
internally are not well-formed — the limitation is that the sequence internally are not well formed; the limitation is that the sequence
of byte strings does need to be well-formed as such.</t> of byte strings does need to be well formed as such.</t>
</section>
</section> </section>
</section> <section anchor="security-considerations" numbered="true" toc="include" remo
<section anchor="security-considerations" title="Security Considerations"> veInRFC="false" pn="section-5">
<name slugifiedName="name-security-considerations">Security Considerations
<t>The security considerations of CBOR <xref target="RFC7049"/> apply. This for </name>
mat <t pn="section-5-1">The security considerations of CBOR <xref target="RFC7
provides no cryptographic integrity protection of any kind, but can be 049" format="default" sectionFormat="of" derivedContent="RFC7049"/> apply. This
combined with security specifications such as COSE <xref target="RFC8152"/> to d format
o so. provides no cryptographic integrity protection of any kind but can be
(COSE protections can be applied to an entire CBOR sequence or to each combined with security specifications such as CBOR Object Signing and
Encryption (COSE) <xref target="RFC8152" format="default" sectionFormat="of" der
ivedContent="RFC8152"/> to do so.
(COSE protections can be applied to an entire CBOR Sequence or to each
of the elements of the sequence independently; in the latter case, of the elements of the sequence independently; in the latter case,
additional effort may be required if there is a need to protect the additional effort may be required if there is a need to protect the
relationship of the elements in the sequence.)</t> relationship of the elements in the sequence.)</t>
<t pn="section-5-2">As usual, decoders must operate on input that is assum
<t>As usual, decoders must operate on input that is assumed to be ed to be
untrusted. This means that decoders MUST fail gracefully in the face untrusted. This means that decoders <bcp14>MUST</bcp14> fail gracefully in the
face
of malicious inputs.</t> of malicious inputs.</t>
</section>
<section anchor="iana-considerations" numbered="true" toc="include" removeIn
RFC="false" pn="section-6">
<name slugifiedName="name-iana-considerations">IANA Considerations</name>
<section anchor="media-type" numbered="true" toc="include" removeInRFC="fa
lse" pn="section-6.1">
<name slugifiedName="name-media-type">Media Type</name>
<t pn="section-6.1-1">Media types are registered in the "Media Types" re
gistry
<xref target="IANA-MEDIA-TYPES" format="default" sectionFormat="of" deriv
edContent="IANA-MEDIA-TYPES"/>.
</section> IANA has registered the media type for CBOR Sequence,
<section anchor="iana-considerations" title="IANA Considerations">
<section anchor="media-type" title="Media Type">
<t>Media types are registered in the media types registry <xref target="IANA.med
ia-types"/>.
IANA is requested to register the MIME media type for CBOR Sequence,
application/cbor-seq, as follows:</t> application/cbor-seq, as follows:</t>
<t pn="section-6.1-2">Type name: application</t>
<t>Type name: application</t> <t pn="section-6.1-3">Subtype name: cbor-seq</t>
<t pn="section-6.1-4">Required parameters: N/A</t>
<t>Subtype name: cbor-seq</t> <t pn="section-6.1-5">Optional parameters: N/A</t>
<t pn="section-6.1-6">Encoding considerations: binary</t>
<t>Required parameters: N/A</t> <t pn="section-6.1-7">Security considerations: See RFC 8742, <xref targe
t="security-considerations" format="default" sectionFormat="of" derivedContent="
<t>Optional parameters: N/A</t> Section 5"/>.</t>
<t pn="section-6.1-8">Interoperability considerations: Described herein.
<t>Encoding considerations: binary</t> </t>
<t pn="section-6.1-9">Published specification: RFC 8742.</t>
<t>Security considerations: See RFCthis, <xref target="security-considerations"/ <t pn="section-6.1-10">Applications that use this media type: Data seria
>.</t> lization and deserialization.</t>
<t pn="section-6.1-11">Fragment identifier considerations: N/A</t>
<t>Interoperability considerations: Described herein.</t> <t pn="section-6.1-12">Additional information:</t>
<ul spacing="normal" bare="false" empty="false" pn="section-6.1-13">
<t>Published specification: RFCthis.</t> <li pn="section-6.1-13.1">Deprecated alias names for this type: N/A</l
i>
<t>Applications that use this media type: Data serialization and deserialization <li pn="section-6.1-13.2">Magic number(s): N/A</li>
.</t> <li pn="section-6.1-13.3">File extension(s): N/A</li>
<li pn="section-6.1-13.4">Macintosh file type code(s): N/A</li>
<t>Fragment identifier considerations: N/A</t> </ul>
<dl newline="false" spacing="normal" pn="section-6.1-14">
<t>Additional information:</t> <dt pn="section-6.1-14.1">Person &amp; email address to contact for fu
rther information:</dt>
<t><list style="symbols"> <dd pn="section-6.1-14.2">
<t>Deprecated alias names for this type: N/A</t> cbor@ietf.org</dd>
<t>Magic number(s): N/A</t> </dl>
<t>File extension(s): N/A</t> <t pn="section-6.1-15">Intended usage: COMMON</t>
<t>Macintosh file type code(s): N/A</t> <t pn="section-6.1-16">Author: Carsten Bormann (cabo@tzi.org)</t>
</list></t> <t pn="section-6.1-17">Change controller: IETF</t>
</section>
<t><list style="hanging"> <section anchor="coap-content-format-registration" numbered="true" toc="in
<t hangText='Person &amp; email address to contact for further information:'> clude" removeInRFC="false" pn="section-6.2">
cbor@ietf.org</t> <name slugifiedName="name-coap-content-format-registr">CoAP Content-Form
</list></t> at Registration</name>
<t pn="section-6.2-1">IANA has assigned a CoAP Content-Format ID for the
<t>Intended usage: COMMON</t> media
type "application/cbor-seq", within the "CoAP Content-Formats" subregistry
<t>Author: Carsten Bormann (cabo@tzi.org)</t> of the "Constrained RESTful Environments (CoRE) Parameters" registry
<xref target="IANA-CORE-PARAMETERS" format="default" sectionFormat="of" derivedC
<t>Change controller: IETF</t> ontent="IANA-CORE-PARAMETERS"/>, from the "Expert Review" (0-255)
range (<xref target="RFC8126" format="default" sectionFormat="of" derivedContent
</section> ="RFC8126"/>). The assigned ID is shown in <xref target="tbl-coap-content-forma
<section anchor="coap-content-format-registration" title="CoAP Content-Format Re ts" format="default" sectionFormat="of" derivedContent="Table 1"/>.</t>
gistration"> <table anchor="tbl-coap-content-formats" align="center" pn="table-1">
<name slugifiedName="name-coap-content-format-id">CoAP Content-Format
<t>IANA is requested to assign a CoAP Content-Format ID for the media ID</name>
type “application/cbor-seq”, in the CoAP Content-Formats subregistry <thead>
of the core-parameter registry <tr>
<xref target="IANA.core-parameters"/>, from the “Expert Review” (0-255) <th align="left" colspan="1" rowspan="1">Media type</th>
range. The assigned ID is shown in <xref target="tbl-coap-content-formats"/>.</ <th align="left" colspan="1" rowspan="1">Encoding</th>
t> <th align="left" colspan="1" rowspan="1">ID</th>
<th align="left" colspan="1" rowspan="1">Reference</th>
<texttable title="CoAP Content-Format ID" anchor="tbl-coap-content-formats"> </tr>
<ttcol align='left'>Media type</ttcol> </thead>
<ttcol align='left'>Encoding</ttcol> <tbody>
<ttcol align='left'>ID</ttcol> <tr>
<ttcol align='left'>Reference</ttcol> <td align="left" colspan="1" rowspan="1">application/cbor-seq</td>
<c>application/cbor-seq</c> <td align="left" colspan="1" rowspan="1">-</td>
<c>-</c> <td align="left" colspan="1" rowspan="1">63</td>
<c>TBD63</c> <td align="left" colspan="1" rowspan="1">RFC 8742</td>
<c>RFCthis</c> </tr>
</texttable> </tbody>
</table>
<t>RFC editor: Please replace TBD63 by the number actually assigned and </section>
delete this paragraph.</t> <section anchor="structured-syntax-suffix" numbered="true" toc="include" r
emoveInRFC="false" pn="section-6.3">
</section> <name slugifiedName="name-structured-syntax-suffix">Structured Syntax Su
<section anchor="structured-syntax-suffix" title="Structured Syntax Suffix"> ffix</name>
<t pn="section-6.3-1">Structured Syntax Suffixes are registered within t
<t>Structured Syntax Suffixes are registered within the “Structured he "Structured
Syntax Suffix Registry” maintained at <xref target="IANA.media-type-structured-s Syntax Suffix Registry" maintained at <xref target="IANA-STRUCTURED-SYNTAX-SUFFI
uffix"/>. IANA is requested to X" format="default" sectionFormat="of" derivedContent="IANA-STRUCTURED-SYNTAX-SU
register the “+cbor-seq” structured syntax suffix in accordance with FFIX"/>. IANA has
<xref target="RFC6838"/>, as follows:</t> registered the "+cbor-seq" structured syntax suffix in accordance with
<xref target="RFC6838" format="default" sectionFormat="of" derivedContent="RFC68
<t><list style='empty'> 38"/> as follows:</t>
<t>Name: CBOR Sequence</t> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-2">
</list></t> <li pn="section-6.3-2.1">Name: CBOR Sequence</li>
</ul>
<t><list style='empty'> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-3">
<t>+suffix: +cbor-seq</t> <li pn="section-6.3-3.1">+suffix: +cbor-seq</li>
</list></t> </ul>
<ul empty="true" spacing="normal" bare="false" pn="section-6.3-4">
<t><list style='empty'> <li pn="section-6.3-4.1">References: RFC 8742</li>
<t>References: RFCthis</t> </ul>
</list></t> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-5">
<li pn="section-6.3-5.1">Encoding considerations: binary</li>
<t><list style='empty'> </ul>
<t>Encoding considerations: binary</t> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-6">
</list></t> <li pn="section-6.3-6.1">Fragment identifier considerations: The synta
x and semantics of
<t><list style='empty'> fragment identifiers specified for +cbor-seq <bcp14>SHOULD</bcp14> be the same
<t>Fragment identifier considerations: The syntax and semantics of as that specified for "application/cbor-seq". (At the time of publication of t
fragment identifiers specified for +cbor-seq SHOULD be as his
specified for “application/cbor-seq”. (At publication of this
document, there is no fragment identification syntax defined for document, there is no fragment identification syntax defined for
“application/cbor-seq”.)</t> "application/cbor-seq".)</li>
</list></t> </ul>
<ul empty="true" spacing="normal" bare="false" pn="section-6.3-7">
<t><list style='empty'> <li pn="section-6.3-7.1">
<t><list style='empty'> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-7.1.1
<t>The syntax and semantics for fragment identifiers for a ">
specific “xxx/yyy+cbor-seq” SHOULD be processed as follows:</t> <li pn="section-6.3-7.1.1.1">The syntax and semantics for fragment
</list></t> identifiers for a
</list></t> specific "xxx/yyy+cbor-seq" <bcp14>SHOULD</bcp14> be processed as follows:</li>
<li pn="section-6.3-7.1.1.2">
<t><list style='empty'> <ul spacing="normal" bare="false" empty="false" pn="section-6.3-
<t><list style='empty'> 7.1.1.2.1">
<t><list style='empty'> <li pn="section-6.3-7.1.1.2.1.1">For cases defined in +cbor-se
<t>For cases defined in +cbor-seq, where the fragment q, if the fragment
identifier resolves per the +cbor-seq rules, then process as identifier resolves per the +cbor-seq rules, then process as
specified in +cbor-seq.</t> specified in +cbor-seq.</li>
</list></t> <li pn="section-6.3-7.1.1.2.1.2">For cases defined in +cbor-se
</list></t> q, if the fragment
</list></t>
<t><list style='empty'>
<t><list style='empty'>
<t><list style='empty'>
<t>For cases defined in +cbor-seq, where the fragment
identifier does not resolve per the +cbor-seq rules, then identifier does not resolve per the +cbor-seq rules, then
process as specified in “xxx/yyy+cbor-seq”.</t> process as specified in "xxx/yyy+cbor-seq".</li>
</list></t> <li pn="section-6.3-7.1.1.2.1.3">For cases not defined in +cbo
</list></t> r-seq, process as
</list></t> specified in "xxx/yyy+cbor-seq".</li>
</ul>
<t><list style='empty'> </li>
<t><list style='empty'> </ul>
<t><list style='empty'> </li>
<t>For cases not defined in +cbor-seq, then process as </ul>
specified in “xxx/yyy+cbor-seq”.</t> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-8">
</list></t> <li pn="section-6.3-8.1">Interoperability considerations: n/a</li>
</list></t> </ul>
</list></t> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-9">
<li pn="section-6.3-9.1">Security considerations: See RFC 8742, <xref
<t><list style='empty'> target="security-considerations" format="default" sectionFormat="of" derivedCont
<t>Interoperability considerations: n/a</t> ent="Section 5"/></li>
</list></t> </ul>
<ul empty="true" spacing="normal" bare="false" pn="section-6.3-10">
<t><list style='empty'> <li pn="section-6.3-10.1">Contact: CBOR WG mailing list (cbor@ietf.org
<t>Security considerations: See RFCthis, <xref target="security-considerations ), or any IESG-designated successor.</li>
"/></t> </ul>
</list></t> <ul empty="true" spacing="normal" bare="false" pn="section-6.3-11">
<li pn="section-6.3-11.1">Author/Change controller: IETF</li>
<t><list style='empty'> </ul>
<t>Contact: CBOR WG mailing list (cbor@ietf.org), or any IESG-designated succe </section>
ssor.</t> </section>
</list></t>
<t><list style='empty'>
<t>Author/Change controller: IETF</t>
</list></t>
</section>
</section>
</middle> </middle>
<back> <back>
<references pn="section-7">
<references title='Normative References'> <name slugifiedName="name-references">References</name>
<references pn="section-7.1">
<reference anchor="RFC7049" target='https://www.rfc-editor.org/info/rfc7049'> <name slugifiedName="name-normative-references">Normative References</na
<front> me>
<title>Concise Binary Object Representation (CBOR)</title> <reference anchor="IANA-CORE-PARAMETERS" target="https://www.iana.org/as
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></ signments/core-parameters" quoteTitle="true" derivedAnchor="IANA-CORE-PARAMETERS
author> ">
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></ <front>
author> <title>Constrained RESTful Environments (CoRE) Parameters</title>
<date year='2013' month='October' /> <author>
<abstract><t>The Concise Binary Object Representation (CBOR) is a data format wh <organization showOnFrontPage="true">IANA</organization>
ose design goals include the possibility of extremely small code size, fairly sm </author>
all message size, and extensibility without the need for version negotiation. T </front>
hese design goals make it different from earlier binary serializations such as A </reference>
SN.1 and MessagePack.</t></abstract> <reference anchor="IANA-MEDIA-TYPES" target="https://www.iana.org/assign
</front> ments/media-types" quoteTitle="true" derivedAnchor="IANA-MEDIA-TYPES">
<seriesInfo name='RFC' value='7049'/> <front>
<seriesInfo name='DOI' value='10.17487/RFC7049'/> <title>Media Types</title>
</reference> <author>
<organization showOnFrontPage="true">IANA</organization>
<reference anchor="IANA.media-type-structured-suffix" target='http://www.iana.or </author>
g/assignments/media-type-structured-suffix'> </front>
<front> </reference>
<title>Structured Syntax Suffix Registry</title> <reference anchor="IANA-STRUCTURED-SYNTAX-SUFFIX" target="https://www.ia
<author><organization>IANA</organization></author> na.org/assignments/media-type-structured-suffix" quoteTitle="true" derivedAnchor
<date/> ="IANA-STRUCTURED-SYNTAX-SUFFIX">
</front> <front>
</reference> <title>Structured Syntax Suffix Registry</title>
<author>
<reference anchor="IANA.core-parameters" target='http://www.iana.org/assignments <organization showOnFrontPage="true">IANA</organization>
/core-parameters'> </author>
<front> </front>
<title>Constrained RESTful Environments (CoRE) Parameters</title> </reference>
<author><organization>IANA</organization></author> <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2
<date/> 119" quoteTitle="true" derivedAnchor="RFC2119">
</front> <front>
</reference> <title>Key words for use in RFCs to Indicate Requirement Levels</tit
le>
<reference anchor="IANA.media-types" target='http://www.iana.org/assignments/med <author initials="S." surname="Bradner" fullname="S. Bradner">
ia-types'> <organization showOnFrontPage="true"/>
<front> </author>
<title>Media Types</title> <date year="1997" month="March"/>
<author><organization>IANA</organization></author> <abstract>
<date/> <t>In many standards track documents several words are used to sig
</front> nify the requirements in the specification. These words are often capitalized.
</reference> This document defines these words as they should be interpreted in IETF document
s. This document specifies an Internet Best Current Practices for the Internet
<reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> Community, and requests discussion and suggestions for improvements.</t>
<front> </abstract>
<title>Key words for use in RFCs to Indicate Requirement Levels</title> </front>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></ <seriesInfo name="BCP" value="14"/>
author> <seriesInfo name="RFC" value="2119"/>
<date year='1997' month='March' /> <seriesInfo name="DOI" value="10.17487/RFC2119"/>
<abstract><t>In many standards track documents several words are used to signify </reference>
the requirements in the specification. These words are often capitalized. This <reference anchor="RFC7049" target="https://www.rfc-editor.org/info/rfc7
document defines these words as they should be interpreted in IETF documents. 049" quoteTitle="true" derivedAnchor="RFC7049">
This document specifies an Internet Best Current Practices for the Internet Comm <front>
unity, and requests discussion and suggestions for improvements.</t></abstract> <title>Concise Binary Object Representation (CBOR)</title>
</front> <author initials="C." surname="Bormann" fullname="C. Bormann">
<seriesInfo name='BCP' value='14'/> <organization showOnFrontPage="true"/>
<seriesInfo name='RFC' value='2119'/> </author>
<seriesInfo name='DOI' value='10.17487/RFC2119'/> <author initials="P." surname="Hoffman" fullname="P. Hoffman">
</reference> <organization showOnFrontPage="true"/>
</author>
<reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'> <date year="2013" month="October"/>
<front> <abstract>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> <t>The Concise Binary Object Representation (CBOR) is a data forma
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth t whose design goals include the possibility of extremely small code size, fairl
or> y small message size, and extensibility without the need for version negotiation
<date year='2017' month='May' /> . These design goals make it different from earlier binary serializations such
<abstract><t>RFC 2119 specifies common key words that may be used in protocol s as ASN.1 and MessagePack.</t>
pecifications. This document aims to reduce the ambiguity by clarifying that on </abstract>
ly UPPERCASE usage of the key words have the defined special meanings.</t></abs </front>
tract> <seriesInfo name="RFC" value="7049"/>
</front> <seriesInfo name="DOI" value="10.17487/RFC7049"/>
<seriesInfo name='BCP' value='14'/> </reference>
<seriesInfo name='RFC' value='8174'/> <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8
<seriesInfo name='DOI' value='10.17487/RFC8174'/> 174" quoteTitle="true" derivedAnchor="RFC8174">
</reference> <front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti
</references> tle>
<author initials="B." surname="Leiba" fullname="B. Leiba">
<references title='Informative References'> <organization showOnFrontPage="true"/>
</author>
<reference anchor="RFC6838" target='https://www.rfc-editor.org/info/rfc6838'> <date year="2017" month="May"/>
<front> <abstract>
<title>Media Type Specifications and Registration Procedures</title> <t>RFC 2119 specifies common key words that may be used in protoco
<author initials='N.' surname='Freed' fullname='N. Freed'><organization /></auth l specifications. This document aims to reduce the ambiguity by clarifying tha
or> t only UPPERCASE usage of the key words have the defined special meanings.</t>
<author initials='J.' surname='Klensin' fullname='J. Klensin'><organization /></ </abstract>
author> </front>
<author initials='T.' surname='Hansen' fullname='T. Hansen'><organization /></au <seriesInfo name="BCP" value="14"/>
thor> <seriesInfo name="RFC" value="8174"/>
<date year='2013' month='January' /> <seriesInfo name="DOI" value="10.17487/RFC8174"/>
<abstract><t>This document defines procedures for the specification and registra </reference>
tion of media types for use in HTTP, MIME, and other Internet protocols. This m </references>
emo documents an Internet Best Current Practice.</t></abstract> <references pn="section-7.2">
</front> <name slugifiedName="name-informative-references">Informative References
<seriesInfo name='BCP' value='13'/> </name>
<seriesInfo name='RFC' value='6838'/> <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6
<seriesInfo name='DOI' value='10.17487/RFC6838'/> 838" quoteTitle="true" derivedAnchor="RFC6838">
</reference> <front>
<title>Media Type Specifications and Registration Procedures</title>
<reference anchor="RFC7464" target='https://www.rfc-editor.org/info/rfc7464'> <author initials="N." surname="Freed" fullname="N. Freed">
<front> <organization showOnFrontPage="true"/>
<title>JavaScript Object Notation (JSON) Text Sequences</title> </author>
<author initials='N.' surname='Williams' fullname='N. Williams'><organization /> <author initials="J." surname="Klensin" fullname="J. Klensin">
</author> <organization showOnFrontPage="true"/>
<date year='2015' month='February' /> </author>
<abstract><t>This document describes the JavaScript Object Notation (JSON) text <author initials="T." surname="Hansen" fullname="T. Hansen">
sequence format and associated media type &quot;application/json-seq&quot;. A J <organization showOnFrontPage="true"/>
SON text sequence consists of any number of JSON texts, all encoded in UTF-8, ea </author>
ch prefixed by an ASCII Record Separator (0x1E), and each ending with an ASCII L <date year="2013" month="January"/>
ine Feed character (0x0A).</t></abstract> <abstract>
</front> <t>This document defines procedures for the specification and regi
<seriesInfo name='RFC' value='7464'/> stration of media types for use in HTTP, MIME, and other Internet protocols. Th
<seriesInfo name='DOI' value='10.17487/RFC7464'/> is memo documents an Internet Best Current Practice.</t>
</reference> </abstract>
</front>
<reference anchor="RFC8259" target='https://www.rfc-editor.org/info/rfc8259'> <seriesInfo name="BCP" value="13"/>
<front> <seriesInfo name="RFC" value="6838"/>
<title>The JavaScript Object Notation (JSON) Data Interchange Format</title> <seriesInfo name="DOI" value="10.17487/RFC6838"/>
<author initials='T.' surname='Bray' fullname='T. Bray' role='editor'><organizat </reference>
ion /></author> <reference anchor="RFC7464" target="https://www.rfc-editor.org/info/rfc7
<date year='2017' month='December' /> 464" quoteTitle="true" derivedAnchor="RFC7464">
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, lan <front>
guage-independent data interchange format. It was derived from the ECMAScript P <title>JavaScript Object Notation (JSON) Text Sequences</title>
rogramming Language Standard. JSON defines a small set of formatting rules for <author initials="N." surname="Williams" fullname="N. Williams">
the portable representation of structured data.</t><t>This document removes inco <organization showOnFrontPage="true"/>
nsistencies with other specifications of JSON, repairs specification errors, and </author>
offers experience-based interoperability guidance.</t></abstract> <date year="2015" month="February"/>
</front> <abstract>
<seriesInfo name='STD' value='90'/> <t>This document describes the JavaScript Object Notation (JSON) t
<seriesInfo name='RFC' value='8259'/> ext sequence format and associated media type "application/json-seq". A JSON te
<seriesInfo name='DOI' value='10.17487/RFC8259'/> xt sequence consists of any number of JSON texts, all encoded in UTF-8, each pre
</reference> fixed by an ASCII Record Separator (0x1E), and each ending with an ASCII Line Fe
ed character (0x0A).</t>
<reference anchor="RFC8091" target='https://www.rfc-editor.org/info/rfc8091'> </abstract>
<front> </front>
<title>A Media Type Structured Syntax Suffix for JSON Text Sequences</title> <seriesInfo name="RFC" value="7464"/>
<author initials='E.' surname='Wilde' fullname='E. Wilde'><organization /></auth <seriesInfo name="DOI" value="10.17487/RFC7464"/>
or> </reference>
<date year='2017' month='February' /> <reference anchor="RFC8091" target="https://www.rfc-editor.org/info/rfc8
<abstract><t>Structured syntax suffixes for media types allow other media types 091" quoteTitle="true" derivedAnchor="RFC8091">
to build on them and make it explicit that they are built on an existing media t <front>
ype as their foundation. This specification defines and registers &quot;+json-s <title>A Media Type Structured Syntax Suffix for JSON Text Sequences
eq&quot; as a structured syntax suffix for JSON text sequences.</t></abstract> </title>
</front> <author initials="E." surname="Wilde" fullname="E. Wilde">
<seriesInfo name='RFC' value='8091'/> <organization showOnFrontPage="true"/>
<seriesInfo name='DOI' value='10.17487/RFC8091'/> </author>
</reference> <date year="2017" month="February"/>
<abstract>
<reference anchor="RFC8152" target='https://www.rfc-editor.org/info/rfc8152'> <t>Structured syntax suffixes for media types allow other media ty
<front> pes to build on them and make it explicit that they are built on an existing med
<title>CBOR Object Signing and Encryption (COSE)</title> ia type as their foundation. This specification defines and registers "+json-se
<author initials='J.' surname='Schaad' fullname='J. Schaad'><organization /></au q" as a structured syntax suffix for JSON text sequences.</t>
thor> </abstract>
<date year='2017' month='July' /> </front>
<abstract><t>Concise Binary Object Representation (CBOR) is a data format design <seriesInfo name="RFC" value="8091"/>
ed for small code size and small message size. There is a need for the ability <seriesInfo name="DOI" value="10.17487/RFC8091"/>
to have basic security services defined for this data format. This document defi </reference>
nes the CBOR Object Signing and Encryption (COSE) protocol. This specification <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8
describes how to create and process signatures, message authentication codes, an 126" quoteTitle="true" derivedAnchor="RFC8126">
d encryption using CBOR for serialization. This specification additionally desc <front>
ribes how to represent cryptographic keys using CBOR.</t></abstract> <title>Guidelines for Writing an IANA Considerations Section in RFCs
</front> </title>
<seriesInfo name='RFC' value='8152'/> <author initials="M." surname="Cotton" fullname="M. Cotton">
<seriesInfo name='DOI' value='10.17487/RFC8152'/> <organization showOnFrontPage="true"/>
</reference> </author>
<author initials="B." surname="Leiba" fullname="B. Leiba">
<reference anchor="RFC8610" target='https://www.rfc-editor.org/info/rfc8610'> <organization showOnFrontPage="true"/>
<front> </author>
<title>Concise Data Definition Language (CDDL): A Notational Convention to Expre <author initials="T." surname="Narten" fullname="T. Narten">
ss Concise Binary Object Representation (CBOR) and JSON Data Structures</title> <organization showOnFrontPage="true"/>
<author initials='H.' surname='Birkholz' fullname='H. Birkholz'><organization /> </author>
</author> <date year="2017" month="June"/>
<author initials='C.' surname='Vigano' fullname='C. Vigano'><organization /></au <abstract>
thor> <t>Many protocols make use of points of extensibility that use con
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></ stants to identify various protocol parameters. To ensure that the values in th
author> ese fields do not have conflicting uses and to promote interoperability, their a
<date year='2019' month='June' /> llocations are often coordinated by a central record keeper. For IETF protocols
<abstract><t>This document proposes a notational convention to express Concise B , that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
inary Object Representation (CBOR) data structures (RFC 7049). Its main goal is <t>To make assignments in a given registry prudently, guidance des
to provide an easy and unambiguous way to express structures for protocol messa cribing the conditions under which new values should be assigned, as well as whe
ges and data formats that use CBOR or JSON.</t></abstract> n and how modifications to existing values can be made, is needed. This documen
</front> t defines a framework for the documentation of these guidelines by specification
<seriesInfo name='RFC' value='8610'/> authors, in order to assure that the provided guidance for the IANA Considerati
<seriesInfo name='DOI' value='10.17487/RFC8610'/> ons is clear and addresses the various issues that are likely in the operation o
</reference> f a registry.</t>
<t>This is the third edition of this document; it obsoletes RFC 52
26.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="26"/>
<seriesInfo name="RFC" value="8126"/>
<seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>
<reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8
152" quoteTitle="true" derivedAnchor="RFC8152">
<front>
<title>CBOR Object Signing and Encryption (COSE)</title>
<author initials="J." surname="Schaad" fullname="J. Schaad">
<organization showOnFrontPage="true"/>
</author>
<date year="2017" month="July"/>
<abstract>
<t>Concise Binary Object Representation (CBOR) is a data format de
signed for small code size and small message size. There is a need for the abil
ity to have basic security services defined for this data format. This document
defines the CBOR Object Signing and Encryption (COSE) protocol. This specificat
ion describes how to create and process signatures, message authentication codes
, and encryption using CBOR for serialization. This specification additionally
describes how to represent cryptographic keys using CBOR.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8152"/>
<seriesInfo name="DOI" value="10.17487/RFC8152"/>
</reference>
<reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8
259" quoteTitle="true" derivedAnchor="RFC8259">
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange Format
</title>
<author initials="T." surname="Bray" fullname="T. Bray" role="editor
">
<organization showOnFrontPage="true"/>
</author>
<date year="2017" month="December"/>
<abstract>
<t>JavaScript Object Notation (JSON) is a lightweight, text-based,
language-independent data interchange format. It was derived from the ECMAScri
pt 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 interoperabi
lity guidance.</t>
</abstract>
</front>
<seriesInfo name="STD" value="90"/>
<seriesInfo name="RFC" value="8259"/>
<seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>
<reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8
610" quoteTitle="true" derivedAnchor="RFC8610">
<front>
<title>Concise Data Definition Language (CDDL): A Notational Convent
ion to Express Concise Binary Object Representation (CBOR) and JSON Data Structu
res</title>
<author initials="H." surname="Birkholz" fullname="H. Birkholz">
<organization showOnFrontPage="true"/>
</author>
<author initials="C." surname="Vigano" fullname="C. Vigano">
<organization showOnFrontPage="true"/>
</author>
<author initials="C." surname="Bormann" fullname="C. Bormann">
<organization showOnFrontPage="true"/>
</author>
<date year="2019" month="June"/>
<abstract>
<t>This document proposes a notational convention to express Conci
se Binary Object Representation (CBOR) data structures (RFC 7049). Its main goa
l is to provide an easy and unambiguous way to express structures for protocol m
essages and data formats that use CBOR or JSON.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8610"/>
<seriesInfo name="DOI" value="10.17487/RFC8610"/>
</reference>
</references>
</references> </references>
<section numbered="false" anchor="acknowledgements" toc="include" removeInRF
<section numbered="no" anchor="acknowledgements" title="Acknowledgements"> C="false" pn="section-appendix.a">
<name slugifiedName="name-acknowledgements">Acknowledgements</name>
<t>This draft has mostly been generated from <xref target="RFC7464"/> by Nico Wi <t pn="section-appendix.a-1">This document has mostly been generated from
lliams <xref target="RFC7464" format="default" sectionFormat="of" derivedContent="RFC74
and <xref target="RFC8091"/> by Erik Wilde, which do a similar, but slightly mor 64"/> by <contact fullname="Nico Williams"/>
e and <xref target="RFC8091" format="default" sectionFormat="of" derivedContent="R
complicated exercise for JSON <xref target="RFC8259"/>. Laurence Lundblade rais FC8091"/> by <contact fullname="Erik Wilde"/>, which do a similar but slightly m
ed an ore
complicated exercise for JSON <xref target="RFC8259" format="default" sectionFor
mat="of" derivedContent="RFC8259"/>. <contact fullname="Laurence Lundblade"/> r
aised an
issue on the CBOR mailing list that pointed out the need for this issue on the CBOR mailing list that pointed out the need for this
document. Jim Schaad and John Mattsson provided helpful comments.</t> document. <contact fullname="Jim Schaad"/> and <contact fullname="John Mattsson
"/> provided helpful comments.</t>
</section> </section>
<section anchor="authors-addresses" numbered="false" removeInRFC="false" toc
="include" pn="section-appendix.b">
<name slugifiedName="name-authors-address">Author's Address</name>
<author initials="C." surname="Bormann" fullname="Carsten Bormann">
<organization ascii="Universitaet Bremen TZI" showOnFrontPage="true">Uni
versitä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>
</section>
</back> </back>
<!-- ##markdown-source:
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
</rfc> </rfc>
 End of changes. 40 change blocks. 
703 lines changed or deleted 860 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/