idnits 2.17.1 draft-bormann-cbor-notable-tags-02.txt: -(3): Line appears to be too long, but this could be caused by non-ascii characters in UTF-8 encoding Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == There are 2 instances of lines with non-ascii characters in the document. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 19 instances of too long lines in the document, the longest one being 123 characters in excess of 72. == There are 9 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 451 has weird spacing: '... string iden...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (25 June 2020) is 1399 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Outdated reference: A later version (-16) exists of draft-ietf-cbor-7049bis-14 == Outdated reference: A later version (-20) exists of draft-ietf-core-yang-cbor-12 ** Obsolete normative reference: RFC 7049 (Obsoleted by RFC 8949) ** Obsolete normative reference: RFC 8152 (Obsoleted by RFC 9052, RFC 9053) == Outdated reference: A later version (-04) exists of draft-bormann-cbor-time-tag-03 == Outdated reference: A later version (-07) exists of draft-ietf-cbor-date-tag-01 == Outdated reference: A later version (-12) exists of draft-ietf-cose-rfc8152bis-algs-09 == Outdated reference: A later version (-15) exists of draft-ietf-cose-rfc8152bis-struct-10 Summary: 3 errors (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group C. Bormann 3 Internet-Draft Universität Bremen TZI 4 Intended status: Informational 25 June 2020 5 Expires: 27 December 2020 7 Notable CBOR Tags 8 draft-bormann-cbor-notable-tags-02 10 Abstract 12 The Concise Binary Object Representation (CBOR, RFC 7049) is a data 13 format whose design goals include the possibility of extremely small 14 code size, fairly small message size, and extensibility without the 15 need for version negotiation. 17 In CBOR, one point of extensibility is the definition of CBOR tags. 18 RFC 7049 and its revision 7049bis define a basic set of tags as well 19 as a registry that can be used to contribute additional tag 20 definitions [IANA.cbor-tags]. Since RFC 7049 was published, some 80 21 tag definitions have been added to that registry. 23 The present document provides a roadmap to a large subset of these 24 tag definitions. Where applicable, it points to a IETF standards or 25 standard development document that specifies the tag. Where no such 26 document exists, the intention is to collect specification 27 information from the sources of the registrations. After some more 28 development, the present document is intended to be useful as a 29 reference document for the IANA registrations of the CBOR tags the 30 definitions of which have been collected. 32 Note to Readers 34 This is an individual submission to the CBOR working group of the 35 IETF, https://datatracker.ietf.org/wg/cbor/about/ 36 (https://datatracker.ietf.org/wg/cbor/about/). Discussion currently 37 takes places on the github repository https://github.com/cabo/ 38 notable-tags (https://github.com/cabo/notable-tags). If the CBOR WG 39 believes this is a useful document, discussion is likely to move to 40 the CBOR WG mailing list and a github repository at the CBOR WG 41 github organization, https://github.com/cbor-wg (https://github.com/ 42 cbor-wg). 44 The current version is true work in progress; some of the sections 45 haven't been filled in yet, and in particular, permission has not 46 been obtained from tag definition authors to copy over their text. 48 Status of This Memo 50 This Internet-Draft is submitted in full conformance with the 51 provisions of BCP 78 and BCP 79. 53 Internet-Drafts are working documents of the Internet Engineering 54 Task Force (IETF). Note that other groups may also distribute 55 working documents as Internet-Drafts. The list of current Internet- 56 Drafts is at https://datatracker.ietf.org/drafts/current/. 58 Internet-Drafts are draft documents valid for a maximum of six months 59 and may be updated, replaced, or obsoleted by other documents at any 60 time. It is inappropriate to use Internet-Drafts as reference 61 material or to cite them other than as "work in progress." 63 This Internet-Draft will expire on 27 December 2020. 65 Copyright Notice 67 Copyright (c) 2020 IETF Trust and the persons identified as the 68 document authors. All rights reserved. 70 This document is subject to BCP 78 and the IETF Trust's Legal 71 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 72 license-info) in effect on the date of publication of this document. 73 Please review these documents carefully, as they describe your rights 74 and restrictions with respect to this document. Code Components 75 extracted from this document must include Simplified BSD License text 76 as described in Section 4.e of the Trust Legal Provisions and are 77 provided without warranty as described in the Simplified BSD License. 79 Table of Contents 81 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 82 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 83 2. RFC 7049 (CBOR) . . . . . . . . . . . . . . . . . . . . . . . 4 84 2.1. Tags Related to Those Defined in RFC 7049 . . . . . . . . 5 85 3. Security . . . . . . . . . . . . . . . . . . . . . . . . . . 5 86 3.1. RFC 8152 (COSE) . . . . . . . . . . . . . . . . . . . . . 5 87 3.2. RFC 8392 (CWT) . . . . . . . . . . . . . . . . . . . . . 6 88 4. CBOR-based Representation Formats . . . . . . . . . . . . . . 6 89 4.1. YANG-CBOR . . . . . . . . . . . . . . . . . . . . . . . . 7 90 5. Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . 7 91 5.1. DOTS . . . . . . . . . . . . . . . . . . . . . . . . . . 7 92 5.2. RAINS . . . . . . . . . . . . . . . . . . . . . . . . . . 8 93 6. Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . 8 94 6.1. Advanced arithmetic . . . . . . . . . . . . . . . . . . . 8 95 6.2. Variants of undefined . . . . . . . . . . . . . . . . . . 8 96 6.3. Typed and Homogeneous Arrays . . . . . . . . . . . . . . 9 97 7. Domain-Specific . . . . . . . . . . . . . . . . . . . . . . . 10 98 7.1. Extended Time Formats . . . . . . . . . . . . . . . . . . 11 99 8. Platform-oriented . . . . . . . . . . . . . . . . . . . . . . 11 100 8.1. Perl . . . . . . . . . . . . . . . . . . . . . . . . . . 11 101 8.2. JSON . . . . . . . . . . . . . . . . . . . . . . . . . . 12 102 8.3. Weird text encodings . . . . . . . . . . . . . . . . . . 12 103 9. Application-specific . . . . . . . . . . . . . . . . . . . . 13 104 10. Implementation aids . . . . . . . . . . . . . . . . . . . . . 13 105 10.1. Invalid Tag . . . . . . . . . . . . . . . . . . . . . . 14 106 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 107 12. Security Considerations . . . . . . . . . . . . . . . . . . . 15 108 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 109 13.1. Normative References . . . . . . . . . . . . . . . . . . 15 110 13.2. Informative References . . . . . . . . . . . . . . . . . 16 111 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 17 112 Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 17 113 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18 115 1. Introduction 117 (TO DO, expand on text from abstract here; move references here and 118 neuter them in the abstract as per Section 4.3 of [RFC7322].) 120 The selection of the tags presented here is somewhat arbitrary; 121 considerations such as how wide the scope and area of application of 122 a tag definition is combine with an assessment how "ready to use" the 123 tag definition is (i.e., is the tag specification in a state where it 124 can be used). 126 This document can only be a snapshot of a subset of the current 127 registrations. The most up to date set of registrations is always 128 available in the registry at [IANA.cbor-tags]. 130 1.1. Terminology 132 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 133 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 134 document are to be interpreted as described in RFC 2119 [RFC2119]. 136 The definitions of [I-D.ietf-cbor-7049bis] apply. The term "byte" is 137 used in its now customary sense as a synonym for "octet". Where bit 138 arithmetic is explained, this document uses the notation familiar 139 from the programming language C (including C++14's 0bnnn binary 140 literals), except that the operator "**" stands for exponentiation. 142 2. RFC 7049 (CBOR) 144 [RFC7049] defines a number of tags that are listed here for 145 convenience only. 147 +------------+-------------+-----------------------+------------+ 148 | Tag number | Tag content | Short Description | Section of | 149 | | | | RFC 7049 | 150 +============+=============+=======================+============+ 151 | 0 | UTF-8 | Standard date/time | 2.4.1 | 152 | | string | string | | 153 +------------+-------------+-----------------------+------------+ 154 | 1 | multiple | Epoch-based date/time | 2.4.1 | 155 +------------+-------------+-----------------------+------------+ 156 | 2 | byte string | Positive bignum | 2.4.2 | 157 +------------+-------------+-----------------------+------------+ 158 | 3 | byte string | Negative bignum | 2.4.2 | 159 +------------+-------------+-----------------------+------------+ 160 | 4 | array | Decimal fraction | 2.4.3 | 161 +------------+-------------+-----------------------+------------+ 162 | 5 | array | Bigfloat | 2.4.3 | 163 +------------+-------------+-----------------------+------------+ 164 | 21 | multiple | Expected conversion | 2.4.4.2 | 165 | | | to base64url encoding | | 166 +------------+-------------+-----------------------+------------+ 167 | 22 | multiple | Expected conversion | 2.4.4.2 | 168 | | | to base64 encoding | | 169 +------------+-------------+-----------------------+------------+ 170 | 23 | multiple | Expected conversion | 2.4.4.2 | 171 | | | to base16 encoding | | 172 +------------+-------------+-----------------------+------------+ 173 | 24 | byte string | Encoded CBOR data | 2.4.4.1 | 174 | | | item | | 175 +------------+-------------+-----------------------+------------+ 176 | 32 | UTF-8 | URI | 2.4.4.3 | 177 | | string | | | 178 +------------+-------------+-----------------------+------------+ 179 | 33 | UTF-8 | base64url | 2.4.4.3 | 180 | | string | | | 181 +------------+-------------+-----------------------+------------+ 182 | 34 | UTF-8 | base64 | 2.4.4.3 | 183 | | string | | | 184 +------------+-------------+-----------------------+------------+ 185 | 35 | UTF-8 | Regular expression | 2.4.4.3 | 186 | | string | | | 187 +------------+-------------+-----------------------+------------+ 188 | 36 | UTF-8 | MIME message | 2.4.4.3 | 189 | | string | | | 190 +------------+-------------+-----------------------+------------+ 191 | 55799 | multiple | Self-describe CBOR | 2.4.5 | 192 +------------+-------------+-----------------------+------------+ 194 Table 1: Tag numbers defined in RFC 7049 196 2.1. Tags Related to Those Defined in RFC 7049 198 Separately registered tags that are directly related to the tags 199 predefined in RFC 7049 include: 201 * Tag 63, registered by this document, is a parallel to tag 24, with 202 the single difference that its byte string tag content carries a 203 CBOR Sequence [RFC8742] instead of a single CBOR data items. 205 * Tag 257, registered by Peter Occil with a specification in 206 http://peteroupc.github.io/CBOR/binarymime.html 207 (http://peteroupc.github.io/CBOR/binarymime.html), is a parallel 208 to tag 36, except that the tag content is a byte string, which 209 therefore can also carry binary MIME messages as per [RFC2045]. 211 3. Security 213 A number of CBOR tags are defined in security specifications that 214 make use of CBOR. 216 3.1. RFC 8152 (COSE) 218 [RFC8152] defines CBOR Object Signing and Encryption (COSE). A 219 revision is in process that splits this specification into the data 220 structure definitions [I-D.ietf-cose-rfc8152bis-struct], which will 221 define another tag for COSE standalone counter signature, and the 222 algorithms employed [I-D.ietf-cose-rfc8152bis-algs]. 224 +------------+---------------+-----------------------+ 225 | Tag number | Tag content | Short Description | 226 +============+===============+=======================+ 227 | 16 | COSE_Encrypt0 | COSE Single Recipient | 228 | | | Encrypted Data Object | 229 +------------+---------------+-----------------------+ 230 | 17 | COSE_Mac0 | COSE Mac w/o | 231 | | | Recipients Object | 232 +------------+---------------+-----------------------+ 233 | 18 | COSE_Sign1 | COSE Single Signer | 234 | | | Data Object | 235 +------------+---------------+-----------------------+ 236 | 96 | COSE_Encrypt | COSE Encrypted Data | 237 | | | Object | 238 +------------+---------------+-----------------------+ 239 | 97 | COSE_Mac | COSE MACed Data | 240 | | | Object | 241 +------------+---------------+-----------------------+ 242 | 98 | COSE_Sign | COSE Signed Data | 243 | | | Object | 244 +------------+---------------+-----------------------+ 246 Table 2: Tag numbers defined in RFC 8152, COSE 248 3.2. RFC 8392 (CWT) 250 [RFC8392] defines the CBOR Web Token (CWT), making use of COSE to 251 define a CBOR variant of the JOSE Web Token (JWT), [RFC7519], a 252 standardized security token that has found use 254 +------------+----------------------+----------------------+ 255 | Tag number | Tag content | Short Description | 256 +============+======================+======================+ 257 | 61 | CBOR Web Token (CWT) | CBOR Web Token (CWT) | 258 +------------+----------------------+----------------------+ 260 Table 3: Tag number defined for RFC 8392 CBOR Web Token 261 (CWT) 263 4. CBOR-based Representation Formats 265 Representation formats can be built on top of CBOR. 267 4.1. YANG-CBOR 269 YANG [RFC7950] is a data modeling language originally designed in the 270 context of the Network Configuration Protocol (NETCONF) [RFC6241], 271 now widely used for modeling management and configuration 272 information. [RFC7950] defines an XML-based representation format, 273 and [RFC7951] defines a JSON-based [RFC8259] representation format 274 for YANG. 276 YANG-CBOR [I-D.ietf-core-yang-cbor] is a representation format for 277 YANG data in CBOR. 279 +--------+----------------------+---------------------+------------+ 280 | Tag | Tag content | Short Description | Section of | 281 | number | | | YANG-CBOR | 282 +========+======================+=====================+============+ 283 | 43 | byte string | YANG bits datatype | 6.7 | 284 +--------+----------------------+---------------------+------------+ 285 | 44 | unsigned integer | YANG enumeration | 6.6 | 286 | | | datatype | | 287 +--------+----------------------+---------------------+------------+ 288 | 45 | unsigned integer or | YANG identityref | 6.10 | 289 | | text string | datatype | | 290 +--------+----------------------+---------------------+------------+ 291 | 46 | unsigned integer or | YANG instance- | 6.13 | 292 | | text string or array | identifier datatype | | 293 +--------+----------------------+---------------------+------------+ 294 | 47 | unsigned integer | YANG Schema Item | 3.2 | 295 | | | iDentifier (sid) | | 296 +--------+----------------------+---------------------+------------+ 298 Table 4: Tag number defined for YANG-CBOR 300 5. Protocols 302 Protocols may want to allocate CBOR tag numbers to identify specific 303 protocol elements. 305 5.1. DOTS 307 DDoS Open Threat Signaling (DOTS) defines tag number 271 for the DOTS 308 signal channel object in [I-D.ietf-dots-signal-channel]. 310 5.2. RAINS 312 As an example for how experimental protocols can make use of CBOR tag 313 definitions, the RAINS (Another Internet Naming Service) Protocol 314 Specification defines tag number 15309736 for a RAINS Message 315 [I-D.trammell-rains-protocol]. 317 6. Datatypes 319 6.1. Advanced arithmetic 321 A number of tags have been registered for arithmetic representations 322 beyond those built into CBOR and defined by tags in [RFC7049]. These 323 are all documented under "http://peteroupc.github.io/CBOR/"; the last 324 pathname component is given in Table 5. 326 (TO DO: Obtain permission to copy the definitions here.) 328 +------------+-------------+-----------------------+---------------+ 329 | Tag number | Tag content | Short Description | Reference | 330 +============+=============+=======================+===============+ 331 | 30 | array | Rational number | rational.html | 332 +------------+-------------+-----------------------+---------------+ 333 | 264 | array | Decimal fraction with | bigfrac.html | 334 | | | arbitrary exponent | | 335 +------------+-------------+-----------------------+---------------+ 336 | 265 | array | Bigfloat with | bigfrac.html | 337 | | | arbitrary exponent | | 338 +------------+-------------+-----------------------+---------------+ 339 | 268 | array | Extended decimal | extended.html | 340 | | | fraction | | 341 +------------+-------------+-----------------------+---------------+ 342 | 269 | array | Extended bigfloat | extended.html | 343 +------------+-------------+-----------------------+---------------+ 344 | 270 | array | Extended rational | extended.html | 345 | | | number | | 346 +------------+-------------+-----------------------+---------------+ 348 Table 5: Tags for advanced arithmetic 350 6.2. Variants of undefined 352 "https://github.com/svaarala/cbor-specs/blob/master/cbor-absent- 353 tag.rst" defines tag 31 to be applied to the CBOR value Undefined 354 (0xf7), slightly modifying its semantics to stand for an absent value 355 in a CBOR Array. 357 (TO DO: Obtain permission to copy the definitions here.) 359 6.3. Typed and Homogeneous Arrays 361 [RFC8746] defines tags for various kinds of arrays. A summary is 362 reproduced in Table 6. 364 +------+-------------+---------------------------------------------+ 365 | Tag | Data Item | Semantics | 366 +======+=============+=============================================+ 367 | 64 | byte string | uint8 Typed Array | 368 +------+-------------+---------------------------------------------+ 369 | 65 | byte string | uint16, big endian, Typed Array | 370 +------+-------------+---------------------------------------------+ 371 | 66 | byte string | uint32, big endian, Typed Array | 372 +------+-------------+---------------------------------------------+ 373 | 67 | byte string | uint64, big endian, Typed Array | 374 +------+-------------+---------------------------------------------+ 375 | 68 | byte string | uint8 Typed Array, clamped arithmetic | 376 +------+-------------+---------------------------------------------+ 377 | 69 | byte string | uint16, little endian, Typed Array | 378 +------+-------------+---------------------------------------------+ 379 | 70 | byte string | uint32, little endian, Typed Array | 380 +------+-------------+---------------------------------------------+ 381 | 71 | byte string | uint64, little endian, Typed Array | 382 +------+-------------+---------------------------------------------+ 383 | 72 | byte string | sint8 Typed Array | 384 +------+-------------+---------------------------------------------+ 385 | 73 | byte string | sint16, big endian, Typed Array | 386 +------+-------------+---------------------------------------------+ 387 | 74 | byte string | sint32, big endian, Typed Array | 388 +------+-------------+---------------------------------------------+ 389 | 75 | byte string | sint64, big endian, Typed Array | 390 +------+-------------+---------------------------------------------+ 391 | 76 | byte string | (reserved) | 392 +------+-------------+---------------------------------------------+ 393 | 77 | byte string | sint16, little endian, Typed Array | 394 +------+-------------+---------------------------------------------+ 395 | 78 | byte string | sint32, little endian, Typed Array | 396 +------+-------------+---------------------------------------------+ 397 | 79 | byte string | sint64, little endian, Typed Array | 398 +------+-------------+---------------------------------------------+ 399 | 80 | byte string | IEEE 754 binary16, big endian, Typed Array | 400 +------+-------------+---------------------------------------------+ 401 | 81 | byte string | IEEE 754 binary32, big endian, Typed Array | 402 +------+-------------+---------------------------------------------+ 403 | 82 | byte string | IEEE 754 binary64, big endian, Typed Array | 404 +------+-------------+---------------------------------------------+ 405 | 83 | byte string | IEEE 754 binary128, big endian, Typed Array | 406 +------+-------------+---------------------------------------------+ 407 | 84 | byte string | IEEE 754 binary16, little endian, Typed | 408 | | | Array | 409 +------+-------------+---------------------------------------------+ 410 | 85 | byte string | IEEE 754 binary32, little endian, Typed | 411 | | | Array | 412 +------+-------------+---------------------------------------------+ 413 | 86 | byte string | IEEE 754 binary64, little endian, Typed | 414 | | | Array | 415 +------+-------------+---------------------------------------------+ 416 | 87 | byte string | IEEE 754 binary128, little endian, Typed | 417 | | | Array | 418 +------+-------------+---------------------------------------------+ 419 | 40 | array of | Multi-dimensional Array, row-major order | 420 | | two arrays* | | 421 +------+-------------+---------------------------------------------+ 422 | 1040 | array of | Multi-dimensional Array, column-major order | 423 | | two arrays* | | 424 +------+-------------+---------------------------------------------+ 425 | 41 | array | Homogeneous Array | 426 +------+-------------+---------------------------------------------+ 428 Table 6: Tag numbers defined for Arrays 430 7. Domain-Specific 432 (TO DO: Obtain permission to copy the definitions here; create proper 433 table.) 435 37 byte string Binary UUID ([RFC4122] section [https://github.com/lucas-clemente/cbor-specs/blob/master/uuid.md][Lucas_Clemente] 436 4.1.2) 437 38 array Language-tagged string [http://peteroupc.github.io/CBOR/langtags.html][Peter_Occil] 438 257 byte string Binary MIME message [http://peteroupc.github.io/CBOR/binarymime.html][Peter_Occil] 440 260 byte string Network Address (IPv4 or IPv6 or [http://www.employees.org/~ravir/cbor-network.txt][Ravi_Raju] 441 MAC Address) 442 map Network Address Prefix (IPv4 or 443 261 (IPAddress + IPv6 Address + Mask Length) [https://github.com/toravir/CBOR-Tag-Specs/blob/master/networkPrefix.md][Ravi_Raju] 444 Mask Length) 446 263 byte string Hexadecimal string [https://github.com/toravir/CBOR-Tag-Specs/blob/master/hexString.md][Ravi_Raju] 448 266 text string Internationalized resource [https://peteroupc.github.io/CBOR/iri.html][Peter_Occil] 449 identifier (IRI) 450 Internationalized resource 451 267 text string identifier reference (IRI [https://peteroupc.github.io/CBOR/iri.html][Peter_Occil] 452 reference) 454 7.1. Extended Time Formats 456 Additional tag definitions have been provided for date and time 457 values. 459 +------+---------+-------------------+-----------------------------+ 460 | Tag | Data | Semantics | Reference | 461 | | Item | | | 462 +======+=========+===================+=============================+ 463 | 100 | integer | date in number of | [I-D.ietf-cbor-date-tag] | 464 | | | days since epoch | | 465 +------+---------+-------------------+-----------------------------+ 466 | 1004 | text | RFC 3339 full- | [I-D.ietf-cbor-date-tag] | 467 | | string | date string | | 468 +------+---------+-------------------+-----------------------------+ 469 | 1001 | map | extended time | [I-D.bormann-cbor-time-tag] | 470 +------+---------+-------------------+-----------------------------+ 471 | 1002 | map | duration | [I-D.bormann-cbor-time-tag] | 472 +------+---------+-------------------+-----------------------------+ 473 | 1003 | map | period | [I-D.bormann-cbor-time-tag] | 474 +------+---------+-------------------+-----------------------------+ 476 Table 7: Tag numbers for date and time 478 TO DO: Wait for registration for 100 and 1004 to have completed. 480 8. Platform-oriented 482 8.1. Perl 484 (These are actually not as Perl-specific as the title of this section 485 suggests. See also the penultimate paragraph of Section 3.4 of 486 [I-D.ietf-cbor-7049bis].) 488 These are all documented under "http://cbor.schmorp.de/"; the last 489 pathname component is given in Table 8. 491 (TO DO: Obtain permission to copy the definitions here.) 492 +-------+----------+------------------------+----------------+ 493 | Tag | Data | Semantics | Reference | 494 | | Item | | | 495 +=======+==========+========================+================+ 496 | 256 | multiple | mark value as having | stringref | 497 | | | string references | | 498 +-------+----------+------------------------+----------------+ 499 | 25 | unsigned | reference the nth | stringref | 500 | | integer | previously seen string | | 501 +-------+----------+------------------------+----------------+ 502 | 26 | array | Serialised Perl object | perl-object | 503 | | | with classname and | | 504 | | | constructor arguments | | 505 +-------+----------+------------------------+----------------+ 506 | 27 | array | Serialised language- | generic-object | 507 | | | independent object | | 508 | | | with type name and | | 509 | | | constructor arguments | | 510 +-------+----------+------------------------+----------------+ 511 | 28 | multiple | mark value as | value-sharing | 512 | | | (potentially) shared | | 513 +-------+----------+------------------------+----------------+ 514 | 29 | unsigned | reference nth marked | value-sharing | 515 | | integer | value | | 516 +-------+----------+------------------------+----------------+ 517 | 22098 | multiple | hint that indicates an | indirection | 518 | | | additional level of | | 519 | | | indirection | | 520 +-------+----------+------------------------+----------------+ 522 Table 8: Tag numbers that aid the Perl platform 524 8.2. JSON 526 (TO DO: Obtain permission to copy the definitions here.) 528 Tag number 262 has been registered to identify byte strings that 529 carry embedded JSON text ("https://github.com/toravir/CBOR-Tag- 530 Specs/blob/master/embeddedJSON.md"). 532 Tag number 275 can be used to identify maps that contain keys that 533 are all of type Text String, as they would occur in JSON 534 ("https://github.com/ecorm/cbor-tag-text-key-map"). 536 8.3. Weird text encodings 538 (TO DO: Obtain permission to copy the definitions here.) 539 Some variants of UTF-8 are in use in specific areas of application. 540 Tags have been registered to be able to carry around strings in these 541 variants in case they are not also valid UTF-8 and can therefore not 542 be represented as a CBOR text string ("https://github.com/svaarala/ 543 cbor-specs/blob/master/cbor-nonutf8-string-tags.rst"). 545 +------------+-------------+-------------------------+ 546 | Tag Number | Data Item | Semantics | 547 +============+=============+=========================+ 548 | 272 | byte string | Non-UTF-8 CESU-8 string | 549 +------------+-------------+-------------------------+ 550 | 273 | byte string | Non-UTF-8 WTF-8 string | 551 +------------+-------------+-------------------------+ 552 | 274 | byte string | Non-UTF-8 MUTF-8 string | 553 +------------+-------------+-------------------------+ 555 Table 9: Tag numbers for UTF-8 variants 557 9. Application-specific 559 (TO DO: Obtain permission to copy the definitions here; create proper 560 table.) 562 39 multiple Identifier [https://github.com/lucas-clemente/cbor-specs/blob/master/id.md][Lucas_Clemente] 563 42 byte string IPLD content identifier [https://github.com/ipld/cid-cbor/][Volker_Mische] 565 103 array Geographic Coordinates [https://github.com/allthingstalk/cbor/blob/master/CBOR-Tag103-Geographic-Coordinates.md][Danilo_Vidovic] 566 104 multiple Geographic Coordinate Reference [draft-clarke-cbor-crs] 567 System WKT or EPSG number 569 120 multiple Internet of Things Data Point [https://github.com/allthingstalk/cbor/blob/master/CBOR-Tag120-Internet-of-Things-Data-Points.md][Danilo_Vidovic] 571 258 array Mathematical finite set [https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md][Alfredo_Di_Napoli] 572 Map datatype with key-value 573 259 map operations (e.g. [https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec--explicit-maps.md][Shane_Holloway] 574 `.get()/.set()/.delete()`) 576 10. Implementation aids 577 10.1. Invalid Tag 579 The present document registers tag numbers 65535, 4294967295, and 580 18446744073709551615 (16-bit 0xffff, 32-bit 0xffffffff, and 64-bit 581 0xffffffffffffffff) as Invalid Tags, tags that are always invalid, 582 independent of the tag content provided. The purpose of these tag 583 number registrations is to enable the tag numbers to be reserved for 584 internal use by implementations to note the absence of a tag on a 585 data item where a tag could also be expected with that data item as 586 tag content. 588 The Invalid Tags are not intended to ever occur in interchanged CBOR 589 data items. Generic CBOR decoder implementations are encouraged to 590 raise an error if an Invalid Tag occurs in a CBOR data item even if 591 there is no validity checking implemented otherwise. 593 11. IANA Considerations 595 In the registry [IANA.cbor-tags], IANA has allocated the first to 596 third tag in Table 10 from the FCFS space, with the present document 597 as the specification reference. IANA is requested to register the 598 fourth tag from the Specification Required space, with the present 599 document as the specification reference. 601 +----------------------+--------+--------------+--------------------+ 602 | Tag | Data | Semantics | Reference | 603 | | Item | | | 604 +======================+========+==============+====================+ 605 | 65535 | (none | always | draft-bormann- | 606 | | valid) | invalid | cbor-notable-tags, | 607 | | | | Section 10.1 | 608 +----------------------+--------+--------------+--------------------+ 609 | 4294967295 | (none | always | draft-bormann- | 610 | | valid) | invalid | cbor-notable-tags, | 611 | | | | Section 10.1 | 612 +----------------------+--------+--------------+--------------------+ 613 | 18446744073709551615 | (none | always | draft-bormann- | 614 | | valid) | invalid | cbor-notable-tags, | 615 | | | | Section 10.1 | 616 +----------------------+--------+--------------+--------------------+ 617 | 63 | byte | Encoded | draft-bormann- | 618 | | string | CBOR | cbor-notable-tags, | 619 | | | Sequence | Section 2.1 | 620 | | | [RFC8742] | | 621 +----------------------+--------+--------------+--------------------+ 623 Table 10: Values for Tags 625 12. Security Considerations 627 The security considerations of RFC 7049 apply; the tags discussed 628 here may also have specific security considerations that are 629 mentioned in their specific sections above. 631 13. References 633 13.1. Normative References 635 [I-D.ietf-cbor-7049bis] 636 Bormann, C. and P. Hoffman, "Concise Binary Object 637 Representation (CBOR)", Work in Progress, Internet-Draft, 638 draft-ietf-cbor-7049bis-14, 16 June 2020, 639 . 642 [I-D.ietf-core-yang-cbor] 643 Veillette, M., Petrov, I., and A. Pelov, "CBOR Encoding of 644 Data Modeled with YANG", Work in Progress, Internet-Draft, 645 draft-ietf-core-yang-cbor-12, 9 March 2020, 646 . 649 [I-D.ietf-dots-signal-channel] 650 Reddy.K, T., Boucadair, M., Patil, P., Mortensen, A., and 651 N. Teague, "Distributed Denial-of-Service Open Threat 652 Signaling (DOTS) Signal Channel Specification", Work in 653 Progress, Internet-Draft, draft-ietf-dots-signal-channel- 654 41, 6 January 2020, . 657 [IANA.cbor-tags] 658 IANA, "Concise Binary Object Representation (CBOR) Tags", 659 . 661 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 662 Requirement Levels", BCP 14, RFC 2119, 663 DOI 10.17487/RFC2119, March 1997, 664 . 666 [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object 667 Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, 668 October 2013, . 670 [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", 671 RFC 8152, DOI 10.17487/RFC8152, July 2017, 672 . 674 [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, 675 "CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, 676 May 2018, . 678 [RFC8746] Bormann, C., Ed., "Concise Binary Object Representation 679 (CBOR) Tags for Typed Arrays", RFC 8746, 680 DOI 10.17487/RFC8746, February 2020, 681 . 683 13.2. Informative References 685 [I-D.bormann-cbor-time-tag] 686 Bormann, C., Gamari, B., and H. Birkholz, "Concise Binary 687 Object Representation (CBOR) Tags for Time, Duration, and 688 Period", Work in Progress, Internet-Draft, draft-bormann- 689 cbor-time-tag-03, 9 March 2020, . 692 [I-D.ietf-cbor-date-tag] 693 Jones, M., Nadalin, A., and J. Richter, "Concise Binary 694 Object Representation (CBOR) Tags for Date", Work in 695 Progress, Internet-Draft, draft-ietf-cbor-date-tag-01, 9 696 June 2020, . 699 [I-D.ietf-cose-rfc8152bis-algs] 700 Schaad, J., "CBOR Object Signing and Encryption (COSE): 701 Initial Algorithms", Work in Progress, Internet-Draft, 702 draft-ietf-cose-rfc8152bis-algs-09, 2 June 2020, 703 . 706 [I-D.ietf-cose-rfc8152bis-struct] 707 Schaad, J., "CBOR Object Signing and Encryption (COSE): 708 Structures and Process", Work in Progress, Internet-Draft, 709 draft-ietf-cose-rfc8152bis-struct-10, 2 June 2020, 710 . 713 [I-D.trammell-rains-protocol] 714 Trammell, B. and C. Fehlmann, "RAINS (Another Internet 715 Naming Service) Protocol Specification", Work in Progress, 716 Internet-Draft, draft-trammell-rains-protocol-05, 29 717 January 2019, . 720 [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail 721 Extensions (MIME) Part One: Format of Internet Message 722 Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, 723 . 725 [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally 726 Unique IDentifier (UUID) URN Namespace", RFC 4122, 727 DOI 10.17487/RFC4122, July 2005, 728 . 730 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 731 and A. Bierman, Ed., "Network Configuration Protocol 732 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 733 . 735 [RFC7322] Flanagan, H. and S. Ginoza, "RFC Style Guide", RFC 7322, 736 DOI 10.17487/RFC7322, September 2014, 737 . 739 [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token 740 (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, 741 . 743 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 744 RFC 7950, DOI 10.17487/RFC7950, August 2016, 745 . 747 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 748 RFC 7951, DOI 10.17487/RFC7951, August 2016, 749 . 751 [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data 752 Interchange Format", STD 90, RFC 8259, 753 DOI 10.17487/RFC8259, December 2017, 754 . 756 [RFC8742] Bormann, C., "Concise Binary Object Representation (CBOR) 757 Sequences", RFC 8742, DOI 10.17487/RFC8742, February 2020, 758 . 760 Acknowledgements 762 Contributors 764 Peter Occil 766 Email: poccil14 at gmail dot com 767 Many More 768 To do 770 Author's Address 772 Carsten Bormann 773 Universität Bremen TZI 774 Postfach 330440 775 D-28359 Bremen 776 Germany 778 Phone: +49-421-218-63921 779 Email: cabo@tzi.org