<?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  (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-edhoc-oscore-profile-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="EDHOC and OSCORE profile of ACE">Ephemeral Diffie-Hellman Over COSE (EDHOC) and Object Security for Constrained Environments (OSCORE) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ace-edhoc-oscore-profile-05"/>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson</organization>
      <address>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE</organization>
      <address>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE</organization>
      <address>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework.
It utilizes Ephemeral Diffie-Hellman Over COSE (EDHOC) for achieving mutual authentication between an ACE-OAuth Client and Resource Server, and it binds an authentication credential of the Client to an ACE-OAuth access token.
EDHOC also establishes an Object Security for Constrained RESTful Environments (OSCORE) Security Context, which is used to secure communications when accessing protected resources according to the authorization information indicated in the access token.
This profile can be used to delegate management of authorization information from a resource-constrained server to a trusted host with less severe limitations regarding processing power and memory.</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-ietf-ace-edhoc-oscore-profile/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Authentication and Authorization for Constrained Environments (ace) Working Group mailing list (<eref target="mailto:ace@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ace/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ace-wg/ace-edhoc-oscore-profile"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines the "coap_edhoc_oscore" profile of the ACE-OAuth framework <xref target="RFC9200"/>. This profile addresses a "zero-touch" constrained setting where authenticated and authorized operations can be performed with low overhead without endpoint specific configurations.</t>
      <t>Like in the "coap_oscore" profile <xref target="RFC9203"/>, also in this profile a client (C) and a resource server (RS) use the Constrained Application Protocol (CoAP) <xref target="RFC7252"/> to communicate, and Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> to protect their communications, but this profile uses the Ephemeral Diffie-Hellman Over COSE (EDHOC) protocol <xref target="RFC9528"/> to establish the OSCORE Security Context. The processing of requests for specific protected resources is identical to what is defined in the "coap_oscore" profile.</t>
      <t>When using this profile, C accesses protected resources hosted at RS with the use of an access token issued by a trusted authorization server (AS) and bound to an authentication credential of C. This differs from the "coap_oscore" profile, where the access token is bound to a symmetric key used to derive the OSCORE Security Context. Whereas <xref target="RFC9200"/> recommends the use of CBOR Web Tokens (CWTs) <xref target="RFC8392"/> as access tokens, this profile requires it, see <xref target="access-token"/>.</t>
      <t>An authentication credential can be a raw public key, e.g., encoded as a CWT Claims Set (CCS, <xref target="RFC8392"/>); or a public key certificate, e.g., encoded as an X.509 certificate <xref target="RFC5280"/> or as a CBOR encoded X.509 certificate (C509, <xref target="I-D.ietf-cose-cbor-encoded-cert"/>); or a different type of data structure containing the public key of the peer in question.</t>
      <t>The ACE protocol establishes what those authentication credentials are, and may transport the actual authentication credentials by value or uniquely refer to them. If an authentication credential is pre-provisioned or can be obtained over less constrained links, then it suffices that ACE provides a unique reference such as a certificate hash (e.g., by using the COSE header parameter "x5t", see <xref target="RFC9360"/>). This is in the same spirit as EDHOC, where the authentication credentials may be transported or referenced in the ID_CRED_x message fields (see <xref section="3.5.3" sectionFormat="of" target="RFC9528"/>).</t>
      <t>In general, AS and RS are likely to have trusted access to each other's authentication credentials, since AS acts on behalf of RS as per the trust model of ACE. Also, AS needs to have some information about C, including the relevant authentication credential, in order to identify C when it requests an access token and to determine what access rights it can be granted. However, the authentication credential of C may potentially be conveyed (or uniquely referred to) within the request for access that C makes to AS.</t>
      <t>The establishment of an association between RS and AS in an ACE ecosystem is out of scope, but one solution is to build on the same primitives as used in this document, i.e., EDHOC for authentication and OSCORE for communication security, using for example <xref target="I-D.ietf-lake-authz"/> for onboarding RS with AS, and <xref target="I-D.ietf-ace-coap-est-oscore"/> for establishing a trust anchor in RS. A similar procedure can also be applied between C and AS for registering a client and for the establishment of a trust anchor.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>Certain security-related terms such as "authentication", "authorization", "confidentiality", "(data) integrity", "Message Authentication Code (MAC)", "Hash-based Message Authentication Code (HMAC)", and "verify" are taken from <xref target="RFC4949"/>.</t>
        <t>RESTful terminology follows HTTP <xref target="RFC9110"/>.</t>
        <t>Readers are expected to be familiar with the terms and concepts defined in CoAP <xref target="RFC7252"/>, OSCORE <xref target="RFC8613"/>, and EDHOC <xref target="RFC9528"/>.</t>
        <t>Readers are also expected to be familiar with the terms and concepts of the ACE framework described in <xref target="RFC9200"/> and in <xref target="RFC9201"/>.</t>
        <t>Terminology for entities in the architecture is defined in OAuth 2.0 <xref target="RFC6749"/>, such as the client (C), the resource server (RS), and the authorization server (AS).  It is assumed in this document that a given resource on a specific RS is associated with a unique AS.</t>
        <t>Note that the term "endpoint" is used here, as in <xref target="RFC9200"/>, following its OAuth definition, which is to denote resources such as /token and /introspect at AS and /authz-info at RS. The CoAP <xref target="RFC7252"/> definition, which is "An entity participating in the CoAP protocol" is not used in this document.</t>
        <t>The authorization information (authz-info) resource refers to the authorization information endpoint as specified in <xref target="RFC9200"/>. The term "claim" is used in this document with the same semantics as in <xref target="RFC9200"/>, i.e., it denotes information carried in the access token or returned from introspection.</t>
        <t>Concise Binary Object Representation (CBOR) <xref target="RFC8949"/><xref target="RFC8742"/> and Concise Data Definition Language (CDDL) <xref target="RFC8610"/> are used in this document. CDDL predefined type names, especially bstr for CBOR byte strings and tstr for CBOR text strings, are used extensively in this document.</t>
        <t>Examples throughout this document are expressed in CBOR diagnostic notation as defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>. Diagnostic notation comments are often used to provide a textual representation of the numeric parameter names and values.</t>
        <t>In the CBOR diagnostic notation used in this document, constructs of the form e'SOME_NAME' are replaced by the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. For example, {e'session_id' : h'01', e'cipher_suites': 3} stands for {0 : h'01', 2 : 3}.</t>
        <t>Note to RFC Editor: Please delete the paragraph immediately preceding this note. Also, in the CBOR diagnostic notation used in this document, please replace the constructs of the form e'SOME_NAME' with the value assigned to SOME_NAME in the CDDL model shown in <xref target="fig-cddl-model"/> of <xref target="sec-cddl-model"/>. Finally, please delete this note.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>Protocol Overview</name>
      <t>This section gives an overview of how to use the ACE framework <xref target="RFC9200"/> together with the lightweight authenticated key exchange protocol EDHOC <xref target="RFC9528"/>. By doing so, the client (C) and the resource server (RS) generate an OSCORE Security Context <xref target="RFC8613"/> associated with authorization information, and use that security context to protect their communications. The parameters needed by C to negotiate the use of this profile with the authorization server (AS), as well as the OSCORE setup process, are described in detail in the following sections.</t>
      <t>RS maintains a collection of authentication credentials. These are associated with OSCORE Security Contexts and with authorization information for all clients that RS is communicating with. The authorization information is used to enforce polices for processing requests from those clients.</t>
      <t>The ACE framework describes how integrity protected authorization information propagates from AS to RS. This profile describes how C requests from AS an access token, including authorization information, for the resources it wants to access on RS, by sending an access token request to the /token endpoint, as specified in <xref section="5.8" sectionFormat="of" target="RFC9200"/>.</t>
      <t>If the request is granted then AS may send back an access token in a response to C, or upload the access token directly to RS as described in the alternative workflow defined in <xref target="I-D.ietf-ace-workflow-and-params"/>. The latter is not detailed further here.</t>
      <t>If C has retrieved an access token then there are two options for C to upload it to RS, as further compared below.</t>
      <ol spacing="normal" type="1"><li>
          <t>C posts the access token to the /authz-info endpoint by using the mechanisms specified in <xref section="5.10" sectionFormat="of" target="RFC9200"/>. If the access token is valid, RS replies to the request with a 2.01 (Created) response, after which C initiates the EDHOC protocol with RS. The communication with the /authz-info endpoint may not be protected unless there is previously established security context, for example in the case of update of access rights, see <xref target="update-access-rights-c-rs"/>.</t>
        </li>
        <li>
          <t>C initiates the EDHOC protocol and includes the access token as External Authorization Data (EAD), see <xref section="3.8" sectionFormat="of" target="RFC9528"/>. In this case, the access token is validated in parallel with the EDHOC session. The EAD item containing the access token is protected in different ways depending on which EDHOC message it is carried in, see <xref section="9.1" sectionFormat="of" target="RFC9528"/>.</t>
        </li>
      </ol>
      <t>When running the EDHOC protocol, C uses the authentication credential of RS specified by AS together with the access token, while RS uses the authentication credential of C bound to and specified within the access token. If C and RS complete the EDHOC session successfully, they are mutually authenticated and they derive an OSCORE Security Context as per <xref section="A.1" sectionFormat="of" target="RFC9528"/>.</t>
      <t>From then on, C effectively gains authorized and secure access to protected resources on RS with the established OSCORE Security Context, for as long as there is a valid access token. The OSCORE Security Context is discarded when an access token (whether the same or a different one) is used to successfully derive a new OSCORE Security Context for C.</t>
      <t>While the OSCORE Security Context and access token are valid, C can contact AS to request an update of its access rights, by sending a similar request to the /token endpoint. This request also includes a "session identifier" (see <xref target="edhoc-parameters-object"/>) provided by AS in the initial request, which allows AS to find the data it has previously shared with C. The session identifier is assigned by AS and used to identify a series of access tokens, called a "token series" (see <xref target="token-series"/>). Upon successful update of access rights (see <xref target="update-access-rights-c-rs"/>), the new issued access token becomes the latest in its token series, but the session identifier remains the same. When the latest access token of a token series becomes invalid (e.g., when it expires or gets revoked), that token series ends.</t>
      <t>When RS receives a request from C protected with an OSCORE Security Context derived from an EDHOC session implementing this profile, then the associated session identifier, together with the authentication credential of C used in the EDHOC session, enables the RS to look up the unique access token determining the access rights of C.</t>
      <t>Comparing the options above:</t>
      <ul spacing="normal">
        <li>
          <t>In option 1, the access token upload and the EDHOC protocol are performed in series, which requires more messages exchanged than option 2. An overview of the message flow for the "coap_edhoc_oscore" profile in case of option 1 above is given in <xref target="protocol-overview"/>, and a more detailed protocol is provided in <xref target="example-without-optimization"/>. For option 2, the EDHOC protocol, the access token upload, and access request &amp; response can be completed in two round trips (see <xref target="example-with-optimization"/>).</t>
        </li>
        <li>
          <t>Option 1 supports update of access rights protected with the existing OSCORE Security Context (see <xref target="update-access-rights-c-rs"/>), whereas option 2 always generates a new OSCORE Security Context. If option 2 is implemented and there is a need to perform an update of access rights without changing OSCORE Security Context, then C needs to also implement option 1 or to rely on some other method, such as the alternative workflow of the ACE framework (see <xref target="I-D.ietf-ace-workflow-and-params"/>).</t>
        </li>
      </ul>
      <figure anchor="protocol-overview">
        <name>Protocol Overview Example. Names of messages coincide with those of RFC 9200 when applicable.</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="608" width="480" viewBox="0 0 480 608" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 32,48 L 32,432" fill="none" stroke="black"/>
              <path d="M 32,496 L 32,576" fill="none" stroke="black"/>
              <path d="M 264,160 L 264,320" fill="none" stroke="black"/>
              <path d="M 264,368 L 264,576" fill="none" stroke="black"/>
              <path d="M 472,48 L 472,576" fill="none" stroke="black"/>
              <path d="M 48,62 L 80,62" fill="none" stroke="black"/>
              <path d="M 48,66 L 80,66" fill="none" stroke="black"/>
              <path d="M 424,62 L 456,62" fill="none" stroke="black"/>
              <path d="M 424,66 L 456,66" fill="none" stroke="black"/>
              <path d="M 32,96 L 96,96" fill="none" stroke="black"/>
              <path d="M 216,96 L 464,96" fill="none" stroke="black"/>
              <path d="M 40,128 L 304,128" fill="none" stroke="black"/>
              <path d="M 424,128 L 472,128" fill="none" stroke="black"/>
              <path d="M 32,176 L 72,176" fill="none" stroke="black"/>
              <path d="M 224,176 L 256,176" fill="none" stroke="black"/>
              <path d="M 40,224 L 88,224" fill="none" stroke="black"/>
              <path d="M 208,224 L 264,224" fill="none" stroke="black"/>
              <path d="M 48,254 L 120,254" fill="none" stroke="black"/>
              <path d="M 48,258 L 120,258" fill="none" stroke="black"/>
              <path d="M 184,254 L 248,254" fill="none" stroke="black"/>
              <path d="M 184,258 L 248,258" fill="none" stroke="black"/>
              <path d="M 32,384 L 72,384" fill="none" stroke="black"/>
              <path d="M 208,384 L 256,384" fill="none" stroke="black"/>
              <path d="M 40,416 L 72,416" fill="none" stroke="black"/>
              <path d="M 216,416 L 256,416" fill="none" stroke="black"/>
              <path d="M 32,512 L 72,512" fill="none" stroke="black"/>
              <path d="M 208,512 L 256,512" fill="none" stroke="black"/>
              <path d="M 40,544 L 72,544" fill="none" stroke="black"/>
              <path d="M 216,544 L 256,544" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="472,96 460,90.4 460,101.6" fill="black" transform="rotate(0,464,96)"/>
              <polygon class="arrowhead" points="464,64 452,58.4 452,69.6" fill="black" transform="rotate(0,456,64)"/>
              <polygon class="arrowhead" points="264,512 252,506.4 252,517.6" fill="black" transform="rotate(0,256,512)"/>
              <polygon class="arrowhead" points="264,384 252,378.4 252,389.6" fill="black" transform="rotate(0,256,384)"/>
              <polygon class="arrowhead" points="264,176 252,170.4 252,181.6" fill="black" transform="rotate(0,256,176)"/>
              <polygon class="arrowhead" points="256,256 244,250.4 244,261.6" fill="black" transform="rotate(0,248,256)"/>
              <polygon class="arrowhead" points="56,256 44,250.4 44,261.6" fill="black" transform="rotate(180,48,256)"/>
              <polygon class="arrowhead" points="56,64 44,58.4 44,69.6" fill="black" transform="rotate(180,48,64)"/>
              <polygon class="arrowhead" points="48,544 36,538.4 36,549.6" fill="black" transform="rotate(180,40,544)"/>
              <polygon class="arrowhead" points="48,416 36,410.4 36,421.6" fill="black" transform="rotate(180,40,416)"/>
              <polygon class="arrowhead" points="48,224 36,218.4 36,229.6" fill="black" transform="rotate(180,40,224)"/>
              <polygon class="arrowhead" points="48,128 36,122.4 36,133.6" fill="black" transform="rotate(180,40,128)"/>
              <g class="text">
                <text x="32" y="36">C</text>
                <text x="268" y="36">RS</text>
                <text x="468" y="36">AS</text>
                <text x="264" y="52">|</text>
                <text x="116" y="68">Mutual</text>
                <text x="204" y="68">authentication</text>
                <text x="280" y="68">and</text>
                <text x="324" y="68">secure</text>
                <text x="384" y="68">channel</text>
                <text x="264" y="84">|</text>
                <text x="124" y="100">POST</text>
                <text x="172" y="100">/token</text>
                <text x="264" y="116">|</text>
                <text x="340" y="132">Access</text>
                <text x="392" y="132">Token</text>
                <text x="288" y="148">+</text>
                <text x="324" y="148">Access</text>
                <text x="400" y="148">Information</text>
                <text x="100" y="180">POST</text>
                <text x="168" y="180">/authz-info</text>
                <text x="148" y="196">(access_token)</text>
                <text x="116" y="228">2.01</text>
                <text x="168" y="228">Created</text>
                <text x="152" y="260">EDHOC</text>
                <text x="76" y="276">Mutual</text>
                <text x="164" y="276">authentication</text>
                <text x="64" y="292">and</text>
                <text x="124" y="292">derivation</text>
                <text x="180" y="292">of</text>
                <text x="204" y="292">an</text>
                <text x="76" y="308">OSCORE</text>
                <text x="140" y="308">Security</text>
                <text x="208" y="308">Context</text>
                <text x="244" y="340">/Proof-of-possession</text>
                <text x="344" y="340">and</text>
                <text x="196" y="356">Security</text>
                <text x="264" y="356">Context</text>
                <text x="332" y="356">storage/</text>
                <text x="108" y="388">OSCORE</text>
                <text x="168" y="388">Request</text>
                <text x="108" y="420">OSCORE</text>
                <text x="172" y="420">Response</text>
                <text x="84" y="452">/Proof-of-possession</text>
                <text x="16" y="468">and</text>
                <text x="68" y="468">Security</text>
                <text x="136" y="468">Context</text>
                <text x="32" y="484">storage</text>
                <text x="104" y="484">(latest)/</text>
                <text x="108" y="516">OSCORE</text>
                <text x="168" y="516">Request</text>
                <text x="108" y="548">OSCORE</text>
                <text x="172" y="548">Response</text>
                <text x="136" y="580">...</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
   C                            RS                       AS
   |                            |                         |
   | <==== Mutual authentication and secure channel ====> |
   |                            |                         |
   +-------- POST /token  ------------------------------->|
   |                            |                         |
   |<--------------------------------- Access Token ------+
   |                               + Access Information   |
   |                            |                         |
   +----- POST /authz-info ---->|                         |
   |       (access_token)       |                         |
   |                            |                         |
   |<------ 2.01 Created -------+                         |
   |                            |                         |
   | <========= EDHOC ========> |                         |
   |  Mutual authentication     |                         |
   |  and derivation of an      |                         |
   |  OSCORE Security Context   |                         |
   |                            |                         |
   |                /Proof-of-possession and              |
   |                Security Context storage/             |
   |                            |                         |
   +----- OSCORE Request ------>|                         |
   |                            |                         |
   |<---- OSCORE Response ------|                         |
   |                            |                         |
/Proof-of-possession            |                         |
and Security Context            |                         |
storage (latest)/               |                         |
   |                            |                         |
   +----- OSCORE Request ------>|                         |
   |                            |                         |
   |<---- OSCORE Response ------|                         |
   |                            |                         |
   |           ...              |                         |

]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="c-as-comm">
      <name>Client-AS Communication</name>
      <t>The following subsections describe the details of the POST request and response to the /token endpoint between C and AS.</t>
      <t>In this exchange, AS provides C with the access token, together with a set of parameters that enable C to run EDHOC with RS. In particular, these include information about the authorization credential of RS, AUTH_CRED_RS, transported by value or uniquely referred to.</t>
      <t>The access token is securely associated with the authentication credential of C, AUTH_CRED_C, by including it or uniquely referring to it in the access token.</t>
      <t>AUTH_CRED_C is specified in the "req_cnf" parameter defined in <xref target="RFC9201"/> of the POST request to the /token endpoint from C to AS, either transported by value or uniquely referred to.</t>
      <t>The request to the /token endpoint and the corresponding response can include EDHOC_Information, which is a CBOR map object containing information related to an EDHOC session, in particular the identifier "session_id", see <xref target="edhoc-parameters-object"/>. This object is transported in the "edhoc_info" parameter registered in <xref target="iana-oauth-params"/> and <xref target="iana-oauth-cbor-mappings"/>.</t>
      <section anchor="c-as">
        <name>C-to-AS: POST to /token endpoint</name>
        <t>The client-to-AS request is specified in <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>.</t>
        <t>The client <bcp14>MUST</bcp14> send this POST request to the /token endpoint over a secure channel that guarantees authentication, message integrity, and confidentiality (see <xref target="secure-comm-as"/>). This document describes the use of CoAP, EDHOC and OSCORE to reduce the number of libraries that C has to support.</t>
        <t>An example of such a request is shown in <xref target="token-request"/>. In this example, C specifies its own authentication credential by reference, as the hash of an X.509 certificate carried in the "x5t" field of the "req_cnf" parameter. In fact, it is expected that C can typically specify its own authentication credential by reference, since AS is expected to obtain the actual authentication credential during a previous client registration process or secure association establishment with C.</t>
        <figure anchor="token-request">
          <name>Example of C-to-AS POST /token request for an access token.</name>
          <artwork><![CDATA[
   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: application/ace+cbor
   Payload:
   {
     / audience / 5 : "tempSensor4711",
     / scope /    9 : "read",
     / req_cnf /  4 : {
       e'x5t' : h'822E4879F2A41B510C1F9B'
     }
   }
]]></artwork>
        </figure>
        <t>If C wants to update its access rights without changing an existing OSCORE Security Context, it <bcp14>MUST</bcp14> include EDHOC_Information in its POST request to the /token endpoint. The EDHOC_Information <bcp14>MUST</bcp14> include the "session_id" field. This POST request <bcp14>MUST</bcp14> omit the "req_cnf" parameter. An example of such a request is shown in <xref target="token-request-update"/>.</t>
        <t>The identifier "session_id" is assigned by AS as discussed in <xref target="token-series"/>, and, together with other information such as audience (see <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>), can be used by AS to determine the token series to which the new requested access token has to be added. Therefore, the session_id <bcp14>MUST</bcp14> identify the pair (AUTH_CRED_C, AUTH_CRED_RS) associated with a still valid access token previously issued for C and RS by AS.</t>
        <t>AS <bcp14>MUST</bcp14> verify that the received "session_id" identifies a token series to which a still valid access token issued for C and RS belongs. If that is not the case, the Client-to-AS request <bcp14>MUST</bcp14> be declined with the error code "invalid_request" as defined in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
        <figure anchor="token-request-update">
          <name>Example of C-to-AS POST /token request for updating access rights to an access token.</name>
          <artwork><![CDATA[
   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: application/ace+cbor
   Payload:
   {
     / audience /      5 : "tempSensor4711",
     / scope /         9 : "write",
     e'edhoc_info_param' : {
        e'session_id' : h'01'
     }
   }
]]></artwork>
        </figure>
      </section>
      <section anchor="token-series">
        <name>Token Series</name>
        <t>This document refers to "token series" as a series of access tokens sorted in chronological order as they are released, characterized by the following properties:</t>
        <ul spacing="normal">
          <li>
            <t>issued by the same AS</t>
          </li>
          <li>
            <t>issued to the same C, and associated with the same authentication credential of C</t>
          </li>
          <li>
            <t>issued for the same RS, identified by the same authentication credential</t>
          </li>
        </ul>
        <t>Upon a successful update of access rights, the new issued access token becomes the latest in its token series. When the latest access token of a token series becomes invalid (e.g., due to its expiration or revocation), the token series it belongs to ends.</t>
        <t>The general token series concept is defined in <xref target="I-D.ietf-ace-workflow-and-params"/>. In this profile, a token series is characterized by access tokens used between a given pair (C, RS) having the same "session_id" in the EDHOC_Information, see <xref target="edhoc-parameters-object"/>.</t>
        <t>AS assigns the "session_id" to the EDHOC_Information when issuing the first access token of a new series and that "session_id" remains fixed throughout the series lifetime. When assigning the identifier, AS <bcp14>MUST</bcp14> ensure that it was not used in a previous series whose access tokens share the following properties with the access tokens of the new series:</t>
        <ul spacing="normal">
          <li>
            <t>i) issued for the same RS; and</t>
          </li>
          <li>
            <t>ii) bound to the same authentication credential AUTH_CRED_C of the requesting client (irrespectively of how the AUTH_CRED_C is identified in the access tokens).</t>
          </li>
        </ul>
        <t>In case the access token is issued for a group-audience (see <xref section="6.9" sectionFormat="of" target="RFC9200"/>), what is defined above applies, with the difference that the token series is associated with all the RSs in the group-audience, as indicated by their respective AUTH_CRED_RS.</t>
      </section>
      <section anchor="as-c">
        <name>AS-to-C: Response</name>
        <t>After verifying the POST request to the /token endpoint and that C is authorized to access, AS responds as defined in <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>, with potential modifications as detailed below. If the request from C was invalid, or not authorized, AS returns an error response as described in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
        <t>AS can signal that the use of EDHOC and OSCORE as per this profile is <bcp14>REQUIRED</bcp14> for a specific access token, by including the "ace_profile" parameter with the value "coap_edhoc_oscore" in the access token response. This means that C <bcp14>MUST</bcp14> use EDHOC with RS and derive an OSCORE Security Context, as specified in <xref target="edhoc-exec"/>. After that, C <bcp14>MUST</bcp14> use the established OSCORE Security Context to protect communications with RS, when accessing protected resources at RS according to the authorization information indicated in the access token. Usually, it is assumed that constrained devices will be pre-configured with the necessary profile, so that this kind of profile signaling can be omitted.</t>
        <t>According to this document, the AS provides the access token to C, by specifying it in the "access_token" parameter of the access token response. An alternative workflow where the access token is uploaded by AS directly to RS is described in <xref target="I-D.ietf-ace-workflow-and-params"/>.</t>
        <t>When issuing any access token, AS <bcp14>MUST</bcp14> send the following data in the response to C.</t>
        <ul spacing="normal">
          <li>
            <t>The "session_id" field of EDHOC_Information, which is the identifier of the token series which the issued access token belongs to.</t>
          </li>
        </ul>
        <t>When issuing the first access token of a token series, AS <bcp14>MUST</bcp14> send the following data in the response to C.</t>
        <ul spacing="normal">
          <li>
            <t>A unique identification of the authentication credential of RS, AUTH_CRED_RS. This is specified in the "rs_cnf" parameter defined in <xref target="RFC9201"/>. AUTH_CRED_RS can be transported by value or referred to by means of an appropriate identifier.  </t>
            <t>
