rfc9090.original | rfc9090.txt | |||
---|---|---|---|---|
Network Working Group C. Bormann | Internet Engineering Task Force (IETF) C. Bormann | |||
Internet-Draft Universität Bremen TZI | Request for Comments: 9090 Universität Bremen TZI | |||
Intended status: Standards Track 21 May 2021 | Category: Standards Track July 2021 | |||
Expires: 22 November 2021 | ISSN: 2070-1721 | |||
Concise Binary Object Representation (CBOR) Tags for Object Identifiers | Concise Binary Object Representation (CBOR) Tags for Object Identifiers | |||
draft-ietf-cbor-tags-oid-08 | ||||
Abstract | Abstract | |||
The Concise Binary Object Representation (CBOR, RFC 8949) is a data | The Concise Binary Object Representation (CBOR), defined in RFC 8949, | |||
format whose design goals include the possibility of extremely small | is a data format whose design goals include the possibility of | |||
code size, fairly small message size, and extensibility without the | extremely small code size, fairly small message size, and | |||
need for version negotiation. | extensibility without the need for version negotiation. | |||
The present document defines CBOR tags for object identifiers (OIDs). | This document defines CBOR tags for object identifiers (OIDs) and is | |||
It is intended as the reference document for the IANA registration of | the reference document for the IANA registration of the CBOR tags so | |||
the CBOR tags so defined. | defined. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 22 November 2021. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9090. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
as described in Section 4.e of the Trust Legal Provisions and are | include Simplified BSD License text as described in Section 4.e of | |||
provided without warranty as described in the Simplified BSD License. | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
2. Object Identifiers . . . . . . . . . . . . . . . . . . . . . 4 | 2. Object Identifiers | |||
2.1. Requirements on the byte string being tagged . . . . . . 5 | 2.1. Requirements on the Byte String Being Tagged | |||
2.2. Preferred Serialization Considerations . . . . . . . . . 6 | 2.2. Preferred Serialization Considerations | |||
2.3. Discussion . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3. Discussion | |||
3. Basic Examples . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Basic Examples | |||
3.1. Encoding of the SHA-256 OID . . . . . . . . . . . . . . . 7 | 3.1. Encoding of the SHA-256 OID | |||
3.2. Encoding of a MIB Relative OID . . . . . . . . . . . . . 7 | 3.2. Encoding of a MIB Relative OID | |||
4. Tag Factoring with Arrays and Maps . . . . . . . . . . . . . 8 | 4. Tag Factoring with Arrays and Maps | |||
4.1. Preferred Serialization Considerations . . . . . . . . . 8 | 4.1. Preferred Serialization Considerations | |||
4.2. Tag Factoring Example: X.500 Distinguished Name . . . . . 9 | 4.2. Tag Factoring Example: X.500 Distinguished Name | |||
5. CDDL Control Operators . . . . . . . . . . . . . . . . . . . 10 | 5. CDDL Control Operators | |||
6. CDDL typenames . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. CDDL Type Names | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 7. IANA Considerations | |||
7.1. CBOR Tags . . . . . . . . . . . . . . . . . . . . . . . . 11 | 7.1. CBOR Tags | |||
7.2. CDDL Control Operators . . . . . . . . . . . . . . . . . 12 | 7.2. CDDL Control Operators | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 8. Security Considerations | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 9. References | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 9.1. Normative References | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 14 | 9.2. Informative References | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 15 | Acknowledgments | |||
A.1. Changes from -06 to -07 . . . . . . . . . . . . . . . . . 15 | Contributors | |||
A.2. Changes from -05 to -06 . . . . . . . . . . . . . . . . . 15 | Author's Address | |||
A.3. Changes from -04 to -05 . . . . . . . . . . . . . . . . . 15 | ||||
A.4. Changes from -03 to -04 . . . . . . . . . . . . . . . . . 15 | ||||
A.5. Changes from -02 to -03 . . . . . . . . . . . . . . . . . 15 | ||||
A.6. Changes from -01 to -02 . . . . . . . . . . . . . . . . . 15 | ||||
A.7. Changes from -00 to -01 . . . . . . . . . . . . . . . . . 15 | ||||
A.8. Changes from -07 (bormann) to -00 (ietf) . . . . . . . . 16 | ||||
A.9. Changes from -06 to -07 . . . . . . . . . . . . . . . . . 16 | ||||
A.10. Changes from -05 to -06 . . . . . . . . . . . . . . . . . 16 | ||||
A.11. Changes from -04 to -05 . . . . . . . . . . . . . . . . . 16 | ||||
A.12. Changes from -03 to -04 . . . . . . . . . . . . . . . . . 16 | ||||
A.13. Changes from -02 to -03 . . . . . . . . . . . . . . . . . 16 | ||||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
1. Introduction | 1. Introduction | |||
The Concise Binary Object Representation (CBOR, [RFC8949]) provides | The Concise Binary Object Representation (CBOR) [RFC8949] provides | |||
for the interchange of structured data without a requirement for a | for the interchange of structured data without a requirement for a | |||
pre-agreed schema. [RFC8949] defines a basic set of data types, as | pre-agreed schema. [RFC8949] defines a basic set of data types, as | |||
well as a tagging mechanism that enables extending the set of data | well as a tagging mechanism that enables extending the set of data | |||
types supported via an IANA registry. | types supported via an IANA registry. | |||
The present document defines CBOR tags for object identifiers (OIDs, | This document defines CBOR tags for object identifiers (OIDs) | |||
[X.660]), which many IETF protocols carry. The ASN.1 Basic Encoding | [X.660], which many IETF protocols carry. The ASN.1 Basic Encoding | |||
Rules (BER, [X.690]) specify binary encodings of both (absolute) | Rules (BER) [X.690] specify binary encodings of both (absolute) | |||
object identifiers and relative object identifiers. The contents of | object identifiers and relative object identifiers. The contents of | |||
these encodings (the "value" part of BER's type-length-value | these encodings (the "value" part of BER's type-length-value | |||
structure) can be carried in a CBOR byte string. This document | structure) can be carried in a CBOR byte string. This document | |||
defines two CBOR tags that cover the two kinds of ASN.1 object | defines two CBOR tags that cover the two kinds of ASN.1 object | |||
identifiers encoded in this way, and a third one to enable a common | identifiers encoded in this way and a third one to enable a common | |||
optimization. The tags can also be applied to arrays and maps to | optimization. The tags can also be applied to arrays and maps to | |||
efficiently tag all elements of an array or all keys of a map. It is | efficiently tag all elements of an array or all keys of a map. This | |||
intended as the reference document for the IANA registration of the | document is the reference document for the IANA registration of the | |||
tags so defined. | tags so defined. | |||
1.1. Terminology | 1.1. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
The terminology of [RFC8949] applies; in particular the term "byte" | The terminology of [RFC8949] applies; in particular, the term "byte" | |||
is used in its now customary sense as a synonym for "octet". The | is used in its now-customary sense as a synonym for "octet". The | |||
verb "to tag (something)" is used to express the construction of a | verb "to tag (something)" is used to express the construction of a | |||
CBOR tag with the object (something) as the tag content and a tag | CBOR tag, with the object (something) as the tag content and a tag | |||
number indicated elsewhere in the sentence (for instance in a "with" | number indicated elsewhere in the sentence (for instance, in a "with" | |||
clause, or by the shorthand "an NNN tag" for "a tag with tag number | clause or by the shorthand "an NNN tag" for "a tag with tag number | |||
NNN"). The term "SDNV" (Self-Delimiting Numeric Value) is used as | NNN"). The term "SDNV" (Self-Delimiting Numeric Value) is used as | |||
defined in [RFC6256], with the additional restriction detailed in | defined in [RFC6256], with the additional restriction detailed in | |||
Section 2.1 (no leading zeros). | Section 2.1 (no leading zeros). | |||
2. Object Identifiers | 2. Object Identifiers | |||
The International Object Identifier tree [X.660] is a hierarchically | The International Object Identifier tree [X.660] is a hierarchically | |||
managed space of identifiers, each of which is uniquely represented | managed space of identifiers, each of which is uniquely represented | |||
as a sequence of unsigned integer values [X.680]. (These integer | as a sequence of unsigned integer values [X.680]. (These integer | |||
values are called "primary integer values" in X.660 because they can | values are called "primary integer values" in [X.660] because they | |||
be accompanied by (not necessarily unambiguous) secondary | can be accompanied by (not necessarily unambiguous) secondary | |||
identifiers. We ignore the latter and simply use the term "integer | identifiers. We ignore the latter and simply use the term "integer | |||
values" here, occasionally calling out their unsignedness. We also | values" here, occasionally calling out their unsignedness. We also | |||
use the term "arc" when the focus is on the edge of the tree labeled | use the term "arc" when the focus is on the edge of the tree labeled | |||
by such an integer value, as well as in the sense of a "long arc", | by such an integer value, as well as in the sense of a "long arc", | |||
i.e., a (sub)sequence of such integer values.) | i.e., a (sub)sequence of such integer values.) | |||
While these sequences can easily be represented in CBOR arrays of | While these sequences can easily be represented in CBOR arrays of | |||
unsigned integers, a more compact representation can often be | unsigned integers, a more compact representation can often be | |||
achieved by adopting the widely used representation of object | achieved by adopting the widely used representation of object | |||
identifiers defined in BER; this representation may also be more | identifiers defined in BER; this representation may also be more | |||
amenable to processing by other software that makes use of object | amenable to processing by other software that makes use of object | |||
identifiers. | identifiers. | |||
BER represents the sequence of unsigned integers by concatenating | BER represents the sequence of unsigned integers by concatenating | |||
self-delimiting [RFC6256] representations of each of the integer | self-delimiting representations [RFC6256] of each of the integer | |||
values in sequence. | values in sequence. | |||
ASN.1 distinguishes absolute object identifiers (ASN.1 Type "OBJECT | ASN.1 distinguishes absolute object identifiers (ASN.1 type "OBJECT | |||
IDENTIFIER"), which begin at a root arc ([X.660] Clause 3.5.21), from | IDENTIFIER"), which begin at a root arc ([X.660], Clause 3.5.21), | |||
relative object identifiers (ASN.1 Type "RELATIVE-OID"), which begin | from relative object identifiers (ASN.1 type "RELATIVE-OID"), which | |||
relative to some object identifier known from context ([X.680] Clause | begin relative to some object identifier known from context ([X.680], | |||
3.8.63). As a special optimization, BER combines the first two | Clause 3.8.63). As a special optimization, BER combines the first | |||
integers in an absolute object identifier into one numeric identifier | two integers in an absolute object identifier into one numeric | |||
by making use of the property of the hierarchy that the first arc has | identifier by making use of the property of the hierarchy that the | |||
only three integer values (0, 1, and 2), and the second arcs under 0 | first arc has only three integer values (0, 1, and 2) and the second | |||
and 1 are limited to the integer values between 0 and 39. (The root | arcs under 0 and 1 are limited to the integer values between 0 and | |||
arc "joint-iso-itu-t(2)" has no such limitations on its second arc.) | 39. (The root arc "joint-iso-itu-t(2)" has no such limitations on | |||
If X and Y are the first two integer values, the single integer value | its second arc.) If X and Y are the first two integer values, the | |||
actually encoded is computed as: | single integer value actually encoded is computed as: | |||
X * 40 + Y | X * 40 + Y | |||
The inverse transformation (again making use of the known ranges of X | The inverse transformation (again making use of the known ranges of X | |||
and Y) is applied when decoding the object identifier. | and Y) is applied when decoding the object identifier. | |||
Since the semantics of absolute and relative object identifiers | Since the semantics of absolute and relative object identifiers | |||
differ, and it is very common for companies to use self-assigned | differ and since it is very common for companies to use self-assigned | |||
numbers under the arc "1.3.6.1.4.1" (IANA Private Enterprise Number | numbers under the arc "1.3.6.1.4.1" (IANA Private Enterprise Number | |||
OID, [IANA.enterprise-numbers]) that adds 5 fixed bytes to an encoded | OID [IANA.enterprise-numbers]) that adds 5 fixed bytes to an encoded | |||
OID value, this specification defines three tags, collectively called | OID value, this specification defines three tags, collectively called | |||
the "OID tags" here: | the "OID tags" here: | |||
Tag number TBD111: used to tag a byte string as the [X.690] encoding | Tag number 111: Used to tag a byte string as the BER encoding | |||
of an absolute object identifier (simply "object identifier" or | [X.690] of an absolute object identifier (simply "object | |||
"OID"). | identifier" or "OID"). | |||
Tag number TBD110: used to tag a byte string as the [X.690] encoding | Tag number 110: Used to tag a byte string as the BER encoding | |||
of a relative object identifier (also "relative OID"). Since the | [X.690] of a relative object identifier (also called "relative | |||
encoding of each number is the same as for [RFC6256] Self-Delimiting | OID"). Since the encoding of each number is the same as for Self- | |||
Numeric Values (SDNVs), this tag can also be used for tagging a byte | Delimiting Numeric Values (SDNVs) [RFC6256], this tag can also be | |||
string that contains a sequence of zero or more SDNVs (or a more | used for tagging a byte string that contains a sequence of zero or | |||
application-specific tag can be created for such an application). | more SDNVs (or a more application-specific tag can be created for | |||
such an application). | ||||
Tag TBD112: structurally like TBD110, but understood to be relative | Tag number 112: Structurally like tag 110 but understood to be | |||
to "1.3.6.1.4.1" (IANA Private Enterprise Number OID, | relative to "1.3.6.1.4.1" (IANA Private Enterprise Number OID | |||
[IANA.enterprise-numbers]). Hence, the semantics of the result are | [IANA.enterprise-numbers]). Hence, the semantics of the result | |||
that of an absolute object identifier. | are that of an absolute object identifier. | |||
2.1. Requirements on the byte string being tagged | 2.1. Requirements on the Byte String Being Tagged | |||
To form a valid tag, a byte string tagged with TBD111, TBD110, or | To form a valid tag, a byte string tagged with 111, 110, or 112 MUST | |||
TBD112 MUST be syntactically valid contents (the value part) for a | be syntactically valid contents (the value part) for a BER | |||
BER representation of an object identifier (Sections 8.19, 8.20, and | representation of an object identifier (see Table 1): | |||
8.20 of [X.690], respectively): A concatenation of zero or more SDNV | ||||
values, where each SDNV value is a sequence of one or more bytes that | +============+====================+ | |||
all have their most significant bit set, except for the last byte, | | Tag number | Section of [X.690] | | |||
where it is unset. Also, the first byte of each SDNV cannot be a | +============+====================+ | |||
leading zero in SDNV's base-128 arithmetic, so it cannot take the | | 111 | 8.19 | | |||
value 0x80 (bullet (c) in Section 8.1.2.4.2 of [X.690]). | +------------+--------------------+ | |||
| 110 | 8.20 | | ||||
+------------+--------------------+ | ||||
| 112 | 8.20 | | ||||
+------------+--------------------+ | ||||
Table 1: Tag Number and | ||||
Section of X.690 Governing Tag | ||||
Content | ||||
This is a concatenation of zero or more SDNV values, where each SDNV | ||||
value is a sequence of one or more bytes that all have their most | ||||
significant bit set, except for the last byte, where it is unset. | ||||
Also, the first byte of each SDNV cannot be a leading zero in SDNV's | ||||
base-128 arithmetic, so it cannot take the value 0x80 (bullet (c) in | ||||
Section 8.1.2.4.2 of [X.690]). | ||||
In other words: | In other words: | |||
* the byte string's first byte, and any byte that follows a byte | * The byte string's first byte, and any byte that follows a byte | |||
that has the most significant bit unset, MUST NOT be 0x80 (this | that has the most significant bit unset, MUST NOT be 0x80 (this | |||
requirement requires expressing the integer values in their | requirement requires expressing the integer values in their | |||
shortest form, with no leading zeroes) | shortest form, with no leading zeroes). | |||
* the byte string's last byte MUST NOT have the most significant bit | * The byte string's last byte MUST NOT have the most significant bit | |||
set (this requirement excludes an incomplete final integer value) | set (this requirement excludes an incomplete final integer value). | |||
If either of these invalid conditions are encountered, the tag is | If either of these invalid conditions are encountered, the tag is | |||
invalid. | invalid. | |||
[X.680] restricts RELATIVE-OID values to have at least one arc, i.e., | [X.680] restricts RELATIVE-OID values to having at least one arc, | |||
their encoding would have at least one SDNV. This specification | i.e., their encoding would have at least one SDNV. This | |||
permits empty relative object identifiers; they may still be excluded | specification permits empty relative object identifiers; they may | |||
by application semantics. | still be excluded by application semantics. | |||
To facilitate the search for specific object ID values, it is | To facilitate the search for specific object ID values, it is | |||
RECOMMENDED that definite length encoding (see Section 3.2.3 of | RECOMMENDED that definite length encoding (see Section 3.2.3 of | |||
[RFC8949]) is used for the byte strings used as tag content for these | [RFC8949]) be used for the byte strings that are used as tag content | |||
tags. | for these tags. | |||
The valid set of byte strings can also be expressed using regular | The valid set of byte strings can also be expressed using regular | |||
expressions on bytes, using no specific notation but resembling | expressions on bytes, using no specific notation but resembling Perl | |||
[PCRE]. Unlike typical regular expressions that operate on character | Compatible Regular Expressions [PCRE]. Unlike typical regular | |||
sequences, the following regular expressions take bytes as their | expressions that operate on character sequences, the following | |||
domain, so they can be applied directly to CBOR byte strings. | regular expressions take bytes as their domain, so they can be | |||
applied directly to CBOR byte strings. | ||||
For byte strings with tag TBD111: | For byte strings with tag 111: | |||
"/^(([\x81-\xFF][\x80-\xFF]*)?[\x00-\x7F])+$/" | "/^(([\x81-\xFF][\x80-\xFF]*)?[\x00-\x7F])+$/" | |||
For byte strings with tag TBD110 or TBD112: | For byte strings with tags 110 or 112: | |||
"/^(([\x81-\xFF][\x80-\xFF]*)?[\x00-\x7F])*$/" | "/^(([\x81-\xFF][\x80-\xFF]*)?[\x00-\x7F])*$/" | |||
A tag with tagged content that does not conform to the applicable | A tag with tagged content that does not conform to the applicable | |||
regular expression is invalid. | regular expression is invalid. | |||
2.2. Preferred Serialization Considerations | 2.2. Preferred Serialization Considerations | |||
For an absolute OID with a prefix of "1.3.6.1.4.1", representations | For an absolute OID with a prefix of "1.3.6.1.4.1", representations | |||
with both the TBD111 and TBD112 tags are applicable, where the | with both the 111 and 112 tags are applicable, where the | |||
representation with TBD112 will be five bytes shorter (by leaving out | representation with 112 will be five bytes shorter (by leaving out | |||
the prefix h'2b06010401' from the enclosed byte string). This | the prefix h'2b06010401' from the enclosed byte string). This | |||
specification makes that shorter representation the preferred | specification makes that shorter representation the preferred | |||
serialization (see Sections 3.4 and 4.1 of [RFC8949]). Note that | serialization (see Sections 3.4 and 4.1 of [RFC8949]). Note that | |||
this also implies that the Core Deterministic Encoding Requirements | this also implies that the Core Deterministic Encoding Requirements | |||
(Section 4.2.1 of [RFC8949]) require the use of TBD112 tags instead | (Section 4.2.1 of [RFC8949]) require the use of 112 tags instead of | |||
of TBD111 wherever that is possible. | 111 tags wherever that is possible. | |||
2.3. Discussion | 2.3. Discussion | |||
Staying close to the way object identifiers are encoded in ASN.1 BER | Staying close to the way object identifiers are encoded in ASN.1 BER | |||
makes back-and-forth translation easy; otherwise we would choose a | makes back-and-forth translation easy; otherwise, we would choose a | |||
more efficient encoding. Object identifiers in IETF protocols are | more efficient encoding. Object identifiers in IETF protocols are | |||
serialized in dotted decimal form or BER form, so there is an | serialized in dotted decimal form or BER form, so there is an | |||
advantage in not inventing a third form. Also, expectations of the | advantage in not inventing a third form. Also, expectations of the | |||
cost of encoding object identifiers are based on BER; using a | cost of encoding object identifiers are based on BER; using a | |||
different encoding might not be aligned with these expectations. If | different encoding might not be aligned with these expectations. If | |||
additional information about an OID is desired, lookup services such | additional information about an OID is desired, lookup services such | |||
as the OID Resolution Service (ORS) [X.672] and the OID Repository | as the OID Resolution Service (ORS) [X.672] and the OID Repository | |||
[OID-INFO] are available. | [OID-INFO] are available. | |||
3. Basic Examples | 3. Basic Examples | |||
This section gives simple examples of an absolute and a relative | This section gives simple examples of an absolute and a relative | |||
object identifier, represented via tag number TBD111 and TBD110, | object identifier, represented via tag numbers 111 and 110, | |||
respectively. | respectively. | |||
RFC editor: These and other examples assume the allocation of 111 for | ||||
TBD111 and 110 for TBD110 and need to be changed if that isn't the | ||||
actual allocation. Please remove this paragraph. | ||||
3.1. Encoding of the SHA-256 OID | 3.1. Encoding of the SHA-256 OID | |||
ASN.1 Value Notation: { joint-iso-itu-t(2) country(16) us(840) | ASN.1 Value Notation: | |||
organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) | { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) | |||
sha256(1) } | csor(3) nistalgorithm(4) hashalgs(2) sha256(1) } | |||
Dotted Decimal Notation: 2.16.840.1.101.3.4.2.1 | Dotted Decimal Notation: 2.16.840.1.101.3.4.2.1 | |||
06 # UNIVERSAL TAG 6 | 06 # UNIVERSAL TAG 6 | |||
09 # 9 bytes, primitive | 09 # 9 bytes, primitive | |||
60 86 48 01 65 03 04 02 01 # X.690 Clause 8.19 | 60 86 48 01 65 03 04 02 01 # X.690 Clause 8.19 | |||
# | 840 1 | 3 4 2 1 show component encoding | # | 840 1 | 3 4 2 1 show component encoding | |||
# 2.16 101 | # 2.16 101 | |||
Figure 1: SHA-256 OID in BER | Figure 1: SHA-256 OID in BER | |||
skipping to change at page 7, line 42 ¶ | skipping to change at line 307 ¶ | |||
49 # 0b010_01001: mt 2, 9 bytes | 49 # 0b010_01001: mt 2, 9 bytes | |||
60 86 48 01 65 03 04 02 01 # X.690 Clause 8.19 | 60 86 48 01 65 03 04 02 01 # X.690 Clause 8.19 | |||
Figure 2: SHA-256 OID in CBOR | Figure 2: SHA-256 OID in CBOR | |||
3.2. Encoding of a MIB Relative OID | 3.2. Encoding of a MIB Relative OID | |||
Given some OID (e.g., "lowpanMib", assumed to be "1.3.6.1.2.1.226" | Given some OID (e.g., "lowpanMib", assumed to be "1.3.6.1.2.1.226" | |||
[RFC7388]), to which the following is added: | [RFC7388]), to which the following is added: | |||
ASN.1 Value Notation: { lowpanObjects(1) lowpanStats(1) | ASN.1 Value Notation: | |||
lowpanOutTransmits(29) } | { lowpanObjects(1) lowpanStats(1) lowpanOutTransmits(29) } | |||
Dotted Decimal Notation: .1.1.29 | Dotted Decimal Notation: .1.1.29 | |||
0D # UNIVERSAL TAG 13 | 0D # UNIVERSAL TAG 13 | |||
03 # 3 bytes, primitive | 03 # 3 bytes, primitive | |||
01 01 1D # X.690 Clause 8.20 | 01 01 1D # X.690 Clause 8.20 | |||
# 1 1 29 show component encoding | # 1 1 29 show component encoding | |||
Figure 3: MIB relative object identifier, in BER | Figure 3: MIB Relative Object Identifier in BER | |||
D8 6E # tag(110) | D8 6E # tag(110) | |||
43 # 0b010_00011: mt 2 (bstr), 3 bytes | 43 # 0b010_00011: mt 2 (bstr), 3 bytes | |||
01 01 1D # X.690 Clause 8.20 | 01 01 1D # X.690 Clause 8.20 | |||
Figure 4: MIB relative object identifier, in CBOR | Figure 4: MIB Relative Object Identifier in CBOR | |||
This relative OID saves seven bytes compared to the full OID | This relative OID saves seven bytes compared to the full OID | |||
encoding. | encoding. | |||
4. Tag Factoring with Arrays and Maps | 4. Tag Factoring with Arrays and Maps | |||
The tag content of OID tags can be byte strings (as discussed above), | The tag content of OID tags can be byte strings (as discussed above) | |||
but also CBOR arrays and maps. The idea in the latter case is that | but also CBOR arrays and maps. The idea in the latter case is that | |||
the tag construct is factored out from each individual item in the | the tag construct is factored out from each individual item in the | |||
container; the tag is placed on the array or map instead. | container; the tag is placed on the array or map instead. | |||
When the tag content of an OID tag is an array, this means that the | When the tag content of an OID tag is an array, this means that the | |||
respective tag is imputed to all elements of the array that are byte | respective tag is imputed to all elements of the array that are byte | |||
strings, arrays, or maps. (There is no effect on other elements, | strings, arrays, or maps. (There is no effect on other elements, | |||
including text strings or tags.) For example, when the tag content | including text strings or tags.) For example, when the tag content | |||
of a TBD111 tag is an array, every array element that is a byte | of a 111 tag is an array, every array element that is a byte string | |||
string is an OID, and every element that is an array or map is in | is an OID, and every element that is an array or map is, in turn, | |||
turn treated as discussed here. | treated as discussed here. | |||
When the tag content of an OID tag is a map, this means that a tag | When the tag content of an OID tag is a map, this means that a tag | |||
with the same tag number is imputed to all keys in the map that are | with the same tag number is imputed to all keys in the map that are | |||
byte strings, arrays, or maps; again, there is no effect on keys of | byte strings, arrays, or maps; again, there is no effect on keys of | |||
other major types. Note that there is also no effect on the values | other major types. Note that there is also no effect on the values | |||
in the map. | in the map. | |||
As a result of these rules, tag factoring in nested arrays and maps | As a result of these rules, tag factoring in nested arrays and maps | |||
is supported. For example, a 3-dimensional array of OIDs can be | is supported. For example, a 3-dimensional array of OIDs can be | |||
composed by using a single TBD111 tag containing an array of arrays | composed by using a single 111 tag containing an array of arrays of | |||
of arrays of byte strings. All such byte strings are then considered | arrays of byte strings. All such byte strings are then considered | |||
OIDs. | OIDs. | |||
4.1. Preferred Serialization Considerations | 4.1. Preferred Serialization Considerations | |||
Where tag factoring with tag number TBD111 is used, some OIDs | Where tag factoring with tag number 111 is used, some OIDs enclosed | |||
enclosed in the tag may be encoded in a shorter way by using tag | in the tag may be encoded in a shorter way by using tag number 112 | |||
number TBD112 instead of encoding an unadorned byte string. This | instead of encoding an unadorned byte string. This remains the | |||
remains the preferred serialization (see also Section 2.2). However, | preferred serialization (see also Section 2.2). However, this | |||
this specification does not make the presence or absence of tag | specification does not make the presence or absence of tag factoring | |||
factoring a preferred serialization; application protocols can define | a preferred serialization; application protocols can define where tag | |||
where tag factoring is to be used or not (and will need to do so if | factoring is to be used or not (and will need to do so if they have | |||
they have deterministic encoding requirements). | deterministic encoding requirements). | |||
4.2. Tag Factoring Example: X.500 Distinguished Name | 4.2. Tag Factoring Example: X.500 Distinguished Name | |||
Consider the X.500 distinguished name: | Consider the X.500 distinguished name: | |||
+==============================+=============+ | +==============================+=============+ | |||
| Attribute Types | Attribute | | | Attribute Types | Attribute | | |||
| | Values | | | | Values | | |||
+==============================+=============+ | +==============================+=============+ | |||
| c (2.5.4.6) | US | | | c (2.5.4.6) | US | | |||
skipping to change at page 9, line 27 ¶ | skipping to change at line 388 ¶ | |||
| postalCode (2.5.4.17) | 90013 | | | postalCode (2.5.4.17) | 90013 | | |||
+------------------------------+-------------+ | +------------------------------+-------------+ | |||
| street (2.5.4.9) | 532 S Olive | | | street (2.5.4.9) | 532 S Olive | | |||
| | St | | | | St | | |||
+------------------------------+-------------+ | +------------------------------+-------------+ | |||
| businessCategory (2.5.4.15) | Public Park | | | businessCategory (2.5.4.15) | Public Park | | |||
| buildingName | Pershing | | | buildingName | Pershing | | |||
| (0.9.2342.19200300.100.1.48) | Square | | | (0.9.2342.19200300.100.1.48) | Square | | |||
+------------------------------+-------------+ | +------------------------------+-------------+ | |||
Table 1: Example X.500 Distinguished Name | Table 2: Example X.500 Distinguished Name | |||
Table 1 has four "relative distinguished names" (RDNs). The country | Table 2 has four "relative distinguished names" (RDNs). The country | |||
(first) and street (third) RDNs are single-valued. The second and | (first) and street (third) RDNs are single valued. The second and | |||
fourth RDNs are multi-valued. | fourth RDNs are multivalued. | |||
The equivalent representations in CBOR diagnostic notation (Section 8 | The equivalent representations in CBOR diagnostic notation (Section 8 | |||
of [RFC8949]) and CBOR are: | of [RFC8949]) and CBOR are: | |||
111([{ h'550406': "US" }, | 111([{ h'550406': "US" }, | |||
{ h'550407': "Los Angeles", | { h'550407': "Los Angeles", | |||
h'550408': "CA", | h'550408': "CA", | |||
h'550411': "90013" }, | h'550411': "90013" }, | |||
{ h'550409': "532 S Olive St" }, | { h'550409': "532 S Olive St" }, | |||
{ h'55040f': "Public Park", | { h'55040f': "Public Park", | |||
h'0992268993f22c640130': "Pershing Square" }]) | h'0992268993f22c640130': "Pershing Square" }]) | |||
Figure 5: Distinguished Name, in CBOR Diagnostic Notation | Figure 5: Distinguished Name in CBOR Diagnostic Notation | |||
d8 6f # tag(111) | d8 6f # tag(111) | |||
84 # array(4) | 84 # array(4) | |||
a1 # map(1) | a1 # map(1) | |||
43 550406 # 2.5.4.6 (4) | 43 550406 # 2.5.4.6 (4) | |||
62 # text(2) | 62 # text(2) | |||
5553 # "US" | 5553 # "US" | |||
a3 # map(3) | a3 # map(3) | |||
43 550407 # 2.5.4.7 (4) | 43 550407 # 2.5.4.7 (4) | |||
6b # text(11) | 6b # text(11) | |||
skipping to change at page 10, line 33 ¶ | skipping to change at line 435 ¶ | |||
6e # text(14) | 6e # text(14) | |||
3533322053204f6c697665205374 # "532 S Olive St" | 3533322053204f6c697665205374 # "532 S Olive St" | |||
a2 # map(2) | a2 # map(2) | |||
43 55040f # 2.5.4.15 (4) | 43 55040f # 2.5.4.15 (4) | |||
6b # text(11) | 6b # text(11) | |||
5075626c6963205061726b # "Public Park" | 5075626c6963205061726b # "Public Park" | |||
4a 0992268993f22c640130 # 0.9.2342.19200300.100.1.48 (11) | 4a 0992268993f22c640130 # 0.9.2342.19200300.100.1.48 (11) | |||
6f # text(15) | 6f # text(15) | |||
5065727368696e6720537175617265 # "Pershing Square" | 5065727368696e6720537175617265 # "Pershing Square" | |||
Figure 6: Distinguished Name, in CBOR (109 bytes) | Figure 6: Distinguished Name in CBOR (109 Bytes) | |||
(This example encoding assumes that all attribute values are UTF-8 | (This example encoding assumes that all attribute values are UTF-8 | |||
strings, or can be represented as UTF-8 strings with no loss of | strings or can be represented as UTF-8 strings with no loss of | |||
information.) | information.) | |||
5. CDDL Control Operators | 5. CDDL Control Operators | |||
Concise Data Definition Language (CDDL [RFC8610]) specifications may | Concise Data Definition Language (CDDL) specifications [RFC8610] may | |||
want to specify the use of SDNVs or SDNV sequences (as defined for | want to specify the use of SDNVs or SDNV sequences (as defined for | |||
the tag content for TBD110). This document introduces two new | the tag content for tag 110). This document introduces two new | |||
control operators that can be applied to a target value that is a | control operators that can be applied to a target value that is a | |||
byte string: | byte string: | |||
* ".sdnv", with a control type that contains unsigned integers. The | * ".sdnv", with a control type that contains unsigned integers. The | |||
byte string is specified to be encoded as an [RFC6256] SDNV (BER | byte string is specified to be encoded as an SDNV (BER encoding) | |||
encoding) for the matching values of the control type. | [RFC6256] for the matching values of the control type. | |||
* ".sdnvseq", with a control type that contains arrays of unsigned | * ".sdnvseq", with a control type that contains arrays of unsigned | |||
integers. The byte string is specified to be encoded as a | integers. The byte string is specified to be encoded as a | |||
sequence of [RFC6256] SDNVs (BER encoding) that decodes to an | sequence of SDNVs (BER encoding) [RFC6256] that decodes to an | |||
array of unsigned integers matching the control type. | array of unsigned integers matching the control type. | |||
* ".oid", like ".sdnvseq", except that the X*40+Y translation for | * ".oid", like ".sdnvseq", except that the X*40+Y translation for | |||
absolute OIDs is included (see Figure 8). | absolute OIDs is included (see Figure 8). | |||
Figure 7 shows an example for the use of ".sdnvseq" for a part of a | Figure 7 shows an example for the use of ".sdnvseq" for a part of a | |||
structure using OIDs that could be used in Figure 6; Figure 8 shows | structure using OIDs that could be used in Figure 6; Figure 8 shows | |||
the same with the ".oid" operator. | the same with the ".oid" operator. | |||
country-rdn = {country-oid => country-value} | country-rdn = {country-oid => country-value} | |||
skipping to change at page 11, line 29 ¶ | skipping to change at line 477 ¶ | |||
country-value = text .size 2 | country-value = text .size 2 | |||
Figure 7: Using .sdnvseq | Figure 7: Using .sdnvseq | |||
country-rdn = {country-oid => country-value} | country-rdn = {country-oid => country-value} | |||
country-oid = bytes .oid [2, 5, 4, 6] | country-oid = bytes .oid [2, 5, 4, 6] | |||
country-value = text .size 2 | country-value = text .size 2 | |||
Figure 8: Using .oid | Figure 8: Using .oid | |||
Note that the control type need not be a literal; e.g., "bytes .oid | Note that the control type need not be a literal; for example, "bytes | |||
[2, 5, 4, *uint]" matches all OIDs inside OID arc 2.5.4, | .oid [2, 5, 4, *uint]" matches all OIDs inside OID arc "2.5.4", | |||
"attributeType". | "attributeType". | |||
6. CDDL typenames | 6. CDDL Type Names | |||
For the use with CDDL, the typenames defined in Figure 9 are | For the use with CDDL, the type names defined in Figure 9 are | |||
recommended: | recommended: | |||
oid = #6.111(bstr) | oid = #6.111(bstr) | |||
roid = #6.110(bstr) | roid = #6.110(bstr) | |||
pen = #6.112(bstr) | pen = #6.112(bstr) | |||
Figure 9: Recommended typenames for CDDL | Figure 9: Recommended Type Names for CDDL | |||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. CBOR Tags | 7.1. CBOR Tags | |||
IANA is requested to assign in the 1+1 byte space (24..255) of the | IANA has assigned the CBOR tag numbers in Table 3 in the 1+1 byte | |||
CBOR tags registry [IANA.cbor-tags] the CBOR tag numbers in Table 2, | space (24..255) of the "CBOR Tags" registry [IANA.cbor-tags], with | |||
with the present document as the specification reference. | this document as the specification reference. | |||
+========+================+============================+============+ | +=====+===============+============================+===========+ | |||
| Tag | Data Item | Semantics | Reference | | | Tag | Data Item | Semantics | Reference | | |||
+========+================+============================+============+ | +=====+===============+============================+===========+ | |||
| TBD111 | byte string | object identifier (BER | [this | | | 111 | byte string, | object identifier (BER | RFC 9090 | | |||
| | or array or | encoding) | document, | | | | array, or map | encoding) | | | |||
| | map | | Section 2] | | +-----+---------------+----------------------------+-----------+ | |||
+--------+----------------+----------------------------+------------+ | | 110 | byte string, | relative object identifier | RFC 9090 | | |||
| TBD110 | byte string | relative object identifier | [this | | | | array, or map | (BER encoding); SDNV | | | |||
| | or array or | (BER encoding); | document, | | | | | [RFC6256] sequence | | | |||
| | map | SDNV [RFC6256] sequence | Section 2] | | +-----+---------------+----------------------------+-----------+ | |||
+--------+----------------+----------------------------+------------+ | | 112 | byte string, | object identifier (BER | RFC 9090 | | |||
| TBD112 | byte string | object identifier (BER | [this | | | | array, or map | encoding), relative to | | | |||
| | or array or | encoding), relative to | document, | | | | | 1.3.6.1.4.1 | | | |||
| | map | 1.3.6.1.4.1 | Section 2] | | +-----+---------------+----------------------------+-----------+ | |||
+--------+----------------+----------------------------+------------+ | ||||
Table 2: New Tag Numbers | Table 3: New Tag Numbers | |||
7.2. CDDL Control Operators | 7.2. CDDL Control Operators | |||
IANA is requested to assign in the CDDL Control Operators registry | IANA has assigned the CDDL control operators in Table 4 in the "CDDL | |||
[IANA.cddl] the CDDL Control Operators in Table 3, with the present | Control Operators" registry [IANA.cddl], with this document as the | |||
document as the specification reference. | specification reference. | |||
+==========+============================+ | +==========+===========+ | |||
| Name | Reference | | | Name | Reference | | |||
+==========+============================+ | +==========+===========+ | |||
| .sdnv | [this document, Section 5] | | | .sdnv | RFC 9090 | | |||
+----------+----------------------------+ | +----------+-----------+ | |||
| .sdnvseq | [this document, Section 5] | | | .sdnvseq | RFC 9090 | | |||
+----------+----------------------------+ | +----------+-----------+ | |||
| .oid | [this document, Section 5] | | | .oid | RFC 9090 | | |||
+----------+----------------------------+ | +----------+-----------+ | |||
Table 3: New CDDL Operators | Table 4: New CDDL | |||
Control Operators | ||||
8. Security Considerations | 8. Security Considerations | |||
The security considerations of [RFC8949] apply. | The security considerations of [RFC8949] apply. | |||
The encodings in Clauses 8.19 and 8.20 of [X.690] are quite compact | The encodings in Clauses 8.19 and 8.20 of [X.690] are quite compact | |||
and unambiguous, but MUST be followed precisely to avoid security | and unambiguous but MUST be followed precisely to avoid security | |||
pitfalls. In particular, the requirements set out in Section 2.1 of | pitfalls. In particular, the requirements set out in Section 2.1 of | |||
this document need to be followed; otherwise, an attacker may be able | this document need to be followed; otherwise, an attacker may be able | |||
to subvert a checking process by submitting alternative | to subvert a checking process by submitting alternative | |||
representations that are later taken as the original (or even | representations that are later taken as the original (or even | |||
something else entirely) by another decoder supposed to be protected | something else entirely) by another decoder that is intended to be | |||
by the checking process. | protected by the checking process. | |||
OIDs and relative OIDs can always be treated as opaque byte strings. | OIDs and relative OIDs can always be treated as opaque byte strings. | |||
Actually understanding the structure that was used for generating | Actually understanding the structure that was used for generating | |||
them is not necessary, and, except for checking the structure | them is not necessary, and, except for checking the structure | |||
requirements, it is strongly NOT RECOMMENDED to perform any | requirements, it is strongly NOT RECOMMENDED to perform any | |||
processing of this kind (e.g., converting into dotted notation and | processing of this kind (e.g., converting into dotted notation and | |||
back) unless absolutely necessary. If the OIDs are translated into | back) unless absolutely necessary. If the OIDs are translated into | |||
other representations, the usual security considerations for non- | other representations, the usual security considerations for non- | |||
trivial representation conversions apply; the integer values are | trivial representation conversions apply; the integer values are | |||
unlimited in range. | unlimited in range. | |||
skipping to change at page 13, line 28 ¶ | skipping to change at line 572 ¶ | |||
may cause the application to emit data with semantics different from | may cause the application to emit data with semantics different from | |||
what was intended. Applications therefore need to be restrictive | what was intended. Applications therefore need to be restrictive | |||
with respect to what data items they apply tag factoring to. | with respect to what data items they apply tag factoring to. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[IANA.cbor-tags] | [IANA.cbor-tags] | |||
IANA, "Concise Binary Object Representation (CBOR) Tags", | IANA, "Concise Binary Object Representation (CBOR) Tags", | |||
<http://www.iana.org/assignments/cbor-tags>. | <https://www.iana.org/assignments/cbor-tags>. | |||
[IANA.cddl] | [IANA.cddl] | |||
IANA, "Concise Data Definition Language (CDDL)", | IANA, "Concise Data Definition Language (CDDL)", | |||
<http://www.iana.org/assignments/cddl>. | <https://www.iana.org/assignments/cddl>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC6256] Eddy, W. and E. Davies, "Using Self-Delimiting Numeric | [RFC6256] Eddy, W. and E. Davies, "Using Self-Delimiting Numeric | |||
Values in Protocols", RFC 6256, DOI 10.17487/RFC6256, May | Values in Protocols", RFC 6256, DOI 10.17487/RFC6256, May | |||
2011, <https://www.rfc-editor.org/info/rfc6256>. | 2011, <https://www.rfc-editor.org/info/rfc6256>. | |||
skipping to change at page 14, line 10 ¶ | skipping to change at line 602 ¶ | |||
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>. | |||
[RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | |||
Representation (CBOR)", STD 94, RFC 8949, | Representation (CBOR)", STD 94, RFC 8949, | |||
DOI 10.17487/RFC8949, December 2020, | DOI 10.17487/RFC8949, December 2020, | |||
<https://www.rfc-editor.org/info/rfc8949>. | <https://www.rfc-editor.org/info/rfc8949>. | |||
[X.660] International Telecommunications Union, "Information | [X.660] ITU-T, "Information technology - Procedures for the | |||
technology — Procedures for the operation of object | operation of object identifier registration authorities: | |||
identifier registration authorities: General procedures | General procedures and top arcs of the international | |||
and top arcs of the international object identifier tree", | object identifier tree", ITU-T Recommendation X.660, July | |||
ITU-T Recommendation X.660, July 2011, | 2011, <https://www.itu.int/rec/T-REC-X.660>. | |||
<https://www.itu.int/rec/T-REC-X.660>. | ||||
[X.680] International Telecommunications Union, "Information | [X.680] ITU-T, "Information technology - Abstract Syntax Notation | |||
technology — Abstract Syntax Notation One (ASN.1): | One (ASN.1): Specification of basic notation", ITU-T | |||
Specification of basic notation", ITU-T Recommendation | Recommendation X.680, August 2015, | |||
X.680, August 2015, <https://www.itu.int/rec/T-REC-X.680>. | <https://www.itu.int/rec/T-REC-X.680>. | |||
[X.690] International Telecommunications Union, "Information | [X.690] ITU-T, "Information technology - ASN.1 encoding rules: | |||
technology — ASN.1 encoding rules: Specification of Basic | Specification of Basic Encoding Rules (BER), Canonical | |||
Encoding Rules (BER), Canonical Encoding Rules (CER) and | Encoding Rules (CER) and Distinguished Encoding Rules | |||
Distinguished Encoding Rules (DER)", ITU-T Recommendation | (DER)", ITU-T Recommendation X.690, August 2015, | |||
X.690, August 2015, <https://www.itu.int/rec/T-REC-X.690>. | <https://www.itu.int/rec/T-REC-X.690>. | |||
9.2. Informative References | 9.2. Informative References | |||
[IANA.enterprise-numbers] | [IANA.enterprise-numbers] | |||
IANA, "Enterprise Numbers", | IANA, "Private Enterprise Numbers", | |||
<http://www.iana.org/assignments/enterprise-numbers>. | <https://www.iana.org/assignments/enterprise-numbers>. | |||
[OID-INFO] Orange SA, "OID Repository", 2016, | [OID-INFO] Orange SA, "Object Identifier (OID) Repository", | |||
<http://www.oid-info.com/>. | <http://www.oid-info.com/>. | |||
[PCRE] Ho, A., "PCRE - Perl Compatible Regular Expressions", | [PCRE] "PCRE - Perl Compatible Regular Expressions", | |||
2018, <http://www.pcre.org/>. | <http://www.pcre.org/>. | |||
[RFC7388] Schoenwaelder, J., Sehgal, A., Tsou, T., and C. Zhou, | [RFC7388] Schoenwaelder, J., Sehgal, A., Tsou, T., and C. Zhou, | |||
"Definition of Managed Objects for IPv6 over Low-Power | "Definition of Managed Objects for IPv6 over Low-Power | |||
Wireless Personal Area Networks (6LoWPANs)", RFC 7388, | Wireless Personal Area Networks (6LoWPANs)", RFC 7388, | |||
DOI 10.17487/RFC7388, October 2014, | DOI 10.17487/RFC7388, October 2014, | |||
<https://www.rfc-editor.org/info/rfc7388>. | <https://www.rfc-editor.org/info/rfc7388>. | |||
[X.672] International Telecommunications Union, "Information | [X.672] ITU-T, "Information technology - Open systems | |||
technology — Open systems interconnection — Object | interconnection - Object identifier resolution system | |||
identifier resolution system", ITU-T Recommendation X.672, | (ORS)", ITU-T Recommendation X.672, August 2010, | |||
August 2010, <https://www.itu.int/rec/T-REC-X.672>. | <https://www.itu.int/rec/T-REC-X.672>. | |||
Appendix A. Change Log | ||||
This section is to be removed before publishing as an RFC. | ||||
A.1. Changes from -06 to -07 | ||||
* Various editorial changes prompted by IESG feedback; clarify the | ||||
usage of "SDNV" in this document (no leading zeros). | ||||
* Add security consideration about tag-factoring. | ||||
* Make TBD112, where applicable, the preferred serialization (and | ||||
thus the required deterministic encoding) over TBD111. | ||||
A.2. Changes from -05 to -06 | ||||
Add references to specific section numbers of [X.690] to better | ||||
explain validity of enclosed byte string. | ||||
A.3. Changes from -04 to -05 | ||||
* Update acknowledgements, contributor list, and author list | ||||
A.4. Changes from -03 to -04 | ||||
Process WGLC and shepherd comments: | ||||
* Update references (RFC 8949, URIs for ITU-T) | ||||
* Define arc for this document, reference SDN definition | ||||
* Restructure, small editorial clarifications | ||||
A.5. Changes from -02 to -03 | ||||
* Add tag TBD112 for PEN-relative OIDs | ||||
* Add suggested CDDL typenames; reference RFC8610 | ||||
A.6. Changes from -01 to -02 | ||||
Minor editorial changes, remove some remnants, ready for WGLC. | ||||
A.7. Changes from -00 to -01 | ||||
Clean up OID tag factoring. | ||||
A.8. Changes from -07 (bormann) to -00 (ietf) | ||||
Resubmitted as WG draft after adoption. | ||||
A.9. Changes from -06 to -07 | ||||
Reduce the draft back to its basic mandate: Describe CBOR tags for | ||||
what is colloquially know as ASN.1 Object IDs. | ||||
A.10. Changes from -05 to -06 | ||||
Refreshed the draft to the current date ("keep-alive"). | ||||
A.11. Changes from -04 to -05 | ||||
Discussed UUID usage in CBOR, and incorporated fixes proposed by | ||||
Olivier Dubuisson, including fixes regarding OID nomenclature. | ||||
A.12. Changes from -03 to -04 | ||||
Changes occurred based on limited feedback, mainly centered around | ||||
the abstract and introduction, rather than substantive technical | ||||
changes. These changes include: | ||||
* Changed the title so that it is about tags and techniques. | ||||
* Rewrote the abstract to describe the content more accurately, and | ||||
to point out that no changes to the wire protocol are being | ||||
proposed. | ||||
* Removed "ASN.1" from "object identifiers", as OIDs are independent | ||||
of ASN.1. | ||||
* Rewrote the introduction to be more about the present text. | ||||
* Proposed a concise OID arc. | ||||
* Provided binary regular expression forms for OID validation. | ||||
* Updated IANA registration tables. | ||||
A.13. Changes from -02 to -03 | ||||
Many significant changes occurred in this version. These changes | ||||
include: | ||||
* Expanded the draft scope to be a comprehensive CBOR update. | ||||
* Added OID-related sections: OID Enumerations, OID Maps and Arrays, | ||||
and Applications and Examples of OIDs. | ||||
* Added Tag 36 update (binary MIME, better definitions). | ||||
* Added stub/experimental sections for X.690 Series Tags (tag <<X>>) | ||||
and Regular Expressions (tag 35). | ||||
* Added technique for representing sets and multisets. | ||||
* Added references and fixed typos. | ||||
Acknowledgments | Acknowledgments | |||
Sean Leonard started the work on this document in 2014 with an | Sean Leonard started the work on this document in 2014 with an | |||
elaborate proposal. Jim Schaad provided a significant review of this | elaborate proposal. Jim Schaad provided a significant review of this | |||
document. Rob Wilton's IESG review prompted us to provide preferred | document. Rob Wilton's IESG review prompted us to provide preferred | |||
serialization considerations. | serialization considerations. | |||
Contributors | Contributors | |||
Sean Leonard | Sean Leonard | |||
Penango, Inc. | Penango, Inc. | |||
5900 Wilshire Boulevard | 5900 Wilshire Boulevard | |||
21st Floor | 21st Floor | |||
Los Angeles, CA, 90036 | Los Angeles, CA 90036 | |||
United States of America | United States of America | |||
Email: dev+ietf@seantek.com | Email: dev+ietf@seantek.com | |||
Author's Address | Author's Address | |||
Carsten Bormann | Carsten Bormann | |||
Universität Bremen TZI | Universität Bremen TZI | |||
Postfach 330440 | Postfach 330440 | |||
D-28359 Bremen | D-28359 Bremen | |||
End of changes. 77 change blocks. | ||||
354 lines changed or deleted | 242 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |