<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.23 (Ruby 3.4.1) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-rfc-cddl-models-05" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.0 -->
  <front>
    <title>CDDL models for some existing RFCs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-rfc-cddl-models-05"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2025" month="February" day="23"/>
    <keyword>CDDL models</keyword>
    <abstract>
      <?line 48?>

<t>A number of CBOR- and JSON-based protocols have been defined before
CDDL was standardized or widely used.</t>
      <t>This short draft records some CDDL definitions for such protocols,
which could become part of a library of CDDL definitions available for
use in CDDL2 processors.  It focuses on CDDL in (almost) published
IETF RFCs.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-cbor-rfc-cddl-models/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cabo/common-cddl"/>.</t>
    </note>
  </front>
  <middle>
    <?line 58?>

<section anchor="intro">
      <name>Introduction</name>
      <t>(Please see abstract.)
Add in <xref target="STD94"/> <xref target="STD90"/>
        <xref target="RFC8610"/> <xref target="RFC9165"/> <xref target="I-D.ietf-cbor-cddl-more-control"/></t>
    </section>
    <section anchor="cddl-definitions-for-almost-published-rfcs">
      <name>CDDL definitions for (almost) published RFCs</name>
      <t>This section is intended to have one subsection for each CDDL data
model presented for an existing RFC.
As a start, it is fleshed out with three such data models.</t>
      <section anchor="rfc-7071-reputation-interchange">
        <name>RFC 7071 (Reputation Interchange)</name>
        <t><xref section="H" sectionFormat="of" target="RFC8610"/> contains two CDDL definitions for <xref target="RFC7071"/>,
which are not copied here.
Typically, the compact form would be used in applications using the
RFC 7071 format; while the extended form might be useful to
cherry-pick features of RFC 7071 into another protocol.</t>
      </section>
      <section anchor="rfc-8366-voucher-artifact-for-bootstrapping-protocols">
        <name>RFC 8366 (Voucher Artifact for Bootstrapping Protocols)</name>
        <t><xref target="RFC8366"/> defines a data model for a "Voucher Artifact", which can be
represented in CDDL as:</t>
        <figure anchor="rfc8366">
          <name>CDDL for RFC 8366</name>
          <sourcecode type="cddl" name="rfc8366.cddl"><![CDATA[
voucher-artifact = {
  "ietf-voucher:voucher": {
    created-on: yang$date-and-time
    ? (
        expires-on: yang$date-and-time
        ? last-renewal-date: yang$date-and-time
        //
        nonce: json-binary<bytes .size (8..32)>
      )
    assertion: assertion
    serial-number: text
    ? idevid-issuer: json-binary<bytes>
    pinned-domain-cert: json-binary<bytes>
    ? domain-cert-revocation-checks: bool
  }
}

assertion = "verified" / "logged" / "proximity"

yang$date-and-time = text .regexp cat3<"[0-9]{4}-[0-9]{2}-[0-9]{2}T",
                            "[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]+)?",
                            "(Z|[+-][0-9]{2}:[0-9]{2})">

cat3<A,B,C> = (A .cat B) .cat C

json-binary<T> = text .b64c T
]]></sourcecode>
        </figure>
        <t>The two examples in the RFC can be validated with this little patchup
script:</t>
        <sourcecode type="shell"><![CDATA[
sed -e s/ue=/uQ=/ -e s/'"true"'/true/ | cddl rfc8366.cddl vp -
]]></sourcecode>
      </section>
      <section anchor="rfc-9457-problem-details-for-http-apis">
        <name>RFC 9457 (Problem Details for HTTP APIs)</name>
        <t><xref target="RFC9457"/> defines a simple data model
that is reproduced in CDDL here:</t>
        <figure anchor="rfc9457">
          <name>CDDL for RFC 9457</name>
          <sourcecode type="cddl" name="rfc9457.cddl"><![CDATA[
problem-object = {
  ? type: preferably-absolute-uri
  ? title: text
  ? status: 100..599
  ? detail: text
  ? instance: preferably-absolute-uri
  * text .feature "problem-object-extension" => any
}

; RECOMMENDED: absolute URI or at least absolute path:
preferably-absolute-uri = ~uri
]]></sourcecode>
        </figure>
        <t>Note that <xref section="B" sectionFormat="of" target="RFC9290"/> also defines a CBOR-specific data
