| 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 & 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 & 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 "application/json-seq". 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 "+json-s | <title>A Media Type Structured Syntax Suffix for JSON Text Sequences | |||
| eq" 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/ | ||||