idnits 2.17.1 draft-bormann-cbor-notable-tags-01.txt: 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: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 32 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 434 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 (16 May 2020) is 1434 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-13 == 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-00 == Outdated reference: A later version (-12) exists of draft-ietf-cose-rfc8152bis-algs-08 == Outdated reference: A later version (-15) exists of draft-ietf-cose-rfc8152bis-struct-09 Summary: 3 errors (**), 0 flaws (~~), 10 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 Universitaet Bremen TZI 4 Intended status: Informational 16 May 2020 5 Expires: 17 November 2020 7 Notable CBOR Tags 8 draft-bormann-cbor-notable-tags-01 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 17 November 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 3. Security . . . . . . . . . . . . . . . . . . . . . . . . . . 5 85 3.1. RFC 8152 (COSE) . . . . . . . . . . . . . . . . . . . . . 5 86 3.2. RFC 8392 (CWT) . . . . . . . . . . . . . . . . . . . . . 5 87 4. CBOR-based Representation Formats . . . . . . . . . . . . . . 6 88 4.1. YANG-CBOR . . . . . . . . . . . . . . . . . . . . . . . . 6 89 5. Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . 7 90 5.1. DOTS . . . . . . . . . . . . . . . . . . . . . . . . . . 7 91 5.2. RAINS . . . . . . . . . . . . . . . . . . . . . . . . . . 7 92 6. Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . 7 93 6.1. Advanced arithmetic . . . . . . . . . . . . . . . . . . . 7 94 6.2. Variants of undefined . . . . . . . . . . . . . . . . . . 8 95 6.3. Typed and Homogeneous Arrays . . . . . . . . . . . . . . 8 97 7. Domain-Specific . . . . . . . . . . . . . . . . . . . . . . . 10 98 7.1. Extended Time Formats . . . . . . . . . . . . . . . . . . 10 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 . . . . . . . . . . . . . . . . . . . 14 108 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 109 13.1. Normative References . . . . . . . . . . . . . . . . . . 14 110 13.2. Informative References . . . . . . . . . . . . . . . . . 16 111 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 17 112 Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 17 113 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 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 3. Security 198 A number of CBOR tags are defined in security specifications that 199 make use of CBOR. 201 3.1. RFC 8152 (COSE) 203 [RFC8152] defines CBOR Object Signing and Encryption (COSE). A 204 revision is in process that splits this specification into the data 205 structure definitions [I-D.ietf-cose-rfc8152bis-struct], which will 206 define another tag for COSE standalone counter signature, and the 207 algorithms employed [I-D.ietf-cose-rfc8152bis-algs]. 209 +------------+---------------+-----------------------+ 210 | Tag number | Tag content | Short Description | 211 +============+===============+=======================+ 212 | 16 | COSE_Encrypt0 | COSE Single Recipient | 213 | | | Encrypted Data Object | 214 +------------+---------------+-----------------------+ 215 | 17 | COSE_Mac0 | COSE Mac w/o | 216 | | | Recipients Object | 217 +------------+---------------+-----------------------+ 218 | 18 | COSE_Sign1 | COSE Single Signer | 219 | | | Data Object | 220 +------------+---------------+-----------------------+ 221 | 96 | COSE_Encrypt | COSE Encrypted Data | 222 | | | Object | 223 +------------+---------------+-----------------------+ 224 | 97 | COSE_Mac | COSE MACed Data | 225 | | | Object | 226 +------------+---------------+-----------------------+ 227 | 98 | COSE_Sign | COSE Signed Data | 228 | | | Object | 229 +------------+---------------+-----------------------+ 231 Table 2: Tag numbers defined in RFC 8152, COSE 233 3.2. RFC 8392 (CWT) 235 [RFC8392] defines the CBOR Web Token (CWT), making use of COSE to 236 define a CBOR variant of the JOSE Web Token (JWT), [RFC7519], a 237 standardized security token that has found use 238 +------------+----------------------+----------------------+ 239 | Tag number | Tag content | Short Description | 240 +============+======================+======================+ 241 | 61 | CBOR Web Token (CWT) | CBOR Web Token (CWT) | 242 +------------+----------------------+----------------------+ 244 Table 3: Tag number defined for RFC 8392 CBOR Web Token 245 (CWT) 247 4. CBOR-based Representation Formats 249 Representation formats can be built on top of CBOR. 251 4.1. YANG-CBOR 253 YANG [RFC7950] is a data modeling language originally designed in the 254 context of the Network Configuration Protocol (NETCONF) [RFC6241], 255 now widely used for modeling management and configuration 256 information. [RFC7950] defines an XML-based representation format, 257 and [RFC7951] defines a JSON-based [RFC8259] representation format 258 for YANG. 260 YANG-CBOR [I-D.ietf-core-yang-cbor] is a representation format for 261 YANG data in CBOR. 263 +--------+----------------------+---------------------+------------+ 264 | Tag | Tag content | Short Description | Section of | 265 | number | | | YANG-CBOR | 266 +========+======================+=====================+============+ 267 | 43 | byte string | YANG bits datatype | 6.7 | 268 +--------+----------------------+---------------------+------------+ 269 | 44 | unsigned integer | YANG enumeration | 6.6 | 270 | | | datatype | | 271 +--------+----------------------+---------------------+------------+ 272 | 45 | unsigned integer or | YANG identityref | 6.10 | 273 | | text string | datatype | | 274 +--------+----------------------+---------------------+------------+ 275 | 46 | unsigned integer or | YANG instance- | 6.13 | 276 | | text string or array | identifier datatype | | 277 +--------+----------------------+---------------------+------------+ 278 | 47 | unsigned integer | YANG Schema Item | 3.2 | 279 | | | iDentifier (sid) | | 280 +--------+----------------------+---------------------+------------+ 282 Table 4: Tag number defined for YANG-CBOR 284 5. Protocols 286 Protocols may want to allocate CBOR tag numbers to identify specific 287 protocol elements. 289 5.1. DOTS 291 DDoS Open Threat Signaling (DOTS) defines tag number 271 for the DOTS 292 signal channel object in [I-D.ietf-dots-signal-channel]. 294 5.2. RAINS 296 As an example for how experimental protocols can make use of CBOR tag 297 definitions, the RAINS (Another Internet Naming Service) Protocol 298 Specification defines tag number 15309736 for a RAINS Message 299 [I-D.trammell-rains-protocol]. 301 6. Datatypes 303 6.1. Advanced arithmetic 305 A number of tags have been registered for arithmetic representations 306 beyond those built into CBOR and defined by tags in [RFC7049]. These 307 are all documented under "http://peteroupc.github.io/CBOR/"; the last 308 pathname component is given in Table 5. 310 (TO DO: Obtain permission to copy the definitions here.) 311 +------------+-------------+-----------------------+---------------+ 312 | Tag number | Tag content | Short Description | Reference | 313 +============+=============+=======================+===============+ 314 | 30 | array | Rational number | rational.html | 315 +------------+-------------+-----------------------+---------------+ 316 | 264 | array | Decimal fraction with | bigfrac.html | 317 | | | arbitrary exponent | | 318 +------------+-------------+-----------------------+---------------+ 319 | 265 | array | Bigfloat with | bigfrac.html | 320 | | | arbitrary exponent | | 321 +------------+-------------+-----------------------+---------------+ 322 | 268 | array | Extended decimal | extended.html | 323 | | | fraction | | 324 +------------+-------------+-----------------------+---------------+ 325 | 269 | array | Extended bigfloat | extended.html | 326 +------------+-------------+-----------------------+---------------+ 327 | 270 | array | Extended rational | extended.html | 328 | | | number | | 329 +------------+-------------+-----------------------+---------------+ 331 Table 5: Tags for advanced arithmetic 333 6.2. Variants of undefined 335 "https://github.com/svaarala/cbor-specs/blob/master/cbor-absent- 336 tag.rst" defines tag 31 to be applied to the CBOR value Undefined 337 (0xf7), slightly modifying its semantics to stand for an absent value 338 in a CBOR Array. 340 (TO DO: Obtain permission to copy the definitions here.) 342 6.3. Typed and Homogeneous Arrays 344 [RFC8746] defines tags for various kinds of arrays. A summary is 345 reproduced in Table 6. 347 +------+-------------+---------------------------------------------+ 348 | Tag | Data Item | Semantics | 349 +======+=============+=============================================+ 350 | 64 | byte string | uint8 Typed Array | 351 +------+-------------+---------------------------------------------+ 352 | 65 | byte string | uint16, big endian, Typed Array | 353 +------+-------------+---------------------------------------------+ 354 | 66 | byte string | uint32, big endian, Typed Array | 355 +------+-------------+---------------------------------------------+ 356 | 67 | byte string | uint64, big endian, Typed Array | 357 +------+-------------+---------------------------------------------+ 358 | 68 | byte string | uint8 Typed Array, clamped arithmetic | 359 +------+-------------+---------------------------------------------+ 360 | 69 | byte string | uint16, little endian, Typed Array | 361 +------+-------------+---------------------------------------------+ 362 | 70 | byte string | uint32, little endian, Typed Array | 363 +------+-------------+---------------------------------------------+ 364 | 71 | byte string | uint64, little endian, Typed Array | 365 +------+-------------+---------------------------------------------+ 366 | 72 | byte string | sint8 Typed Array | 367 +------+-------------+---------------------------------------------+ 368 | 73 | byte string | sint16, big endian, Typed Array | 369 +------+-------------+---------------------------------------------+ 370 | 74 | byte string | sint32, big endian, Typed Array | 371 +------+-------------+---------------------------------------------+ 372 | 75 | byte string | sint64, big endian, Typed Array | 373 +------+-------------+---------------------------------------------+ 374 | 76 | byte string | (reserved) | 375 +------+-------------+---------------------------------------------+ 376 | 77 | byte string | sint16, little endian, Typed Array | 377 +------+-------------+---------------------------------------------+ 378 | 78 | byte string | sint32, little endian, Typed Array | 379 +------+-------------+---------------------------------------------+ 380 | 79 | byte string | sint64, little endian, Typed Array | 381 +------+-------------+---------------------------------------------+ 382 | 80 | byte string | IEEE 754 binary16, big endian, Typed Array | 383 +------+-------------+---------------------------------------------+ 384 | 81 | byte string | IEEE 754 binary32, big endian, Typed Array | 385 +------+-------------+---------------------------------------------+ 386 | 82 | byte string | IEEE 754 binary64, big endian, Typed Array | 387 +------+-------------+---------------------------------------------+ 388 | 83 | byte string | IEEE 754 binary128, big endian, Typed Array | 389 +------+-------------+---------------------------------------------+ 390 | 84 | byte string | IEEE 754 binary16, little endian, Typed | 391 | | | Array | 392 +------+-------------+---------------------------------------------+ 393 | 85 | byte string | IEEE 754 binary32, little endian, Typed | 394 | | | Array | 395 +------+-------------+---------------------------------------------+ 396 | 86 | byte string | IEEE 754 binary64, little endian, Typed | 397 | | | Array | 398 +------+-------------+---------------------------------------------+ 399 | 87 | byte string | IEEE 754 binary128, little endian, Typed | 400 | | | Array | 401 +------+-------------+---------------------------------------------+ 402 | 40 | array of | Multi-dimensional Array, row-major order | 403 | | two arrays* | | 404 +------+-------------+---------------------------------------------+ 405 | 1040 | array of | Multi-dimensional Array, column-major order | 406 | | two arrays* | | 407 +------+-------------+---------------------------------------------+ 408 | 41 | array | Homogeneous Array | 409 +------+-------------+---------------------------------------------+ 411 Table 6: Tag numbers defined for Arrays 413 7. Domain-Specific 415 (TO DO: Obtain permission to copy the definitions here; create proper 416 table.) 418 37 byte string Binary UUID ([RFC4122] section [https://github.com/lucas-clemente/cbor-specs/blob/master/uuid.md][Lucas_Clemente] 419 4.1.2) 420 38 array Language-tagged string [http://peteroupc.github.io/CBOR/langtags.html][Peter_Occil] 421 257 byte string Binary MIME message [http://peteroupc.github.io/CBOR/binarymime.html][Peter_Occil] 423 260 byte string Network Address (IPv4 or IPv6 or [http://www.employees.org/~ravir/cbor-network.txt][Ravi_Raju] 424 MAC Address) 425 map Network Address Prefix (IPv4 or 426 261 (IPAddress + IPv6 Address + Mask Length) [https://github.com/toravir/CBOR-Tag-Specs/blob/master/networkPrefix.md][Ravi_Raju] 427 Mask Length) 429 263 byte string Hexadecimal string [https://github.com/toravir/CBOR-Tag-Specs/blob/master/hexString.md][Ravi_Raju] 431 266 text string Internationalized resource [https://peteroupc.github.io/CBOR/iri.html][Peter_Occil] 432 identifier (IRI) 433 Internationalized resource 434 267 text string identifier reference (IRI [https://peteroupc.github.io/CBOR/iri.html][Peter_Occil] 435 reference) 437 7.1. Extended Time Formats 439 Additional tag definitions have been provided for date and time 440 values. 442 +------+---------+-------------------+-----------------------------+ 443 | Tag | Data | Semantics | Reference | 444 | | Item | | | 445 +======+=========+===================+=============================+ 446 | 100 | integer | date in number of | [I-D.ietf-cbor-date-tag] | 447 | | | days since epoch | | 448 +------+---------+-------------------+-----------------------------+ 449 | 1004 | text | RFC 3339 full- | [I-D.ietf-cbor-date-tag] | 450 | | string | date string | | 451 +------+---------+-------------------+-----------------------------+ 452 | 1001 | map | extended time | [I-D.bormann-cbor-time-tag] | 453 +------+---------+-------------------+-----------------------------+ 454 | 1002 | map | duration | [I-D.bormann-cbor-time-tag] | 455 +------+---------+-------------------+-----------------------------+ 456 | 1003 | map | period | [I-D.bormann-cbor-time-tag] | 457 +------+---------+-------------------+-----------------------------+ 459 Table 7: Tag numbers for date and time 461 TO DO: Wait for registration for 100 and 1004 to have completed. 463 8. Platform-oriented 465 8.1. Perl 467 (These are actually not as Perl-specific as the title of this section 468 suggests. See also the penultimate paragraph of Section 3.4 of 469 [I-D.ietf-cbor-7049bis].) 471 These are all documented under "http://cbor.schmorp.de/"; the last 472 pathname component is given in Table 8. 474 (TO DO: Obtain permission to copy the definitions here.) 475 +-------+----------+------------------------+----------------+ 476 | Tag | Data | Semantics | Reference | 477 | | Item | | | 478 +=======+==========+========================+================+ 479 | 256 | multiple | mark value as having | stringref | 480 | | | string references | | 481 +-------+----------+------------------------+----------------+ 482 | 25 | unsigned | reference the nth | stringref | 483 | | integer | previously seen string | | 484 +-------+----------+------------------------+----------------+ 485 | 26 | array | Serialised Perl object | perl-object | 486 | | | with classname and | | 487 | | | constructor arguments | | 488 +-------+----------+------------------------+----------------+ 489 | 27 | array | Serialised language- | generic-object | 490 | | | independent object | | 491 | | | with type name and | | 492 | | | constructor arguments | | 493 +-------+----------+------------------------+----------------+ 494 | 28 | multiple | mark value as | value-sharing | 495 | | | (potentially) shared | | 496 +-------+----------+------------------------+----------------+ 497 | 29 | unsigned | reference nth marked | value-sharing | 498 | | integer | value | | 499 +-------+----------+------------------------+----------------+ 500 | 22098 | multiple | hint that indicates an | indirection | 501 | | | additional level of | | 502 | | | indirection | | 503 +-------+----------+------------------------+----------------+ 505 Table 8: Tag numbers that aid the Perl platform 507 8.2. JSON 509 (TO DO: Obtain permission to copy the definitions here.) 511 Tag number 262 has been registered to identify byte strings that 512 carry embedded JSON text ("https://github.com/toravir/CBOR-Tag- 513 Specs/blob/master/embeddedJSON.md"). 515 Tag number 275 can be used to identify maps that contain keys that 516 are all of type Text String, as they would occur in JSON 517 ("https://github.com/ecorm/cbor-tag-text-key-map"). 519 8.3. Weird text encodings 521 (TO DO: Obtain permission to copy the definitions here.) 522 Some variants of UTF-8 are in use in specific areas of application. 523 Tags have been registered to be able to carry around strings in these 524 variants in case they are not also valid UTF-8 and can therefore not 525 be represented as a CBOR text string ("https://github.com/svaarala/ 526 cbor-specs/blob/master/cbor-nonutf8-string-tags.rst"). 528 +------------+-------------+-------------------------+ 529 | Tag Number | Data Item | Semantics | 530 +============+=============+=========================+ 531 | 272 | byte string | Non-UTF-8 CESU-8 string | 532 +------------+-------------+-------------------------+ 533 | 273 | byte string | Non-UTF-8 WTF-8 string | 534 +------------+-------------+-------------------------+ 535 | 274 | byte string | Non-UTF-8 MUTF-8 string | 536 +------------+-------------+-------------------------+ 538 Table 9: Tag numbers for UTF-8 variants 540 9. Application-specific 542 (TO DO: Obtain permission to copy the definitions here; create proper 543 table.) 545 39 multiple Identifier [https://github.com/lucas-clemente/cbor-specs/blob/master/id.md][Lucas_Clemente] 546 42 byte string IPLD content identifier [https://github.com/ipld/cid-cbor/][Volker_Mische] 548 103 array Geographic Coordinates [https://github.com/allthingstalk/cbor/blob/master/CBOR-Tag103-Geographic-Coordinates.md][Danilo_Vidovic] 549 104 multiple Geographic Coordinate Reference [draft-clarke-cbor-crs] 550 System WKT or EPSG number 552 120 multiple Internet of Things Data Point [https://github.com/allthingstalk/cbor/blob/master/CBOR-Tag120-Internet-of-Things-Data-Points.md][Danilo_Vidovic] 554 258 array Mathematical finite set [https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md][Alfredo_Di_Napoli] 555 Map datatype with key-value 556 259 map operations (e.g. [https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec--explicit-maps.md][Shane_Holloway] 557 `.get()/.set()/.delete()`) 559 10. Implementation aids 560 10.1. Invalid Tag 562 The present document registers tag numbers 65535, 4294967295, and 563 18446744073709551615 (16-bit 0xffff, 32-bit 0xffffffff, and 64-bit 564 0xffffffffffffffff) as Invalid Tags, tags that are always invalid, 565 independent of the tag content provided. The purpose of these tag 566 number registrations is to enable the tag numbers to be reserved for 567 internal use by implementations to note the absence of a tag on a 568 data item where a tag could also be expected with that data item as 569 tag content. 571 The Invalid Tags are not intended to ever occur in interchanged CBOR 572 data items. Generic CBOR decoder implementations are encouraged to 573 raise an error if an Invalid Tag occurs in a CBOR data item even if 574 there is no validity checking implemented otherwise. 576 11. IANA Considerations 578 In the registry [IANA.cbor-tags], IANA has allocated the first and is 579 requested to allocate the second and third tag in Table 10 from the 580 FCFS space, with the present document as the specification reference. 582 +--------------------+------+---------+--------------------------------+ 583 | Tag | Data |Semantics| Reference | 584 | | Item | | | 585 +====================+======+=========+================================+ 586 | 65535 |(none | always |draft-bormann-cbor-notable-tags,| 587 | |valid)| invalid | Section 10.1 | 588 +--------------------+------+---------+--------------------------------+ 589 | 4294967295 |(none | always |draft-bormann-cbor-notable-tags,| 590 | |valid)| invalid | Section 10.1 | 591 +--------------------+------+---------+--------------------------------+ 592 |18446744073709551615|(none | always |draft-bormann-cbor-notable-tags,| 593 | |valid)| invalid | Section 10.1 | 594 +--------------------+------+---------+--------------------------------+ 596 Table 10: Values for Tags 598 12. Security Considerations 600 The security considerations of RFC 7049 apply; the tags discussed 601 here may also have specific security considerations that are 602 mentioned in their specific sections above. 604 13. References 606 13.1. Normative References 608 [I-D.ietf-cbor-7049bis] 609 Bormann, C. and P. Hoffman, "Concise Binary Object 610 Representation (CBOR)", Work in Progress, Internet-Draft, 611 draft-ietf-cbor-7049bis-13, 8 March 2020, 612 . 615 [I-D.ietf-core-yang-cbor] 616 Veillette, M., Petrov, I., and A. Pelov, "CBOR Encoding of 617 Data Modeled with YANG", Work in Progress, Internet-Draft, 618 draft-ietf-core-yang-cbor-12, 9 March 2020, 619 . 622 [I-D.ietf-dots-signal-channel] 623 Reddy.K, T., Boucadair, M., Patil, P., Mortensen, A., and 624 N. Teague, "Distributed Denial-of-Service Open Threat 625 Signaling (DOTS) Signal Channel Specification", Work in 626 Progress, Internet-Draft, draft-ietf-dots-signal-channel- 627 41, 6 January 2020, . 630 [IANA.cbor-tags] 631 IANA, "Concise Binary Object Representation (CBOR) Tags", 632 . 634 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 635 Requirement Levels", BCP 14, RFC 2119, 636 DOI 10.17487/RFC2119, March 1997, 637 . 639 [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object 640 Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, 641 October 2013, . 643 [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", 644 RFC 8152, DOI 10.17487/RFC8152, July 2017, 645 . 647 [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, 648 "CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, 649 May 2018, . 651 [RFC8746] Bormann, C., Ed., "Concise Binary Object Representation 652 (CBOR) Tags for Typed Arrays", RFC 8746, 653 DOI 10.17487/RFC8746, February 2020, 654 . 656 13.2. Informative References 658 [I-D.bormann-cbor-time-tag] 659 Bormann, C., Gamari, B., and H. Birkholz, "Concise Binary 660 Object Representation (CBOR) Tags for Time, Duration, and 661 Period", Work in Progress, Internet-Draft, draft-bormann- 662 cbor-time-tag-03, 9 March 2020, . 665 [I-D.ietf-cbor-date-tag] 666 Jones, M., Nadalin, A., and J. Richter, "Concise Binary 667 Object Representation (CBOR) Tags for Date", Work in 668 Progress, Internet-Draft, draft-ietf-cbor-date-tag-00, 7 669 May 2020, . 672 [I-D.ietf-cose-rfc8152bis-algs] 673 Schaad, J., "CBOR Object Signing and Encryption (COSE): 674 Initial Algorithms", Work in Progress, Internet-Draft, 675 draft-ietf-cose-rfc8152bis-algs-08, 14 May 2020, 676 . 679 [I-D.ietf-cose-rfc8152bis-struct] 680 Schaad, J., "CBOR Object Signing and Encryption (COSE): 681 Structures and Process", Work in Progress, Internet-Draft, 682 draft-ietf-cose-rfc8152bis-struct-09, 14 May 2020, 683 . 686 [I-D.trammell-rains-protocol] 687 Trammell, B. and C. Fehlmann, "RAINS (Another Internet 688 Naming Service) Protocol Specification", Work in Progress, 689 Internet-Draft, draft-trammell-rains-protocol-05, 29 690 January 2019, . 693 [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally 694 Unique IDentifier (UUID) URN Namespace", RFC 4122, 695 DOI 10.17487/RFC4122, July 2005, 696 . 698 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 699 and A. Bierman, Ed., "Network Configuration Protocol 700 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 701 . 703 [RFC7322] Flanagan, H. and S. Ginoza, "RFC Style Guide", RFC 7322, 704 DOI 10.17487/RFC7322, September 2014, 705 . 707 [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token 708 (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, 709 . 711 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 712 RFC 7950, DOI 10.17487/RFC7950, August 2016, 713 . 715 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 716 RFC 7951, DOI 10.17487/RFC7951, August 2016, 717 . 719 [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data 720 Interchange Format", STD 90, RFC 8259, 721 DOI 10.17487/RFC8259, December 2017, 722 . 724 Acknowledgements 726 Contributors 728 Many 729 To do 731 Author's Address 733 Carsten Bormann 734 Universitaet Bremen TZI 735 Postfach 330440 736 D-28359 Bremen 737 Germany 739 Phone: +49-421-218-63921 740 Email: cabo@tzi.org