When issuing the first access token ever to a pair (C, RS) using a pair of corresponding authentication credentials (AUTH_CRED_C, AUTH_CRED_RS), it is typically expected that the response to C may include AUTH_CRED_RS by value.  </t>
            <t>
When later issuing further access tokens to the same pair (C, RS) using the same AUTH_CRED_RS, it is expected that the response to C includes AUTH_CRED_RS by reference.</t>
          </li>
        </ul>
        <t>When issuing the first access token of a token series, AS <bcp14>MAY</bcp14> send EDHOC_Information related to RS, see <xref target="edhoc-parameters-object"/>, in corresponding fields of the response to C. This information is based on knowledge that AS have about RS, e.g., from a previous onboarding process, with particular reference to what RS supports as EDHOC peer.</t>
        <t><xref target="fig-token-response"/> shows an example of an AS response. The "rs_cnf" parameter specifies the authentication credential of RS, as an X.509 certificate transported by value in the "x5chain" field. The access token and the authentication credential of RS have been truncated for readability.</t>
        <figure anchor="fig-token-response">
          <name>Example of AS-to-C Access Token response with EDHOC and OSCORE profile.</name>
          <artwork><![CDATA[
   Header: Created (Code=2.01)
      Content-Format: application/ace+cbor
      Payload:
      {
        / access_token / 1 : h'8343a1010aa2044c53/...
          (remainder of access token (CWT) omitted for brevity)/',
        / ace_profile / 38 : e'coap_edhoc_oscore',
        / expires_in /   2 : 3600,
        / rs_cnf /      41 : {
          e'x5chain' : h'3081ee3081a1a00302/...'
            (remainder of the credential omitted for brevity)/'
        }
        e'edhoc_info_param' : {
          e'session_id'    : h'01',
          e'methods'       : [0, 1, 2, 3],
          e'cipher_suites' : 0
        }
      }
]]></artwork>
        </figure>
        <section anchor="access-token">
          <name>Access Token</name>
          <t>To avoid the complexity of different encodings, an access token of this profile <bcp14>SHALL</bcp14> be a CBOR Web Token (CWT), see <xref target="RFC8392"/>. When issuing any access token of a token series, AS <bcp14>MUST</bcp14> specify the following data in the associated claims of the access token:</t>
          <ul spacing="normal">
            <li>
              <t>The "session_id" field of EDHOC_Information, with the same value specified in the response to C from the /token endpoint.  </t>
              <t>
EDHOC_Information <bcp14>MUST</bcp14> be transported in the "edhoc_info" claim, defined in <xref target="iana-token-cwt-claims"/>.</t>
            </li>
            <li>
              <t>The authentication credential AUTH_CRED_C that C specified in its POST request to the /token endpoint (see <xref target="c-as"/>), in the "cnf" claim.  </t>
              <t>
In the access token, AUTH_CRED_C can be transported by value or uniquely referred to by means of an appropriate identifier, regardless of how C specified it in the request to the /token endpoint. Thus, the specific field carried in the access token claim and specifying AUTH_CRED_C depends on the specific way used by AS.  </t>
              <t>
When issuing the first access token ever to a pair (C, RS) using a pair of corresponding authentication credentials (AUTH_CRED_C, AUTH_CRED_RS), it is typically expected that AUTH_CRED_C is included by value.  </t>
              <t>
