rfc9277v2.txt   rfc9277.txt 
skipping to change at line 13 skipping to change at line 13
Request for Comments: 9277 Sandelman Software Works Request for Comments: 9277 Sandelman Software Works
Category: Standards Track C. Bormann Category: Standards Track C. Bormann
ISSN: 2070-1721 Universität Bremen TZI ISSN: 2070-1721 Universität Bremen TZI
August 2022 August 2022
On Stable Storage for Items in Concise Binary Object Representation On Stable Storage for Items in Concise Binary Object Representation
(CBOR) (CBOR)
Abstract Abstract
This document defines a stored ("file") format for Consice Binary This document defines a stored ("file") format for Concise Binary
Object Representation (CBOR) data items that is friendly to common Object Representation (CBOR) data items that is friendly to common
systems that recognize file types, such as the Unix file(1) command. systems that recognize file types, such as the Unix file(1) command.
Status of This Memo Status of This Memo
This is an Internet Standards Track document. This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has (IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the received public review and has been approved for publication by the
skipping to change at line 72 skipping to change at line 72
5. References 5. References
5.1. Normative References 5.1. Normative References
5.2. Informative References 5.2. Informative References
Appendix A. Advice to Protocol Designer Appendix A. Advice to Protocol Designer
A.1. Is the on-wire format new? A.1. Is the on-wire format new?
A.2. Can many items be trivially concatenated? A.2. Can many items be trivially concatenated?
A.3. Are there tags at the start? A.3. Are there tags at the start?
Appendix B. CBOR Tags for CoAP Content Formats Appendix B. CBOR Tags for CoAP Content Formats
B.1. Content-Format Tag Examples B.1. Content-Format Tag Examples
Appendix C. Example from Openswan Appendix C. Example from Openswan
Appendix D. Using CBOR Labels for Non-CBOR data Appendix D. Using CBOR Labels for Non-CBOR Data
D.1. Content-Format Tag Examples D.1. Content-Format Tag Examples
Acknowledgements Acknowledgements
Contributors Contributors
Authors' Addresses Authors' Addresses
1. Introduction 1. Introduction
Since very early in computing, operating systems have sought ways to Since very early in computing, operating systems have sought ways to
mark which files could be processed by which programs. In Unix, mark which files could be processed by which programs. In Unix,
everything is a stream of bytes; identifying the contents of a stream everything is a stream of bytes; identifying the contents of a stream
of bytes became a heuristic activity. of bytes became a heuristic activity.
For instance, the Unix file(1) command, which has existed since 1973 For instance, the Unix file(1) command, which has existed since 1973
[FILE], has been able to identify many file formats based upon the [FILE], has been able to identify many file formats based upon the
contents of the file for decades. contents of the file for decades.
Many systems (Linux, macOS, Windows) will select the correct Many systems (Linux, macOS, Windows) will select the correct
application based upon the file contents if the system cannot application based upon the file contents if the system cannot
determine it by other means. For instance, in classical macOS, a determine it by other means. For instance, in classical Mac OS, a
resource fork was maintained separately from the file data that resource fork was maintained separately from the file data that
included file type information; this way, the OS ideally never needed included file type information; this way, the OS ideally never needed
to know anything about the file data contents to determine the media to know anything about the file data contents to determine the media
type. type.
Many other systems do this by using file extensions. Many common Web Many other systems do this by using file extensions. Many common Web
servers derive the media-type information from file extensions. servers derive the media-type information from file extensions.
Having a media type associated with the file contents can avoid some Having a media type associated with the file contents can avoid some
of the brittleness of this approach. When files become disconnected of the brittleness of this approach. When files become disconnected
from their type information, such as when attempting to do forensics from their type information, such as when attempting to do forensics
on a damaged system, being able to identify the type of information on a damaged system, being able to identify the type of information
stored in a file can become very important. stored in a file can become very important.
A common way to identify the type of a file from its contents is to A common way to identify the type of a file from its contents is to
place a "magic number" at the start of the file contents [MAGIC]. In place a "magic number" at the start of the file contents [MAGIC]. In
the media type registration template [RFC6838], it is noted that a the media type registration template [RFC6838], a magic number is
magic number is asked for, if available, as is a file extension. asked for, if available, as is a file extension.
A challenge for the file(1) command is often that it can be confused A challenge for the file(1) command is often that it can be confused
by recognizing the overall encoding but not the content being by recognizing the overall encoding but not the content being
encoded. For instance, an Android APK (as used to transfer and store encoded. For instance, an Android APK (as used to transfer and store
an application) may be identified as a ZIP file. Additionally, both an application) may be identified as a ZIP file. Additionally, both
OpenOffice and MSOffice files are ZIP files of XML files; the OpenOffice and MSOffice files are ZIP files of XML files; the
identification may stop at identifying them as ZIP files. identification may stop at identifying them as ZIP files.
As CBOR becomes a more and more common encoding for a wide variety of As CBOR becomes a more and more common encoding for a wide variety of
artifacts, identifying them as just "CBOR" is probably not artifacts, identifying them as just "CBOR" is probably not
skipping to change at line 131 skipping to change at line 131
into the beginning of a CBOR format file. As a CBOR format may use a into the beginning of a CBOR format file. As a CBOR format may use a
single CBOR data item or a CBOR sequence of data items [RFC8742], two single CBOR data item or a CBOR sequence of data items [RFC8742], two
possible methods of enveloping data are presented; a CBOR Protocol possible methods of enveloping data are presented; a CBOR Protocol
designer will specify one. (A CBOR Protocol is a specification that designer will specify one. (A CBOR Protocol is a specification that
uses CBOR as its encoding.) uses CBOR as its encoding.)
This document also gives advice to designers of CBOR Protocols on This document also gives advice to designers of CBOR Protocols on
choosing one of these mechanisms for identifying their contents. choosing one of these mechanisms for identifying their contents.
This advice is informative. This advice is informative.
A third method is also proposed by which this CBOR format tag is A third method is also proposed by which a CBOR format tag is
prepended to identify non-CBOR files. Further information on this prepended to identify non-CBOR files. Further information on this
method appears in Appendix D because it is not about identifying method appears in Appendix D because it is not about identifying
media types containing CBOR-encoded data items. This includes a media types containing CBOR-encoded data items. This includes a
simple way to derive a magic number for content-formats as defined in simple way to derive a magic number for content-formats as defined in
[RFC7252], even if the file is not in CBOR form. [RFC7252], even if the file is not in CBOR form.
Examples of CBOR Protocols currently under development include Examples of CBOR Protocols currently under development include
Concise Software Identification Tags [CoSWID] and Entity Attestation Concise Software Identification Tags [CoSWID] and Entity Attestation
Tokens [EAT]. CBOR Object Signing and Encryption (COSE) itself Tokens [EAT]. CBOR Object Signing and Encryption (COSE) itself
[RFC8152] is considered infrastructure. The encoding of public keys [RFC8152] is considered infrastructure. The encoding of public keys
skipping to change at line 342 skipping to change at line 342
the first item with the two tags. the first item with the two tags.
Should this file be reviewed by a human (directly in an editor or in Should this file be reviewed by a human (directly in an editor or in
a hexdump display), it will include the ASCII characters "CBOR" a hexdump display), it will include the ASCII characters "CBOR"
prominently. This value is also included simply because the inner prominently. This value is also included simply because the inner
nested tag needs to tag something. nested tag needs to tag something.
2.3.1. Example 2.3.1. Example
To construct an example without registering a new tag, we use ID 272 To construct an example without registering a new tag, we use ID 272
as assigned for application/missing-blocks+cbor-seq of the "CAP as assigned for application/missing-blocks+cbor-seq of the "CoAP
Content-Formats" registry [RFC9177]. Content-Formats" registry [RFC9177].
Using the technique described in Appendix B, this translates into the Using the technique described in Appendix B, this translates into the
tag TN(272) = 1668574090. tag TN(272) = 1668547090.
This is a somewhat contrived example, as this is not a media type This is a somewhat contrived example, as this is not a media type
that is likely to be committed to storage. Nonetheless, with this that is likely to be committed to storage. Nonetheless, with this
tag, missing blocks list 0, 8, 15 would be enveloped as (in tag, missing blocks list 0, 8, 15 would be enveloped as (in
diagnostic notation): diagnostic notation):
55800(1668574090('BOR')), 55800(1668547090('BOR')),
0, 0,
8, 8,
15 15
Or in hex: Or in hex:
# CBOR sequence with 4 elements # CBOR sequence with 4 elements
d9 d9f8 # tag(55800) d9 d9f8 # tag(55800)
da 63740212 # tag(1668574090) da 63740212 # tag(1668547090)
43 # bytes(3) 43 # bytes(3)
424f52 # "BOR" 424f52 # "BOR"
00 # unsigned(0) 00 # unsigned(0)
08 # unsigned(8) 08 # unsigned(8)
0f # unsigned(15) 0f # unsigned(15)
At the representation level, the unique fingerprint for application/ At the representation level, the unique fingerprint for application/
missing-blocks+cbor-seq is composed of the 8 bytes d9d9f8da63740212 missing-blocks+cbor-seq is composed of the 8 bytes d9d9f8da63740212
hex, after which the unadorned CBOR sequence (00... for the missing hex, after which the unadorned CBOR sequence (00... for the missing
block list given) is appended. block list given) is appended.
skipping to change at line 386 skipping to change at line 386
This document provides a way to identify CBOR Protocol objects. This document provides a way to identify CBOR Protocol objects.
Clearly identifying CBOR contents in files may have a variety of Clearly identifying CBOR contents in files may have a variety of
impacts. impacts.
The most obvious is that it may allow malware to identify interesting The most obvious is that it may allow malware to identify interesting
stored objects, and then exfiltrate or corrupt them. stored objects, and then exfiltrate or corrupt them.
Protective applications (that check data) cannot rely on the Protective applications (that check data) cannot rely on the
applications they try to protect (that use the data) to make exactly applications they try to protect (that use the data) to make exactly
the same decisions in recognizing file formats. (This is an instance the same decisions in recognizing file formats. (This is an instance
of a check versus a use issue.) For example, end-point assessment of a check versus use issue.) For example, end-point assessment
technologies should not solely rely on the labeling approaches technologies should not solely rely on the labeling approaches
described in this document to decide whether to inspect a given file. described in this document to decide whether to inspect a given file.
Similarly, depending on operating system configurations and related Similarly, depending on operating system configurations and related
properties of the execution environment, the labeling might influence properties of the execution environment, the labeling might influence
the default application used to process a file in a way that may not the default application used to process a file in a way that may not
be predicted by a protective application. be predicted by a protective application.
4. IANA Considerations 4. IANA Considerations
These IANA considerations are entirely about CBOR tags in the These IANA considerations are entirely about CBOR tags in the
"Concise Binary Object Representation (CBOR) Tags" registry "Concise Binary Object Representation (CBOR) Tags" registry
[IANA.CBOR-TAGS]. [IANA.CBOR-TAGS].
Section 4.1 documents the allocation for a CBOR tag to be used in a Section 4.1 documents the allocation for a CBOR tag to be used in a
CBOR sequence to identify the sequence (an example for using this tag CBOR sequence to identify the sequence (an example for using this tag
is found in Appendix C). Section 4.3 allocates a CBOR tag for each is found in Appendix C). Section 4.2 documents the allocation for a
actual or potential CoAP Content-Format number (examples are in CBOR tag to be used in the CBOR-Labeled Non-CBOR Data Enveloping
Appendix B). Method (Appendix D, which also shows examples). Section 4.3
allocates a CBOR tag for each actual or potential CoAP Content-Format
number (examples are in Appendix B).
4.1. Labeled CBOR Sequence Tag 4.1. Labeled CBOR Sequence Tag
IANA has allocated tag 55800 for the Labeled CBOR Sequence Enveloping IANA has allocated tag 55800 for the Labeled CBOR Sequence Enveloping
Method from the "CBOR Tags" registry. IANA has updated this tag Method from the "CBOR Tags" registry. IANA has updated this tag
registration to point to this document. registration to point to this document.
This tag is from the First Come First Served area. This tag is from the First Come First Served area.
The value has been picked to have properties similar to the 55799 tag The value has been picked to have properties similar to the 55799 tag
skipping to change at line 593 skipping to change at line 595
Bormann, "Sensor Measurement Lists (SenML)", RFC 8428, Bormann, "Sensor Measurement Lists (SenML)", RFC 8428,
DOI 10.17487/RFC8428, August 2018, DOI 10.17487/RFC8428, August 2018,
<https://www.rfc-editor.org/info/rfc8428>. <https://www.rfc-editor.org/info/rfc8428>.
[RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data
Definition Language (CDDL): A Notational Convention to Definition Language (CDDL): A Notational Convention to
Express Concise Binary Object Representation (CBOR) and Express Concise Binary Object Representation (CBOR) and
JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610,
June 2019, <https://www.rfc-editor.org/info/rfc8610>. June 2019, <https://www.rfc-editor.org/info/rfc8610>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
[RFC9177] Boucadair, M. and J. Shallow, "Constrained Application [RFC9177] Boucadair, M. and J. Shallow, "Constrained Application
Protocol (CoAP) Block-Wise Transfer Options Supporting Protocol (CoAP) Block-Wise Transfer Options Supporting
Robust Transmission", RFC 9177, DOI 10.17487/RFC9177, Robust Transmission", RFC 9177, DOI 10.17487/RFC9177,
March 2022, <https://www.rfc-editor.org/info/rfc9177>. March 2022, <https://www.rfc-editor.org/info/rfc9177>.
[X.690] ITU-T, "Information technology - ASN.1 encoding rules: [X.690] ITU-T, "Information technology - ASN.1 encoding rules:
Specification of Basic Encoding Rules (BER), Canonical Specification of Basic Encoding Rules (BER), Canonical
Encoding Rules (CER) and Distinguished Encoding Rules Encoding Rules (CER) and Distinguished Encoding Rules
(DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1, (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1,
February 2021, <https://www.itu.int/rec/T-REC-X.690>. February 2021, <https://www.itu.int/rec/T-REC-X.690>.
skipping to change at line 686 skipping to change at line 693
If the 8 bytes are a problem on the wire (and they often are if CBOR If the 8 bytes are a problem on the wire (and they often are if CBOR
is being considered), then the Labeled CBOR Sequence format should be is being considered), then the Labeled CBOR Sequence format should be
adopted for the stored format. adopted for the stored format.
A.2. Can many items be trivially concatenated? A.2. Can many items be trivially concatenated?
If the programs that read the contents of the file already expect to If the programs that read the contents of the file already expect to
process all of the CBOR data items in the file (not just the first), process all of the CBOR data items in the file (not just the first),
then the Labeled CBOR Sequence format may be easily retrofitted. then the Labeled CBOR Sequence format may be easily retrofitted.
The program involved may throw errors or warnings on the Labeled CBOR The programs involved may throw errors or warnings on the Labeled
Sequence if they have not yet been updated, but this may not be a CBOR Sequence if they have not yet been updated, but this may not be
problem. a problem.
There are situations where multiple objects may be concatenated into There are situations where multiple objects may be concatenated into
a single file. If each object is preceded by a Labeled CBOR Sequence a single file. If each object is preceded by a Labeled CBOR Sequence
label, then there may be multiple such labels in the file. label, then there may be multiple such labels in the file.
A protocol based on CBOR Sequences may specify that Labeled CBOR A protocol based on CBOR Sequences may specify that Labeled CBOR
Sequence labels can occur within a CBOR Sequence, possibly even to Sequence labels can occur within a CBOR Sequence, possibly even to
switch to data items following in the sequence that are of a switch to data items following in the sequence that are of a
different type. different type.
skipping to change at line 733 skipping to change at line 740
If the Protocol expects to use other tags at its top level, then the If the Protocol expects to use other tags at its top level, then the
use of the CBOR Tag Wrapped format may be easy to explain at the same use of the CBOR Tag Wrapped format may be easy to explain at the same
place in the protocol description. place in the protocol description.
Appendix B. CBOR Tags for CoAP Content Formats Appendix B. CBOR Tags for CoAP Content Formats
Section 5.10.3 of [RFC7252] defines the concept of a Content-Format, Section 5.10.3 of [RFC7252] defines the concept of a Content-Format,
which is a short, 16-bit unsigned integer that identifies a specific which is a short, 16-bit unsigned integer that identifies a specific
content type (media type plus (optionally) parameters), optionally content type (media type plus (optionally) parameters), optionally
together with a content encoding. together with a content coding (see Section 8.4.1 of [RFC9110]).
Outside of a transfer protocol that indicates the Content-Format for Outside of a transfer protocol that indicates the Content-Format for
a representation, it may be necessary to identify the Content-Format a representation, it may be necessary to identify the Content-Format
of the representation when it is stored in a file, in firmware, or of the representation when it is stored in a file, in firmware, or
when debugging. when debugging.
This specification allocates CBOR tag numbers 1668546817 (0x63740101) This specification allocates CBOR tag numbers 1668546817 (0x63740101)
to 1668612095 (0x6374FFFF) for the tagging of representations of to 1668612095 (0x6374FFFF) for the tagging of representations of
specific content formats. specific content formats.
skipping to change at line 781 skipping to change at line 788
string wrapping). This only works for Content-Formats that string wrapping). This only works for Content-Formats that
are represented by a single CBOR data item in identity are represented by a single CBOR data item in identity
content-coding. content-coding.
2. The data items in the CBOR sequence within the representation, 2. The data items in the CBOR sequence within the representation,
without byte string wrapping, but wrapped in a CBOR array. without byte string wrapping, but wrapped in a CBOR array.
This works for Content-Formats that are represented by a CBOR This works for Content-Formats that are represented by a CBOR
sequence in identity content-coding. sequence in identity content-coding.
Tags 55800 (Section 2.3) or 55801 (Appendix D): the byte string Tags 55800 (Section 2.3) or 55801 (Appendix D): the byte string
"BOR", signifying that the representation of the given content- 'BOR', signifying that the representation of the given content-
format follows in the file, in the way defined for these tags. format follows in the file, in the way defined for these tags.
B.1. Content-Format Tag Examples B.1. Content-Format Tag Examples
The "CoAP Content-Formats" registry [IANA.CORE-PARAMETERS] defines The "CoAP Content-Formats" registry [IANA.CORE-PARAMETERS] defines
content formats that can be used as examples: content formats that can be used as examples:
* As discussed in Section 2.2.1, Content-Format ID 112 represents * As discussed in Section 2.2.1, Content-Format ID 112 represents
the application/senml+cbor media type (no parameters). The the application/senml+cbor media type (no parameters). The
corresponding tag number is TN(112) = 1668546929. corresponding tag number is TN(112) = 1668546929.
skipping to change at line 805 skipping to change at line 812
senml-cbor = #6.1668546929(bstr) senml-cbor = #6.1668546929(bstr)
Note that a byte string is used as the type of the tag content Note that a byte string is used as the type of the tag content
because a media type representation in general can be any byte because a media type representation in general can be any byte
string. string.
* Content-Format ID 272 represents the application/missing- * Content-Format ID 272 represents the application/missing-
blocks+cbor-seq media type, which is a CBOR sequence [RFC9177]. blocks+cbor-seq media type, which is a CBOR sequence [RFC9177].
The corresponding tag number is TN(272) = 1668574090. The corresponding tag number is TN(272) = 1668547090.
The following CDDL snippet can be used to identify application/ The following CDDL snippet can be used to identify application/
missing-blocks+cbor-seq representations as embedded in a CBOR byte missing-blocks+cbor-seq representations as embedded in a CBOR byte
string: string:
missing-blocks = #6.1668574090(bstr) missing-blocks = #6.1668547090(bstr)
Appendix C. Example from Openswan Appendix C. Example from Openswan
The Openswan IPsec project has a daemon ("pluto") and two control The Openswan IPsec project has a daemon ("pluto") and two control
programs ("addconn" and "whack"). They communicate via a Unix-domain programs ("addconn" and "whack"). They communicate via a Unix-domain
socket, over which a C-structure containing pointers to strings is socket, over which a C-structure containing pointers to strings is
serialized using a bespoke mechanism. This is normally not a problem serialized using a bespoke mechanism. This is normally not a problem
as the structure is compiled by the same compiler; but when there are as the structure is compiled by the same compiler; but when there are
upgrades, it is possible for the daemon and the control programs to upgrades, it is possible for the daemon and the control programs to
get out of sync by the bespoke serialization. As a result, there are get out of sync by the bespoke serialization. As a result, there are
skipping to change at line 852 skipping to change at line 859
55800(1330664270(h'424F52')) 55800(1330664270(h'424F52'))
Or in hex: Or in hex:
d9 d9f8 # tag(55800) d9 d9f8 # tag(55800)
da 4f50534e # tag(1330664270) da 4f50534e # tag(1330664270)
43 # bytes(3) 43 # bytes(3)
424f52 # "BOR" 424f52 # "BOR"
Appendix D. Using CBOR Labels for Non-CBOR data Appendix D. Using CBOR Labels for Non-CBOR Data
The CBOR-Labeled Non-CBOR data method is appropriate for adding a The CBOR-Labeled Non-CBOR data method is appropriate for adding a
magic number to a Non-CBOR data format, particularly one that can be magic number to a Non-CBOR data format, particularly one that can be
described by a Content-Format tag (Appendix B). described by a Content-Format tag (Appendix B).
This method prepends a CBOR data item to the Non-CBOR data; this data This method prepends a CBOR data item to the Non-CBOR data; this data
item is called the "header" and, similar to the Labeled CBOR-Sequence item is called the "header" and, similar to the Labeled CBOR-Sequence
label, consists of two nested tags around a constant byte string for label, consists of two nested tags around a constant byte string for
a total of 12 bytes. a total of 12 bytes.
1. The outer tag is the CBOR-Labeled Non-CBOR Data tag, 55801. 1. The outer tag is the CBOR-Labeled Non-CBOR Data tag, 55801.
2. The inner tag is a CBOR tag from the First Come First Served 2. The inner tag is a CBOR tag from the First Come First Served
space that uniquely identifies the CBOR Protocol. As with CBOR space that uniquely identifies the CBOR Protocol. As with CBOR
Tag Wrapped, the use of a 4-byte tag is encouraged that encodes Tag Wrapped, the use of a 4-byte tag is encouraged that encodes
without zero bytes. without zero bytes.
3. The tag content is a 3-byte CBOR byte string containing 3. The tag content is a 3-byte CBOR byte string containing
0x42_4F_52 ("BOR" in diagnostic notation). 0x42_4F_52 ('BOR' in diagnostic notation).
The outer tag in the label identifies the file as being prefixed by a The outer tag in the label identifies the file as being prefixed by a
Non-CBOR data label and does so with all the desirable properties Non-CBOR data label and does so with all the desirable properties
explained in Section 3.4.6 of [STD94]. Specifically, it does not explained in Section 3.4.6 of [STD94]. Specifically, it does not
appear to conflict with any known file types, and it is not valid appear to conflict with any known file types, and it is not valid
Unicode in any Unicode encoding. Unicode in any Unicode encoding.
The inner tag in the label identifies which Non-CBOR Protocol is The inner tag in the label identifies which Non-CBOR Protocol is
used. used.
The inner tag content is a constant byte string that is represented The inner tag content is a constant byte string that is represented
as 0x43_42_4f_52, the ASCII characters "CBOR", which is the CBOR- as 0x43_42_4f_52, the ASCII characters "CBOR", which is the CBOR-
encoded data item for the 3-byte string 0x42_4f_52 ("BOR" in encoded data item for the 3-byte string 0x42_4f_52 ('BOR' in
diagnostic notation). diagnostic notation).
The actual Non-CBOR Protocol data then follow directly appended to The actual Non-CBOR Protocol data then follow directly appended to
the CBOR representation of the header. This allows the application the CBOR representation of the header. This allows the application
to trivially remove the header item with the two nested tags and the to trivially remove the header item with the two nested tags and the
byte string. byte string.
As with the Labeled CBOR Sequence {#sequences}, this choice of the As with the Labeled CBOR Sequence {#sequences}, this choice of the
tag content places the ASCII characters "CBOR" prominently into the tag content places the ASCII characters "CBOR" prominently into the
header. header.
D.1. Content-Format Tag Examples D.1. Content-Format Tag Examples
The "CoAP Content-Formats" registry [IANA.CORE-PARAMETERS] defines The "CoAP Content-Formats" registry [IANA.CORE-PARAMETERS] defines
content formats that can be used as examples: content formats that can be used as examples:
* Content-Format ID 432 represents the application/td+json media * Content-Format ID 432 represents the application/td+json media
type (no parameters). type (no parameters).
The corresponding tag number is TN(432) = 1668574250. The corresponding tag number is TN(432) = 1668547250.
The following CDDL snippet can be used to identify a CBOR-Labeled The following CDDL snippet can be used to identify a CBOR-Labeled
Non-CBOR data for application/td+json representations: Non-CBOR data for application/td+json representations:
td-json-header = #6.55801(#6.1668574250('BOR')) td-json-header = #6.55801(#6.1668547250('BOR'))
* Content-Format 11050 represents the application/json media type in * Content-Format 11050 represents the application/json media type in
deflate content-coding. deflate content-coding.
The corresponding tag number is TN(11050) = 1668557910. The corresponding tag number is TN(11050) = 1668557910.
The following CDDL snippet can be used to identify a CBOR-Labeled The following CDDL snippet can be used to identify a CBOR-Labeled
Non-CBOR data for application/json representations compressed in Non-CBOR data for application/json representations compressed in
deflate content-coding: deflate content-coding:
 End of changes. 22 change blocks. 
26 lines changed or deleted 33 lines changed or added

This html diff was produced by rfcdiff 1.48.