model that may be useful for tunneling <xref target="RFC7807"/> or <xref target="RFC9457"/> problem details in
<xref target="RFC9290"/> Concise Problem Details.</t>
      </section>
      <section anchor="rfc-9595-yang-sid">
        <name>RFC 9595 (YANG-SID)</name>
        <t><xref target="RFC9595"/> defines a data model for a
"SID file" in YANG, to be transported as a YANG-JSON instance.</t>
        <t>An equivalent CDDL data model is given here:</t>
        <figure anchor="rfc9595">
          <name>CDDL for RFC 9595</name>
          <sourcecode type="cddl" name="rfc9595.cddl"><![CDATA[
sid-file = {
  "ietf-sid-file:sid-file": {
    module-name: yang$yang-identifier
    ? module-revision: revision-identifier
    ? sid-file-version: sid-file-version-identifier
    ? sid-file-status: "unpublished" / "published"
    ? description: text
    ? dependency-revision: [* dependency-revision]
    ? assignment-range: [* assignment-range]
    ? item: [*item]
  }
}

rep<RE>=cat3<"(", RE, ")*">
opt<RE>=cat3<"(", RE, ")?">
cat3<A,B,C> = (A .cat B) .cat C

id-re = "[a-zA-Z_][a-zA-Z0-9\\-_.]*"
yang$yang-identifier = text .regexp id-re
revision-identifier = text .regexp "[0-9]{4}-[0-9]{2}-[0-9]{2}"
sid-file-version-identifier = uint .size 4
sid = text .decimal (0..0x7fffffffffffffff); uint63 as text string
plus-id<Prefix> = Prefix .cat id-re
schema-node-re = cat3<plus-id<"/">, plus-id<":">, ; qualified
                      rep<plus-id<"/"> .cat       ; optionally
                          opt<plus-id<":">> > >     ; qualified
schema-node-path = text .regexp schema-node-re

dependency-revision = {
  module-name: yang$yang-identifier
  module-revision: revision-identifier
}

assignment-range = {
  entry-point: sid
  size: sid
}

item = {
  ? status: "stable" / "unstable" / "obsolete"
  (
    namespace: "module" / "identity" / "feature"
    identifier: yang$yang-identifier
  //
    namespace: "data"
    identifier: schema-node-path
  )
  sid: sid
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="your-favorite-rfc-here">
        <name>Your favorite RFC here...</name>
      </section>
    </section>
    <section anchor="iana-defs">
      <name>CDDL definitions derived from IANA registries</name>
      <t>Often, CDDL models need to use numbers that have been registered as
values in IANA registries.</t>
      <t>This section is intended to have one subsection for each CDDL data
model presented that is derived from an existing IANA registry.
As a start, it is fleshed out with one such data model.</t>
      <t>The intention is that these reference modules are update automatically
(after each change of the registry or periodically, frequent enough.)
Hence, this document can only present a snapshot for IANA-derived data
models.</t>
      <t>The model(s) presented here clearly are in proof-of-concept stage;
suggestions for improvement are very welcome.</t>
      <section anchor="cose-algorithms-registry">
        <name>COSE Algorithms Registry</name>
        <t>The IANA registry for COSE Algorithms is part of the IANA cose
registry group <xref target="IANA.cose"/>.</t>
        <t>The following automatically derived model defines some 70 CDDL rules
that have the name for a COSE algorithm as its rule name and the
actual algorithm number as its right hand side.
The additional first rule is a type choice between all these
constants; this could be used in places that just have to validate the
presence of a COSE algorithm number that was registered at the time
the model was derived.</t>
        <t>This section does not explore potential filtering of the registry
entries, e.g., by recommended status (such as leaving out deprecated
entries) or by capabilities.</t>
        <t>The names given in the COSE algorithms registry are somewhat irregular
and do not consider their potential use in modeling or programming
languages; the automatic derivation used here turns sequences of one
or more spaces and other characters that cannot be in CDDL names
(<tt>[/+]</tt> here) into underscores.</t>
        <figure anchor="cose-algorithms">
          <name>CDDL for cose-algorithms Registry</name>
          <sourcecode type="cddl" name="cose-algorithms.cddl"><![CDATA[
============= NOTE: '\' line wrapping per RFC 8792 ==============

algorithms = RS1 / A128CTR / A192CTR / A256CTR / A128CBC / \
  A192CBC / A256CBC / KT256 / KT128 / TurboSHAKE256 / \
  TurboSHAKE128 / WalnutDSA / RS512 / RS384 / RS256 / ES256K / \
  HSS-LMS / SHAKE256 / SHA-512 / SHA-384 / RSAES-OAEP_w_SHA-512 \
  / RSAES-OAEP_w_SHA-256 / RSAES-\
  OAEP_w_RFC_8017_default_parameters / PS512 / PS384 / PS256 / \
  ES512 / ES384 / ECDH-SS_A256KW / ECDH-SS_A192KW / ECDH-\
  SS_A128KW / ECDH-ES_A256KW / ECDH-ES_A192KW / ECDH-ES_A128KW \
  / ECDH-SS_HKDF-512 / ECDH-SS_HKDF-256 / ECDH-ES_HKDF-512 / \
  ECDH-ES_HKDF-256 / SHAKE128 / SHA-512_256 / SHA-256 / SHA-\
  256_64 / SHA-1 / direct_HKDF-AES-256 / direct_HKDF-AES-128 / \
  direct_HKDF-SHA-512 / direct_HKDF-SHA-256 / EdDSA / ES256 / \
  direct / A256KW / A192KW / A128KW / A128GCM / A192GCM / \
  A256GCM / HMAC_256_64 / HMAC_256_256 / HMAC_384_384 / \
  HMAC_512_512 / AES-CCM-16-64-128 / AES-CCM-16-64-256 / AES-CCM\
  -64-64-128 / AES-CCM-64-64-256 / AES-MAC_128_64 / AES-\
  MAC_256_64 / ChaCha20_Poly1305 / AES-MAC_128_128 / AES-\
  MAC_256_128 / AES-CCM-16-128-128 / AES-CCM-16-128-256 / AES-\
  CCM-64-128-128 / AES-CCM-64-128-256 / IV-GENERATION
RS1 = -65535
A128CTR = -65534
A192CTR = -65533
A256CTR = -65532
A128CBC = -65531
A192CBC = -65530
A256CBC = -65529
KT256 = -264
KT128 = -263
TurboSHAKE256 = -262
TurboSHAKE128 = -261
WalnutDSA = -260
RS512 = -259
RS384 = -258
RS256 = -257
ES256K = -47
HSS-LMS = -46
SHAKE256 = -45
SHA-512 = -44
SHA-384 = -43
RSAES-OAEP_w_SHA-512 = -42
RSAES-OAEP_w_SHA-256 = -41
RSAES-OAEP_w_RFC_8017_default_parameters = -40
PS512 = -39
PS384 = -38
PS256 = -37
ES512 = -36
ES384 = -35
ECDH-SS_A256KW = -34
ECDH-SS_A192KW = -33
ECDH-SS_A128KW = -32
ECDH-ES_A256KW = -31
ECDH-ES_A192KW = -30
ECDH-ES_A128KW = -29
ECDH-SS_HKDF-512 = -28
ECDH-SS_HKDF-256 = -27
ECDH-ES_HKDF-512 = -26
ECDH-ES_HKDF-256 = -25
SHAKE128 = -18
SHA-512_256 = -17
SHA-256 = -16
SHA-256_64 = -15
SHA-1 = -14
direct_HKDF-AES-256 = -13
direct_HKDF-AES-128 = -12
direct_HKDF-SHA-512 = -11
direct_HKDF-SHA-256 = -10
EdDSA = -8
ES256 = -7
direct = -6
A256KW = -5
A192KW = -4
A128KW = -3
A128GCM = 1
A192GCM = 2
A256GCM = 3
HMAC_256_64 = 4
HMAC_256_256 = 5
HMAC_384_384 = 6
HMAC_512_512 = 7
AES-CCM-16-64-128 = 10
AES-CCM-16-64-256 = 11
AES-CCM-64-64-128 = 12
AES-CCM-64-64-256 = 13
AES-MAC_128_64 = 14
AES-MAC_256_64 = 15
ChaCha20_Poly1305 = 24
AES-MAC_128_128 = 25
AES-MAC_256_128 = 26
AES-CCM-16-128-128 = 30
AES-CCM-16-128-256 = 31
AES-CCM-64-128-128 = 32
AES-CCM-64-128-256 = 33
IV-GENERATION = 34
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA.</t>
      <t>However, the use of IANA registries for deriving CDDL (e.g., as in
<xref target="iana-defs"/>) is an active subject of discussion.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8610"/>, <xref target="RFC9165"/>, <xref target="I-D.ietf-cbor-cddl-more-control"/>, <xref target="STD94"/> and <xref target="STD90"/> apply.
This collection of CDDL models is not thought to create new security
considerations.
Errors in the models could -- if we knew of them, we'd fix those
errors instead of explaining their security consequences in this
section.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <referencegroup anchor="STD90" target="https://www.rfc-editor.org/info/std90">
          <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259">
            <front>
              <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
              <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
              <date month="December" year="2017"/>
              <abstract>
                <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
                <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="90"/>
            <seriesInfo name="RFC" value="8259"/>
            <seriesInfo name="DOI" value="10.17487/RFC8259"/>
          </reference>
        </referencegroup>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
            <front>
              <title>Concise Binary Object Representation (CBOR)</title>
              <author fullname="C. Bormann" initials="C." surname="Bormann"/>
              <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
              <date month="December" year="2020"/>
              <abstract>
                <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
                <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="94"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point.</t>
              <t>The present document defines a number of control operators that were not yet ready at the time RFC 8610 was completed:.plus,.cat, and.det for the construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and.feature for indicating the use of a non-basic feature in an instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9165"/>
          <seriesInfo name="DOI" value="10.17487/RFC9165"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-cddl-more-control">
          <front>
            <title>Concise Data Definition Language (CDDL): Additional Control Operators for the Conversion and Processing of Text</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="9" month="January" year="2025"/>
            <abstract>
              <t>   The Concise Data Definition Language (CDDL), standardized in RFC
   8610, provides "control operators" as its main language extension
   point.  RFCs have added to this extension point both in an
   application-specific and a more general way.

   The present document defines a number of additional generally
   applicable control operators for text conversion (Bytes, Integers,
   JSON, Printf-style formatting) and for an operation on text.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-more-control-08"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7807">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>This document defines a "problem detail" as a way to carry machine- readable details of errors in a HTTP response to avoid the need to define new error response formats for HTTP APIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7807"/>
          <seriesInfo name="DOI" value="10.17487/RFC7807"/>
        </reference>
        <reference anchor="RFC8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer. This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure. Other YANG-derived formats are possible. The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC7071">
          <front>
            <title>A Media Type for Reputation Interchange</title>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <author fullname="M. Kucherawy" initials="M." surname="Kucherawy"/>
            <date month="November" year="2013"/>
            <abstract>
              <t>This document defines the format of reputation response data ("reputons"), the media type for packaging it, and definition of a registry for the names of reputation applications and response sets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7071"/>
          <seriesInfo name="DOI" value="10.17487/RFC7071"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </reference>
        <reference anchor="IANA.cose" target="https://www.iana.org/assignments/cose">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
    </references>
    <?line 370?>

<section numbered="false" anchor="list-of-figures">
      <name>List of Figures</name>
      <ol spacing="compact" type="1"><li>
          <t><xref target="rfc8366">CDDL for RFC 8366</xref></t>
        </li>
        <li>
          <t><xref target="rfc9457">CDDL for RFC 9457</xref></t>
        </li>
        <li>
          <t><xref target="rfc9595">CDDL for RFC 9595</xref></t>
        </li>
        <li>
          <t><xref target="cose-algorithms">CDDL for cose-algorithms Registry</xref></t>
        </li>
      </ol>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Va63YbtxH+P0+BQ/cckwmX4lUXOrRLU0ykOrZVSW1P4+io
y12Q3Hi5YPcimVGVp+mb9MX6DYBd7pKymj+VfQ6BwWAwGMx8MwDpOA7dDUWP
KA3SUA7FaxJicnr6o1gpX4aJmKtYJGolhfwSJGkQLcTl95OEXgh3NoslplaY
Y7Uy477yIncFeX7szlNnpuKVG0WOh4YTzz3H8/3QMbOc0E1lkpKPj6HotrsD
p911uj3xQrQH3O877WOne8T9Pn2Wm3sV+5V1yXPToQiiuaIkjaW7Gorz6fX3
ROtgKD6lymtiCzFG5glam5VpeGq1dr1UN1YySpMbIjdLlyoewgaOMPpP3DhJ
ZSTemh1gRAgVL4biL1FwJ+MkSP/z71S8jSVEiOufzjUDayGh0oVK0rnrLUWv
1+7323rMC9LN0E4wBOxhKE6d7nFvcGIpWZTG4PpB8qIbTVwvVQS+b/snTr/b
cbqdY+ewd9Lt6EG5coNwKDx3pv6Y/hq0oCHRnYwyyXuxgyqWfwxkOtejQiyC
dJnNzKQDtoGK9LEQRbzXFNvjyVfXpyftoV7FGYpfEhXh8PE3GvJJH3e1zszU
L5j4lCtMJ31m4tZhp41xXkX3TzqHA9YM21Uhb+XcOW2xjsZTrJfE0rEsBW+X
+LhLakLY0XH7aCjWsZqFcuWo0Ldr9g4Ph+JOZd5SxnbZ/qDEOQsSS+6etPUK
XpBIxw5b2e2jzlDEcp2lKrLcgxPovnGjhZMEvNb5+MO45akE+pDjOIgQ+AE8
jGgsomw1k7FQczF5+/ESY5Ev/nT18YMzcxPpsypwU4UQWrp3UswknMmX8yDC
2Exio5K0v9+7CZwLk93YD37FIKLzPkAMbEQGOS2i62UAFjhxakIPOuPg/cQE
sRaiBQdpoCIb3rDMVoMm3S8DEOCEIS/u8by1C3lQ3hVhMIvdeKN3sivMvYOj
uTAaiyUohJjUXF0W78kEUZi0YKgUDB7GE6EMAzPW3XCFeGmIdTYLg2QpfeIo
1njSMhZdBXAISXTOPuBnHi8r7N/Di4CpjzQq/RHVL0IJE4tEyuJAWg0a+z6v
+fCgHe3xkVvs24+PxDQsY2i5a1Z6XXDBv5805v4uDCDag5FGZzShrYx8DKfK
HDrCG0cxy1lYmGTsMMu4qUsa7WBKmQCuMJNZ3KiCzC0a4xzYR2IgW5DySvNQ
aj1UlsJZ0qVIl4Anc+ws16IobPziBcsQ7OyifsnO7mpdYG8Ze0u4umwQDDRe
r6F78EWcsR/YuIaJ2D5uAEuk9+pp8zw82GB6fMwdzY2liFSKyesAWiJIZYuu
N+vAc8Nw04S2MsdqFrES99YztcvzKbrrdQhus0qWsCkwiYqtGKB4JbAefJPl
yS/W+FrgKlgsUytwnoU4EWKsiDcOlPgs5tJNs5iddb41D45PwfgK0uIieLYm
ZNAR9b8a0BHjOA3mVn9kEpWyH67XrOhFHnfasBauYEoT/XyW2yMyBy5qu2Jr
TWFjFt4wkwSYKnzERqBwE6DSb7/9ZsDXoqHj5oqNxAMQrKah1w4O7WdtqMeQ
lpBaIdJRkYG9P3DGdgBGThqspGZ5I+qUB6T8sg6gxnPsZkroJqkTy0jeu6Fj
qoBn+A8OimYEpJYmJwHEI8DSd7MNagnRSgCOon7cavW6jdeWv6E/3SSRMXvK
cNs0OVvGAdY3QD0UKVzEbgn4ehf4TpAkGY/sLWcWwGkCrR1fIdsikULyV1nf
iBIXdn6njPM6MLf3ORmKmVKcIB8JOFNoiTOqoeII5oiSmjgQtVAtFrYJB/wS
rFBZ1Ij2bYeZvB3RiuUCpwI3SXvf1T61nZObh/6jYxrdbeO61ixs/NRfLWcc
7jXqn1o3uv1t483/klL/6V+fvnVu9mQ0aq+JtI7j5tvm5DXUr49FCxTxtmE+
J0Rl216/LrY4O+x74po9nR6G4gVqTR2KicpiT3Kp5XBdN6rZgRaHQ03o4ndU
05HCQZaHcO2RgVtqPJNf3NUaUMohxRjCPCbgxJ0bBmxxP8dXoG4YpJCJzJl6
y2xNiRcH69TGIOA4DInRywEOH2RydJD9eXRgei9raZzJ2ssD/jgQ/9IRK8r6
iru1cPQWc7jhgkbUL0zFIk4lUNjW7mfX1xdifHFe4AuzVvAlCXhbJZihdOnq
xME4wmm2BCOMzmUgKaqt2S+ygJE3It2sJRdYci5jFAQbB6lXhRl8MosDw2Gu
GzbM3nDGSjO4fqfdbrUGJyea6OuNlLiQW1D9eM/K/sZ6goVtHRwlHR2N/QkC
qiZGrwWX1zjkV+JyOvn4/v30w+n0dChykeIvl+dcY8EeXEak2wGc63JIX9EC
dviNlSl5oT6hp7yQB57xQh5mL/ygUk5dUKSUft/alMSFK87UDRNVOlhdaSZr
6QEyvHIFocWs3E0p5fFyaQYECzkpmSyNchpC86Rt/cYa0x4NB4N1K6PCxBTP
YscVt4mRq2ZR//v4ww/O1flp4ZSgPpv0qAZuMUf+rrEv8vwmV07YAVJplKxR
8MJNXZ6rhXNxXbgLlh+jTvpnFiBSkRe3NZVdA86+wEUi2vNvVPYOr1pJkDlx
mDeKFAlpWWgO1yYxfT9ABolSBu7Y4r/lA/QHic5FeWufNV/D0bdN5t2lPDMn
j6paFhX1qEkYRS/PSNIglF6hlPx8yb4mI29T0vbTN0/Rb+wUZKxgEfGV2om5
ZNT8u8ScOUjlihn48ybPeQCe7y6nr0cmUdVR31xOm6LW+AaZQa3TJ8feYOx/
Jg3YJeazrH1ynV/Hzk+3N7aB1PPzz85t6+abGj11brspVAuiJ05tl/GZNFuj
Z04ScjLUmLaU6TNrIdpHSK/cUNQBle0vR/PqX+OVnnnY42jQE1BtIqppHWYJ
VvjuAqAVfGELmZaxjtlRghJk5ToRQ5S2lDZpPrN2UHvdFEVvyL1X4p8Z0h9X
JV9J93yaZQlmPfP3Sijtc1zqP1Mt8KGXl30t+J8RsF2+rDzj8+5ZVDdH9IQP
2zj/PXH8u2LYFHAVz7dLSH7icdYKR6VDGiQ+atPGNA6IIp8WcYzGjDHwgEO6
1FGcfWQqOZxNCc66J7g0QWLNqKoZjW4oFLljU6TBgK3WX92yrb3LohlE9+fv
ngSZ8htby/dXTo2cEp5MjRh4LjVimFMjMsvfMVvM3TsVw2x6UF8jW60n7+k+
qug7vvzxcyW/2uDoFgFHCXLPw4vAjVwH/Alkf5yjWGhWHjkjaS7t/L5hbguJ
yajbpxsjDhpwRiLknMyUjTtrtf4vrwJ59VbZZfmZoKzF5nc9GBglKs8FLVMY
a31z5fXKKI1hGF0XIbKkDZNEX/OzNVfJws1SxS93+oJPdRc2trsybwxc1XCF
nevINcgau1F+/iYwj5HMOZHLSGWLZatBZ7xY05TevvIyjjddnqso3OTW4Y1G
7jpZKnMVZ0s4uZ22xkzs5nSnnjRKxmW3Eh5qwRhSeUs4VZREau7gP78cyjXj
rbuQryjJcD9Ltm8fqLNjdSe1ZjwVoL8R9zLkFzZTIE0+Xk3FOFywGy9Xibi0
BjDqVM5NS9zlx97zl7o0n8APklTMWsQqW6OgK94qHx/tZucqDNU9+0fleAo3
Mm6WV2j6NfGobdww5gOmbQzw2hzE9r1Ca+nmWnJWCtJETzJc/BbK7zWulwLK
S5z20TSfoF9plswNCOE3Iizj+n5g8geKwxgFuhYbsEvzHQQOpQKPozK958DE
joyDEs6Ka8M0eWV8xtt9VFqHADjr079kSb41VVz2tM7GMzxpHkd3dmr11yL4
5bYMCzpQhH7ZSHNX00zW3rvY4Csow89kSGShgveslY48vfEQQvnkduKGOMcA
Z5pCthatppht9Gswf9vBEGOSiqjryMbK8Oo7LQVh7/MTksdX2lxIg6MQEjx3
7c4C3G5zADOnmBfQ9nJctUSydVt2fHaee41SMehZ6MbEp+or+w4Y8fmy3WQQ
l/ZpH5S1qbSe+uFtEburFZc3IaAjQ+DpEy2BjLGoecjUh6tjGHkvYusyjHjm
bQ8oR5DJ3zcInd4S7ZrmiQ/IxE/HBdgDWljZWfHGbaxA9X98Ovj25h96kYZ5
Jcxg7Tjhr1/YYMXVovxOPRIfPl5Ph+Llzy8F9ibFff4+CNwzrxFHJ11RmTJC
abE18EhcXnWQ08ed7vHk+lK3Trq21R0c5jSMvp2g9TPSsebQPc2hW++u0dSf
YMXndRbP1NXZ+N3U0HnelmZ4/uaGUZaeXo3RvrwadLr6s3fc159m3pQ/31kB
Z1dXzo/vr9ArSUbTMXO5lc8eT6+cj+Ppxe39bc7AEp4YMlIMmVnsEIx3e9zu
HN0CutwsTG+BkDgpfZIH4sKqe2HVvbjabnNqx6Z2bDo5PXOurm7ZWO/+VibA
jlsCT9XE7vGWON2dNt2dNi2mmP3lws/enX5v7VIhWbPaqSUurXqZXJg3Py9r
yNut3bctno3e7WHfEtip/ABgkBppbF7Dvks1wllAeWR7rLtUuwPfOM60ZHnD
af1Sm6iwVWFWbvwweW/HTEs7NaaY3tn78eS22EvRM8voLs711pyt9komsV2M
urylyeS90zl0Dvt2c1WakWRpLIGJe7yGtuXlVcBhtMqdtaLqZOnif7d9e6HC
TafXHuzM3MovT93TEIR9tZm41YXnWx33uS3RcJ//1flh+mF6Ob4+//iBGGtG
2O5g0BtQDjmW0KcceSyhRzkAWUKXchyyhA7lUGQJbcoRyRC6J2SACd3uYZ8M
OulOj6oQpYldqmKUJnZoC1Sa0CaDVtwZnJCBLN05JoNbunNEFrzQ6x9RDl7c
O6Tyuv0B5d7OvT7lQMa9Hj0JZjzU3R/KJXaqQ8+BGbO36SLfUe+ELvIN9Y7p
It9Pj7eT8xzStOAZ0A7AMbFPOyDHxF6JqKORiV3aATomdmgH7JjYph3AYyuf
0B7gMfmY9kCPyUe0B3z6RGkP+PQJUtkROsdUBkCmHFHJ5p3DvMfRyARzrNrj
O316Cgx5pLc3ki/YpacAkUc6eyO5NBjJt456bPyPm0eWX4cFbQ09oK19+1Q6
FcphciRMkJl2l3KYHIkelYFyJPpUgcqRGFAFLEfikCpQORJHtA+WWLBN+3gJ
coeq0Gi5u7SPmCD3aAc0QesXtEJrHNI+bGKjfdpFThAHlfmWeEhPYCfM096l
G8V6lW2U+Lu7dMvfowqGMqlfPIPwVcwplXN7zyE7DOZZhN9ddl9GdiXld0h+
KdEXwomtr8335dUy1NaV15Vb9Mr9rO8eQl+6k1QXy/oCSXSm7iXuseZbei7Q
7VD5RYW10jU417Naz7q5j7j264Ptg8tjQ9/dcFHz+Ic9/PKhv1eCVD9IvCzh
9zUsi78r6WXY4qa4L3x1P8Wm+FcgT05i+cXPPprV3300qz/8aJZ+M8K3g+J3
I/pXCJuWsZ2Hy7S9uOU/lLGvR4G5xaVLfrdI+T5pvlYXkbwv1KOqei2axrGK
i28erShzZXUcEczFvRSfWYK5Aa6aILz0BT/uYiVcd2UuAPdP12c2vke6QWR/
LIGLVsU2xb1ILxkkZO+h9oc4M9f7TPy29iMOmaV9Hyz4JxLw5Swy117pw+Ee
hvaXG4/UaYlPe9+v3tTzb2gb1N1l4G+cDAO3GtTbYxicDCwDWg3qlxm+FgeY
sDPUIBp7nyN1H0p/oZ9n9r2Ig7Sys+u3p/RfyjPT8j0pAAA=

-->

</rfc>