When later issuing further access tokens to the same pair (C, RS) using the same AUTH_CRED_C, it is expected that AUTH_CRED_C is identified by reference.</t>
            </li>
          </ul>
          <t>When issuing the first access token of a token series, AS <bcp14>MAY</bcp14> specify additional EDHOC_Information data (see <xref target="edhoc-parameters-object"/>) in the "edhoc_info" claim of the access token. Specifically, if the following EDHOC_Information data are specified in the response to C from the /token endpoint, they <bcp14>MUST</bcp14> be included with the same values in the access token.</t>
          <ul spacing="normal">
            <li>
              <t>osc_ms_len: The size of the OSCORE Master Secret. If it is not included, the default value from <xref section="A.1" sectionFormat="of" target="RFC9528"/> is assumed.</t>
            </li>
            <li>
              <t>osc_salt_len: The size of the OSCORE Master Salt. If it is not included, the default value from <xref section="A.1" sectionFormat="of" target="RFC9528"/> is assumed.</t>
            </li>
            <li>
              <t>osc_version: The OSCORE version. If it is not included, the default value of 1 (see <xref section="5.4" sectionFormat="of" target="RFC8613"/>) is assumed.</t>
            </li>
          </ul>
          <t>The access token needs to be protected for various reasons. To prevent manipulation of the content, it needs to be integrity protected. RS needs to be able to verify that the access token is issued by a trusted AS (source authentication). Depending on the use case and deployment, the access token may need to be confidentiality protected, for example, for privacy reasons.</t>
          <t>AS protects the access token using a COSE method (see <xref target="RFC9052"/>) as specified in <xref target="RFC8392"/>. Depending on the audience, there may be different ways to most appropriately ensure the confidentiality of an access token. For an audience comprising a single RS, the CWT Claims Set may be wrapped in COSE_Encrypt / COSE_Encrypt0. Instead, if the access token needs to be read by multiple RSs, then the CWT Claims Set may be wrapped in COSE_Sign / COSE_Sign1 and confidentiality protection can be applied during transport, e.g., by including the access token in the EAD_3 field of EDHOC message_3 sent by C to RS, when using the EDHOC forward message flow (see <xref target="edhoc-exec"/>).</t>
          <t><xref target="fig-token"/> shows an example CWT Claims Set, including the relevant EDHOC parameters in the "edhoc_info" claim. The "cnf" claim specifies the authentication credential of C, as an X.509 certificate transported by value in the "x5chain" field. The authentication credential of C has been truncated for readability.</t>
          <figure anchor="fig-token">
            <name>Example of CWT Claims Set with EDHOC parameters.</name>
            <artwork><![CDATA[
   {
    / aud /   3 : "tempSensorInLivingRoom",
    / iat /   6 : 1563451500,
    / exp /   4 : 1563453000,
    / scope / 9 :  "temperature_g firmware_p",
    / cnf /   8 : {
      e'x5chain' : h'3081ee3081a1a00302/...
        (remainder of the credential omitted for brevity)/'
    }
    e'edhoc_info_claim' : {
      e'session_id'    : h'01',
      e'methods'       : [0, 1, 2, 3],
      e'cipher_suites' : 0
    }
  }
]]></artwork>
          </figure>
        </section>
        <section anchor="processing-in-c">
          <name>Processing in C</name>
          <t>When receiving an Access Token response including the "rs_cnf" parameter, C checks whether it is already storing the authentication credential of RS, namely AUTH_CRED_RS, specified in "rs_cnf" by value or reference.</t>
          <t>If this is not the case, C retrieves AUTH_CRED_RS, either using the "rs_cnf" parameter or some other trusted source. After that, C validates the actual AUTH_CRED_RS. In case of successful validation, C stores AUTH_CRED_RS as a valid authentication credential. Otherwise, C <bcp14>MUST</bcp14> delete the access token.</t>
        </section>
        <section anchor="update-of-access-rights">
          <name>Update of Access Rights</name>
          <t>If C has a valid OSCORE Security Context associated with a valid access token, then C can send a request to AS for updating its access rights.</t>
          <t>If the request is granted, then AS generates a new access token, where the "edhoc_info" claim <bcp14>MUST</bcp14> include only the "session_id" field. The access token is provisioned to RS either via C as specified in this document, or directly as described in <xref target="I-D.ietf-ace-workflow-and-params"/>. In either case, AS responds to C such that:</t>
          <ul spacing="normal">
            <li>
              <t>The response <bcp14>MUST NOT</bcp14> include the "rs_cnf" parameter.</t>
            </li>
            <li>
              <t>The EDHOC_Information in the response <bcp14>MUST</bcp14> include only the "session_id" field.</t>
            </li>
          </ul>
          <t>The "session_id" needs to be included in the new access token in order for RS to identify the old access token to supersede, as well as the OSCORE Security Context already shared between C and RS and to be associated with the new access token.</t>
        </section>
      </section>
      <section anchor="edhoc-parameters-object">
        <name>EDHOC_Information</name>
        <t>EDHOC_Information is an object including information that guides two peers towards executing the EDHOC protocol. In particular, the EDHOC_Information is defined to be serialized and transported between nodes, as specified by this document, but it can also be used by other specifications.</t>
        <t>In the "coap_edhoc_oscore" profile of the ACE-OAuth framework, which is specified in this document, the EDHOC_Information object <bcp14>MUST</bcp14> be encoded as CBOR. However, for easy applicability to other contexts, we define also the JSON encoding.</t>
        <t>The EDHOC_Information can be encoded either as a JSON object or as a CBOR map. The set of common fields that can appear in an EDHOC_Information can be found in the IANA "EDHOC Information" registry (see <xref target="iana-edhoc-parameters"/>), defined for extensibility, and the initial set of parameters defined in this document is specified below. All parameters are optional.</t>
        <t><xref target="_table-cbor-key-edhoc-params"/> provides a summary of the EDHOC_Information parameters defined in this section.</t>
        <table align="center" anchor="_table-cbor-key-edhoc-params">
          <name>EDHOC_Information Parameters</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">CBOR label</th>
              <th align="left">CBOR type</th>
              <th align="left">Registry</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">session_id</td>
              <td align="left">0</td>
              <td align="left">bstr</td>
              <td align="left"> </td>
              <td align="left">Identifier of a session</td>
            </tr>
            <tr>
              <td align="left">methods</td>
              <td align="left">1</td>
              <td align="left">int or array</td>
              <td align="left">EDHOC Method Type Registry</td>
              <td align="left">Set of supported EDHOC methods</td>
            </tr>
            <tr>
              <td align="left">cipher_suites</td>
              <td align="left">2</td>
              <td align="left">int or array</td>
              <td align="left">EDHOC Cipher Suites Registry</td>
              <td align="left">Set of supported EDHOC cipher suites</td>
            </tr>
            <tr>
              <td align="left">message_4</td>
              <td align="left">3</td>
              <td align="left">True or False</td>
              <td align="left"> </td>
              <td align="left">Support for EDHOC message_4</td>
            </tr>
            <tr>
              <td align="left">comb_req</td>
              <td align="left">4</td>
              <td align="left">True or False</td>
              <td align="left"> </td>
              <td align="left">Support for the EDHOC + OSCORE combined request</td>
            </tr>
            <tr>
              <td align="left">uri_path</td>
              <td align="left">5</td>
              <td align="left">tstr</td>
              <td align="left"> </td>
              <td align="left">URI-path of the EDHOC resource</td>
            </tr>
            <tr>
              <td align="left">osc_ms_len</td>
              <td align="left">6</td>
              <td align="left">uint</td>
              <td align="left"> </td>
              <td align="left">Length in bytes of the OSCORE Master Secret to derive</td>
            </tr>
            <tr>
              <td align="left">osc_salt_len</td>
              <td align="left">7</td>
              <td align="left">uint</td>
              <td align="left"> </td>
              <td align="left">Length in bytes of the OSCORE Master Salt to derive</td>
            </tr>
            <tr>
              <td align="left">osc_version</td>
              <td align="left">8</td>
              <td align="left">uint</td>
              <td align="left"> </td>
              <td align="left">OSCORE version number to use</td>
            </tr>
            <tr>
              <td align="left">cred_types</td>
              <td align="left">9</td>
              <td align="left">int or array</td>
              <td align="left">EDHOC Authentication Credential Types Registry</td>
              <td align="left">Set of supported types of authentication credentials for EDHOC</td>
            </tr>
            <tr>
              <td align="left">id_cred_types</td>
              <td align="left">10</td>
              <td align="left">int or tstr or array</td>
              <td align="left">COSE Header Parameters Registry</td>
              <td align="left">Set of supported types of authentication credential identifiers for EDHOC</td>
            </tr>
            <tr>
              <td align="left">eads</td>
              <td align="left">11</td>
              <td align="left">uint or array</td>
              <td align="left">EDHOC External Authorization Data Registry</td>
              <td align="left">Set of supported EDHOC External Authorization Data (EAD) items</td>
            </tr>
            <tr>
              <td align="left">initiator</td>
              <td align="left">12</td>
              <td align="left">True or False</td>
              <td align="left"> </td>
              <td align="left">Support for the EDHOC Initiator role</td>
            </tr>
            <tr>
              <td align="left">responder</td>
              <td align="left">13</td>
              <td align="left">True or False</td>
              <td align="left"> </td>
              <td align="left">Support for the EDHOC Responder role</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t>session_id: This parameter identifies a 'session' which the EDHOC information is associated with, but does not necessarily identify a specific EDHOC session. In this document, "session_id" identifies a token series. In JSON, the "session_id" value is a Base64 encoded byte string. In CBOR, the "session_id" type is a byte string, and has label 0.</t>
          </li>
          <li>
            <t>methods: This parameter specifies a set of supported EDHOC methods (see <xref section="3.2" sectionFormat="of" target="RFC9528"/>). If the set is composed of a single EDHOC method, this is encoded as an integer. Otherwise, the set is encoded as an array of integers, where each array element encodes one EDHOC method. In JSON, the "methods" value is an integer or an array of integers. In CBOR, the "methods" is an integer or an array of integers, and has label 1.</t>
          </li>
          <li>
            <t>cipher_suites: This parameter specifies a set of supported EDHOC cipher suites (see <xref section="3.6" sectionFormat="of" target="RFC9528"/>). If the set is composed of a single EDHOC cipher suite, this is encoded as an integer. Otherwise, the set is encoded as an array of integers, where each array element encodes one EDHOC cipher suite. In JSON, the "cipher_suites" value is an integer or an array of integers. In CBOR, the "cipher_suites" is an integer or an array of integers, and has label 2.</t>
          </li>
          <li>
            <t>message_4: This parameter indicates whether the EDHOC message_4 (see <xref section="5.5" sectionFormat="of" target="RFC9528"/>) is supported. In JSON, the "message_4" value is a boolean. In CBOR, "message_4" is the simple value "true" or "false", and has label 4.</t>
          </li>
          <li>
            <t>comb_req: This parameter indicates whether the combined EDHOC + OSCORE request defined in <xref target="I-D.ietf-core-oscore-edhoc"/>) is supported. In JSON, the "comb_req" value is a boolean. In CBOR, "comb_req" is the simple value "true" or "false", and has label 5.</t>
          </li>
          <li>
            <t>uri_path: This parameter specifies the path component of the URI of the EDHOC resource where EDHOC messages have to be sent as requests. In JSON, the "uri_path" value is a string. In CBOR, "uri_path" is a text string, and has label 6.</t>
          </li>
          <li>
            <t>osc_ms_len: This parameter specifies the size in bytes of the OSCORE Master Secret to derive after the EDHOC session, as per <xref section="A.1" sectionFormat="of" target="RFC9528"/>. In JSON, the "osc_ms_len" value is an integer. In CBOR, the "osc_ms_len" type is unsigned integer, and has label 7.</t>
          </li>
          <li>
            <t>osc_salt_len: This parameter specifies the size in bytes of the OSCORE Master Salt to derive after the EDHOC session, as per <xref section="A.1" sectionFormat="of" target="RFC9528"/>. In JSON, the "osc_salt_len" value is an integer. In CBOR, the "osc_salt_len" type is unsigned integer, and has label 8.</t>
          </li>
          <li>
            <t>osc_version: This parameter specifies the OSCORE Version number that the two EDHOC peers have to use when using OSCORE. For more information about this parameter, see <xref section="5.4" sectionFormat="of" target="RFC8613"/>. In JSON, the "osc_version" value is an integer. In CBOR, the "osc_version" type is unsigned integer, and has label 9.</t>
          </li>
          <li>
            <t>cred_types: This parameter specifies a set of supported types of authentication credentials for EDHOC (see <xref section="3.5.2" sectionFormat="of" target="RFC9528"/>). If the set is composed of a single type of authentication credential, this is encoded as an integer. Otherwise, the set is encoded as an array of integers, where each array element encodes one type of authentication credential. In JSON, the "cred_types" value is an integer or an array of integers. In CBOR, "cred_types" is an integer or an array of integers, and has label 9. The integer values are taken from the "EDHOC Authentication Credential Types" registry defined in <xref target="I-D.ietf-core-oscore-edhoc"/>.</t>
          </li>
          <li>
            <t>id_cred_types: This parameter specifies a set of supported types of authentication credential identifiers for EDHOC (see <xref section="3.5.3" sectionFormat="of" target="RFC9528"/>). If the set is composed of a single type of authentication credential identifier, this is encoded as an integer or a text string. Otherwise, the set is encoded as an array, where each array element encodes one type of authentication credential identifier, as an integer or a text string. In JSON, the "id_cred_types" value is an integer, or a text string, or an array of integers and text strings. In CBOR, "id_cred_types" is an integer or a text string, or an array of integers and text strings, and has label 10. The integer or text string values are taken from the 'Label' column of the "COSE Header Parameters" registry <xref target="COSE.Header.Parameters"/>.</t>
          </li>
          <li>
            <t>eads: This parameter specifies a set of supported EDHOC External Authorization Data (EAD) items, identified by their ead_label (see <xref section="3.8" sectionFormat="of" target="RFC9528"/>). If the set is composed of a single ead_label, this is encoded as an unsigned integer. Otherwise, the set is encoded as an array of unsigned integers, where each array element encodes one ead_label. In JSON, the "eads" value is an unsigned integer or an array of unsigned integers. In CBOR, "eads" is an unsigned integer or an array of unsigned integers, and has label 11. The unsigned integer values are taken from the 'Label' column of the "EDHOC External Authorization Data" registry defined in <xref target="RFC9528"/>.</t>
          </li>
          <li>
            <t>initiator: This parameter specifies whether the EDHOC Initiator role is supported. In JSON, the "initiator" value is a boolean. In CBOR, "initiator" is the simple value "true" (0xf5) or "false" (0xf4), and has label 12.</t>
          </li>
          <li>
            <t>responder: This parameter specifies whether the EDHOC Responder role is supported. In JSON, the "responder" value is a boolean. In CBOR, "responder" is the simple value "true" (0xf5) or "false" (0xf4), and has label 13.</t>
          </li>
        </ul>
        <t>An example of JSON EDHOC_Information is given in <xref target="fig-edhoc-info-json"/>.</t>
        <figure anchor="fig-edhoc-info-json">
          <name>Example of JSON EDHOC_Information</name>
          <artwork><![CDATA[
   "edhoc_info" : {
       "session_id"    : b64'AQ==',
       "methods"       : 1,
       "cipher_suites" : 0
   }
]]></artwork>
        </figure>
        <t>The CDDL grammar describing the CBOR EDHOC_Information is:</t>
        <artwork><![CDATA[
EDHOC_Information = {
  ?  0 => bstr,                   ; id
  ?  1 => int / array,            ; methods
  ?  2 => int / array,            ; cipher_suites
  ?  3 => true / false,           ; message_4
  ?  4 => true / false,           ; comb_req
  ?  5 => tstr,                   ; uri_path
  ?  6 => uint,                   ; osc_ms_len
  ?  7 => uint,                   ; osc_salt_len
  ?  8 => uint,                   ; osc_version
  ?  9 => int / array,            ; cred_types
  ? 10 => int / tstr / array,     ; id_cred_types
  ? 11 => uint / array,           ; eads
  ? 12 => true / false,           ; initiator
  ? 13 => true / false,           ; responder
  * int / tstr => any
}
]]></artwork>
      </section>
    </section>
    <section anchor="c-rs-comm">
      <name>Client-RS Communication</name>
      <t>This section describes the exchange between C and RS, including the token uploading to RS, and the execution of the EDHOC protocol. The alternative workflow where AS uploads the access token directly to RS is described in <xref target="I-D.ietf-ace-workflow-and-params"/>.</t>
      <t>The case where C sends a POST request to the /authz-info endpoint at RS is detailed in <xref target="c-rs"/> and <xref target="rs-c"/>, and shown by the example in <xref target="example-without-optimization"/>.</t>
      <t>The case where C uploads the access token in an EAD field of an EDHOC message while executing the EDHOC protocol with RS is discussed in <xref target="AT-in-EAD"/> and <xref target="edhoc-exec"/>, and shown by the example in <xref target="example-with-optimization"/>.</t>
      <t>In either case, C and RS run the EDHOC protocol by exchanging POST requests and related responses to a dedicated EDHOC resource at RS (see <xref target="edhoc-exec"/>). Once completed the EDHOC session, C and RS have agreed on a common secret key PRK_out (see <xref section="4.1.3" sectionFormat="of" target="RFC9528"/>), from which they establish an OSCORE Security Context (see <xref target="edhoc-exec"/>). After that, C and RS use the established OSCORE Security Context to protect their communications when accessing protected resources at RS, as per the access rights specified in the access token (see <xref target="access-rights-verif"/>).</t>
      <t>C and RS are mutually authenticated once they have successfully completed the EDHOC protocol. RS gets key confirmation of PRK_out by C at the end of the successful EDHOC session. Conversely, C get key confirmation of PRK_out by RS either when receiving and successfully verifying the optional EDHOC message_4 from RS, or when successfully verifying a response from RS protected with the generated OSCORE Security Context.</t>
      <section anchor="c-rs">
        <name>C-to-RS: POST to /authz-info endpoint</name>
        <t>The access token can be uploaded to RS using CoAP <xref target="RFC7252"/> and the Authorization Information endpoint as described in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>.</t>
        <t>That is, C sends a POST request to the /authz-info endpoint at RS, with the request payload containing the access token without any CBOR wrapping. As per <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>, the Content-Format of the POST request <bcp14>MUST</bcp14> be "application/cwt" to reflect the format of the transported access token.</t>
        <t>The communication between C and the /authz-info endpoint is not protected, unless there is a previously established OSCORE Security Context, for example in the case of update of access rights (see <xref target="update-access-rights-c-rs"/>).</t>
      </section>
      <section anchor="rs-c">
        <name>RS-to-C: 2.01 (Created)</name>
        <t>Upon receiving an access token from C, RS <bcp14>MUST</bcp14> follow the procedures defined in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>. That is, RS must verify the validity of the access token. RS may make an introspection request (see <xref section="5.9.1" sectionFormat="of" target="RFC9200"/>) to validate the access token.</t>
        <t>If the access token is valid, RS proceeds as follows.</t>
        <t>RS checks whether it is already storing the authentication credential of C, AUTH_CRED_C, specified in the "cnf" claim of the access token by value or by reference. If not, RS retrieves AUTH_CRED_C, either using the "cnf" claim or some other trusted source.</t>
        <t>If RS fails to find or validate AUTH_CRED_C, then RS <bcp14>MUST</bcp14> respond with an error response code equivalent to the CoAP code 4.00 (Bad Request). RS may provide additional information in the payload of the error response, in order to clarify what went wrong.</t>
        <t>If, instead, the access token is valid but associated with claims that RS cannot process (e.g., an unknown scope), or if any of the expected parameters is missing (e.g., any of the mandatory parameters from AS or the identifier "session_id"), or if any parameters received in the EDHOC_Information is unrecognized, then RS <bcp14>MUST</bcp14> respond with an error response code equivalent to the CoAP code 4.00 (Bad Request). In the latter two cases, RS may provide additional information in the payload of the error response, in order to clarify what went wrong.</t>
        <t>If all validations are successful, RS <bcp14>MUST</bcp14> reply to the POST request with a 2.01 (Created) response. The access token is stored such that it is possible to retrieve it based on "session_id" and AUTH_CRED_C.</t>
        <t>When an access token becomes invalid (e.g., due to its expiration or revocation), RS <bcp14>MUST</bcp14> delete the access token and the associated OSCORE Security Context, and <bcp14>MUST</bcp14> notify C with an error response with code 4.01 (Unauthorized) for any long running request, as specified in <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>.</t>
      </section>
      <section anchor="AT-in-EAD">
        <name>Access Token in External Authorization Data</name>
        <t>Instead of uploading the access token to the /authz-info endpoint at RS as described in <xref target="c-rs"/>, C <bcp14>MAY</bcp14> include the access token in an EDHOC External Authorization Data field (see <xref section="3.8" sectionFormat="of" target="RFC9528"/>), see example in <xref target="example-with-optimization"/>.</t>
        <t>This document defines the EAD item EAD_ACCESS_TOKEN = (ead_label, ead_value), where:</t>
        <ul spacing="normal">
          <li>
            <t>ead_label is the integer value TBD registered in <xref target="iana-edhoc-ead"/>, and</t>
          </li>
          <li>
            <t>ead_value is a CBOR byte string equal to the value of the "access_token" field of the access token response from AS, see <xref target="as-c"/>.</t>
          </li>
        </ul>
        <t>This EAD item is critical, i.e., it is used only with the negative value of its ead_label, indicating that the receiving RS must either process the access token or abort the EDHOC session (see <xref section="3.8" sectionFormat="of" target="RFC9528"/>). A Client or Resource Server supporting the profile of ACE defined in this document <bcp14>MUST</bcp14> support this EAD item.</t>
        <t>Access tokens are transported in EAD fields only for the first access token of a token series, and not for the update of access rights, see <xref target="update-access-rights-c-rs"/>.</t>
        <t>Editor's notes: Add example. Value for ead_label not from lowest range, suggested value 26.</t>
      </section>
      <section anchor="edhoc-exec">
        <name>EDHOC Session and OSCORE Security Context</name>
        <t>In order to mutually authenticate and establish secure communication for authorized access according to the profile described in this document, C and RS run the EDHOC protocol <xref target="RFC9528"/>. When a new EDHOC session is established, previous EDHOC sessions associated with the same access token and the same pair (session_id, AUTH_CRED_C) are deleted, see <xref target="m_3"/>. The OSCORE Security Contexts derived from those EDHOC sessions are also deleted.</t>
        <t>As per <xref section="A.2" sectionFormat="of" target="RFC9528"/>, EDHOC may be transferred over CoAP using either the forward or the reverse message flow, manifesting the mapping between ACE roles Client / Resource Server and the EDHOC roles Initiator / Responder. The choice of mapping depends on the deployment setting, for example on which identity to protect the most, since EDHOC protects the identity of the Initiator against active attackers.</t>
        <t>This section details the case where the EDHOC forward message flow is used, i.e., where C = I, RS = R. The converse mapping is described in TODO.</t>
        <t>Consistent with the EDHOC forward message flow, C sends EDHOC message_1 and EDHOC message_3 to an EDHOC resource at RS, as CoAP POST requests. RS sends EDHOC message_2 and (optionally) EDHOC message_4 as 2.04 (Changed) CoAP responses.</t>
        <t>If the access token is transported during the EDHOC execution, then either EAD_1 or EAD_3 <bcp14>MUST</bcp14> contain the EAD item EAD_ACCESS_TOKEN. It is <bcp14>RECOMMENDED</bcp14> that EAD_ACCESS_TOKEN is carried in EAD_3, i.e., in EDHOC message_3. This provides confidentiality protection against active attackers. EAD_ACCESS_TOKEN <bcp14>MAY</bcp14> be carried in EAD_1, e.g., if the CWT access token is encrypted for RS by AS using COSE_Encrypt0.</t>
        <t>C <bcp14>MUST</bcp14> target the EDHOC resource at RS with the URI path specified in the "uri_path" field of the EDHOC_Information in the access token response received from AS (see <xref target="c-as"/>), if present. Otherwise, C assumes the target resource at RS to be the well-known EDHOC resource at the path /.well-known/edhoc.</t>
        <t>RS has to ensure that attackers cannot perform requests on the EDHOC resource, other than sending EDHOC messages. Specifically, it <bcp14>SHOULD NOT</bcp14> be possible to perform any other operation than POST on an EDHOC resource.</t>
        <section anchor="edhoc-message1">
          <name>EDHOC message_1</name>
          <t>The processing of EDHOC message_1 is specified in <xref section="5.2" sectionFormat="of" target="RFC9528"/>. Additionally, the following applies:</t>
          <ul spacing="normal">
            <li>
              <t>The EDHOC method <bcp14>MUST</bcp14> be one of the EDHOC methods specified in the "methods" field (if present) in the EDHOC_Information of the access token response to C.</t>
            </li>
            <li>
              <t>The selected cipher suite <bcp14>MUST</bcp14> be an EDHOC cipher suite specified in the "cipher_suites" field (if present) in the EDHOC_Information of the access token response to C.</t>
            </li>
          </ul>
          <t>If EAD_1 contains the EAD item EAD_ACCESS_TOKEN, then the RS <bcp14>MUST</bcp14> ensure that the access token is valid before completing the EDHOC processing, as specified in <xref target="rs-c"/>. The verification can take place after reception of message_1 or after reception of message_3. If this process fails, RS <bcp14>MUST</bcp14> reply to C with an EDHOC error message with ERR_CODE = 1 (see <xref section="6" sectionFormat="of" target="RFC9528"/>), and it <bcp14>MUST</bcp14> abort the EDHOC session.</t>
        </section>
        <section anchor="edhoc-message2">
          <name>EDHOC message_2</name>
          <t>The processing of EDHOC message_2 is specified in <xref section="5.3" sectionFormat="of" target="RFC9528"/> with the following additions:</t>
          <ul spacing="normal">
            <li>
              <t>The authentication credential CRED_R indicated by the message field ID_CRED_R is AUTH_CRED_RS.</t>
            </li>
          </ul>
        </section>
        <section anchor="m_3">
          <name>EDHOC message_3</name>
          <t>The processing of EDHOC message_3 is specified in <xref section="5.4" sectionFormat="of" target="RFC9528"/> with the following additions:</t>
          <ul spacing="normal">
            <li>
              <t>The authentication credential CRED_I indicated by the message field ID_CRED_I is AUTH_CRED_C.</t>
            </li>
            <li>
              <t>The EAD item EAD_ACCESS_TOKEN = (-ead_label, ead_value) <bcp14>MUST</bcp14> be included in the EAD_3 field. If the access token is provisioned with EDHOC message_3 as specified in <xref target="AT-in-EAD"/>, then ead_value = { 0 : access_token}, otherwise ead_value = { 1 : session_id}, where session_id is equal to the value of the "session_id" field of the access token response from AS, see <xref target="token-series"/>.</t>
            </li>
            <li>
              <t>If EAD_3 contains the EAD item EAD_ACCESS_TOKEN, then the RS <bcp14>MUST</bcp14> ensure that the access token is valid. The validation follows the procedure specified in <xref target="rs-c"/>. If such a process fails, RS <bcp14>MUST</bcp14> reply to C with an EDHOC error message with ERR_CODE = 1 (see <xref section="6" sectionFormat="of" target="RFC9528"/>), and it <bcp14>MUST</bcp14> abort the EDHOC session.</t>
            </li>
          </ul>
          <t>RS <bcp14>MUST</bcp14> have successfully validated the processing of the access token before completing the EDHOC session. If completed successfully, then the EDHOC session is associated with both the access token and the pair (session_id, AUTH_CRED_C). Any old existing EDHOC session associated with the same access token and with the same pair (session_id, AUTH_CRED_C) <bcp14>MUST</bcp14> be deleted, together with the OSCORE Security Context derived from the EDHOC session.</t>
          <t>Editor's note: Instead of ERR_CODE = 1, consider to use ERR_CODE = 3 "Access Denied"  defined in draft-ietf-lake-authz</t>
        </section>
        <section anchor="oscore-security-context">
          <name>OSCORE Security Context</name>
          <t>Once successfully completed the EDHOC session, C and RS derive an OSCORE Security Context, as defined in <xref section="A.1" sectionFormat="of" target="RFC9528"/>. In addition, the following applies.</t>
          <ul spacing="normal">
            <li>
              <t>The length in bytes of the OSCORE Master Secret (i.e., the oscore_key_length parameter, see <xref section="A.1" sectionFormat="of" target="RFC9528"/>) <bcp14>MUST</bcp14> be the value specified in the "osc_ms_size" field (if present) in the EDHOC_Information of the access token response to C, and of the access token provisioned to RS, respectively.</t>
            </li>
            <li>
              <t>The length in bytes of the OSCORE Master Salt (i.e., the oscore_salt_length parameter, see <xref section="A.1" sectionFormat="of" target="RFC9528"/>) <bcp14>MUST</bcp14> be the value specified in the "osc_salt_size" field (if present) in the EDHOC_Information of the access token response to C, and of the access token provisioned to RS, respectively.</t>
            </li>
            <li>
              <t>C and RS <bcp14>MUST</bcp14> use the OSCORE version specified in the "osc_version" field (if present) in the EDHOC_Information of the access token response to C, and of the access token provisioned to RS, respectively.</t>
            </li>
            <li>
              <t>RS associates the latest EDHOC session and the derived OSCORE Security Context
with the stored access token, which is bound to the authentication credential (AUTH_CRED_C = CRED_I) used in the EDHOC session and with the session_id identifying the token series to which the access token belongs.</t>
            </li>
          </ul>
          <t>If supported by C, C <bcp14>MAY</bcp14> use the EDHOC + OSCORE combined request defined in <xref target="I-D.ietf-core-oscore-edhoc"/>, unless the "comb_req" field of the EDHOC_Information was present in the access token response and set to the CBOR simple value "false" (0xf4). In the combined request, both EDHOC message_3 and the first OSCORE-protected application request are combined together in a single OSCORE-protected CoAP request, thus saving one round trip. For an example, see <xref target="example-with-optimization"/>. This requires C to derive the OSCORE Security Context with RS already after having successfully processed the received EDHOC message_2 and before sending EDHOC message_3.</t>
        </section>
      </section>
      <section anchor="update-access-rights-c-rs">
        <name>Update of Access Rights</name>
        <t>Editor's note: This section should allow for access rights being updated by AS posting to RS.</t>
        <t>If C has already established access rights and an OSCORE Security Context with RS, then C can update its access rights by posting a new access token to the /authz-info endpoint.</t>
        <t>The new access token contains the updated access rights for C to access protected resources at RS, and C has to obtain it from AS as a new access token in the same token series of the current one (see <xref target="c-as-comm"/>). When posting the new access token to the /authz-info endpoint, C <bcp14>MUST</bcp14> protect the POST request using the current OSCORE Security Context shared with RS. After successful verification (see <xref target="rs-c"/>), RS will replace the old access token with the new one, while preserving the same OSCORE Security Context. In particular, C and RS do not re-run the EDHOC protocol and they do not establish a new OSCORE Security Context.</t>
        <t>Editor's note: Mention the alternative when the AS uploads the new access token to RS.</t>
        <t>If RS receives an access token in an OSCORE protected request, it means that C is requesting an update of access rights. In this case, RS <bcp14>MUST</bcp14> check the following conditions:</t>
        <ul spacing="normal">
          <li>
            <t>RS checks whether it stores an access token T_OLD, such that the "session_id" field of EDHOC_Information matches the "session_id" field of EDHOC_Information in the new access token T_NEW.</t>
          </li>
          <li>
            <t>RS checks whether the OSCORE Security Context CTX used to protect the request matches the OSCORE Security Context associated with the stored access token T_OLD.</t>
          </li>
        </ul>
        <t>If both the conditions above hold, RS <bcp14>MUST</bcp14> replace the old access token T_OLD with the new access token T_NEW, and associate T_NEW with the OSCORE Security Context CTX. Then, RS <bcp14>MUST</bcp14> respond with a 2.01 (Created) response protected with the same OSCORE Security Context, with no payload.</t>
        <t>Otherwise, RS <bcp14>MUST</bcp14> respond with a 4.01 (Unauthorized) error response. RS may provide additional information in the payload of the error response, in order to clarify what went wrong.</t>
        <t>As specified in <xref section="5.10.1" sectionFormat="of" target="RFC9200"/>, when receiving an updated access token with updated authorization information from C (see <xref target="c-rs"/>), it is recommended that RS overwrites the previous access token. That is, only the latest authorization information in the access token received by RS is valid. This simplifies the process needed by RS to keep track of authorization information for a given client.</t>
      </section>
      <section anchor="discard-context">
        <name>Discarding the Security Context</name>
        <t>There are a number of cases where C or RS have to discard the OSCORE Security Context, and possibly establish a new one.</t>
        <t>C <bcp14>MUST</bcp14> discard the current OSCORE Security Context shared with RS when any of the following occurs.</t>
        <ul spacing="normal">
          <li>
            <t>The OSCORE Sender Sequence Number space of C is exhausted.</t>
          </li>
          <li>
            <t>The access token associated with the OSCORE Security Context becomes invalid, for example due to expiration or revocation.</t>
          </li>
          <li>
            <t>C receives a number of unprotected 4.01 (Unauthorized) responses to OSCORE-protected requests, which are sent to RS and protected using the same OSCORE Security Context. The exact number of such received responses needs to be specified by the application. This may for example happen due to lack of storage in RS, which then sends the "AS Request Creation Hints" message (see <xref section="5.3" sectionFormat="of" target="RFC9200"/>).</t>
          </li>
          <li>
            <t>The authentication credential of C (of RS) becomes invalid, e.g., due to expiration or revocation, and it was used as CRED_I (CRED_R) in the EDHOC session to establish the OSCORE Security Context.</t>
          </li>
        </ul>
        <t>RS <bcp14>MUST</bcp14> discard the current OSCORE Security Context shared with C when any of the following occurs:</t>
        <ul spacing="normal">
          <li>
            <t>The OSCORE Sender Sequence Number space of RS is exhausted.</t>
          </li>
          <li>
            <t>The access token associated with the OSCORE Security Context becomes invalid, for example due to expiration or revocation.</t>
          </li>
          <li>
            <t>The authentication credential of C (of RS) becomes invalid (e.g., due to expiration or revocation), and it was used as CRED_I (CRED_R) in the EDHOC session to establish the OSCORE Security Context.</t>
          </li>
        </ul>
        <t>After a new access token is successfully uploaded to RS, and a new OSCORE Security Context is established between C and RS, messages still in transit that were protected with the previous OSCORE Security Context might not be successfully verified by the recipient, since the old OSCORE Security Context might have been discarded. This means that messages sent shortly before C has uploaded the new access token to RS might not be successfully accepted by the recipient.</t>
        <t>Furthermore, implementations may want to cancel CoAP observations at RS, if registered before the new OSCORE Security Context has been established. Alternatively, applications need to implement a mechanism to ensure that, from then on, messages exchanged within those observations are going to be protected with the newly derived OSCORE Security Context.</t>
      </section>
      <section anchor="cases-of-establishing-a-new-oscore-security-context">
        <name>Cases of Establishing a New OSCORE Security Context</name>
        <t>The procedure of provisioning a new access token to RS specified in this section applies to various cases when an OSCORE Security Context shared between C and RS has been deleted, for example as described in <xref target="discard-context"/>.</t>
        <t>Another exceptional case is when there is still a valid OSCORE Security Context but it needs to be updated, e.g., due to a policy limiting its use in terms of time or amount of processed data, or to the imminent exhaustion of the OSCORE Sender Sequence Number space. In this case, C and RS <bcp14>SHALL</bcp14> attempt to run the KUDOS key update protocol <xref target="I-D.ietf-core-oscore-key-update"/>, which is a lightweight alternative independent of ACE and EDHOC that does not require the posting of an access token. If KUDOS is not supported, then C and RS falls back to EDHOC as outlined above.</t>
        <t>In either case, C and RS establish a new OSCORE Security Context that replaces the old one and will be used for protecting their communications from then on. In particular, RS <bcp14>MUST</bcp14> associate the new OSCORE Security Context with the current (potentially re-posted) access token. Unless C and RS re-run the EDHOC protocol, they preserve their OSCORE identifiers, i.e., the OSCORE Sender/Recipient IDs.</t>
      </section>
      <section anchor="access-rights-verif">
        <name>Access Rights Verification</name>
        <t>RS <bcp14>MUST</bcp14> follow the procedures defined in <xref section="5.10.2" sectionFormat="of" target="RFC9200"/>. That is, if RS receives an OSCORE-protected request targeting a protected resource from C, then RS processes the request according to <xref target="RFC8613"/>, when Version 1 of OSCORE is used. Future specifications may define new versions of OSCORE, which AS can indicate C and RS to use by means of the "osc_version" field of EDHOC_Information (see <xref target="c-as-comm"/>).</t>
        <t>If OSCORE verification succeeds and the target resource requires authorization, RS retrieves the authorization information using the access token associated with the OSCORE Security Context. Then, RS must verify that the authorization information covers the target resource and the action intended by C on it.</t>
      </section>
    </section>
    <section anchor="secure-comm-as">
      <name>Secure Communication with AS</name>
      <t>As specified in the ACE framework (see Sections <xref target="RFC9200" section="5.8" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9" sectionFormat="bare"/> of <xref target="RFC9200"/>), the requesting entity (RS and/or C) and AS communicates via the /token or /introspect endpoint. When using this profile, the use of CoAP <xref target="RFC7252"/> and OSCORE <xref target="RFC8613"/> for this communication is <bcp14>RECOMMENDED</bcp14>. Other protocols fulfilling the security requirements defined in <xref section="5" sectionFormat="of" target="RFC9200"/> (such as HTTP and DTLS <xref target="RFC9147"/> or TLS <xref target="RFC8446"/>) <bcp14>MAY</bcp14> be used instead.</t>
      <t>If OSCORE is used, the requesting entity and AS need to have an OSCORE Security Context in place. While this can be pre-installed, the requesting entity and AS can establish such an OSCORE Security Context, for example, by running the EDHOC protocol, as shown between C and AS by the examples in <xref target="example-without-optimization"/> and <xref target="example-with-optimization"/>. This also applies for communication between RS and AS, for example to protect the upload of access token from AS directly to RS as described in <xref target="I-D.ietf-ace-workflow-and-params"/>.</t>
    </section>
    <section anchor="cwt-confirmation-methods">
      <name>CWT Confirmation Methods</name>
      <t>This document defines a number of new CWT confirmation methods (see <xref target="iana-cwt-confirmation-methods"/>). The semantics of each confirmation method is defined below.</t>
      <section anchor="ssec-cwt-conf-x5chain">
        <name>Ordered Chain of X.509 Certificates</name>
        <t>The confirmation method "x5chain" specifies an ordered array of X.509 certificates <xref target="RFC5280"/>. The semantics of "x5chain" is like that of the "x5chain" COSE Header Parameter specified in <xref target="RFC9360"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-x5bag">
        <name>Unordered Bag of X.509 Certificates</name>
        <t>The confirmation method "x5bag" specifies a bag of X.509 certificates <xref target="RFC5280"/>. The semantics of "x5bag" is like that of the "x5bag" COSE Header Parameter specified in <xref target="RFC9360"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-x5t">
        <name>Hash of an X.509 Certificate</name>
        <t>The confirmation method "x5t" specifies the hash value of the end-entity X.509 certificate <xref target="RFC5280"/>. The semantics of "x5t" is like that of the "x5t" COSE Header Parameter specified in <xref target="RFC9360"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-x5u">
        <name>URI Pointing to an Ordered Chain of X.509 Certificates</name>
        <t>The confirmation method "x5u" specifies the URI <xref target="RFC3986"/> of an ordered chain of X.509 certificates <xref target="RFC5280"/>. The semantics of "x5u" is like that of the "x5u" COSE Header Parameter specified in <xref target="RFC9360"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-c5c">
        <name>Ordered Chain of C509 Certificates</name>
        <t>The confirmation method "c5c" specifies an ordered array of C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5c" is like that of the "c5c" COSE Header Parameter specified in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-c5b">
        <name>Unordered Bag of C509 Certificates</name>
        <t>The confirmation method "c5b" specifies a bag of C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5b" is like that of the "c5b" COSE Header Parameter specified in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-c5t">
        <name>Hash of a C509 Certificate</name>
        <t>The confirmation method "c5t" specifies the hash value of the end-entity C509 certificate <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5t" is like that of the "c5t" COSE Header Parameter specified in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-c5u">
        <name>URI Pointing to an Ordered Chain of C509 Certificates</name>
        <t>The confirmation method "c5u" specifies the URI <xref target="RFC3986"/> of a COSE_C509 containing an ordered chain of C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. COSE_C509 is defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5u" is like that of the "c5u" COSE Header Parameter specified in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-kcwt">
        <name>CWT Containing a COSE_Key</name>
        <t>The confirmation method "kcwt" specifies a CBOR Web Token (CWT) <xref target="RFC8392"/> containing a COSE_Key <xref target="RFC9053"/> in a 'cnf' claim and possibly other claims. The semantics of "kcwt" is like that of the "kcwt" COSE Header Parameter specified in <xref target="RFC9528"/>.</t>
      </section>
      <section anchor="ssec-cwt-conf-kccs">
        <name>CCS Containing a COSE_Key</name>
        <t>The confirmation method "kccs" specifies a CWT Claims Set (CCS) <xref target="RFC8392"/> containing a COSE_Key <xref target="RFC9053"/> in a 'cnf' claim and possibly other claims. The semantics of "kccs" is like that of the "kccs" COSE Header Parameter specified in <xref target="RFC9528"/>.</t>
      </section>
    </section>
    <section anchor="jwt-confirmation-methods">
      <name>JWT Confirmation Methods</name>
      <t>This document defines a number of new JWT confirmation methods (see <xref target="iana-jwt-confirmation-methods"/>). The semantics of each confirmation method is defined below.</t>
      <section anchor="ssec-jwt-conf-x5c">
        <name>Ordered Chain of X.509 Certificates</name>
        <t>The confirmation method "x5c" specifies an ordered array of X.509 certificates <xref target="RFC5280"/>. The semantics of "x5c" is like that of the "x5c" JSON Web Signature and Encryption Header Parameter specified in <xref target="RFC7515"/>, with the following difference. The public key contained in the first certificate is the proof-of-possession key and does not have to correspond to a key used to digitally sign the JWS.</t>
      </section>
      <section anchor="ssec-jwt-conf-x5b">
        <name>Unordered Bag of X.509 Certificates</name>
        <t>The confirmation method "x5b" specifies a bag of X.509 certificates <xref target="RFC5280"/>. The semantics of the "x5b" is like that of the "x5c" JWT confirmation method defined in <xref target="ssec-jwt-conf-x5c"/>, with the following differences. First, the set of certificates is unordered and may contain self-signed certificates. Second, the composition and processing of "x5b" are like for the "x5bag" COSE Header Parameter defined in <xref target="RFC9360"/>.</t>
      </section>
      <section anchor="ssec-jwt-conf-x5t">
        <name>Hash of an X.509 Certificate</name>
        <t>The confirmation method "x5t" specifies the hash value of the end-entity X.509 certificate <xref target="RFC5280"/>. The semantics of "x5t" is like that of the "x5t" JSON Web Signature and Encryption Header Parameter specified in <xref target="RFC7515"/>.</t>
      </section>
      <section anchor="ssec-jwt-conf-x5u">
        <name>URI Pointing to an Ordered Chain of X.509 Certificates</name>
        <t>The confirmation method "x5u" specifies the URI <xref target="RFC3986"/> of an ordered chain of X.509 certificates <xref target="RFC5280"/>. The semantics of "x5u" is like that of the "x5u" COSE Header Parameter specified in <xref target="RFC9360"/>, with the following difference. The public key contained in the first certificate is the proof-of-possession key and does not have to correspond to a key used to digitally sign the JWS.</t>
      </section>
      <section anchor="ssec-jwt-conf-c5c">
        <name>Ordered Chain of C509 Certificates</name>
        <t>The confirmation method "c5c" specifies an ordered array of C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5c" is like that of the "x5c" JWT confirmation method defined in <xref target="ssec-jwt-conf-x5c"/>, with the following difference. Each string in the JSON array is a base64-encoded (<xref section="4" sectionFormat="of" target="RFC4648"/> - not base64url-encoded) C509 certificate.</t>
      </section>
      <section anchor="ssec-jwt-conf-c5b">
        <name>Unordered Bag of C509 Certificates</name>
        <t>The confirmation method "c5b" specifies a bag of C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5b" is like that of the "c5c" JWT confirmation method defined in <xref target="ssec-jwt-conf-c5c"/>, with the following differences. First, the set of certificates is unordered and may contain self-signed certificates. Second, the composition and processing of "c5b" is like for the "c5b" COSE Header Parameter defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
      </section>
      <section anchor="ssec-jwt-conf-c5t">
        <name>Hash of a C09 Certificate</name>
        <t>The confirmation method "c5t" specifies the hash value of the end-entity C509 certificate <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5t" is like that of the "x5t" JWT confirmation method defined in <xref target="ssec-jwt-conf-x5t"/>, with the following differences. First, the base64url-encoded SHA-1 thumbprint is computed over the C509 certificate. Second, the public key contained in the C509 certificate does not have to correspond to a key used to digitally sign the JWS.</t>
      </section>
      <section anchor="ssec-jwt-conf-c5u">
        <name>URI Pointing to an Ordered Chain of C509 Certificates</name>
        <t>The confirmation method "c5u" specifies the URI <xref target="RFC3986"/> of COSE_C509 containing an ordered chain of C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. COSE_C509 is defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>. The semantics of "c5u" is like that of the "x5u" JWT confirmation method defined in <xref target="ssec-jwt-conf-x5u"/>, with the following differences. First, the URI refers to a resource for the C509 certificate chain. Second, the public key contained in one of the C509 certificates and acting as proof-of-possession key does not have to correspond to a key used to digitally sign the JWS.</t>
      </section>
      <section anchor="ssec-jwt-conf-kcwt">
        <name>CWT Containing a COSE_Key</name>
        <t>The confirmation method "kcwt" specifies a CBOR Web Token (CWT) <xref target="RFC8392"/> containing a COSE_Key <xref target="RFC9053"/> in a 'cnf' claim and possibly other claims. The format of "kcwt" is the base64url-encoded serialization of the CWT.</t>
      </section>
      <section anchor="ssec-jwt-conf-kccs">
        <name>CCS Containing a COSE_Key</name>
        <t>The confirmation method "kccs" specifies a CWT Claims Set (CCS) <xref target="RFC8392"/> containing a COSE_Key <xref target="RFC9053"/> in a 'cnf' claim and possibly other claims. The format of "kcwt" is the base64url-encoded serialization of the CWT.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. Thus, the general security considerations from the ACE framework also apply to this profile.</t>
      <t>Furthermore, the security considerations from OSCORE <xref target="RFC8613"/> and from EDHOC <xref target="RFC9528"/> also apply to this specific use of the OSCORE and EDHOC protocols.</t>
      <t>As previously stated, once completed the EDHOC session, C and RS are mutually authenticated through their respective authentication credentials, whose retrieval has been facilitated by AS. Also once completed the EDHOC session, C and RS have established a long-term secret key PRK_out enjoying forward secrecy. This is in turn used by C and RS to establish an OSCORE Security Context.</t>
      <t>Furthermore, RS achieves confirmation that C has PRK_out (proof-of-possession) when completing the EDHOC session. Rather, C achieves confirmation that RS has PRK_out (proof-of-possession) either when receiving the optional EDHOC message_4 from RS, or when successfully verifying a response from RS protected with the established OSCORE Security Context.</t>
      <t>OSCORE is designed to secure point-to-point communication, providing a secure binding between a request and the corresponding response(s). Thus, the basic OSCORE protocol is not intended for use in point-to-multipoint communication (e.g., enforced via multicast or a publish-subscribe model). Implementers of this profile should make sure that their use case of OSCORE corresponds to the expected one, in order to prevent weakening the security assurances provided by OSCORE.</t>
      <t>When using this profile, it is <bcp14>RECOMMENDED</bcp14> that RS stores only one access token per client. The use of multiple access tokens for a single client increases the strain on RS, since it must consider every access token associated with the client and calculate the actual permissions that client has. Also, access tokens indicating different or disjoint permissions from each other may lead RS to enforce wrong permissions.  If one of the access tokens expires earlier than others, the resulting permissions may offer insufficient protection. Developers <bcp14>SHOULD</bcp14> avoid using multiple access tokens for a same client. Furthermore, RS <bcp14>MUST NOT</bcp14> store more than one access token per client per PoP-key (i.e., per client's authentication credential).</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/>. Thus, the general privacy considerations from the ACE framework also apply to this profile.</t>
      <t>Furthermore, the privacy considerations from OSCORE <xref target="RFC8613"/> and from EDHOC <xref target="RFC9528"/> also apply to this specific use of the OSCORE and EDHOC protocols.</t>
      <t>An unprotected response to an unauthorized request may disclose information about RS and/or its existing relationship with C. It is advisable to include as little information as possible in an unencrypted response. When an OSCORE Security Context already exists between C and RS, more detailed information may be included.</t>
      <t>Except for the case where C attempts to update its access rights, the (encrypted) access token is sent in an unprotected POST request to the /authz-info endpoint at RS. Thus, if C uses the same single access token from multiple locations, it can risk being tracked by the access token's value even when the access token is encrypted.</t>
      <t>The identifiers used in OSCORE, i.e., the OSCORE Sender/Recipient IDs, are negotiated by C and RS during the EDHOC session. That is, the EDHOC Connection Identifier C_I of C is going to be the OSCORE Recipient ID of C (the OSCORE Sender ID of RS). Conversely, the EDHOC Connection Identifier C_R of RS is going to be the OSCORE Recipient ID of RS (the OSCORE Sender ID of C). These OSCORE identifiers are privacy sensitive (see <xref section="12.8" sectionFormat="of" target="RFC8613"/>). In particular, they could reveal information about C, or may be used for correlating different requests from C, e.g., across different networks that C has joined and left over time. This can be mitigated if C and RS dynamically update their OSCORE identifiers, e.g., by using the method defined in <xref target="I-D.ietf-core-oscore-key-update"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="iana-ace-oauth-profile">
        <name>ACE Profiles Registry</name>
        <t>IANA is asked to add the following entry to the "ACE Profiles" registry, following the procedure specified in <xref target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: coap_edhoc_oscore</t>
          </li>
          <li>
            <t>Description: Profile for delegating client authentication and authorization in a constrained environment by establishing an OSCORE Security Context <xref target="RFC8613"/> between resource-constrained nodes, through the execution of the lightweight authenticated key exchange protocol EDHOC <xref target="RFC9528"/>.</t>
          </li>
          <li>
            <t>CBOR Value:  TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Reference:  [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oauth-params">
        <name>OAuth Parameters Registry</name>
        <t>IANA is asked to add the following entry to the "OAuth Parameters" registry.</t>
        <ul spacing="normal">
          <li>
            <t>Name: "edhoc_info"</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request and token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oauth-cbor-mappings">
        <name>OAuth Parameters CBOR Mappings Registry</name>
        <t>IANA is asked to add the following entry to the "OAuth Parameters CBOR Mappings" registry, following the procedure specified in <xref target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: "edhoc_info"</t>
          </li>
          <li>
            <t>CBOR Key: TBD</t>
          </li>
          <li>
            <t>Value Type: map</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-token-json-claims">
        <name>JSON Web Token Claims Registry</name>
        <t>IANA is asked to add the following entries to the "JSON Web Token Claims" registry, following the procedure specified in <xref target="RFC7519"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: "edhoc_info"</t>
          </li>
          <li>
            <t>Claim Description: Information for EDHOC session</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-token-cwt-claims">
        <name>CBOR Web Token (CWT) Claims Registry</name>
        <t>IANA is asked to add the following entries to the "CBOR Web Token (CWT) Claims" registry, following the procedure specified in <xref target="RFC8392"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: "edhoc_info"</t>
          </li>
          <li>
            <t>Claim Description: Information for EDHOC session</t>
          </li>
          <li>
            <t>JWT Claim Name: "edhoc_info"</t>
          </li>
          <li>
            <t>Claim Key: TBD</t>
          </li>
          <li>
            <t>Claim Value Type: map</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-jwt-confirmation-methods">
        <name>JWT Confirmation Methods Registry</name>
        <t>IANA is asked to add the following entries to the "JWT Confirmation Methods" registry, following the procedure specified in <xref target="RFC7800"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "x5c"</t>
          </li>
          <li>
            <t>Confirmation Method Description: An ordered chain of X.509 certificates</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-x5c"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "x5b"</t>
          </li>
          <li>
            <t>Confirmation Method Description: An unordered bag of X.509 certificates</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-x5b"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "x5t"</t>
          </li>
          <li>
            <t>Confirmation Method Description: Hash of an X.509 certificate</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-x5t"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "x5u"</t>
          </li>
          <li>
            <t>Confirmation Method Description: URI pointing to an ordered chain of X.509 certificates</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-x5u"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "c5c"</t>
          </li>
          <li>
            <t>Confirmation Method Description: An ordered chain of C509 certificates</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-c5c"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "c5b"</t>
          </li>
          <li>
            <t>Confirmation Method Description: An unordered bag of C509 certificates</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-c5b"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "c5t"</t>
          </li>
          <li>
            <t>Confirmation Method Description: Hash of a C509 certificate</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-c5t"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "c5u"</t>
          </li>
          <li>
            <t>Confirmation Method Description: URI pointing to a COSE_C509 containing an ordered chain of C509 certificates</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-c5u"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "kcwt"</t>
          </li>
          <li>
            <t>Confirmation Method Description: A CBOR Web Token (CWT) containing a COSE_Key in a 'cnf' claim and possibly other claims</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-kcwt"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Value: "kccs"</t>
          </li>
          <li>
            <t>Confirmation Method Description: A CWT Claims Set (CCS) containing a COSE_Key in a 'cnf' claim and possibly other claims</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-jwt-conf-kccs"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-cwt-confirmation-methods">
        <name>CWT Confirmation Methods Registry</name>
        <t>IANA is asked to add the following entries to the "CWT Confirmation Methods" registry, following the procedure specified in <xref target="RFC8747"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: x5chain</t>
          </li>
          <li>
            <t>Confirmation Method Description: An ordered chain of X.509 certificates</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "x5c"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: COSE_X509</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-x5chain"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: x5bag</t>
          </li>
          <li>
            <t>Confirmation Method Description: An unordered bag of X.509 certificates</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "x5b"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: COSE_X509</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-x5bag"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: x5t</t>
          </li>
          <li>
            <t>Confirmation Method Description: Hash of an X.509 certificate</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "x5t"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: COSE_CertHash</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-x5t"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: x5u</t>
          </li>
          <li>
            <t>Confirmation Method Description: URI pointing to an ordered chain of X.509 certificates</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "x5u"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: uri</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-x5u"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: c5c</t>
          </li>
          <li>
            <t>Confirmation Method Description: An ordered chain of C509 certificates</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "c5c"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: COSE_C509</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-c5c"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: c5b</t>
          </li>
          <li>
            <t>Confirmation Method Description: An unordered bag of C509 certificates</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "c5b"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: COSE_C509</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-c5b"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: c5t</t>
          </li>
          <li>
            <t>Confirmation Method Description: Hash of a C509 certificate</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "c5t"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: COSE_CertHash</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-c5t"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: c5u</t>
          </li>
          <li>
            <t>Confirmation Method Description: URI pointing to a COSE_C509 containing an ordered chain of C509 certificates</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "c5u"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: uri</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-c5u"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: kcwt</t>
          </li>
          <li>
            <t>Confirmation Method Description: A CBOR Web Token (CWT) containing a COSE_Key in a 'cnf' claim and possibly other claims</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "kcwt"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: COSE_Messages</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-kcwt"/> of [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Confirmation Method Name: kccs</t>
          </li>
          <li>
            <t>Confirmation Method Description: A CWT Claims Set (CCS) containing a COSE_Key in a 'cnf' claim and possibly other claims</t>
          </li>
          <li>
            <t>JWT Confirmation Method Name: "kccs"</t>
          </li>
          <li>
            <t>Confirmation Key: TBD</t>
          </li>
          <li>
            <t>Confirmation Value Type: map / #6(map)</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="ssec-cwt-conf-kccs"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-edhoc-ead">
        <name>EDHOC External Authorization Data Registry</name>
        <t>IANA is asked to add the following entry to the "EDHOC External Authorization Data" registry defined in <xref section="10.5" sectionFormat="of" target="RFC9528"/>.</t>
        <t>The ead_label = TBD and the ead_value define an access token transferred in an EAD item of EDHOC message_3, with processing specified in <xref target="AT-in-EAD"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: ACE-OAuth Access Token</t>
          </li>
          <li>
            <t>Label: TBD</t>
          </li>
          <li>
            <t>Description: An Access Token as used in the ACE-OAuth framework <xref target="RFC9200"/></t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-edhoc-parameters">
        <name>EDHOC Information Registry</name>
        <t>IANA is requested to create a new "EDHOC Information" registry within the "Ephemeral Diffie-Hellman Over COSE (EDHOC)" registry group defined in <xref target="RFC9528"/>.</t>
        <t>As registration policy, the registry uses either "Standards Action with Expert Review", or "Specification Required" per <xref section="4.6" sectionFormat="of" target="RFC8126"/>, or "Expert Review" per <xref section="4.5" sectionFormat="of" target="RFC8126"/>. Expert Review guidelines are provided in <xref target="iana-expert-review"/>.</t>
        <t>All assignments according to "Standards Action with Expert Review" are made on a "Standards Action" basis per <xref section="4.9" sectionFormat="of" target="RFC8126"/>, with Expert Review additionally required per <xref section="4.5" sectionFormat="of" target="RFC8126"/>. The procedure for early IANA allocation of Standards Track code points defined in <xref target="RFC7120"/> also applies. When such a procedure is used, review and approval by the designated expert are also required, in order for the WG chairs to determine that the conditions for early allocation are met (see step 2 in <xref section="3.1" sectionFormat="of" target="RFC7120"/>).</t>
        <t>The columns of the registry are:</t>
        <ul spacing="normal">
          <li>
            <t>Name: A descriptive name that enables easier reference to this item. Because a core goal of this document is for the resulting representations to be compact, it is <bcp14>RECOMMENDED</bcp14> that the name be short.  </t>
            <t>
This name is case sensitive. Names may not match other registered names in a case-insensitive manner unless the Designated Experts determine that there is a compelling reason to allow an exception. The name is not used in the CBOR encoding.</t>
          </li>
          <li>
            <t>CBOR label: The value to be used as CBOR abbreviation of the item.  </t>
            <t>
The value <bcp14>MUST</bcp14> be unique. The value can be a positive integer, a negative integer or a string. Integer values between -256 and 255 and strings of length 1 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535 and strings of maximum length 2 are designated as "Specification Required". Integer values greater than 65535 and strings of length greater than 2 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</t>
          </li>
          <li>
            <t>CBOR type: The CBOR type of the item, or a pointer to the registry that defines its type, when that depends on another item.</t>
          </li>
          <li>
            <t>Registry: The registry that values of the item may come from, if one exists.</t>
          </li>
          <li>
            <t>Description: A brief description of this item.</t>
          </li>
          <li>
            <t>Specification: A pointer to the public specification for the item, if one exists.</t>
          </li>
        </ul>
        <t>This registry will be initially populated by the values in <xref target="_table-cbor-key-edhoc-params"/>. In the "Specification" column, the value for all of these entries will be [RFC-XXXX] and <xref target="RFC9528"/>.</t>
      </section>
      <section anchor="iana-expert-review">
        <name>Expert Review Instructions</name>
        <t>The IANA registry established in this document is defined as "Standards Action with Expert Review", "Specification Required", or "Expert Review", depending on the range of values for which an assignment is requested. This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason so they should be given substantial latitude.</t>
        <t>Expert reviewers should take into consideration the following points:</t>
        <ul spacing="normal">
          <li>
            <t>Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered and that the point is likely to be used in deployments. The zones tagged as private use are intended for testing purposes and closed environments; code points in other ranges should not be assigned for testing.</t>
          </li>
          <li>
            <t>Specifications are required for the Standards Action range of point assignment. Specifications should exist for Specification Required ranges, but early assignment before a specification is available is considered to be permissible. Specifications are needed for the first-come, first-serve range if they are expected to be used outside of closed environments in an interoperable way. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for.</t>
          </li>
          <li>
            <t>Experts should take into account the expected usage of fields when approving point assignment. The fact that there is a range for Standards Track documents does not mean that a Standards Track document cannot have points assigned outside of that range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7120">
          <front>
            <title>Early IANA Allocation of Standards Track Code Points</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <date month="January" year="2014"/>
            <abstract>
              <t>This memo describes the process for early allocation of code points by IANA from registries for which "Specification Required", "RFC Required", "IETF Review", or "Standards Action" policies apply. This process can be used to alleviate the problem where code point allocation is needed to facilitate desired or required implementation and deployment experience prior to publication of an RFC, which would normally trigger code point allocation. The procedures in this document are intended to apply only to IETF Stream documents.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="100"/>
          <seriesInfo name="RFC" value="7120"/>
          <seriesInfo name="DOI" value="10.17487/RFC7120"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <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="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="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>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9201">
          <front>
            <title>Additional OAuth Parameters for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines new parameters and encodings for the OAuth 2.0 token and introspection endpoints when used with the framework for Authentication and Authorization for Constrained Environments (ACE). These are used to express the proof-of-possession (PoP) key the client wishes to use, the PoP key that the authorization server has selected, and the PoP key the resource server uses to authenticate to the client.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9201"/>
          <seriesInfo name="DOI" value="10.17487/RFC9201"/>
        </reference>
        <reference anchor="RFC9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </reference>
        <reference anchor="RFC9360">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </reference>
        <reference anchor="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc">
          <front>
            <title>Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Application Protocol (CoAP) and Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov" initials="S." surname="Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <date day="9" month="April" year="2024"/>
            <abstract>
              <t>   The lightweight authenticated key exchange protocol Ephemeral Diffie-
   Hellman Over COSE (EDHOC) can be run over the Constrained Application
   Protocol (CoAP) and used by two peers to establish a Security Context
   for the security protocol Object Security for Constrained RESTful
   Environments (OSCORE).  This document details this use of the EDHOC
   protocol, by specifying a number of additional and optional
   mechanisms.  These especially include an optimization approach for
   combining the execution of EDHOC with the first OSCORE transaction.
   This combination reduces the number of round trips required to set up
   an OSCORE Security Context and to complete an OSCORE transaction
   using that Security Context.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-11"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50% while also significantly reducing memory and code size
   compared to ASN.1.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 Certificate Signing Requests, C509 COSE headers, a
   C509 TLS certificate type, and a C509 file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-09"/>
        </reference>
        <reference anchor="COSE.Header.Parameters" target="https://www.iana.org/assignments/cose/cose.xhtml#header-parameters">
          <front>
            <title>COSE Header Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <author fullname="R. Shirey" initials="R." surname="Shirey"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="FYI" value="36"/>
          <seriesInfo name="RFC" value="4949"/>
          <seriesInfo name="DOI" value="10.17487/RFC4949"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="I-D.ietf-ace-workflow-and-params">
          <front>
            <title>Alternative Workflow and OAuth Parameters for the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document updates the Authentication and Authorization for
   Constrained Environments Framework (ACE, RFC 9200) as follows.
   First, it defines a new, alternative workflow that the Authorization
   Server can use for uploading an access token to a Resource Server on
   behalf of the Client.  Second, it defines new parameters and
   encodings for the OAuth 2.0 token endpoint at the Authorization
   Server.  Third, it defines a method for the ACE framework to enforce
   bidirectional access control by means of a single access token.
   Fourth, it amends two of the requirements on profiles of the
   framework.  Finally, it deprecates the original payload format of
   error responses that convey an error code, when CBOR is used to
   encode message payloads.  For such error responses, it defines a new
   payload format aligned with RFC 9290, thus updating in this respect
   also the profiles of ACE defined in RFC 9202, RFC 9203, and RFC 9431.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-workflow-and-params-02"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-key-update">
          <front>
            <title>Key Update for OSCORE (KUDOS)</title>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document defines Key Update for OSCORE (KUDOS), a lightweight
   procedure that two CoAP endpoints can use to update their keying
   material by establishing a new OSCORE Security Context.  Accordingly,
   it updates the use of the OSCORE flag bits in the CoAP OSCORE Option
   as well as the protection of CoAP response messages with OSCORE, and
   it deprecates the key update procedure specified in Appendix B.2 of
   RFC 8613.  Thus, this document updates RFC 8613.  Also, this document
   defines a procedure that two endpoints can use to update their OSCORE
   identifiers, run either stand-alone or during a KUDOS execution.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-update-08"/>
        </reference>
        <reference anchor="I-D.ietf-lake-authz">
          <front>
            <title>Lightweight Authorization using Ephemeral Diffie-Hellman Over COSE</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Mališa Vučinić" initials="M." surname="Vučinić">
              <organization>INRIA</organization>
            </author>
            <author fullname="Geovane Fedrecheski" initials="G." surname="Fedrecheski">
              <organization>INRIA</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="5" month="July" year="2024"/>
            <abstract>
              <t>   This document describes a procedure for authorizing enrollment of new
   devices using the lightweight authenticated key exchange protocol
   Ephemeral Diffie-Hellman Over COSE (EDHOC).  The procedure is
   applicable to zero-touch onboarding of new devices to a constrained
   network leveraging trust anchors installed at manufacture time.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-authz-02"/>
        </reference>
        <reference anchor="I-D.ietf-ace-coap-est-oscore">
          <front>
            <title>Protecting EST Payloads with OSCORE</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>RISE</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>Nexus</organization>
            </author>
            <author fullname="Mališa Vučinić" initials="M." surname="Vučinić">
              <organization>Inria</organization>
            </author>
            <author fullname="Timothy Claeys" initials="T." surname="Claeys">
         </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   Enrollment over Secure Transport (EST) is a certificate provisioning
   protocol over HTTPS.  This document specifies how to carry EST over
   the Constrained Application Protocol (CoAP) protected with Object
   Security for Constrained RESTful Environments (OSCORE).  The
   specification builds on the EST-coaps [RFC9148] specification, but
   uses OSCORE and Ephemeral Diffie-Hellman over COSE (EDHOC) instead of
   DTLS.  The specification also leverages the certificate structures
   defined in [I-D.ietf-cose-cbor-encoded-cert].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-coap-est-oscore-05"/>
        </reference>
      </references>
    </references>
    <section anchor="examples">
      <name>Examples</name>
      <t>This appendix provides examples where this profile of ACE is used. In particular:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="example-without-optimization"/> does not make use of use of any optimization.</t>
        </li>
        <li>
          <t><xref target="example-with-optimization"/> makes use of the optimizations defined in this specification, hence reducing the roundtrips of the interactions between the Client and the Resource Server.</t>
        </li>
      </ul>
      <t>All these examples build on the following assumptions, as relying on expected early procedures performed at AS. These include the registration of RSs by the respective Resource Owners as well as the registrations of Clients authorized to request access token for those RSs.</t>
      <ul spacing="normal">
        <li>
          <t>AS knows the authentication credential AUTH_CRED_C of the Client C.</t>
        </li>
        <li>
          <t>The Client knows the authentication credential AUTH_CRED_AS of AS.</t>
        </li>
        <li>
          <t>AS knows the authentication credential AUTH_CRED_RS of RS.</t>
        </li>
        <li>
          <t>RS knows the authentication credential AUTH_CRED_AS of AS.  </t>
          <t>
This is relevant in case AS and RS actually require a secure association (e.g., for RS to perform token introspection at AS, or for AS to upload an access token to RS on behalf of the Client).</t>
        </li>
      </ul>
      <t>As a result of the assumptions above, it is possible to limit the transport of AUTH_CRED_C and AUTH_CRED_RS by value only to the following two cases, and only when the Client requests an access token for RS in question for the first time when considering the pair (AUTH_CRED_C, AUTH_CRED_RS).</t>
      <ul spacing="normal">
        <li>
          <t>In the Token Response from AS to the Client, where AUTH_CRED_RS is specified by the 'rs_cnf' parameter.</t>
        </li>
        <li>
          <t>In the access token, where AUTH_CRED_C is specified by the 'cnf' claim.</t>
        </li>
      </ul>
      <t>Note that, even under the circumstances mentioned above, AUTH_CRED_C might rather be indicated by reference. This is possible if RS can effectively use such a reference from the access token to retrieve AUTH_CRED_C (e.g., from a trusted repository of authentication credentials reachable through a non-constrained link), and if AS is in turn aware of that.</t>
      <t>In any other case, it is otherwise possible to indicate both AUTH_CRED_C and AUTH_CRED_RS by reference, when performing the ACE access control workflow as well as later on when the Client and RS run EDHOC.</t>
      <section anchor="example-without-optimization">
        <name>Workflow without Optimizations</name>
        <t>The example below considers the simplest (though least efficient) interaction between the Client and RS. That is: first C uploads the access token to RS; then C and RS run EDHOC; and, finally, the Client accesses the protected resource at RS.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="3248" width="576" viewBox="0 0 576 3248" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 40,48 L 40,832" fill="none" stroke="black"/>
              <path d="M 40,928 L 40,992" fill="none" stroke="black"/>
              <path d="M 40,1088 L 40,1632" fill="none" stroke="black"/>
              <path d="M 40,1808 L 40,1824" fill="none" stroke="black"/>
              <path d="M 40,1888 L 40,1904" fill="none" stroke="black"/>
              <path d="M 40,2048 L 40,3232" fill="none" stroke="black"/>
              <path d="M 320,48 L 320,832" fill="none" stroke="black"/>
              <path d="M 320,928 L 320,968" fill="none" stroke="black"/>
              <path d="M 320,1088 L 320,1128" fill="none" stroke="black"/>
              <path d="M 320,1144 L 320,1208" fill="none" stroke="black"/>
              <path d="M 320,1224 L 320,1272" fill="none" stroke="black"/>
              <path d="M 320,1288 L 320,1400" fill="none" stroke="black"/>
              <path d="M 320,1416 L 320,1544" fill="none" stroke="black"/>
              <path d="M 320,1560 L 320,1608" fill="none" stroke="black"/>
              <path d="M 320,1808 L 320,1824" fill="none" stroke="black"/>
              <path d="M 320,1888 L 320,1904" fill="none" stroke="black"/>
              <path d="M 320,2048 L 320,2616" fill="none" stroke="black"/>
              <path d="M 320,2632 L 320,2696" fill="none" stroke="black"/>
              <path d="M 320,2712 L 320,2776" fill="none" stroke="black"/>
              <path d="M 320,2792 L 320,2856" fill="none" stroke="black"/>
              <path d="M 320,2872 L 320,2984" fill="none" stroke="black"/>
              <path d="M 320,3000 L 320,3128" fill="none" stroke="black"/>
              <path d="M 320,3144 L 320,3208" fill="none" stroke="black"/>
              <path d="M 568,48 L 568,832" fill="none" stroke="black"/>
              <path d="M 568,928 L 568,992" fill="none" stroke="black"/>
              <path d="M 568,1088 L 568,1632" fill="none" stroke="black"/>
              <path d="M 568,1808 L 568,1824" fill="none" stroke="black"/>
              <path d="M 568,1888 L 568,1904" fill="none" stroke="black"/>
              <path d="M 568,2048 L 568,3232" fill="none" stroke="black"/>
              <path d="M 40,80 L 312,80" fill="none" stroke="black"/>
              <path d="M 48,144 L 320,144" fill="none" stroke="black"/>
              <path d="M 40,256 L 312,256" fill="none" stroke="black"/>
              <path d="M 40,384 L 312,384" fill="none" stroke="black"/>
              <path d="M 48,496 L 320,496" fill="none" stroke="black"/>
              <path d="M 40,976 L 560,976" fill="none" stroke="black"/>
              <path d="M 48,1136 L 568,1136" fill="none" stroke="black"/>
              <path d="M 40,1216 L 560,1216" fill="none" stroke="black"/>
              <path d="M 48,1280 L 568,1280" fill="none" stroke="black"/>
              <path d="M 40,1408 L 560,1408" fill="none" stroke="black"/>
              <path d="M 40,1552 L 560,1552" fill="none" stroke="black"/>
              <path d="M 48,1616 L 568,1616" fill="none" stroke="black"/>
              <path d="M 40,2096 L 312,2096" fill="none" stroke="black"/>
              <path d="M 48,2224 L 320,2224" fill="none" stroke="black"/>
              <path d="M 40,2624 L 560,2624" fill="none" stroke="black"/>
              <path d="M 48,2704 L 568,2704" fill="none" stroke="black"/>
              <path d="M 40,2784 L 560,2784" fill="none" stroke="black"/>
              <path d="M 48,2864 L 568,2864" fill="none" stroke="black"/>
              <path d="M 40,2992 L 560,2992" fill="none" stroke="black"/>
              <path d="M 40,3136 L 560,3136" fill="none" stroke="black"/>
              <path d="M 48,3216 L 568,3216" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="568,3136 556,3130.4 556,3141.6" fill="black" transform="rotate(0,560,3136)"/>
              <polygon class="arrowhead" points="568,2992 556,2986.4 556,2997.6" fill="black" transform="rotate(0,560,2992)"/>
              <polygon class="arrowhead" points="568,2784 556,2778.4 556,2789.6" fill="black" transform="rotate(0,560,2784)"/>
              <polygon class="arrowhead" points="568,2624 556,2618.4 556,2629.6" fill="black" transform="rotate(0,560,2624)"/>
              <polygon class="arrowhead" points="568,1552 556,1546.4 556,1557.6" fill="black" transform="rotate(0,560,1552)"/>
              <polygon class="arrowhead" points="568,1408 556,1402.4 556,1413.6" fill="black" transform="rotate(0,560,1408)"/>
              <polygon class="arrowhead" points="568,1216 556,1210.4 556,1221.6" fill="black" transform="rotate(0,560,1216)"/>
              <polygon class="arrowhead" points="568,976 556,970.4 556,981.6" fill="black" transform="rotate(0,560,976)"/>
              <polygon class="arrowhead" points="320,2096 308,2090.4 308,2101.6" fill="black" transform="rotate(0,312,2096)"/>
              <polygon class="arrowhead" points="320,384 308,378.4 308,389.6" fill="black" transform="rotate(0,312,384)"/>
              <polygon class="arrowhead" points="320,256 308,250.4 308,261.6" fill="black" transform="rotate(0,312,256)"/>
              <polygon class="arrowhead" points="320,80 308,74.4 308,85.6" fill="black" transform="rotate(0,312,80)"/>
              <polygon class="arrowhead" points="56,3216 44,3210.4 44,3221.6" fill="black" transform="rotate(180,48,3216)"/>
              <polygon class="arrowhead" points="56,2864 44,2858.4 44,2869.6" fill="black" transform="rotate(180,48,2864)"/>
              <polygon class="arrowhead" points="56,2704 44,2698.4 44,2709.6" fill="black" transform="rotate(180,48,2704)"/>
              <polygon class="arrowhead" points="56,2224 44,2218.4 44,2229.6" fill="black" transform="rotate(180,48,2224)"/>
              <polygon class="arrowhead" points="56,1616 44,1610.4 44,1621.6" fill="black" transform="rotate(180,48,1616)"/>
              <polygon class="arrowhead" points="56,1280 44,1274.4 44,1285.6" fill="black" transform="rotate(180,48,1280)"/>
              <polygon class="arrowhead" points="56,1136 44,1130.4 44,1141.6" fill="black" transform="rotate(180,48,1136)"/>
              <polygon class="arrowhead" points="56,496 44,490.4 44,501.6" fill="black" transform="rotate(180,48,496)"/>
              <polygon class="arrowhead" points="56,144 44,138.4 44,149.6" fill="black" transform="rotate(180,48,144)"/>
              <g class="text">
                <text x="40" y="36">C</text>
                <text x="316" y="36">AS</text>
                <text x="564" y="36">RS</text>
                <text x="80" y="68">EDHOC</text>
                <text x="144" y="68">message_1</text>
                <text x="196" y="68">to</text>
                <text x="236" y="68">/edhoc</text>
                <text x="16" y="84">M01</text>
                <text x="80" y="132">EDHOC</text>
                <text x="144" y="132">message_2</text>
                <text x="16" y="148">M02</text>
                <text x="96" y="164">ID_CRED_R</text>
                <text x="180" y="164">identifies</text>
                <text x="108" y="180">CRED_R</text>
                <text x="144" y="180">=</text>
                <text x="204" y="180">AUTH_CRED_AS</text>
                <text x="92" y="196">by</text>
                <text x="144" y="196">reference</text>
                <text x="80" y="244">EDHOC</text>
                <text x="144" y="244">message_3</text>
                <text x="196" y="244">to</text>
                <text x="236" y="244">/edhoc</text>
                <text x="16" y="260">M03</text>
                <text x="96" y="276">ID_CRED_I</text>
                <text x="180" y="276">identifies</text>
                <text x="108" y="292">CRED_I</text>
                <text x="144" y="292">=</text>
                <text x="200" y="292">AUTH_CRED_C</text>
                <text x="92" y="308">by</text>
                <text x="144" y="308">reference</text>
                <text x="80" y="356">Token</text>
                <text x="136" y="356">request</text>
                <text x="180" y="356">to</text>
                <text x="220" y="356">/token</text>
                <text x="128" y="372">(OSCORE-protected</text>
                <text x="236" y="372">message)</text>
                <text x="16" y="388">M04</text>
                <text x="96" y="404">'req_cnf'</text>
                <text x="180" y="404">identifies</text>
                <text x="128" y="420">AUTH_CRED_C</text>
                <text x="188" y="420">by</text>
                <text x="240" y="420">reference</text>
                <text x="80" y="468">Token</text>
                <text x="140" y="468">response</text>
                <text x="128" y="484">(OSCORE-protected</text>
                <text x="236" y="484">message)</text>
                <text x="16" y="500">M05</text>
                <text x="92" y="516">'rs_cnf'</text>
                <text x="168" y="516">specifies</text>
                <text x="132" y="532">AUTH_CRED_RS</text>
                <text x="196" y="532">by</text>
                <text x="232" y="532">value</text>
                <text x="112" y="564">'ace_profile'</text>
                <text x="208" y="564">specifies</text>
                <text x="264" y="564">the</text>
                <text x="72" y="580">ACE</text>
                <text x="120" y="580">profile</text>
                <text x="232" y="580">"coap_edhoc_oscore"</text>
                <text x="108" y="612">'edhoc_info'</text>
                <text x="204" y="612">specifies:</text>
                <text x="88" y="628">{</text>
                <text x="152" y="644">e'session_id'</text>
                <text x="216" y="644">:</text>
                <text x="252" y="644">h'01',</text>
                <text x="164" y="660">e'cipher_suites'</text>
                <text x="240" y="660">:</text>
                <text x="260" y="660">2,</text>
                <text x="140" y="676">e'methods'</text>
                <text x="192" y="676">:</text>
                <text x="212" y="676">3,</text>
                <text x="144" y="692">e'uri_path'</text>
                <text x="200" y="692">:</text>
                <text x="244" y="692">"/edhoc"</text>
                <text x="88" y="708">}</text>
                <text x="68" y="740">In</text>
                <text x="96" y="740">the</text>
                <text x="140" y="740">access</text>
                <text x="196" y="740">token:</text>
                <text x="64" y="756">-</text>
                <text x="88" y="756">the</text>
                <text x="128" y="756">'cnf'</text>
                <text x="176" y="756">claim</text>
                <text x="240" y="756">specifies</text>
                <text x="120" y="772">AUTH_CRED_C</text>
                <text x="180" y="772">by</text>
                <text x="216" y="772">value</text>
                <text x="64" y="788">-</text>
                <text x="88" y="788">the</text>
                <text x="156" y="788">'edhoc_info'</text>
                <text x="232" y="788">claim</text>
                <text x="112" y="804">specifies</text>
                <text x="168" y="804">the</text>
                <text x="204" y="804">same</text>
                <text x="236" y="804">as</text>
                <text x="124" y="820">'edhoc_info'</text>
                <text x="200" y="820">above</text>
                <text x="76" y="868">Possibly</text>
                <text x="136" y="868">after</text>
                <text x="184" y="868">chain</text>
                <text x="264" y="868">verification,</text>
                <text x="336" y="868">the</text>
                <text x="380" y="868">Client</text>
                <text x="428" y="868">adds</text>
                <text x="500" y="868">AUTH_CRED_RS</text>
                <text x="52" y="884">to</text>
                <text x="80" y="884">the</text>
                <text x="112" y="884">set</text>
                <text x="140" y="884">of</text>
                <text x="168" y="884">its</text>
                <text x="216" y="884">trusted</text>
                <text x="268" y="884">peer</text>
                <text x="348" y="884">authentication</text>
                <text x="460" y="884">credentials,</text>
                <text x="72" y="900">relying</text>
                <text x="116" y="900">on</text>
                <text x="140" y="900">AS</text>
                <text x="164" y="900">as</text>
                <text x="208" y="900">trusted</text>
                <text x="280" y="900">provider/</text>
                <text x="80" y="948">Token</text>
                <text x="132" y="948">upload</text>
                <text x="172" y="948">to</text>
                <text x="232" y="948">/authz-info</text>
                <text x="108" y="964">(unprotected</text>
                <text x="196" y="964">message)</text>
                <text x="16" y="980">M06</text>
                <text x="320" y="996">|</text>
                <text x="76" y="1028">Possibly</text>
                <text x="136" y="1028">after</text>
                <text x="184" y="1028">chain</text>
                <text x="264" y="1028">verification,</text>
                <text x="332" y="1028">RS</text>
                <text x="364" y="1028">adds</text>
                <text x="432" y="1028">AUTH_CRED_C</text>
                <text x="52" y="1044">to</text>
                <text x="80" y="1044">the</text>
                <text x="112" y="1044">set</text>
                <text x="140" y="1044">of</text>
                <text x="168" y="1044">its</text>
                <text x="216" y="1044">trusted</text>
                <text x="268" y="1044">peer</text>
                <text x="348" y="1044">authentication</text>
                <text x="460" y="1044">credentials,</text>
                <text x="72" y="1060">relying</text>
                <text x="116" y="1060">on</text>
                <text x="140" y="1060">AS</text>
                <text x="164" y="1060">as</text>
                <text x="208" y="1060">trusted</text>
                <text x="280" y="1060">provider/</text>
                <text x="84" y="1108">2.01</text>
                <text x="144" y="1108">(Created)</text>
                <text x="116" y="1124">(unprotected</text>
                <text x="204" y="1124">message)</text>
                <text x="16" y="1140">M07</text>
                <text x="80" y="1188">EDHOC</text>
                <text x="144" y="1188">message_1</text>
                <text x="196" y="1188">to</text>
                <text x="236" y="1188">/edhoc</text>
                <text x="72" y="1204">(no</text>
                <text x="116" y="1204">access</text>
                <text x="176" y="1204">control</text>
                <text x="220" y="1204">is</text>
                <text x="272" y="1204">enforced)</text>
                <text x="16" y="1220">M08</text>
                <text x="80" y="1268">EDHOC</text>
                <text x="144" y="1268">message_2</text>
                <text x="16" y="1284">M09</text>
                <text x="96" y="1300">ID_CRED_R</text>
                <text x="180" y="1300">identifies</text>
                <text x="108" y="1316">CRED_R</text>
                <text x="144" y="1316">=</text>
                <text x="204" y="1316">AUTH_CRED_RS</text>
                <text x="92" y="1332">by</text>
                <text x="144" y="1332">reference</text>
                <text x="80" y="1380">EDHOC</text>
                <text x="144" y="1380">message_3</text>
                <text x="196" y="1380">to</text>
                <text x="236" y="1380">/edhoc</text>
                <text x="72" y="1396">(no</text>
                <text x="116" y="1396">access</text>
                <text x="176" y="1396">control</text>
                <text x="220" y="1396">is</text>
                <text x="272" y="1396">enforced)</text>
                <text x="16" y="1412">M10</text>
                <text x="96" y="1428">ID_CRED_I</text>
                <text x="180" y="1428">identifies</text>
                <text x="108" y="1444">CRED_I</text>
                <text x="144" y="1444">=</text>
                <text x="200" y="1444">AUTH_CRED_C</text>
                <text x="92" y="1460">by</text>
                <text x="144" y="1460">reference</text>
                <text x="84" y="1508">Access</text>
                <text x="124" y="1508">to</text>
                <text x="176" y="1508">protected</text>
                <text x="252" y="1508">resource</text>
                <text x="128" y="1524">(OSCORE-protected</text>
                <text x="236" y="1524">message)</text>
                <text x="88" y="1540">(access</text>
                <text x="152" y="1540">control</text>
                <text x="196" y="1540">is</text>
                <text x="248" y="1540">enforced)</text>
                <text x="16" y="1556">M11</text>
                <text x="92" y="1588">Response</text>
                <text x="128" y="1604">(OSCORE-protected</text>
                <text x="236" y="1604">message)</text>
                <text x="16" y="1620">M12</text>
                <text x="320" y="1636">|</text>
                <text x="64" y="1668">Later</text>
                <text x="104" y="1668">on,</text>
                <text x="136" y="1668">the</text>
                <text x="180" y="1668">access</text>
                <text x="232" y="1668">token</text>
                <text x="288" y="1668">expires</text>
                <text x="336" y="1668">...</text>
                <text x="56" y="1684">-</text>
                <text x="80" y="1684">The</text>
                <text x="124" y="1684">Client</text>
                <text x="168" y="1684">and</text>
                <text x="196" y="1684">RS</text>
                <text x="236" y="1684">delete</text>
                <text x="288" y="1684">their</text>
                <text x="340" y="1684">OSCORE</text>
                <text x="404" y="1684">Security</text>
                <text x="472" y="1684">Context</text>
                <text x="520" y="1684">and</text>
                <text x="88" y="1700">purge</text>
                <text x="128" y="1700">the</text>
                <text x="168" y="1700">EDHOC</text>
                <text x="224" y="1700">session</text>
                <text x="276" y="1700">used</text>
                <text x="308" y="1700">to</text>
                <text x="348" y="1700">derive</text>
                <text x="388" y="1700">it</text>
                <text x="432" y="1700">(unless</text>
                <text x="480" y="1700">the</text>
                <text x="516" y="1700">same</text>
                <text x="96" y="1716">session</text>
                <text x="140" y="1716">is</text>
                <text x="172" y="1716">also</text>
                <text x="212" y="1716">used</text>
                <text x="248" y="1716">for</text>
                <text x="288" y="1716">other</text>
                <text x="352" y="1716">reasons).</text>
                <text x="56" y="1732">-</text>
                <text x="76" y="1732">RS</text>
                <text x="120" y="1732">retains</text>
                <text x="200" y="1732">AUTH_CRED_C</text>
                <text x="260" y="1732">as</text>
                <text x="296" y="1732">still</text>
                <text x="348" y="1732">valid,</text>
                <text x="80" y="1748">and</text>
                <text x="108" y="1748">AS</text>
                <text x="144" y="1748">knows</text>
                <text x="192" y="1748">about</text>
                <text x="232" y="1748">it.</text>
                <text x="56" y="1764">-</text>
                <text x="80" y="1764">The</text>
                <text x="124" y="1764">Client</text>
                <text x="184" y="1764">retains</text>
                <text x="268" y="1764">AUTH_CRED_RS</text>
                <text x="332" y="1764">as</text>
                <text x="368" y="1764">still</text>
                <text x="420" y="1764">valid,</text>
                <text x="80" y="1780">and</text>
                <text x="108" y="1780">AS</text>
                <text x="144" y="1780">knows</text>
                <text x="192" y="1780">about</text>
                <text x="232" y="1780">it.</text>
                <text x="60" y="1860">Time</text>
                <text x="108" y="1860">passes</text>
                <text x="152" y="1860">...</text>
                <text x="56" y="1940">The</text>
                <text x="100" y="1940">Client</text>
                <text x="148" y="1940">asks</text>
                <text x="184" y="1940">for</text>
                <text x="208" y="1940">a</text>
                <text x="232" y="1940">new</text>
                <text x="276" y="1940">access</text>
                <text x="332" y="1940">token;</text>
                <text x="376" y="1940">now</text>
                <text x="408" y="1940">all</text>
                <text x="440" y="1940">the</text>
                <text x="100" y="1956">authentication</text>
                <text x="208" y="1956">credentials</text>
                <text x="272" y="1956">can</text>
                <text x="300" y="1956">be</text>
                <text x="352" y="1956">indicated</text>
                <text x="404" y="1956">by</text>
                <text x="456" y="1956">reference</text>
                <text x="56" y="1988">The</text>
                <text x="96" y="1988">price</text>
                <text x="132" y="1988">to</text>
                <text x="160" y="1988">pay</text>
                <text x="188" y="1988">is</text>
                <text x="212" y="1988">on</text>
                <text x="240" y="1988">AS,</text>
                <text x="280" y="1988">about</text>
                <text x="352" y="1988">remembering</text>
                <text x="420" y="1988">that</text>
                <text x="452" y="1988">at</text>
                <text x="488" y="1988">least</text>
                <text x="56" y="2004">one</text>
                <text x="100" y="2004">access</text>
                <text x="152" y="2004">token</text>
                <text x="192" y="2004">has</text>
                <text x="228" y="2004">been</text>
                <text x="276" y="2004">issued</text>
                <text x="320" y="2004">for</text>
                <text x="352" y="2004">the</text>
                <text x="388" y="2004">pair</text>
                <text x="444" y="2004">(Client,</text>
                <text x="496" y="2004">RS)</text>
                <text x="56" y="2020">and</text>
                <text x="120" y="2020">considering</text>
                <text x="184" y="2020">the</text>
                <text x="220" y="2020">pair</text>
                <text x="296" y="2020">(AUTH_CRED_C,</text>
                <text x="408" y="2020">AUTH_CRED_RS)</text>
                <text x="80" y="2068">Token</text>
                <text x="136" y="2068">request</text>
                <text x="180" y="2068">to</text>
                <text x="220" y="2068">/token</text>
                <text x="128" y="2084">(OSCORE-protected</text>
                <text x="236" y="2084">message)</text>
                <text x="16" y="2100">M13</text>
                <text x="96" y="2116">'req_cnf'</text>
                <text x="180" y="2116">identifies</text>
                <text x="108" y="2132">CRED_I</text>
                <text x="144" y="2132">=</text>
                <text x="200" y="2132">AUTH_CRED_C</text>
                <text x="92" y="2148">by</text>
                <text x="144" y="2148">reference</text>
                <text x="80" y="2196">Token</text>
                <text x="140" y="2196">response</text>
                <text x="128" y="2212">(OSCORE-protected</text>
                <text x="236" y="2212">message)</text>
                <text x="16" y="2228">M14</text>
                <text x="92" y="2244">'rs_cnf'</text>
                <text x="172" y="2244">identifies</text>
                <text x="132" y="2260">AUTH_CRED_RS</text>
                <text x="196" y="2260">by</text>
                <text x="248" y="2260">reference</text>
                <text x="112" y="2292">'ace_profile'</text>
                <text x="208" y="2292">specifies</text>
                <text x="264" y="2292">the</text>
                <text x="72" y="2308">ACE</text>
                <text x="120" y="2308">profile</text>
                <text x="232" y="2308">"coap_edhoc_oscore"</text>
                <text x="108" y="2340">'edhoc_info'</text>
                <text x="204" y="2340">specifies:</text>
                <text x="88" y="2356">{</text>
                <text x="152" y="2372">e'session_id'</text>
                <text x="216" y="2372">:</text>
                <text x="252" y="2372">h'05',</text>
                <text x="164" y="2388">e'cipher_suites'</text>
                <text x="240" y="2388">:</text>
                <text x="260" y="2388">2,</text>
                <text x="140" y="2404">e'methods'</text>
                <text x="192" y="2404">:</text>
                <text x="212" y="2404">3,</text>
                <text x="144" y="2420">e'uri_path'</text>
                <text x="200" y="2420">:</text>
                <text x="244" y="2420">"/edhoc"</text>
                <text x="88" y="2436">}</text>
                <text x="68" y="2468">In</text>
                <text x="96" y="2468">the</text>
                <text x="140" y="2468">access</text>
                <text x="196" y="2468">token:</text>
                <text x="64" y="2484">-</text>
                <text x="88" y="2484">the</text>
                <text x="128" y="2484">'cnf'</text>
                <text x="176" y="2484">claim</text>
                <text x="240" y="2484">specifies</text>
                <text x="120" y="2500">AUTH_CRED_C</text>
                <text x="180" y="2500">by</text>
                <text x="232" y="2500">reference</text>
                <text x="64" y="2516">-</text>
                <text x="88" y="2516">the</text>
                <text x="156" y="2516">'edhoc_info'</text>
                <text x="232" y="2516">claim</text>
                <text x="112" y="2532">specifies</text>
                <text x="168" y="2532">the</text>
                <text x="204" y="2532">same</text>
                <text x="236" y="2532">as</text>
                <text x="124" y="2548">'edhoc_info'</text>
                <text x="200" y="2548">above</text>
                <text x="80" y="2596">Token</text>
                <text x="132" y="2596">upload</text>
                <text x="172" y="2596">to</text>
                <text x="232" y="2596">/authz-info</text>
                <text x="108" y="2612">(unprotected</text>
                <text x="196" y="2612">message)</text>
                <text x="16" y="2628">M15</text>
                <text x="76" y="2676">2.01</text>
                <text x="136" y="2676">(Created)</text>
                <text x="108" y="2692">(unprotected</text>
                <text x="196" y="2692">message)</text>
                <text x="16" y="2708">M16</text>
                <text x="80" y="2756">EDHOC</text>
                <text x="144" y="2756">message_1</text>
                <text x="196" y="2756">to</text>
                <text x="236" y="2756">/edhoc</text>
                <text x="72" y="2772">(no</text>
                <text x="116" y="2772">access</text>
                <text x="176" y="2772">control</text>
                <text x="220" y="2772">is</text>
                <text x="272" y="2772">enforced)</text>
                <text x="16" y="2788">M17</text>
                <text x="80" y="2836">EDHOC</text>
                <text x="144" y="2836">message_2</text>
                <text x="72" y="2852">(no</text>
                <text x="116" y="2852">access</text>
                <text x="176" y="2852">control</text>
                <text x="220" y="2852">is</text>
                <text x="272" y="2852">enforced)</text>
                <text x="16" y="2868">M18</text>
                <text x="96" y="2884">ID_CRED_R</text>
                <text x="176" y="2884">specifies</text>
                <text x="108" y="2900">CRED_R</text>
                <text x="144" y="2900">=</text>
                <text x="204" y="2900">AUTH_CRED_RS</text>
                <text x="92" y="2916">by</text>
                <text x="144" y="2916">reference</text>
                <text x="80" y="2964">EDHOC</text>
                <text x="144" y="2964">message_3</text>
                <text x="196" y="2964">to</text>
                <text x="236" y="2964">/edhoc</text>
                <text x="72" y="2980">(no</text>
                <text x="116" y="2980">access</text>
                <text x="176" y="2980">control</text>
                <text x="220" y="2980">is</text>
                <text x="272" y="2980">enforced)</text>
                <text x="16" y="2996">M19</text>
                <text x="96" y="3012">ID_CRED_I</text>
                <text x="180" y="3012">identifies</text>
                <text x="108" y="3028">CRED_I</text>
                <text x="144" y="3028">=</text>
                <text x="200" y="3028">AUTH_CRED_C</text>
                <text x="92" y="3044">by</text>
                <text x="144" y="3044">reference</text>
                <text x="84" y="3092">Access</text>
                <text x="124" y="3092">to</text>
                <text x="176" y="3092">protected</text>
                <text x="252" y="3092">resource</text>
                <text x="300" y="3092">/r</text>
                <text x="128" y="3108">(OSCORE-protected</text>
                <text x="236" y="3108">message)</text>
                <text x="88" y="3124">(access</text>
                <text x="152" y="3124">control</text>
                <text x="196" y="3124">is</text>
                <text x="248" y="3124">enforced)</text>
                <text x="16" y="3140">M20</text>
                <text x="92" y="3188">Response</text>
                <text x="128" y="3204">(OSCORE-protected</text>
                <text x="236" y="3204">message)</text>
                <text x="16" y="3220">M21</text>
                <text x="320" y="3236">|</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
    C                                 AS                             RS
    |                                  |                              |
    |  EDHOC message_1 to /edhoc       |                              |
M01 +--------------------------------->|                              |
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_2                 |                              |
M02 |<---------------------------------+                              |
    |  ID_CRED_R identifies            |                              |
    |     CRED_R = AUTH_CRED_AS        |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_3 to /edhoc       |                              |
M03 +--------------------------------->|                              |
    |  ID_CRED_I identifies            |                              |
    |     CRED_I = AUTH_CRED_C         |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  Token request to /token         |                              |
    |  (OSCORE-protected message)      |                              |
M04 +--------------------------------->|                              |
    |  'req_cnf' identifies            |                              |
    |     AUTH_CRED_C by reference     |                              |
    |                                  |                              |
    |                                  |                              |
    |  Token response                  |                              |
    |  (OSCORE-protected message)      |                              |
M05 |<---------------------------------+                              |
    |  'rs_cnf' specifies              |                              |
    |     AUTH_CRED_RS by value        |                              |
    |                                  |                              |
    |  'ace_profile' specifies the     |                              |
    |  ACE profile "coap_edhoc_oscore" |                              |
    |                                  |                              |
    |  'edhoc_info' specifies:         |                              |
    |     {                            |                              |
    |       e'session_id' : h'01',     |                              |
    |       e'cipher_suites' : 2,      |                              |
    |       e'methods' : 3,            |                              |
    |       e'uri_path' : "/edhoc"     |                              |
    |     }                            |                              |
    |                                  |                              |
    |  In the access token:            |                              |
    |  - the 'cnf' claim specifies     |                              |
    |    AUTH_CRED_C by value          |                              |
    |  - the 'edhoc_info' claim        |                              |
    |    specifies the same as         |                              |
    |    'edhoc_info' above            |                              |
    |                                  |                              |

     Possibly after chain verification, the Client adds AUTH_CRED_RS
     to the set of its trusted peer authentication credentials,
     relying on AS as trusted provider/

    |                                  |                              |
    |  Token upload to /authz-info     |                              |
    |  (unprotected message)           |                              |
M06 +---------------------------------------------------------------->|
    |                                  |                              |

     Possibly after chain verification, RS adds AUTH_CRED_C
     to the set of its trusted peer authentication credentials,
     relying on AS as trusted provider/

    |                                  |                              |
    |   2.01 (Created)                 |                              |
    |   (unprotected message)          |                              |
M07 |<----------------------------------------------------------------+
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_1 to /edhoc       |                              |
    |  (no access control is enforced) |                              |
M08 +---------------------------------------------------------------->|
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_2                 |                              |
M09 |<----------------------------------------------------------------+
    |  ID_CRED_R identifies            |                              |
    |     CRED_R = AUTH_CRED_RS        |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_3 to /edhoc       |                              |
    |  (no access control is enforced) |                              |
M10 +---------------------------------------------------------------->|
    |  ID_CRED_I identifies            |                              |
    |     CRED_I = AUTH_CRED_C         |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  Access to protected resource    |                              |
    |  (OSCORE-protected message)      |                              |
    |  (access control is enforced)    |                              |
M11 +---------------------------------------------------------------->|
    |                                  |                              |
    |  Response                        |                              |
    |  (OSCORE-protected message)      |                              |
M12 |<----------------------------------------------------------------+
    |                                  |                              |

     Later on, the access token expires ...
      - The Client and RS delete their OSCORE Security Context and
        purge the EDHOC session used to derive it (unless the same
        session is also used for other reasons).
      - RS retains AUTH_CRED_C as still valid,
        and AS knows about it.
      - The Client retains AUTH_CRED_RS as still valid,
        and AS knows about it.

    |                                  |                              |
    |                                  |                              |

     Time passes ...

    |                                  |                              |
    |                                  |                              |

     The Client asks for a new access token; now all the
     authentication credentials can be indicated by reference

     The price to pay is on AS, about remembering that at least
     one access token has been issued for the pair (Client, RS)
     and considering the pair (AUTH_CRED_C, AUTH_CRED_RS)

    |                                  |                              |
    |  Token request to /token         |                              |
    |  (OSCORE-protected message)      |                              |
M13 +--------------------------------->|                              |
    |  'req_cnf' identifies            |                              |
    |     CRED_I = AUTH_CRED_C         |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  Token response                  |                              |
    |  (OSCORE-protected message)      |                              |
M14 |<---------------------------------+                              |
    |  'rs_cnf' identifies             |                              |
    |     AUTH_CRED_RS by reference    |                              |
    |                                  |                              |
    |  'ace_profile' specifies the     |                              |
    |  ACE profile "coap_edhoc_oscore" |                              |
    |                                  |                              |
    |  'edhoc_info' specifies:         |                              |
    |     {                            |                              |
    |       e'session_id' : h'05',     |                              |
    |       e'cipher_suites' : 2,      |                              |
    |       e'methods' : 3,            |                              |
    |       e'uri_path' : "/edhoc"     |                              |
    |     }                            |                              |
    |                                  |                              |
    |  In the access token:            |                              |
    |  - the 'cnf' claim specifies     |                              |
    |    AUTH_CRED_C by reference      |                              |
    |  - the 'edhoc_info' claim        |                              |
    |    specifies the same as         |                              |
    |    'edhoc_info' above            |                              |
    |                                  |                              |
    |                                  |                              |
    |  Token upload to /authz-info     |                              |
    |  (unprotected message)           |                              |
M15 +---------------------------------------------------------------->|
    |                                  |                              |
    |                                  |                              |
    |  2.01 (Created)                  |                              |
    |  (unprotected message)           |                              |
M16 |<----------------------------------------------------------------+
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_1 to /edhoc       |                              |
    |  (no access control is enforced) |                              |
M17 +---------------------------------------------------------------->|
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_2                 |                              |
    |  (no access control is enforced) |                              |
M18 |<----------------------------------------------------------------+
    |  ID_CRED_R specifies             |                              |
    |     CRED_R = AUTH_CRED_RS        |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_3 to /edhoc       |                              |
    |  (no access control is enforced) |                              |
M19 +---------------------------------------------------------------->|
    |  ID_CRED_I identifies            |                              |
    |     CRED_I = AUTH_CRED_C         |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  Access to protected resource /r |                              |
    |  (OSCORE-protected message)      |                              |
    |  (access control is enforced)    |                              |
M20 +---------------------------------------------------------------->|
    |                                  |                              |
    |                                  |                              |
    |  Response                        |                              |
    |  (OSCORE-protected message)      |                              |
M21 |<----------------------------------------------------------------+
    |                                  |                              |
]]></artwork>
        </artset>
      </section>
      <section anchor="example-with-optimization">
        <name>Workflow with Optimizations</name>
        <t>The example below builds on the example in <xref target="example-without-optimization"/>, while additionally relying on the two following optimizations.</t>
        <ul spacing="normal">
          <li>
            <t>The access token is not separately uploaded to the /authz-info endpoint at RS, but rather included in the EAD_3 field of EDHOC message_3 sent by C to RS.</t>
          </li>
          <li>
            <t>The Client uses the EDHOC+OSCORE request defined in <xref target="I-D.ietf-core-oscore-edhoc"/> is used, when running EDHOC both with AS and with RS.</t>
          </li>
        </ul>
        <t>These two optimizations used together result in the most efficient interaction between C and RS, as consisting of only two roundtrips to upload the access token, run EDHOC and access the protected resource at RS.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1536" width="576" viewBox="0 0 576 1536" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 40,48 L 40,816" fill="none" stroke="black"/>
              <path d="M 40,912 L 40,976" fill="none" stroke="black"/>
              <path d="M 40,1072 L 40,1360" fill="none" stroke="black"/>
              <path d="M 40,1456 L 40,1520" fill="none" stroke="black"/>
              <path d="M 320,48 L 320,816" fill="none" stroke="black"/>
              <path d="M 320,912 L 320,952" fill="none" stroke="black"/>
              <path d="M 320,1072 L 320,1096" fill="none" stroke="black"/>
              <path d="M 320,1112 L 320,1208" fill="none" stroke="black"/>
              <path d="M 320,1224 L 320,1360" fill="none" stroke="black"/>
              <path d="M 320,1456 L 320,1496" fill="none" stroke="black"/>
              <path d="M 568,48 L 568,816" fill="none" stroke="black"/>
              <path d="M 568,912 L 568,976" fill="none" stroke="black"/>
              <path d="M 568,1072 L 568,1360" fill="none" stroke="black"/>
              <path d="M 568,1456 L 568,1520" fill="none" stroke="black"/>
              <path d="M 40,80 L 312,80" fill="none" stroke="black"/>
              <path d="M 48,144 L 320,144" fill="none" stroke="black"/>
              <path d="M 40,256 L 312,256" fill="none" stroke="black"/>
              <path d="M 64,336 L 80,336" fill="none" stroke="black"/>
              <path d="M 96,336 L 112,336" fill="none" stroke="black"/>
              <path d="M 128,336 L 144,336" fill="none" stroke="black"/>
              <path d="M 48,480 L 320,480" fill="none" stroke="black"/>
              <path d="M 40,960 L 560,960" fill="none" stroke="black"/>
              <path d="M 48,1104 L 568,1104" fill="none" stroke="black"/>
              <path d="M 40,1216 L 560,1216" fill="none" stroke="black"/>
              <path d="M 64,1312 L 80,1312" fill="none" stroke="black"/>
              <path d="M 96,1312 L 112,1312" fill="none" stroke="black"/>
              <path d="M 128,1312 L 144,1312" fill="none" stroke="black"/>
              <path d="M 48,1504 L 568,1504" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="568,1216 556,1210.4 556,1221.6" fill="black" transform="rotate(0,560,1216)"/>
              <polygon class="arrowhead" points="568,960 556,954.4 556,965.6" fill="black" transform="rotate(0,560,960)"/>
              <polygon class="arrowhead" points="320,256 308,250.4 308,261.6" fill="black" transform="rotate(0,312,256)"/>
              <polygon class="arrowhead" points="320,80 308,74.4 308,85.6" fill="black" transform="rotate(0,312,80)"/>
              <polygon class="arrowhead" points="56,1504 44,1498.4 44,1509.6" fill="black" transform="rotate(180,48,1504)"/>
              <polygon class="arrowhead" points="56,1104 44,1098.4 44,1109.6" fill="black" transform="rotate(180,48,1104)"/>
              <polygon class="arrowhead" points="56,480 44,474.4 44,485.6" fill="black" transform="rotate(180,48,480)"/>
              <polygon class="arrowhead" points="56,144 44,138.4 44,149.6" fill="black" transform="rotate(180,48,144)"/>
              <g class="text">
                <text x="40" y="36">C</text>
                <text x="316" y="36">AS</text>
                <text x="564" y="36">RS</text>
                <text x="80" y="68">EDHOC</text>
                <text x="144" y="68">message_1</text>
                <text x="196" y="68">to</text>
                <text x="236" y="68">/edhoc</text>
                <text x="16" y="84">M01</text>
                <text x="80" y="132">EDHOC</text>
                <text x="144" y="132">message_2</text>
                <text x="16" y="148">M02</text>
                <text x="96" y="164">ID_CRED_R</text>
                <text x="180" y="164">identifies</text>
                <text x="108" y="180">CRED_R</text>
                <text x="144" y="180">=</text>
                <text x="204" y="180">AUTH_CRED_AS</text>
                <text x="92" y="196">by</text>
                <text x="144" y="196">reference</text>
                <text x="108" y="244">EDHOC+OSCORE</text>
                <text x="192" y="244">request</text>
                <text x="236" y="244">to</text>
                <text x="276" y="244">/token</text>
                <text x="16" y="260">M03</text>
                <text x="64" y="276">-</text>
                <text x="96" y="276">EDHOC</text>
                <text x="160" y="276">message_3</text>
                <text x="128" y="292">ID_CRED_I</text>
                <text x="212" y="292">identifies</text>
                <text x="140" y="308">CRED_I</text>
                <text x="176" y="308">=</text>
                <text x="232" y="308">AUTH_CRED_C</text>
                <text x="124" y="324">by</text>
                <text x="176" y="324">reference</text>
                <text x="64" y="356">-</text>
                <text x="140" y="356">OSCORE-protected</text>
                <text x="228" y="356">part</text>
                <text x="112" y="372">Token</text>
                <text x="168" y="372">request</text>
                <text x="152" y="388">'req_cnf'</text>
                <text x="236" y="388">identifies</text>
                <text x="160" y="404">AUTH_CRED_C</text>
                <text x="220" y="404">by</text>
                <text x="272" y="404">reference</text>
                <text x="80" y="452">Token</text>
                <text x="140" y="452">response</text>
                <text x="128" y="468">(OSCORE-protected</text>
                <text x="236" y="468">message)</text>
                <text x="16" y="484">M04</text>
                <text x="92" y="500">'rs_cnf'</text>
                <text x="168" y="500">specifies</text>
                <text x="132" y="516">AUTH_CRED_RS</text>
                <text x="196" y="516">by</text>
                <text x="232" y="516">value</text>
                <text x="112" y="548">'ace_profile'</text>
                <text x="208" y="548">specifies</text>
                <text x="264" y="548">the</text>
                <text x="72" y="564">ACE</text>
                <text x="120" y="564">profile</text>
                <text x="232" y="564">"coap_edhoc_oscore"</text>
                <text x="108" y="596">'edhoc_info'</text>
                <text x="204" y="596">specifies:</text>
                <text x="88" y="612">{</text>
                <text x="152" y="628">e'session_id'</text>
                <text x="216" y="628">:</text>
                <text x="252" y="628">h'01',</text>
                <text x="164" y="644">e'cipher_suites'</text>
                <text x="240" y="644">:</text>
                <text x="260" y="644">2,</text>
                <text x="140" y="660">e'methods'</text>
                <text x="192" y="660">:</text>
                <text x="212" y="660">3,</text>
                <text x="144" y="676">e'uri_path'</text>
                <text x="200" y="676">:</text>
                <text x="244" y="676">"/edhoc"</text>
                <text x="88" y="692">}</text>
                <text x="68" y="724">In</text>
                <text x="96" y="724">the</text>
                <text x="140" y="724">access</text>
                <text x="196" y="724">token:</text>
                <text x="64" y="740">-</text>
                <text x="88" y="740">the</text>
                <text x="128" y="740">'cnf'</text>
                <text x="176" y="740">claim</text>
                <text x="240" y="740">specifies</text>
                <text x="120" y="756">AUTH_CRED_C</text>
                <text x="180" y="756">by</text>
                <text x="216" y="756">value</text>
                <text x="64" y="772">-</text>
                <text x="88" y="772">the</text>
                <text x="156" y="772">'edhoc_info'</text>
                <text x="232" y="772">claim</text>
                <text x="112" y="788">specifies</text>
                <text x="168" y="788">the</text>
                <text x="204" y="788">same</text>
                <text x="236" y="788">as</text>
                <text x="124" y="804">'edhoc_info'</text>
                <text x="200" y="804">above</text>
                <text x="76" y="852">Possibly</text>
                <text x="136" y="852">after</text>
                <text x="184" y="852">chain</text>
                <text x="264" y="852">verification,</text>
                <text x="336" y="852">the</text>
                <text x="380" y="852">Client</text>
                <text x="428" y="852">adds</text>
                <text x="500" y="852">AUTH_CRED_RS</text>
                <text x="52" y="868">to</text>
                <text x="80" y="868">the</text>
                <text x="112" y="868">set</text>
                <text x="140" y="868">of</text>
                <text x="168" y="868">its</text>
                <text x="216" y="868">trusted</text>
                <text x="268" y="868">peer</text>
                <text x="348" y="868">authentication</text>
                <text x="460" y="868">credentials,</text>
                <text x="72" y="884">relying</text>
                <text x="116" y="884">on</text>
                <text x="140" y="884">AS</text>
                <text x="164" y="884">as</text>
                <text x="208" y="884">trusted</text>
                <text x="276" y="884">provider</text>
                <text x="80" y="932">EDHOC</text>
                <text x="144" y="932">message_1</text>
                <text x="196" y="932">to</text>
                <text x="236" y="932">/edhoc</text>
                <text x="72" y="948">(no</text>
                <text x="116" y="948">access</text>
                <text x="176" y="948">control</text>
                <text x="220" y="948">is</text>
                <text x="272" y="948">enforced)</text>
                <text x="16" y="964">M05</text>
                <text x="320" y="980">|</text>
                <text x="76" y="1012">Possibly</text>
                <text x="136" y="1012">after</text>
                <text x="184" y="1012">chain</text>
                <text x="264" y="1012">verification,</text>
                <text x="332" y="1012">RS</text>
                <text x="364" y="1012">adds</text>
                <text x="432" y="1012">AUTH_CRED_C</text>
                <text x="52" y="1028">to</text>
                <text x="80" y="1028">the</text>
                <text x="112" y="1028">set</text>
                <text x="140" y="1028">of</text>
                <text x="168" y="1028">its</text>
                <text x="216" y="1028">trusted</text>
                <text x="268" y="1028">peer</text>
                <text x="348" y="1028">authentication</text>
                <text x="460" y="1028">credentials,</text>
                <text x="72" y="1044">relying</text>
                <text x="116" y="1044">on</text>
                <text x="140" y="1044">AS</text>
                <text x="164" y="1044">as</text>
                <text x="208" y="1044">trusted</text>
                <text x="276" y="1044">provider</text>
                <text x="80" y="1092">EDHOC</text>
                <text x="144" y="1092">message_2</text>
                <text x="16" y="1108">M06</text>
                <text x="96" y="1124">ID_CRED_R</text>
                <text x="180" y="1124">identifies</text>
                <text x="108" y="1140">CRED_R</text>
                <text x="144" y="1140">=</text>
                <text x="204" y="1140">AUTH_CRED_RS</text>
                <text x="92" y="1156">by</text>
                <text x="144" y="1156">reference</text>
                <text x="108" y="1204">EDHOC+OSCORE</text>
                <text x="192" y="1204">request</text>
                <text x="236" y="1204">to</text>
                <text x="260" y="1204">/r</text>
                <text x="16" y="1220">M07</text>
                <text x="64" y="1236">-</text>
                <text x="96" y="1236">EDHOC</text>
                <text x="160" y="1236">message_3</text>
                <text x="112" y="1252">EAD_3</text>
                <text x="172" y="1252">contains</text>
                <text x="236" y="1252">access</text>
                <text x="288" y="1252">token</text>
                <text x="128" y="1268">ID_CRED_I</text>
                <text x="212" y="1268">identifies</text>
                <text x="140" y="1284">CRED_I</text>
                <text x="176" y="1284">=</text>
                <text x="232" y="1284">AUTH_CRED_C</text>
                <text x="124" y="1300">by</text>
                <text x="176" y="1300">reference</text>
                <text x="64" y="1332">-</text>
                <text x="140" y="1332">OSCORE-protected</text>
                <text x="228" y="1332">part</text>
                <text x="136" y="1348">Application</text>
                <text x="216" y="1348">request</text>
                <text x="260" y="1348">to</text>
                <text x="284" y="1348">/r</text>
                <text x="64" y="1396">After</text>
                <text x="104" y="1396">the</text>
                <text x="144" y="1396">EDHOC</text>
                <text x="212" y="1396">processing</text>
                <text x="268" y="1396">is</text>
                <text x="324" y="1396">completed,</text>
                <text x="396" y="1396">access</text>
                <text x="456" y="1396">control</text>
                <text x="52" y="1412">is</text>
                <text x="100" y="1412">enforced</text>
                <text x="148" y="1412">on</text>
                <text x="176" y="1412">the</text>
                <text x="224" y="1412">rebuilt</text>
                <text x="324" y="1412">OSCORE-protected</text>
                <text x="428" y="1412">request,</text>
                <text x="60" y="1428">like</text>
                <text x="92" y="1428">if</text>
                <text x="116" y="1428">it</text>
                <text x="144" y="1428">had</text>
                <text x="180" y="1428">been</text>
                <text x="220" y="1428">sent</text>
                <text x="288" y="1428">stand-alone</text>
                <text x="92" y="1476">Response</text>
                <text x="128" y="1492">(OSCORE-protected</text>
                <text x="236" y="1492">message)</text>
                <text x="16" y="1508">M08</text>
                <text x="320" y="1524">|</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
    C                                 AS                             RS
    |                                  |                              |
    |  EDHOC message_1 to /edhoc       |                              |
M01 +--------------------------------->|                              |
    |                                  |                              |
    |                                  |                              |
    |  EDHOC message_2                 |                              |
M02 |<---------------------------------+                              |
    |  ID_CRED_R identifies            |                              |
    |     CRED_R = AUTH_CRED_AS        |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  EDHOC+OSCORE request to /token  |                              |
M03 +--------------------------------->|                              |
    |  - EDHOC message_3               |                              |
    |      ID_CRED_I identifies        |                              |
    |         CRED_I = AUTH_CRED_C     |                              |
    |         by reference             |                              |
    |  --- --- ---                     |                              |
    |  - OSCORE-protected part         |                              |
    |      Token request               |                              |
    |         'req_cnf' identifies     |                              |
    |         AUTH_CRED_C by reference |                              |
    |                                  |                              |
    |                                  |                              |
    |  Token response                  |                              |
    |  (OSCORE-protected message)      |                              |
M04 |<---------------------------------+                              |
    |  'rs_cnf' specifies              |                              |
    |     AUTH_CRED_RS by value        |                              |
    |                                  |                              |
    |  'ace_profile' specifies the     |                              |
    |  ACE profile "coap_edhoc_oscore" |                              |
    |                                  |                              |
    |  'edhoc_info' specifies:         |                              |
    |     {                            |                              |
    |       e'session_id' : h'01',     |                              |
    |       e'cipher_suites' : 2,      |                              |
    |       e'methods' : 3,            |                              |
    |       e'uri_path' : "/edhoc"     |                              |
    |     }                            |                              |
    |                                  |                              |
    |  In the access token:            |                              |
    |  - the 'cnf' claim specifies     |                              |
    |    AUTH_CRED_C by value          |                              |
    |  - the 'edhoc_info' claim        |                              |
    |    specifies the same as         |                              |
    |    'edhoc_info' above            |                              |
    |                                  |                              |

     Possibly after chain verification, the Client adds AUTH_CRED_RS
     to the set of its trusted peer authentication credentials,
     relying on AS as trusted provider

    |                                  |                              |
    |  EDHOC message_1 to /edhoc       |                              |
    |  (no access control is enforced) |                              |
M05 +---------------------------------------------------------------->|
    |                                  |                              |

     Possibly after chain verification, RS adds AUTH_CRED_C
     to the set of its trusted peer authentication credentials,
     relying on AS as trusted provider

    |                                  |                              |
    |  EDHOC message_2                 |                              |
M06 |<----------------------------------------------------------------+
    |  ID_CRED_R identifies            |                              |
    |     CRED_R = AUTH_CRED_RS        |                              |
    |     by reference                 |                              |
    |                                  |                              |
    |                                  |                              |
    |  EDHOC+OSCORE request to /r      |                              |
M07 +---------------------------------------------------------------->|
    |  - EDHOC message_3               |                              |
    |      EAD_3 contains access token |                              |
    |      ID_CRED_I identifies        |                              |
    |         CRED_I = AUTH_CRED_C     |                              |
    |         by reference             |                              |
    |  --- --- ---                     |                              |
    |  - OSCORE-protected part         |                              |
    |      Application request to /r   |                              |
    |                                  |                              |

     After the EDHOC processing is completed, access control
     is enforced on the rebuilt OSCORE-protected request,
     like if it had been sent stand-alone

    |                                  |                              |
    |  Response                        |                              |
    |  (OSCORE-protected message)      |                              |
M08 |<----------------------------------------------------------------+
    |                                  |                              |
]]></artwork>
        </artset>
      </section>
    </section>
    <section anchor="sec-profile-requirements">
      <name>Profile Requirements</name>
      <t>This section lists the specifications of this profile based on the requirements of the framework, as requested in <xref section="C" sectionFormat="of" target="RFC9200"/>.</t>
      <ul spacing="normal">
        <li>
          <t>Optionally, define new methods for the client to discover the necessary permissions and AS for accessing a resource, different from the one proposed in <xref target="RFC9200"/>: Not specified</t>
        </li>
        <li>
          <t>Optionally, specify new grant types: Not specified</t>
        </li>
        <li>
          <t>Optionally, define the use of client certificates as client credential type: C can use authentication credentials of any type admitted by the EDHOC protocol, including public key certificates such as X.509 and C509 certificates.</t>
        </li>
        <li>
          <t>Specify the communication protocol the client and RS must use: CoAP</t>
        </li>
        <li>
          <t>Specify the security protocol the client and RS must use to protect their communication: OSCORE</t>
        </li>
        <li>
          <t>Specify how the client and RS mutually authenticate: Explicitly, by successfully executing the EDHOC protocol, after which a common OSCORE Security Context is exported from the EDHOC session. As per the EDHOC authentication method used during the EDHOC session, authentication is provided by digital signatures, or by Message Authentication Codes (MACs) computed from an ephemeral-static ECDH shared secret.</t>
        </li>
        <li>
          <t>Specify the proof-of-possession protocol(s) and how to select one, if several are available. Also specify which key types (e.g., symmetric/asymmetric) are supported by a specific proof-of-possession protocol: proof-of-possession is first achieved by RS when successfully processing EDHOC message_3 during the EDHOC session with C, through EDHOC algorithms and symmetric EDHOC session keys. Also, proof-of-possession is later achieved by C when receiving from RS: i) the optional EDHOC message_4 during the EDHOC session with RS, through EDHOC algorithms and symmetric EDHOC session keys; or ii) the first response protected with the OSCORE Security Context established after the EDHOC session with RS, through OSCORE algorithms and OSCORE symmetric keys derived from the completed EDHOC session.</t>
        </li>
        <li>
          <t>Specify a unique ace_profile identifier: coap_edhoc_oscore</t>
        </li>
        <li>
          <t>If introspection is supported, specify the communication and security protocol for introspection: HTTP/CoAP (+ TLS/DTLS/OSCORE)</t>
        </li>
        <li>
          <t>Specify the communication and security protocol for interactions between client and AS: HTTP/CoAP (+ TLS/DTLS/OSCORE)</t>
        </li>
        <li>
          <t>Specify if/how the authz-info endpoint is protected, including how error responses are protected: Not protected</t>
        </li>
        <li>
          <t>Optionally, define methods of token transport other than the authz-info endpoint: C can upload the access token when executing EDHOC with RS, by including the access token in the EAD_3 field of EDHOC message_3 (see <xref target="edhoc-exec"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-cddl-model" removeInRFC="true">
      <name>CDDL Model</name>
      <figure anchor="fig-cddl-model">
        <name>CDDL model</name>
        <artwork type="CDDL" align="left"><![CDATA[
; ACE Profiles
coap_edhoc_oscore = 4

; OAuth Parameters CBOR Mappings
edhoc_info_param = 47

; CBOR Web Token (CWT) Claims
edhoc_info_claim = 41

; CWT Confirmation Methods
x5chain = 5
x5bag = 6
x5t = 7
x5u = 8
c5c = 9
c5b = 10
c5t = 11
c5u = 12
kcwt = 13
kccs = 14

; EDHOC Information
session_id = 0
methods = 1
cipher_suites = 2
message_4 = 3
comb_req = 4
uri_path = 5
osc_ms_len = 6
osc_salt_len = 7
osc_version = 8
cred_types = 9
id_cred_types = 10
eads = 11
initiator = 12
responder = 13
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-04-05">
        <name>Version -04 to -05</name>
        <ul spacing="normal">
          <li>
            <t>CBOR diagnostic notation uses placeholders from a CDDL model.</t>
          </li>
          <li>
            <t>Only CWTs are supported as access tokens in this profile.</t>
          </li>
          <li>
            <t>The alternative workflow of ACE is only mentioned as an example.</t>
          </li>
          <li>
            <t>Clarified that both the EDHOC forward and reverse message flows are possible.</t>
          </li>
          <li>
            <t>Consistent with the used EDHOC message flow, the access token can be in the EAD item of any EDHOC message.</t>
          </li>
          <li>
            <t>Explicit registration policies for the new IANA registry.</t>
          </li>
          <li>
            <t>Fixes in the IANA considerations.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>
            <t>Fixed column name and prefilling of the "EDHOC Information" registry.</t>
          </li>
          <li>
            <t>Added EDHOC_Information Parameters originally in draft-tiloca-lake-app-profiles-00.</t>
          </li>
          <li>
            <t>Removed the case of transporting access token in EAD_1</t>
          </li>
          <li>
            <t>Removed redundant normative text</t>
          </li>
          <li>
            <t>Clarifications of association between access token, session_id, EDHOC session and OSCORE security context</t>
          </li>
          <li>
            <t>Updated references.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-02-03">
        <name>Version -02 to -03</name>
        <ul spacing="normal">
          <li>
            <t>Restructured presentation of content.</t>
          </li>
          <li>
            <t>Simplified description of the use of EDHOC_Information.</t>
          </li>
          <li>
            <t>Merged the concepts of EDHOC "session_id" and identifier of token series.</t>
          </li>
          <li>
            <t>Enabled the transport of the access token also in EDHOC EAD_3.</t>
          </li>
          <li>
            <t>Defined semantics of the newly defined CWT/JWT Confirmation Methods.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>Removed use of EDHOC_KeyUpdate.</t>
          </li>
          <li>
            <t>The Security Context is updated either by KUDOS or a rerun of EDHOC.</t>
          </li>
          <li>
            <t>The alternative workflow (AS token posting) is specified in separate draft.</t>
          </li>
          <li>
            <t>Fixed and updated examples.</t>
          </li>
          <li>
            <t>Editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Fixed semantics of the ead_value for transporting an Access Token in the EAD_1 field.</t>
          </li>
          <li>
            <t>Error handling aligned with EDHOC.</t>
          </li>
          <li>
            <t>Precise characterization of the EDHOC execution considered for EDHOC-KeyUpdate.</t>
          </li>
          <li>
            <t>Fixed message exchange examples.</t>
          </li>
          <li>
            <t>Added appendix with profile requirements.</t>
          </li>
          <li>
            <t>Updated references.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowldegment">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/> and <contact fullname="Carsten Bormann"/> for their comments and feedback.</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA within the EUREKA CELTIC-NEXT project CYPRESS; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
wZ0x49XdiCIPW5N+F19flZCbhRWRG+HuYnRxjiKKldZg4y8Pt+FAJRztMY6W
BlobO5fiSh2NtzsDfmcMrA2YWlZYC7bRJl1MT7BMF7MebNDFdvY+jI92LZWM
PjncLQGaFXJtjF1rewU7atP29ATLtmc9eB/bOygVOKagj+rYHasfFoafsnUX
ReLOLxn1sHLr/HueBNBJ/JyVWrtlnP5b+PexN3x0uH3y3589M6m1xkrGP8de
z3znuLO3VNzsp1KfgYp1VgTMmj3bW96SatvUcn4CBz7zUxVyp+KgKKSibNKO
sGCXvZbyI88IGv+35+15z/5McQ7tCrP6D0Cd+bEePobOlYeK/TuPCbD42f3m
Zx3g8RsH+AbiDrxCGNMujC4+cX76sPlp5QXnh4/o4dr9Kf8zP/wIH15QslfV
w8bzy48/Xv648rryC0+WvyDaFT//dAkkteuOHu/tmcfJaee89YPr7OM3empB
VTP8QMyfH9xvhrkme/z0kvPUVASe/s5eMLzlx3ct9yJZPTMuqntmpFbPDBOR
VCjQrppZlGIii2kbdnM7KYJExSMkeEsiEU2KVzEYkeJu64sVnQxk7Iqkp/up
UnQpYeUyYZ8imZGgV+Y/VzXB5kIekVVTjWbnJnjSVQCBrtoQcmVnKeJp9bte
2nawYrG1wJFAvpNTkwCkmzOoXB7ulNwULKqrk0Wl0tEnlwCGDkyg92inA62z
0/I2i4HPOiAXO6BUrHJ4pxAWt2EfXCZdXbiejIpk5nq1cF6q6ljBCssnWpnl
5L1WCWrcn7HCOKdXy5VjJmnIpWV8FXuZsfXzfXjnvbn427srtE0VJPfDbq+o
70rRGe0vtbqpNzVKrd6Fm+Qg692wUBxrIcVycStWidO2TAuDpaZwKfXYLZPC
+3IbT1LyJyejmSDu+qbbCVeWBFDSUTndoKuO2JCtiwF3vcUzpHQ+HS88NmdK
yXVixQxj3dXBShEp+KcBuMjRQszS7uMES8c3OQm3xVSgkbsftzylCn0te6MI
yfBcEhmzZhTf5AXIK1VtRFX2Ri0iWU1VLuymKlWEVvGvTxVJyKq+vCpkxzyB
TcPYZoS1oMf7mAmruZOrQdkSnyHuDUUse3tVrVqotGl7Y0ZiVR5R78y5+pDd
f6d0HVQXBayuQoIupaKSHeik6CyoWLnk1joVkRS+ljsbDLE2oVUtKbjNqXhw
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
AT+3Wlzqjf+An6D2QA6NtjNVYDUarOhMyHnrrdb/ND+e72c3E2QQMNWyH8Cu
pp+LAY3z69Jxlj3yqxrHcYVe9RAyD8nwtOo4L/d63vedZT9/XnU997Wv+xrH
hc/++uO83Nv3fv3TUgB9v+J6zk+FIpiE7WyTfcGPjPPMFWjWH8emTOUHVx+n
+cHfeBz33A82uRcH93kv1Lmf39O5nzvnbgjT/+nnfumkO+OpM8dYd5ydUm9b
waXdFcd5uXd4n/izDVti+fKz8cdGmxIO/NHPXWT5jce5h3M/uk9+odUKU6pq
o315Xo36tv44zQ+uOM62H4RXYsfaLhRZXmccFJqVOWyrVB5j67ffl0m7trZ1
vPY48PPxPtZDP+G25IlfRaNt79i73t7rbbc3GSeI5qAHXWWLKA8zHGq/vdF6
JG8KRzhof8a+Fml0NQd1FgfaYga/te44nxofXGc99zBOhb3g2HlwxXE6RRNC
gYCsvq8Cu3CoxtrrsW8HL2vNcbwCraBqYr4hiquP46yFbCXOgyuPs+TBZePQ
QN4bFcHsj1G756h7uxW8q8WO0AtokXMeRAxX0guC4jnEnjIPYdCGUsL8vmXl
PqGmy/p1dkakD1tfhm2LvROlNauY3Drj7NhV6lyOvdo4L/cerSCuLZXmfnu0
QKu0iw79Pyw2ePvdvZ6306dYqtFu+cFVx1mCDitgw+NVhLhlMt7XKix/ttFI
HtqJk6LFkkorcj3l3VXg/OSrunX3PM49GJ+e3iceflnj08U345M89NnGJ3no
8+9Xb+8+79c3I9ZvM86Jkv6rXBRrjPPZxgw1ThMSrjLOy94qToaV8XDZz6r7
uqg1F603zucbjXorORmW/NyfvMES4AvxNLbLDjhVhL7b7fKzoOBdllyRugKr
Vae2XBk7HrXUzPNFOuFIGae8nem1BKLvDQVo7Vh5HagD6iHUKxQ+miWmnq9K
HsFA3GzXLBs9h1h2O85cB27mZTlGgYHCG43aenxy7KpAE64fHOWVQCiPejFY
d9ivjkLxgi8x/mLukycVUeBrXaaFkdl7FYuNSZE2Mv/gxehh5+AwfrEh4kCy
aqojJ6x552nEeVdzbppJalRbjjYNZyHGEbLr36d66eQ15/dLfRF0Z58oyxZW
sCxHu6hIlYvBriwfQ5XXDIz5Qqr91+CJ6d2rJ+8ePTHfhKCGcb4ej07v8It4
dKrRZx041wYYrTlO84MrjvPNo7N0PV/Uo3P0zaOjHvrm0WkYZ0kAwLrr+ebR
+cLjfD0ukt7R16jE39c4S3wPvyWcH31VxoB7HufrcT70Hv9XxufPdj7IQ/cA
5ydfxolRHRK1rv71zYlRPc5X5MR4+s2JsdI4zQ/+xuM0OjEepr+d/q7G+Wwn
xv69OtOW/fzW5/X1OEP2e1+V/GPlApUzqpakUy3PpaIM5EylIKvvqJ5Mc+o2
JpGhjaRQvE0H7VA6521i5WQ6udg6a7fYGROTwbMQsxhzyvEjxYPdLzhkfbtP
rhshyYWqW6mqhHV2cvoOmAjVJqgq4cgdR6llJiV3FZOKdftQevF7cSYp6/Ly
robEuT59MiXjuAv7IqYCo7waSuKjQ5WMX/qd1sKp3AhON6FdHFOTUJxLlHor
W54ldhZcZRKcaf/qS+UMLjqSjCWtFia0MuBNanA5p1Rnv3EVPPnuW5Ybj/Mt
y615nG9ZbquO0/zgbzxOJTG0XG0rnPu9+sY6Ja1hs33hT5Ocviaca+X0Ncep
xaGV4dPp6P9XPrjqOF5JyMLCL2uPgz+un3az9chPrWt0zXFqDdR/1Hv69fgy
976ML/NbdlrlON98mUvH+Zad1jzON19mwzjfstOWjbPkwWXjcDzZHyM77d4j
2L4eT9Xe1+V5XRkrfr/ktC+MDBup2Pfq1v2Wy/PbjFOrYqcrjoO5hPd4ee9T
xT47OYX3pdFS5lqCv6nqX5+qfjLnKtlWjW2Nir+xSHAyzqX8IKOj1XuJikCj
4yJHO7vL+Phli/vp4u4hOkLyMrBkn0L3sdA3VvGLsJjwiGPiyXOA5Q9HHX+a
xOG9k/6vxzO2d6+RFMt+lq7H9Yx5b0TTlXriXCgaPWLY90zU4E5qfamqHqvy
/NOIisZfh8VS3Kr1g9Klh35mo441nZQ91e23pHyvao7l9ODpq6Zl1JyLPE6v
58qV1latyTBdRBRCnXcRsKSLGUlYP/9GrkIcIq776Z0uek5lVzm1h5JPAnVJ
fO2NgYmiMVGq3NTOxAwQ2Ow8yeyuWrTOY+8VeuhUtdDiqvmLO1r2JMUyttjU
I1vyluyVC/RL+XTaot3xkZxU8rEpp8stSPqUGEOV9OtzZ6SmNHUp8UezKLca
aWgykidBMm2LA5Er8FMbj/fhnbsarjyaSaNchHKpR6VVXJ9nAcI0W8RqbWo2
+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
TKoRAQrFAQA=

-->

</rfc>
