<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.3.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ace-workflow-and-params-04" category="std" consensus="true" submissionType="IETF" updates="9200, 9201, 9202, 9203, 9431" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="New ACE Workflow and Parameters">Short Distribution Chain (SDC) Workflow and New OAuth Parameters for the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ace-workflow-and-params-04"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Security</area>
    <workgroup>ACE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 97?>

<t>This document updates the Authentication and Authorization for Constrained Environments Framework (ACE, RFC 9200) as follows. (1) It defines the Short Distribution Chain (SDC) workflow that the authorization server can use for uploading an access token to a resource server on behalf of the client. (2) For the OAuth 2.0 token endpoint, it defines new parameters and encodings, and extends the semantics of the "ace_profile" parameter. (3) It defines how the client and the authorization server can coordinate on the exchange of the client's and resource server's public authentication credentials, when those can be transported by value or identified by reference; this extends the semantics of the "rs_cnf" parameter for the OAuth 2.0 token endpoint, thus updating RFC 9201. (4) It amends two of the requirements on profiles of the framework. (5) It deprecates the original payload format of error responses conveying an error code, when CBOR is used to encode message payloads. For those responses, it defines a new payload format aligned with RFC 9290, thus updating in this respect also the profiles defined in RFC 9202, RFC 9203, and RFC 9431.</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-workflow-and-params/"/>.
      </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-workflow-and-params"/>.</t>
    </note>
  </front>
  <middle>
    <?line 101?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The Authentication and Authorization for Constrained Environments (ACE) framework <xref target="RFC9200"/> defines an architecture to enforce access control for constrained devices. A client (C) requests an assertion of granted permissions from an authorization server (AS) in the form of an access token, then uploads the access token to the target resource server (RS), and finally accesses protected resources at the RS according to the permissions specified in the access token.</t>
      <t>The framework has as main building blocks the OAuth 2.0 framework <xref target="RFC6749"/>, the Constrained Application Protocol (CoAP) <xref target="RFC7252"/> for message transfer, Concise Binary Object Representation (CBOR) <xref target="RFC8949"/> for compact encoding, and CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/><xref target="RFC9053"/> for self-contained protection of access tokens. In addition, separate profile documents define in detail how the participants in the ACE architecture communicate, especially as to the security protocols that they use.</t>
      <t>This document updates <xref target="RFC9200"/> as follows.</t>
      <ul spacing="normal">
        <li>
          <t>It defines the Short Distribution Chain (SDC) workflow for the ACE framework (see <xref target="sec-workflow"/>), according to which the AS uploads the access token to the RS on behalf of C, and then informs C about the outcome. The SDC workflow is especially convenient in deployments where the communication leg between C and the RS is constrained, but the communication leg between the AS and the RS is not.  </t>
          <t>
The SDC workflow has no ambition to replace the original workflow defined in <xref target="RFC9200"/>. The AS can use one workflow or the other depending, for example, on the specific RS for which an access token has been issued and the nature of the communication leg with that RS.</t>
        </li>
        <li>
          <t>It defines new parameters and encodings for the OAuth 2.0 token endpoint at the AS (see <xref target="sec-parameters"/>). These include:  </t>
          <ul spacing="normal">
            <li>
              <t>"token_upload", used by C to inform the AS that it opts in to use the SDC workflow, and by the AS to inform C about the outcome of the token uploading to the RS per the SDC workflow.</t>
            </li>
            <li>
              <t>"token_hash", used by the AS to provide C with a token hash, corresponding to an access token that the AS has issued for C and has successfully uploaded to the RS on behalf of C per the SDC workflow.</t>
            </li>
            <li>
              <t>"to_rs", used by C to provide the AS with information to relay to the RS, upon asking the AS to upload the access token to the RS per the SDC workflow. Its specific use with the OSCORE profile <xref target="RFC9203"/> is also defined, thereby effectively enabling the use of the SDC workflow for that profile.</t>
            </li>
            <li>
              <t>"from_rs", used by the AS to provide C with information to relay from the RS, after the AS has successfully uploaded the access token to the RS per the SDC workflow. Its specific use with the OSCORE profile <xref target="RFC9203"/> is also defined, thereby effectively enabling the use of SDC workflow for that profile.</t>
            </li>
            <li>
              <t>"rs_cnf2", used by the AS to provide C with the public keys of the RSs in the group-audience for which the access token is issued (see <xref section="6.9" sectionFormat="of" target="RFC9200"/>).</t>
            </li>
            <li>
              <t>"audience2", used by the AS to provide C with the identifiers of the RSs in the group-audience for which the access token is issued.</t>
            </li>
            <li>
              <t>"anchor_cnf", used by the AS to provide C with the public keys of trust anchors, which C can use to validate the public key of an RS (e.g., as provided in the "rs_cnf" parameter defined in <xref target="RFC9201"/> or in the "rs_cnf2" parameter defined in this document).</t>
            </li>
            <li>
              <t>"token_series_id", used by the AS to provide C with the identifier of a token series, and by C to ask the AS for a new access token in the same token series that dynamically updates access rights. A corresponding access token claim, namely "token_series_id", is also defined.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>It extends the semantics of the "ace_profile" parameter for the OAuth 2.0 token endpoint at the authorization server defined in <xref target="RFC9200"/> (see <xref target="sec-updated-ace-profile-parameter"/>).</t>
        </li>
        <li>
          <t>It defines how C and the AS can coordinate on the exchange of the client's and resource server's public authentication credentials, when those can be transported by value or identified by reference in the access token request and response (see <xref target="sec-coord-exchanged-cred"/>).  </t>
          <t>
This extends the semantics of the "rs_cnf" parameter for the OAuth 2.0 token endpoint defined in <xref target="RFC9201"/>, and therefore updates <xref target="RFC9201"/>.</t>
        </li>
        <li>
          <t>It amends two of the requirements on profiles of the ACE framework (see <xref target="sec-updated-requirements"/>).</t>
        </li>
        <li>
          <t>It deprecates the original payload format of error responses that convey an error code, when CBOR is used to encode message payloads in the ACE framework. For such error responses, it defines a new payload format according to the problem-details format specified in <xref target="RFC9290"/> (see <xref target="sec-updated-error-responses"/>).  </t>
          <t>
In this respect, it also updates the profiles of the ACE framework defined in <xref target="RFC9202"/>, <xref target="RFC9203"/>, and <xref target="RFC9431"/>.</t>
        </li>
      </ul>
      <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>
        <?line -18?>

<t>Readers are expected to be familiar with the terms and concepts described in the ACE framework for Authentication and Authorization <xref target="RFC9200"/><xref target="RFC9201"/>, as well as with terms and concepts related to CBOR Web Tokens (CWTs) <xref target="RFC8392"/> and CWT Confirmation Methods <xref target="RFC8747"/>.</t>
        <t>The terminology for entities in the considered architecture is defined in OAuth 2.0 <xref target="RFC6749"/>. In particular, this includes client (C), resource server (RS), and authorization server (AS).</t>
        <t>Readers are also expected to be familiar with the terms and concepts related to CoAP <xref target="RFC7252"/>, Concise Data Definition Language (CDDL) <xref target="RFC8610"/>, CBOR <xref target="RFC8949"/>, JavaScript Object Notation (JSON) <xref target="RFC8259"/>, and COSE <xref target="RFC9052"/><xref target="RFC9053"/>.</t>
        <t>Note that the term "endpoint" is used here following its OAuth definition <xref target="RFC6749"/>, aimed at denoting resources such as /token and /introspect at the AS, and /authz-info at the RS. This document does not use the CoAP definition of "endpoint", which is "An entity participating in the CoAP protocol."</t>
        <t>Furthermore, this document uses the following terms.</t>
        <ul spacing="normal">
          <li>
            <t>Token series: a set of access tokens, all of which are bound to the same proof-of-possession (PoP) key and are sequentially issued by the same AS for the same pair (client, audience) per the same profile of ACE. A token series ends when the latest access token of that token series becomes invalid (e.g., when it expires or gets revoked).  </t>
            <t>
Profiles of ACE can provide their extended and specialized definition, e.g., by further taking into account the public authentication credentials of C and the RS.</t>
          </li>
          <li>
            <t>Token hash: identifier of an access token, in binary format encoding. The token hash has no relation to other possibly used token identifiers, such as the 'cti' (CWT ID) claim of CBOR Web Tokens (CWTs) <xref target="RFC8392"/>.</t>
          </li>
        </ul>
        <t>CBOR <xref target="RFC8949"/> and 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 parameters' keys 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'audience2' : ["rs1", "rs2"]} stands for {53 : ["rs1", "rs2"]}.</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="sec-workflow">
      <name>The Short Distribution Chain (SDC) Workflow</name>
      <t>As defined in <xref section="4" sectionFormat="of" target="RFC9200"/>, the ACE framework relies on its basic protocol workflow shown in <xref target="fig-old-workflow"/>.</t>
      <t>That is, the client first sends an access token request to the token endpoint at the AS (Step A), specifying permissions that it seeks to obtain for accessing protected resources at the RS, possibly together with information on its own public authentication credential.</t>
      <t>Then, if the request has been successfully verified, authenticated, and authorized, the AS replies to the client (Step B), providing an access token and possibly additional parameters as access information including the actually granted permissions.</t>
      <t>Finally, the client uploads the access token to the RS and, consistently with the permissions granted according to the access token, accesses a resource at the RS (Step C), which replies with the result of the resource access (Step F). Details about what protocol the client and the RS use to establish a secure association, mutually authenticate, and secure their communications are defined in the specific profile of ACE used, e.g., <xref target="RFC9202"/><xref target="RFC9203"/><xref target="RFC9431"/><xref target="I-D.ietf-ace-edhoc-oscore-profile"/><xref target="I-D.ietf-ace-group-oscore-profile"/><xref target="RFC9431"/>.</t>
      <t>Further interactions are possible between the AS and the RS, i.e., the exchange of an introspection request and response where the AS validates a previously issued access token for the RS (Steps D and E).</t>
      <figure anchor="fig-old-workflow">
        <name>ACE Basic Protocol Workflow.</name>
        <artwork><![CDATA[
+--------+                               +---------------+
|        |---(A)-- Token Request ------->|               |
|        |                               | Authorization |
|        |<--(B)-- Access Token ---------|    Server     |
|        |    + Access Information       |               |
|        |    + Refresh Token (optional) +---------------+
|        |                                      ^ |
|        |            Introspection Request  (D)| |
| Client |                         Response     | |(E)
|        |            (optional exchange)       | |
|        |                                      | v
|        |                               +--------------+
|        |---(C)-- Token + Request ----->|              |
|        |                               |   Resource   |
|        |<--(F)-- Protected Resource ---|    Server    |
|        |                               |              |
+--------+                               +--------------+
]]></artwork>
      </figure>
      <t>This section defines the alternative Short Distribution Chain (SDC) workflow shown in <xref target="fig-new-workflow"/>, which <bcp14>MAY</bcp14> be supported by the AS. Unlike in the original workflow defined in <xref target="RFC9200"/>, the AS uploads the access token to the RS on behalf of the client, and then informs the client about the outcome.</t>
      <t>If the token uploading has been successfully completed, the client typically does not need to obtain the access token from the AS altogether. Instead, the client simply establishes a secure association with the RS (if that has not happened already), and then accesses protected resources at the RS according to the permissions granted per the access token and specified by the AS as access information.</t>
      <figure anchor="fig-new-workflow">
        <name>ACE Short Distribution Chain (SDC) Workflow.</name>
        <artwork><![CDATA[
+--------+                               +----------------------------+
|        |---(A)-- Token Request ------->|                            |
|        |                               |       Authorization        |
|        |<--(B)-- Token Response -------|           Server           |
|        |    + Access Information       |                            |
|        |    + Access Token (optional)  +----------------------------+
|        |    + Refresh Token (optional)   ^ |         | ^
|        |                                 | |         | | Token-Upload
|        |        Introspection Request (D)| |     (A1)| |      Request
| Client |                     Response    | |(E)      | |(A2) Response
|        |        (optional exchange)      | |         | |
|        |                                 | v         v |
|        |                               +----------------------------+
|        |---(C1)-- Token (Optional) --->|                            |
|        |                               |                            |
|        |---(C2)-- Protected Request -->|          Resource          |
|        |                               |           Server           |
|        |<--(F)--- Protected Resource --|                            |
|        |                               |                            |
+--------+                               +----------------------------+
]]></artwork>
      </figure>
      <t>More specifically, the SDC workflow consists of the following steps.</t>
      <ul spacing="normal">
        <li>
          <t>Step A - Like in the original workflow, the client sends an access token request to the token endpoint at the AS, with the additional indication that it opts in to use the SDC workflow.  </t>
          <t>
As defined in <xref target="sec-token_upload"/>, this information is conveyed to the AS by means of the "token_upload" parameter. The parameter also specifies what the AS has to return in the access token response at Step B, following a successful uploading of the access token from the AS to the RS.</t>
        </li>
        <li>
          <t>Step A1 - This new step consists of the AS uploading the access token to the RS, typically at the authz-info endpoint, just like the client does in the original workflow.</t>
        </li>
        <li>
          <t>Step A2 - This new step consists of the RS replying to the AS, following the uploading of the access token at Step A1.</t>
        </li>
        <li>
          <t>Step B - In the access token response, the AS tells the client that it has attempted to upload the access token to the RS, specifying the outcome of the token uploading based on the reply received from the RS at Step A2.  </t>
          <t>
As defined in <xref target="sec-token_upload"/>, this information is conveyed to the client by means of the "token_upload" parameter included in the access token response. If the token uploading has failed, the access token response also includes the access token. Otherwise, the access token response includes information consistent with what was specified by the "token_upload" parameter of the access token request at Step A.</t>
        </li>
        <li>
          <t>Step C1 - This step occurs only if the token uploading from the AS has failed, and the AS has provided the client with the access token at Step B. In such a case, the client uploads the access token to the RS just like at Step C of the original workflow.</t>
        </li>
        <li>
          <t>Step C2 - The client attempts to access a protected resource at the RS, according to the permissions granted per the access token and specified by the AS as access information at Step B.</t>
        </li>
        <li>
          <t>Steps D, E, and F are as in the original workflow.</t>
        </li>
      </ul>
      <t>The SDC workflow has no ambition to replace the original workflow defined in <xref target="RFC9200"/>. The AS can use one workflow or the other depending, for example, on the specific RS for which the access token has been issued and the nature of the communication leg with that RS.</t>
      <t>When using the SDC workflow, all the communications between the AS and the RS <bcp14>MUST</bcp14> be protected, consistent with Sections <xref target="RFC9200" section="5.8.4.3" sectionFormat="bare"/> and <xref target="RFC9200" section="6.5" sectionFormat="bare"/> of <xref target="RFC9200"/>. Unlike in the original workflow, this results in protecting also the uploading of the first access token in a token series, i.e., in addition to the uploading of the following access tokens in the token series for dynamically updating the access rights of the client.</t>
      <t>The SDC workflow is also suitable for deployments where clients are not aware of details such as the need for access tokens to be issued by the AS and uploaded at the RS. Consistent with the intended access policies, the AS can be configured to automatically issue access tokens for such clients and upload those access tokens to the RS. This means that such clients do not have to request for an access token to be issued in the first place, and instead can immediately send requests to the RS for accessing its protected resources, in accordance with the access tokens already issued and uploaded by the AS.</t>
    </section>
    <section anchor="sec-parameters">
      <name>New Parameters</name>
      <t>The rest of this section defines a number of additional parameters and encodings for the OAuth 2.0 token endpoint at the AS.</t>
      <section anchor="sec-token_upload">
        <name>token_upload</name>
        <t>This section defines the additional "token_upload" parameter. The parameter can be used in an access token request sent by C to the token endpoint at the AS, as well as in the successful access token response sent as reply by the AS.</t>
        <ul spacing="normal">
          <li>
            <t>The "token_upload" parameter is <bcp14>OPTIONAL</bcp14> in an access token request. The presence of this parameter indicates that C opts in to use the SDC workflow defined in <xref target="sec-workflow"/>, whose actual use for uploading the issued access token to the RS is an exclusive prerogative of the AS.  </t>
            <t>
This parameter can take one of the following integer values. When the access token request is encoded in CBOR, those values are encoded as CBOR unsigned integers. The value of the parameter determines whether the follow-up successful access token response will have to include certain information, in case the AS has successfully uploaded the access token to the RS.  </t>
            <ul spacing="normal">
              <li>
                <t>0: The access token response will have to include neither the access token nor its corresponding token hash.</t>
              </li>
              <li>
                <t>1: The access token response will have to include the token hash corresponding to the access token, but not the access token.</t>
              </li>
              <li>
                <t>2: The access token response will have to include the access token, but not the corresponding token hash.</t>
              </li>
            </ul>
            <t>
If the AS supports the SDC workflow and the access token request includes the "token_upload" parameter with value 0, 1, or 2, then the AS <bcp14>MAY</bcp14> use the SDC workflow to upload the access token to the RS on behalf of C. Otherwise, following that access token request, the AS <bcp14>MUST NOT</bcp14> use the SDC workflow.</t>
          </li>
          <li>
            <t>The "token_upload" parameter is <bcp14>REQUIRED</bcp14> in a successful access token response with response code 2.01 (Created), if both the following conditions apply. Otherwise, the "token_upload" parameter <bcp14>MUST NOT</bcp14> be present.  </t>
            <ul spacing="normal">
              <li>
                <t>The corresponding access token request included the "token_upload" parameter, with value 0, 1, or 2.</t>
              </li>
              <li>
                <t>The AS has attempted to upload the issued access token to the RS as per the SDC workflow, irrespective of the result of the token upload.</t>
              </li>
            </ul>
            <t>
When the "token_upload" parameter is present in the access token response, it can take one of the following integer values. When the access token response is encoded in CBOR, those values are encoded as CBOR unsigned integers.  </t>
            <ul spacing="normal">
              <li>
                <t>If the token upload to the RS was not successful, then the "token_upload" parameter <bcp14>MUST</bcp14> specify the value 1.      </t>
                <t>
In this case, the access token response <bcp14>MUST</bcp14> include the "access_token" parameter specifying the issued access token.</t>
              </li>
              <li>
                <t>If the token upload at the RS was successful, then the "token_upload" parameter <bcp14>MUST</bcp14> specify the value 0.      </t>
                <t>
In this case, the access token response can include additional parameters as defined below, depending on the value of the "token_upload" parameter in the corresponding access token request.      </t>
                <ul spacing="normal">
                  <li>
                    <t>If the "token_upload" parameter in the access token request specified the value 0, then the access token response <bcp14>MUST NOT</bcp14> include the "access_token" parameter and <bcp14>MUST NOT</bcp14> include the "token_hash" parameter defined in <xref target="sec-token_hash"/>.</t>
                  </li>
                  <li>
                    <t>If the "token_upload" parameter in the access token request specified the value 1, then the access token response <bcp14>MUST NOT</bcp14> include the "access_token" parameter and <bcp14>MUST</bcp14> include the "token_hash" parameter defined in <xref target="sec-token_hash"/>, specifying the hash corresponding to the issued access token and computed as defined in <xref target="sec-token_hash"/>.</t>
                  </li>
                  <li>
                    <t>If the "token_upload" parameter in the access token request specified the value 2, then the access token response <bcp14>MUST</bcp14> include the "access_token" parameter specifying the issued access token and <bcp14>MUST NOT</bcp14> include the "token_hash" parameter defined in <xref target="sec-token_hash"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <section anchor="examples">
          <name>Examples</name>
          <t><xref target="fig-example-AS-to-C-token-upload"/> shows an example with first an access token request from C to the AS, and then an access token response from the AS to C, following the issue of an access token bound to a symmetric PoP key.</t>
          <t>The access token request specifies the "token_upload" parameter with value 0. That is, C indicates that it requires neither the access token nor the corresponding token hash from the AS, in case the AS successfully uploads the access token to the RS.</t>
          <t>The access token response specifies the "token_upload" parameter with value 0, which indicates that the AS has successfully uploaded the access token to the RS on behalf of C.</t>
          <t>Consistent with the value of the "token_upload" parameter in the access token request, the access token response includes neither the access token nor its corresponding token hash. The access token response also includes the "cnf" parameter specifying the symmetric PoP key bound to the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-upload">
            <name>Example of Access Token Request-Response Exchange. Following a successful uploading of the access token from the AS to the RS, the access token response includes the "token_upload" parameter but not the access token, which is bound to a symmetric key and was uploaded to the RS by the AS.</name>
            <artwork><![CDATA[
   Access token request

   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: 19 (application/ace+cbor)
   Payload:
   {
     / audience /  5 : "tempSensor4711",
     / scope /     9 : "read",
     e'token_upload' : 0
   }


   Access token response

   Header: Created (Code=2.01)
   Content-Format: 19 (application/ace+cbor)
   Max-Age: 3560
   Payload:
   {
     e'token_upload' : 0,
     / expires_in / 2 : 3600,
     / cnf /        8 : {
       / COSE_Key / 1 : {
         / kty / 1 : 4 / Symmetric /,
         / kid / 2 : h'3d027833fc6267ce',
         / k /  -1 : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
          <t><xref target="fig-example-AS-to-C-token-upload-success-ret-token"/> shows another example with first an access token request from C to the AS, and then an access token response from the AS to C, following the issue of an access token bound to a symmetric PoP key.</t>
          <t>The access token request specifies the "token_upload" parameter with value 2. That is, C indicates that it requires the access token from the AS, even in case the AS successfully uploads the access token to the RS.</t>
          <t>The access token response specifies the "token_upload" parameter with value 0, which indicates that the AS has successfully uploaded the access token to the RS on behalf of C.</t>
          <t>Consistent with the value of the "token_upload" parameter in the access token request, the access token response includes the "access_token" parameter specifying the issued access token. The access token response also includes the "cnf" parameter specifying the symmetric PoP key bound to the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-upload-success-ret-token">
            <name>Example of Access Token Request-Response Exchange. Following a successful uploading of the access token from the AS to the RS, the access token response includes the "token_upload" parameter as well as the "access_token" parameter conveying the access token, which is bound to a symmetric key and was uploaded to the RS by the AS.</name>
            <artwork><![CDATA[
   Access token request

   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: 19 (application/ace+cbor)
   Payload:
   {
     / audience /  5 : "tempSensor4711",
     / scope /     9 : "read",
     e'token_upload' : 2
   }


   Access token response

   Header: Created (Code=2.01)
   Content-Format: 19 (application/ace+cbor)
   Max-Age: 3560
   Payload:
   {
        e'token_upload' : 0,
     / access_token / 1 : h'd08343a1...4819',
       / (full CWT elided for brevity;
          CWT contains the symmetric PoP key in the "cnf" claim) /
     / expires_in /   2 : 3600,
     / cnf /          8 : {
       / COSE_Key / 1 : {
         / kty / 1 : 4 / Symmetric /,
         / kid / 2 : h'3d027833fc6267ce',
         / k /  -1 : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
          <t><xref target="fig-example-AS-to-C-token-upload-failed"/> shows another example with first an access token request from C to the AS, and then an access token response from the AS to C, also following the issue of an access token bound to a symmetric PoP key.</t>
          <t>The access token request specifies the "token_upload" parameter with value 0. That is, C indicates that it requires neither the access token nor the corresponding token hash from the AS, in case the AS successfully uploads the access token to the RS.</t>
          <t>In this example, the access token response includes the "token_upload" parameter with value 1, which indicates that the AS has attempted and failed to upload the access token to the RS on behalf of C. The access token response also includes the "access_token" parameter specifying the issued access token, together with the "cnf" parameter specifying the symmetric PoP key bound to the access token.</t>
          <t>Note that, even though the AS has failed to upload the access token to the RS, the response code 2.01 (Created) is used when replying to C, since the access token request as such has been successfully processed at the AS, with the following issue of the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-upload-failed">
            <name>Example of Access Token Request-Response Exchange. Following a failed uploading of the access token from the AS to the RS, the access token response includes the "token_upload" parameter with value 1 as well the "access_token" parameter conveying the access token bound to a symmetric key.</name>
            <artwork><![CDATA[
   Access token request

   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: 19 (application/ace+cbor)
   Payload:
   {
     / audience /  5 : "tempSensor4711",
     / scope /     9 : "read",
     e'token_upload' : 0
   }


   Access token response

   Header: Created (Code=2.01)
   Content-Format: 19 (application/ace+cbor)
   Max-Age: 3560
   Payload:
   {
        e'token_upload' : 1,
     / access_token / 1 : h'd08343a1...4819',
       / (full CWT elided for brevity;
          CWT contains the symmetric PoP key in the "cnf" claim) /
     / expires_in /   2 : 3600,
     / cnf /          8 : {
       / COSE_Key / 1 : {
         / kty / 1 : 4 / Symmetric /,
         / kid / 2 : h'3d027833fc6267ce',
         / k /  -1 : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-token_hash">
        <name>token_hash</name>
        <t>This section defines the additional "token_hash" parameter. The parameter can be used in a successful access token response sent as reply by the AS to C.</t>
        <t>The following refers to the base64url encoding without padding (see <xref section="5" sectionFormat="of" target="RFC4648"/>), and denotes as "binary representation" of a text string the corresponding UTF-8 encoding <xref target="RFC3629"/>, which is the implied charset used in JSON (see <xref section="8.1" sectionFormat="of" target="RFC8259"/>).</t>
        <t>The "token_hash" parameter is <bcp14>REQUIRED</bcp14> in a successful access token response with response code 2.01 (Created), if both the following conditions apply. Otherwise, the "token_hash" parameter <bcp14>MUST NOT</bcp14> be present.</t>
        <ul spacing="normal">
          <li>
            <t>The corresponding access token request included the "token_upload" parameter with value 1.</t>
          </li>
          <li>
            <t>The access token response includes the "token_upload" parameter with value 0. That is, the AS has successfully uploaded the issued access token to the RS, as per the SDC workflow.</t>
          </li>
        </ul>
        <t>This parameter specifies the token hash corresponding to the access token issued by the AS and successfully uploaded to the RS on behalf of C. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>If the access token response is encoded in CBOR, then the "token_hash" parameter is a CBOR byte string, with value the token hash.</t>
          </li>
          <li>
            <t>If the access token response is encoded in JSON, then the "token_hash" parameter has as value the base64url-encoded text string that encodes the token hash.</t>
          </li>
        </ul>
        <t>The AS computes the token hash as defined in <xref target="sec-token-hash-output"/>.</t>
        <section anchor="sec-token-hash-output">
          <name>Computing the Token Hash</name>
          <t>The AS computes the token hash over the value that the "access_token" parameter would have had in the same access token response, if it was included therein and specifying the access token.</t>
          <t>In particular, the input HASH_INPUT over which the token hash is computed is determined as follows.</t>
          <ul spacing="normal">
            <li>
              <t>If the access token response is encoded in CBOR, then:  </t>
              <ul spacing="normal">
                <li>
                  <t>BYTES denotes the value of the CBOR byte string that would be conveyed by the "access_token" parameter, if this was included in the access token response.</t>
                </li>
                <li>
                  <t>HASH_INPUT_TEXT is the base64url-encoded text string that encodes BYTES.</t>
                </li>
                <li>
                  <t>HASH_INPUT is the binary representation of HASH_INPUT_TEXT.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the access token response is encoded in JSON, then HASH_INPUT is the binary representation of the text string conveyed by the "access_token" parameter, if this was included in the access token response.</t>
            </li>
          </ul>
          <t>Once determined HASH_INPUT as defined above, a hash value of HASH_INPUT is generated as per <xref section="6" sectionFormat="of" target="RFC6920"/>. The resulting output in binary format is used as the token hash. Note that the used binary format embeds the identifier of the used hash function, in the first byte of the computed token hash.</t>
          <t>The specifically used hash function <bcp14>MUST</bcp14> be collision-resistant on byte-strings, and <bcp14>MUST</bcp14> be selected from the "Named Information Hash Algorithm" Registry <xref target="Named.Information.Hash.Algorithm"/>. Consistent with the compliance requirements in <xref section="2" sectionFormat="of" target="RFC6920"/>, the hash function sha-256 as specified in <xref target="SHA-256"/> is mandatory to implement.</t>
          <t>The computation of token hashes defined above is aligned with that specified for the computation of token hashes in <xref target="I-D.ietf-ace-revoked-token-notification"/>, where they are used as identifiers of revoked access tokens. Therefore, given a hash algorithm and an access token, the AS computes the same corresponding token hash in either case.</t>
          <t>If the AS supports the method specified in <xref target="I-D.ietf-ace-revoked-token-notification"/>, then the AS <bcp14>MUST</bcp14> use the same hash algorithm for computing both the token hashes to include in the "token_hash" parameter and the token hashes computed per such a method to identify revoked access tokens.</t>
        </section>
        <section anchor="example">
          <name>Example</name>
          <t><xref target="fig-example-AS-to-C-token-hash"/> shows an example with first an access token request from C to the AS, and then an access token response from the AS to C, following the issue of an access token bound to a symmetric PoP key.</t>
          <t>The access token request specifies the "token_upload" parameter with value 1. That is, C indicates that it requires the token hash corresponding to the access token from the AS, in case the AS successfully uploads the access token to the RS.</t>
          <t>The access token response specifies the "token_upload" parameter with value 0, which indicates that the AS has successfully uploaded the access token to the RS on behalf of C.</t>
          <t>Consistent with the value of the "token_upload" parameter in the access token request, the access token response includes the "token_hash" parameter, which specifies the token hash corresponding to the issued access token. The access token response also includes the "cnf" parameter specifying the symmetric PoP key bound to the access token.</t>
          <figure anchor="fig-example-AS-to-C-token-hash">
            <name>Example of Access Token Request-Response Exchange. Following a successful uploading of the access token from the AS to the RS, the access token response includes the "token_upload" parameter as well as the "token_hash" parameter. The "token_hash" parameter conveys the token hash corresponding to the issued access token, which is bound to a symmetric key and was uploaded to the RS by the AS.</name>
            <artwork><![CDATA[
   Access token request

   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: 19 (application/ace+cbor)
   Payload:
   {
     / audience /  5 : "tempSensor4711",
     / scope /     9 : "read",
     e'token_upload' : 1
   }


   Access token response

   Header: Created (Code=2.01)
   Content-Format: 19 (application/ace+cbor)
   Max-Age: 3560
   Payload:
   {
      e'token_upload' : 0,
        e'token_hash' : h'0153269057e12fe2b74ba07c892560a2d7
                          53877eb62ff44d5a19002530ed97ffe4',
     / expires_in / 2 : 3600,
     / cnf /        8 : {
       / COSE_Key / 1 : {
         / kty / 1 : 4 / Symmetric /,
         / kid / 2 : h'3d027833fc6267ce',
         / k /  -1 : h'73657373696f6e6b6579'
       }
     }
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-to_rs-from_rs">
        <name>to_rs and from_rs</name>
        <t>This section defines the additional parameters "to_rs" and "from_rs". The "to_rs" parameter can be used in an access token request sent by C to the token endpoint at the AS. The "from_rs" parameter can be used in an access token response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <ul spacing="normal">
          <li>
            <t>The "to_rs" parameter is <bcp14>OPTIONAL</bcp14> in an access token request. The presence of this parameter indicates that C wishes the AS to relay the information specified therein to the RS, when the AS uploads the issued access token to the RS per the SDC workflow defined in <xref target="sec-workflow"/>. This parameter <bcp14>MUST NOT</bcp14> be present if the "token_upload" parameter defined in <xref target="sec-token_upload"/> is not present in the access token request.  </t>
            <t>
If present, this parameter specifies the information that C wishes the AS to relay to the RS, when uploading the access token to the RS on behalf of C. If considered together with the access token, this information is expected to consist in what C would have uploaded to the authz-info endpoint at the RS, if uploading the access token per the original workflow. When the access token request is encoded in CBOR, the value of this parameter is encoded as a CBOR byte string.  </t>
            <t>
The semantics and encoding of the information specified in this parameter depend on the specific profile of ACE used. <xref target="sec-to_rs-from_rs-oscore-profile"/> defines those for when this parameter is used with the OSCORE profile <xref target="RFC9203"/>.</t>
          </li>
          <li>
            <t>The "from_rs" parameter is <bcp14>OPTIONAL</bcp14> in an access token response. The presence of this parameter indicates that the AS has to relay the information specified therein to C, which the AS has received from the RS after having successfully uploaded the access token to the RS per the SDC workflow defined in <xref target="sec-workflow"/>. This parameter <bcp14>MUST NOT</bcp14> be present if the "token_upload" parameter defined in <xref target="sec-token_upload"/> is not present with value 0 in the access token response.  </t>
            <t>
If present, this parameter specifies the information that the AS has to relay to C from the RS, following the successful upload of the access token to the RS on behalf of C. This information is expected to consist in what C would have received in a successful response from the authz-info endpoint at the RS, if uploading the access token per the original workflow. When the access token response is encoded in CBOR, the value of this parameter is encoded as a CBOR byte string.  </t>
            <t>
The semantics and encoding of the information specified in this parameter depend on the specific profile of ACE used. <xref target="sec-to_rs-from_rs-oscore-profile"/> defines those for when this parameter is used with the OSCORE profile <xref target="RFC9203"/>.</t>
          </li>
        </ul>
        <section anchor="sec-to_rs-from_rs-oscore-profile">
          <name>Use with the OSCORE Profile</name>
          <t>This section defines the semantics and encoding of the information specified in the parameters "to_rs" and "from_rs" when used with the OSCORE profile <xref target="RFC9203"/>, thereby effectively enabling the use of the SDC workflow for that profile.</t>
          <t>The value of the "to_rs" parameter is the binary representation of a CBOR map C_MAP composed of two fields:</t>
          <ul spacing="normal">
            <li>
              <t>A field with the CBOR unsigned integer 40 as map key, and with value the nonce N1 generated by C encoded a CBOR byte string (see <xref section="4.1" sectionFormat="of" target="RFC9203"/>).</t>
            </li>
            <li>
              <t>A field with the CBOR unsigned integer 43 as map key, and with value the Recipient ID ID1 generated by C and encoded as a CBOR byte string (see <xref section="4.1" sectionFormat="of" target="RFC9203"/>).</t>
            </li>
          </ul>
          <t>When building the POST request for uploading the access token to the authz-info endpoint at the RS, the AS composes the request payload as specified in <xref section="4.1" sectionFormat="of" target="RFC9203"/>. In particular, the CBOR map specified as payload includes:</t>
          <ul spacing="normal">
            <li>
              <t>The "access_token" field, with value the access token to upload encoded as a CBOR byte string.</t>
            </li>
            <li>
              <t>The "nonce1" field, with value the same CBOR byte string specified by the field of C_MAP that has the CBOR unsigned integer 40 as map key.</t>
            </li>
            <li>
              <t>The "ace_client_recipientid" field, with value the same CBOR byte string specified by the field of C_MAP that has the CBOR unsigned integer 43 as map key.</t>
            </li>
          </ul>
          <t>In case the upload of the access token to the RS from the AS is successful, the RS replies to the AS with a 2.01 (Created) response, whose payload is a CBOR map RS_MAP that includes:</t>
          <ul spacing="normal">
            <li>
              <t>The "nonce2" field, with value the nonce N2 generated by the RS encoded a CBOR byte string (see <xref section="4.2" sectionFormat="of" target="RFC9203"/>).</t>
            </li>
            <li>
              <t>The "ace_server_recipientid" field, with value the Recipient ID ID2 generated by the RS and encoded as a CBOR byte string (see <xref section="4.2" sectionFormat="of" target="RFC9203"/>).</t>
            </li>
          </ul>
          <t>The value of the "from_rs" parameter is the binary representation of a CBOR map composed of two elements:</t>
          <ul spacing="normal">
            <li>
              <t>A field with the CBOR unsigned integer 42 as map key, and with value the same CBOR byte string specified by the "nonce2" field of RS_MAP.</t>
            </li>
            <li>
              <t>A field with the CBOR unsigned integer 44 as map key, and with value the same CBOR byte string specified by the "ace_server_recipientid" field of RS_MAP.</t>
            </li>
          </ul>
          <t>When C receives from the AS the successful access token response specifying the "token_upload" parameter with value 0, C can retrieve the nonce N2 and the Recipient ID ID2 from the "from_rs" parameter, just like when retrieving those from a 2.01 (Created) response received from the RS when using the original workflow.</t>
          <t><xref target="fig-example-AS-to-C-token-upload-oscore-profile"/> shows an example where the OSCORE profile is used, with first an access token request from C to the AS, and then an access token response from the AS to C, following the issue of an access token bound to a symmetric PoP key.</t>
          <t>The access token request specifies the "token_upload" parameter with value 0. That is, C indicates that it requires neither the access token nor the corresponding token hash from the AS, in case the AS successfully uploads the access token to the RS. Also, the access token request includes the "to_rs" parameter, specifying the values of N1 = 0x018a278f7faab55a and ID1 = 0x1645 intended to the RS.</t>
          <t>The access token response specifies the "token_upload" parameter with value 0, which indicates that the AS has successfully uploaded the access token to the RS on behalf of C.</t>
          <t>Consistent with the value of the "token_upload" parameter in the access token request, the access token response includes neither the access token nor its corresponding token hash. The access token response also includes the "cnf" parameter specifying the symmetric PoP key bound to the access token, as an OSCORE_Input_Material object. Also, the access token response includes the "from_rs" parameter, specifying the values of N2 = 0x25a8991cd700ac01 and ID2 = 0x0000 received from the RS and intended to C.</t>
          <figure anchor="fig-example-AS-to-C-token-upload-oscore-profile">
            <name>Example of Access Token Request-Response Exchange where the OSCORE Profile is Used. Following a successful uploading of the access token from the AS to the RS, the access token response includes the "token_upload" parameter but not the access token, which is bound to a symmetric key and was uploaded to the RS by the AS. C and the RS exchange N1, ID1, N2, and ID2 via the AS by means of the parameters "to_rs" and "from_rs"</name>
            <artwork><![CDATA[
   Access token request

   Header: POST (Code=0.02)
   Uri-Host: "as.example.com"
   Uri-Path: "token"
   Content-Format: 19 (application/ace+cbor)
   Payload:
   {
     / audience /  5 : "tempSensor4711",
     / scope /     9 : "read",
     e'token_upload' : 0,
            e'to_rs' : h'a2182848018a278f7faab55a182b421645'
   }


   Access token response

   Header: Created (Code=2.01)
   Content-Format: 19 (application/ace+cbor)
   Max-Age: 3560
   Payload:
   {
        e'token_upload' : 0,
             e'from_rs' : h'a2182a4825a8991cd700ac01182c420000',
     / ace_profile / 38 : / coap_oscore / 2,
       / expires_in / 2 : 3600,
       / cnf /        8 : {
         / osc / 4 : {
           / id / 0 : h'01',
           / ms / 2 : h'f9af838368e353e78888e1426bd94e6f'
         }
       }
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-rs_cnf2-audience2">
        <name>rs_cnf2 and audience2</name>
        <t>This section defines the additional parameters "rs_cnf2" and "audience2" for an access token response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <ul spacing="normal">
          <li>
            <t>The "rs_cnf2" parameter is <bcp14>OPTIONAL</bcp14> if the token type is "pop", asymmetric keys are used, and the access token is issued for an audience that includes multiple RSs (i.e., a group-audience, see <xref section="6.9" sectionFormat="of" target="RFC9200"/>). Otherwise, the "rs_cnf2" parameter <bcp14>MUST NOT</bcp14> be present.  </t>
            <t>
This parameter specifies information about the public keys used by the RSs of a group-audience for authenticating themselves to C, and is used in case the binding between the public keys and the corresponding RS identities are not established through other means. If this parameter is absent, either the RSs in the group-audience do not use a public key, or the AS knows that the RSs can authenticate themselves to C without additional information.  </t>
            <t>
If present, this parameter <bcp14>MUST</bcp14> encode a non-empty CBOR array of N elements, where N is the number of RSs in the group-audience for which the access token is issued. Each element of the CBOR array specifies the public key of one RS in the group-audience, and <bcp14>MUST</bcp14> follow the syntax and semantics of the "cnf" claim either from <xref section="3.1" sectionFormat="of" target="RFC8747"/> for CBOR-based interactions, or from <xref section="3.1" sectionFormat="of" target="RFC7800"/> for JSON-based interactions. It is not required that all the elements of the CBOR array rely on the same confirmation method.  </t>
            <t>
Each of the public keys may contain parameters specifying information such as the public key algorithm and use (e.g., by means of the parameters "alg" or "key_ops" in a COSE_Key structure). If such information is specified, a client <bcp14>MUST NOT</bcp14> use a public key that is incompatible with the profile of ACE used or with the PoP algorithm according to that information. An RS <bcp14>MUST</bcp14> reject a proof-of-possession that relies on such a key, and reply with a response code equivalent to the CoAP code 4.00 (Bad Request).</t>
          </li>
          <li>
            <t>The "audience2" parameter is <bcp14>OPTIONAL</bcp14> and specifies the identifiers of the RSs in the group-audience for which the access token is issued.  </t>
            <t>
If present, this parameter <bcp14>MUST</bcp14> encode a non-empty CBOR array of N elements, where N is the number of RSs in the group-audience for which the access token is issued. Each element of the CBOR array in the "audience2" parameter <bcp14>MUST</bcp14> be a CBOR text string, with value the identifier of one RS in the group-audience.  </t>
            <t>
The element of the CBOR array referring to an RS in the group-audience <bcp14>SHOULD</bcp14> have the same value that would be used to identify that RS through the "audience" parameter of an access token request to the AS (see <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>) and of an access token response from the AS (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>), when requesting and issuing an access token for that individual RS.  </t>
            <t>
The "audience2" parameter is <bcp14>REQUIRED</bcp14> if the "rs_cnf2" parameter is present. In such a case, the i-th element of the CBOR array in the "audience2" parameter <bcp14>MUST</bcp14> be the identifier of the RS whose public key is specified as the i-th element of the CBOR array in the "rs_cnf2" parameter.</t>
          </li>
        </ul>
        <section anchor="example-1">
          <name>Example</name>
          <t><xref target="fig-example-AS-to-C-rs_cnf2"/> shows an example of access token response from the AS to C, following the issue of an access token for a group-audience composed of two RSs "rs1" and "rs2", and bound to C's public key as asymmetric PoP key. The access token response includes the access token, as well as the parameters "audience2" and "rs_cnf2". These specify the public key of the two RSs as intended recipients of the access token and the identifiers of those two RSs, respectively.</t>
          <figure anchor="fig-example-AS-to-C-rs_cnf2">
            <name>Example of access token response with an access token bound to an asymmetric key, using the parameters "audience2" and "rs_cnf2".</name>
            <artwork><![CDATA[
   Access token response

   Header: Created (Code=2.01)
   Content-Format: 19 (application/ace+cbor)
   Max-Age: 3600
   Payload:
   {
     / access_token / 1 : b64'SlAV32hk...12',
       / (full CWT elided for brevity;
          CWT contains the client's RPK in the "cnf" claim) /
     / expires_in /   2 : 3600,
           e'audience2' : ["rs1", "rs2"],
             e'rs_cnf2' : [
               {
                 / COSE_Key / 1 : {
                   / kty /  1 : 2 / EC2 /,
                   / crv / -1 : 1 / P-256 /,
                   / x /   -2 : h'bbc34960526ea4d32e940cad2a234148
                                  ddc21791a12afbcbac93622046dd44f0',
                   / y /   -3 : h'4519e257236b2a0ce2023f0931f1f386
                                  ca7afda64fcde0108c224c51eabf6072'
                 }
               },
               {
                 / COSE_Key / 1 : {
                   / kty /  1 : 2 / EC2 /,
                   / crv / -1 : 1 / P-256 /,
                   / x /   -2 : h'ac75e9ece3e50bfc8ed6039988952240
                                  5c47bf16df96660a41298cb4307f7eb6',
                   / y /   -3 : h'6e5de611388a4b8a8211334ac7d37ecb
                                  52a387d257e6db3c2a93df21ff3affc8'
                 }
               }
             ]
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-anchor_cnf">
        <name>anchor_cnf</name>
        <t>This section defines the additional "anchor_cnf" parameter for an access token response, sent by the AS in reply to a request to the token endpoint from C.</t>
        <t>The "anchor_cnf" parameter is <bcp14>OPTIONAL</bcp14> if the token type is "pop" and asymmetric keys are used. Otherwise, the "anchor_cnf" parameter <bcp14>MUST NOT</bcp14> be present.</t>
        <t>This parameter specifies information about the public keys of trust anchors, which C can use to validate the public key of the RS/RSs included in the audience for which the access token is issued. This parameter can be used when the access token is issued for an audience including one RS or multiple RSs.</t>
        <t>If this parameter is absent, either the RS/RSs in the audience do not use a public key, or the AS knows that C can validate the public key of such RS/RSs without additional information (e.g., C has already obtained the required public keys of the involved trust anchors from the AS or through other means).</t>
        <t>If present, this parameter <bcp14>MUST</bcp14> encode a non-empty CBOR array that <bcp14>MUST</bcp14> be treated as a set, i.e., the order of its elements has no meaning. Each element of the CBOR array specifies the public key of one trust anchor, which can be used to validate the public key of at least one RS included in the audience for which the access token is issued. Each element of the CBOR array <bcp14>MUST</bcp14> follow the syntax and semantics of the "cnf" claim either from <xref section="3.1" sectionFormat="of" target="RFC8747"/> for CBOR-based interactions, or from <xref section="3.1" sectionFormat="of" target="RFC7800"/> for JSON-based interactions. It is not required that all the elements of the CBOR array rely on the same confirmation method.</t>
        <t>Each of the public keys specified in the "anchor_cnf" parameter may contain parameters specifying information such as the public key algorithm and use (e.g., by means of the parameters "alg" or "key_ops" in a COSE_Key structure). If such information is specified, a client <bcp14>MUST NOT</bcp14> use a public key that is incompatible with the profile of ACE used, or with the public keys to validate and the way to validate those.</t>
        <t>The presence of this parameter does not require that the access token response also includes the "rs_cnf" parameter defined in <xref target="RFC9201"/> or the "rs_cnf2" parameter defined in <xref target="sec-rs_cnf2-audience2"/> of this document. That is, C may be able to obtain the public keys of the RS/RSs for which the access token is issued through other means.</t>
        <t>When the access token response includes both the "anchor_cnf" parameter and the "audience2" parameter defined in <xref target="sec-rs_cnf2-audience2"/>, then C <bcp14>MUST</bcp14> make sure that a public key PK_RS is associated with an RS identified by an element of "audience2", before using any of the public keys specified in "anchor_cnf" to validate PK_RS.</t>
        <t>When the access token response includes the "anchor_cnf" parameter but not the "audience2" parameter, then C can use any of the public keys specified in "anchor_cnf" to validate the public key PK_RS of any RS in the targeted audience. This allows C to use the access token with an RS that is deployed later on as part of the same audience, which is particularly useful in the case of a group-audience.</t>
        <section anchor="example-2">
          <name>Example</name>
          <t><xref target="fig-example-AS-to-C-anchor_cnf"/> shows an example of access token response from the AS to C, following the issue of an access token for a group-audience, and bound to C's public key as asymmetric PoP key.</t>
          <t>The identifier of the group-audience was specified by the "audience" parameter of the access token request to the AS, is specified by the "aud" claim of the issued access token, and is not repeated in the access token response from the AS.</t>
          <t>The access token response includes the "anchor_cnf" parameter. This specifies the public key of a trust anchor that C can use to validate the public keys of any RS with which the access token is going to be used. The public key of the trust anchor is here conveyed within an X.509 certificate used as public authentication credential for that trust anchor, by means of the CWT confirmation method "x5chain" defined in <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>.</t>
          <figure anchor="fig-example-AS-to-C-anchor_cnf">
            <name>Example of Access Token Response with an access token bound to an asymmetric key, using the "anchor_cnf" parameter.</name>
            <artwork><![CDATA[
   Access token response

   Header: Created (Code=2.01)
   Content-Format: 19 (application/ace+cbor)
   Max-Age: 3600
   Payload:
   {
     / access_token / 1 : b64'SlAV32hk...12',
       / (full CWT elided for brevity;
          CWT contains the client's RPK in the "cnf" claim) /
     / expires_in /   2 : 3600,
          e'anchor_cnf' : [
            {
              e'x5chain' : h'308201363081dea003020102020301f50d30
                             0a06082a8648ce3d04030230163114301206
                             035504030c0b524643207465737420434130
                             1e170d3230303130313030303030305a170d
                             3231303230323030303030305a3022312030
                             1e06035504030c1730312d32332d34352d46
                             462d46452d36372d38392d41423059301306
                             072a8648ce3d020106082a8648ce3d030107
                             03420004b1216ab96e5b3b3340f5bdf02e69
                             3f16213a04525ed44450b1019c2dfd3838ab
                             ac4e14d86c0983ed5e9eef2448c6861cc406
                             547177e6026030d051f7792ac206a30f300d
                             300b0603551d0f040403020780300a06082a
                             8648ce3d04030203470030440220445d798c
                             90e7f500dc747a654cec6cfa6f037276e14e
                             52ed07fc16294c84660d02205a33985dfbd4
                             bfdd6d4acf3804c3d46ebf3b7fa62640674f
                             c0354fa056dbaea6'
            }
          ]
   }
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="sec-token_series_id">
        <name>token_series_id</name>
        <t>This section defines the additional "token_series_id" parameter. The parameter can be used in an access token request sent by C to the token endpoint at the AS, as well as in the successful access token response sent as reply by the AS.</t>
        <ul spacing="normal">
          <li>
            <t>The "token_series_id" parameter is <bcp14>OPTIONAL</bcp14> in an access token request. The presence of this parameter indicates that C wishes to obtain a new access token for dynamically updating its access rights. That is, the new access token is intended to be the next one in an active token series and to supersede the latest access token in that token series. This parameter <bcp14>MUST NOT</bcp14> be present if the requested access token is the first one of a new token series.  </t>
            <t>
If present, this parameter specifies the identifier of the token series that the new access token is intended to extend. The identifier does not change throughout the lifetime of the token series, and was provided to C in the successful access token response that the AS sent when issuing the first access token in that token series. When the access token request is encoded in CBOR, the value of this parameter is encoded as a CBOR byte string.</t>
          </li>
          <li>
            <t>The "token_series_id" parameter is <bcp14>OPTIONAL</bcp14> in an access token response. This parameter <bcp14>MUST NOT</bcp14> be present if the issued access token is not the first one of the token series it belongs to.  </t>
            <t>
If present, this parameter specifies the identifier of the token series to which the issued access token belongs. When the access token response is encoded in CBOR, the value of this parameter is encoded as a CBOR byte string.</t>
          </li>
        </ul>
        <t>If the AS relies on the "token_series_id" parameter to exchange the identifier of token series with clients, then the following applies.</t>
        <ul spacing="normal">
          <li>
            <t>The value assigned to the identifier of a token series <bcp14>MUST</bcp14> be associated with all the access tokens issued by the AS for that token series, and <bcp14>MUST</bcp14> be selected from a pool that the AS exclusively controls.  </t>
            <t>
In particular, the triple (TS_ID, C, AUD) <bcp14>MUST</bcp14> uniquely identify a token series and its corresponding access tokens, where TS_ID is the identifier of the token series, while C and AUD are the client and the audience for which the access token is issued, respectively. The AS <bcp14>MUST</bcp14> take into account both ongoing and ended token series for selecting a new TS_ID that complies with the above requirements.  </t>
            <t>
Note that the ACE profile is not part of the triple, hence the requirement spans across all the ACE profiles that the AS and its registered clients/RSs support.</t>
          </li>
          <li>
            <t>An issued access token that belongs to a token series <bcp14>MUST</bcp14> include the identifier of that token series. This allows the RS to identify the latest access token in the token series to be superseded by the issued access token.  </t>
            <t>
In particular, each of such access tokens <bcp14>MUST</bcp14> include a claim specifying the identifier of the token series to which the access token belongs. When CWTs are used as access tokens, this information <bcp14>MUST</bcp14> be transported in the "token_series_id" claim registered in <xref target="iana-token-cwt-claims"/>.</t>
          </li>
        </ul>
        <t>If a profile of ACE relies on a construct that uses different parameters/claims to transport the identifier of a token series, then the new "token_series_id" parameter and "token_series_id" claim <bcp14>MUST NOT</bcp14> be used when using that profile.</t>
        <t>For example, a number of parameters/claims are already used to transport information that acts de facto as identifier of token series, in the PSK mode of the DTLS profile <xref target="RFC9202"/>, in the OSCORE profile <xref target="RFC9203"/>, and in the EDHOC and OSCORE profile <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>.</t>
      </section>
    </section>
    <section anchor="sec-updated-ace-profile-parameter">
      <name>Updated "ace_profile" Parameter</name>
      <t>This section extends the semantics of the "ace_profile" parameter defined in <xref target="RFC9200"/> for the OAuth 2.0 token endpoint at the authorization server.</t>
      <t>In addition to what is specified in Sections <xref target="RFC9200" section="5.8.1" sectionFormat="bare"/>, <xref target="RFC9200" section="5.8.2" sectionFormat="bare"/>, and <xref target="RFC9200" section="5.8.4.3" sectionFormat="bare"/> of <xref target="RFC9200"/>, the following applies.</t>
      <ul spacing="normal">
        <li>
          <t>When sending an access token request to the token endpoint at the AS (see <xref section="5.8.1" sectionFormat="of" target="RFC9200"/>), C <bcp14>MAY</bcp14> include the "ace_profile" parameter, specifying the identifier of the profile that C wishes to use towards the RS.</t>
        </li>
        <li>
          <t>If the AS receives an access token request that includes the "ace_profile" parameter specifying the identifier of a profile, then the AS proceeds as follows.  </t>
          <t>
In case the AS does not issue access tokens per the profile specified in the access token request, or C and the RS do not share that profile, then the AS <bcp14>MUST</bcp14> reject the request and reply with an error response (see <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>). The error response <bcp14>MUST</bcp14> have a response code equivalent to the CoAP code 4.00 (Bad Request) and <bcp14>MUST</bcp14> include the error code "incompatible_ace_profiles".  </t>
          <t>
In case the AS issues an access token to C, the access token <bcp14>MUST</bcp14> be per the profile whose identifier was specified by the "ace_profile" parameter in the access token request.  </t>
          <t>
In case the AS replies to C with a successful access token response (see <xref section="5.8.2" sectionFormat="of" target="RFC9200"/>), then the response <bcp14>MAY</bcp14> include the "ace_profile" parameter. If it is included in the access token response, the "ace_profile" parameter <bcp14>MUST</bcp14> specify the same profile identifier that was specified by the "ace_profile" parameter of the corresponding access token request.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-coord-exchanged-cred">
      <name>Coordinating on the Exchange of Public Authentication Credentials</name>
      <t>In some profiles of ACE, it is possible for C and the RS to use public authentication credentials. Depending on the specific profile, the access token request and response exchanged between C and the AS can specify those authentication credentials as transported by value or instead identified by reference. For instance, this is the case in the EDHOC and OSCORE profile <xref target="I-D.ietf-ace-edhoc-oscore-profile"/> and in the DTLS profile <xref target="RFC9202"/> as extended in <xref target="I-D.ietf-ace-authcred-dtls-profile"/>.</t>
      <t>At some point, the AS (C) might become unable to use a credential identifier as a reference for accessing the authentication credential of C (of the RS) obtained earlier, e.g., due to having deleted the credential from the local storage. This can prevent the AS (C) from successfully processing an incoming access token request (response) that specifies the authentication credential of C (of the RS) as identified by reference. Ultimately, this can prevent the AS from issuing an access token and C from securely accessing protected resources at the RS.</t>
      <t>Conversely, unbeknown to the AS, C might already be storing the authentication credential of the RS when sending the access token request. In such a situation, the AS would specify the authentication credential of the RS by value in the access token response. However, it would be sufficient for C that the response specified the credential of the RS as identified by reference, or even that the response omitted the credential altogether.</t>
      <t>In order to allow C and the AS to coordinate on the exchange of the authentication credentials of C and the RS, the rest of this section defines:</t>
      <ul spacing="normal">
        <li>
          <t>How the AS can instruct C to specify its public authentication credential by value in the "req_cnf" parameter of an access token request (see <xref target="sec-cred-c-value"/>).</t>
        </li>
        <li>
          <t>How C can instruct the AS to specify the public authentication credential(s) of the RS(s) by value or by reference in the "rs_cnf" or "rs_cnf2" parameter of an access token response (see <xref target="sec-cred-rs-value"/>), or instead to omit the credential(s) from the response.</t>
        </li>
      </ul>
      <section anchor="sec-cred-c-value">
        <name>Instructing C on How to Provide its Authentication Credential</name>
        <t>When the AS receives an access token request and this includes the "req_cnf" parameter identifying the public authentication credential of C by reference, it might happen that the AS is not able to access the credential by using the specified reference.</t>
        <t>In such a case, the AS <bcp14>MUST</bcp14> reject the request and reply with an error response (see <xref section="5.8.3" sectionFormat="of" target="RFC9200"/>). The error response <bcp14>MUST</bcp14> have a response code equivalent to the CoAP code 5.00 (Internal Server Error) and <bcp14>MUST</bcp14> include the error code "unknown_credential_referenced". The error code and its CBOR abbreviation are registered in <xref target="iana-oauth-extensions-errors"/> and <xref target="iana-oauth-error-code-cbor-mappings"/>, respectively.</t>
        <t>After receiving such an error response, C can send a new access token request, where the "req_cnf" parameter specifies the authentication credential of C by value.</t>
      </section>
      <section anchor="sec-cred-rs-value">
        <name>Instructing the AS on How to Provide the RS's Authentication Credential</name>
        <t>When C receives an access token response and this includes the "req_cnf" or "req_cnf2" parameter identifying the authentication credential(s) of the RS(s) by reference, it might happen that C is not able to access the authentication credential(s) by using the specified reference(s).</t>
        <t>Conversely, if the response includes the "rs_cnf" or "rs_cnf2" parameter specifying the authentication credential(s) of the RS(s) by value, it might happen that C has already been storing those credential(s), unbeknown to the AS. In fact, it would have been sufficient that the "rs_cnf" or "rs_cnf2" parameter identified the credential(s) by reference, or that neither parameter was included in the response.</t>
        <t>The following extends the semantics of the "rs_cnf" parameter defined in <xref target="RFC9201"/>, so that C can include the "rs_cnf" parameter in an access token request. When doing so, C instructs the AS about whether and how the successful access token response should specify the authentication credential(s) of the RS(s) belonging to the targeted audience.</t>
        <t>Per its extended semantics, the "rs_cnf" parameter is also <bcp14>OPTIONAL</bcp14> to include in an access token request for requesting the first access token in a token series, if the token type is "pop" and asymmetric keys are used. Otherwise, the parameter <bcp14>MUST NOT</bcp14> be included in an access token request.</t>
        <t>When C includes the "rs_cnf" parameter in an access token request, the parameter <bcp14>MUST</bcp14> have one of the following encodings.</t>
        <ul spacing="normal">
          <li>
            <t>If the parameter specifies the CBOR simple value <tt>true</tt> (0xf5), then it instructs the AS to include in the successful access token response the "rs_cnf" or "rs_cnf2" parameter, specifying the authentication credential(s) of the RS(s) by value.  </t>
            <t>
In the successful access token response, each pertaining authentication credential <bcp14>MUST</bcp14> be specified by value.</t>
          </li>
          <li>
            <t>If the parameter specifies the CBOR simple value <tt>false</tt> (0xf4), then it instructs the AS to include in the successful access token response the "rs_cnf" or "rs_cnf2" parameter, specifying the authentication credential(s) of the RS(s) by reference.  </t>
            <t>
In the successful access token response, each pertaining authentication credential <bcp14>MUST</bcp14> be specified by reference, or alternatively by value only in case that was not possible.</t>
          </li>
          <li>
            <t>If the parameter specifies the CBOR simple value <tt>null</tt> (0xf6), then it instructs the AS to omit the "rs_cnf" and "rs_cnf2" parameters from the successful access token response.  </t>
            <t>
In the successful access token response, the "rs_cnf" and "rs_cnf2" parameters <bcp14>MUST NOT</bcp14> be included.</t>
          </li>
        </ul>
        <t>If the AS is not able to comply in the first two cases above, then the AS <bcp14>MUST</bcp14> reject the request and reply with an error response. The error response <bcp14>MUST</bcp14> have a response code equivalent to the CoAP code 5.00 (Internal Server Error).</t>
        <t>Irrespective of what "rs_cnf" specifies in the access token request, C <bcp14>MUST</bcp14> rely on the authentication credential(s) specified by the parameter "rs_cnf" or "rs_cnf2" in the access token response, as those use by the RS(s) to authenticate.</t>
        <t>If C does not currently store the authentication credential(s) of the RS(s), then C <bcp14>MUST NOT</bcp14> include the "rs_cnf" parameter specifying the CBOR simple value <tt>null</tt> (0xf6) in an access token request.</t>
      </section>
    </section>
    <section anchor="sec-updated-requirements">
      <name>Updated Requirements on Profiles</name>
      <t><xref section="C" sectionFormat="of" target="RFC9200"/> compiles a list of requirements on the profiles of ACE. This document amends two of those requirements as follows.</t>
      <t>The text of the fifth requirement</t>
      <blockquote>
        <t>Specify the security protocol the client and RS must use to protect their communication (e.g., OSCORE or DTLS). This must provide encryption and integrity and replay protection (Section 5.8.4.3).</t>
      </blockquote>
      <t>is replaced by the following text:</t>
      <blockquote>
        <t>Specify the security protocol the client and RS must use to protect their communication (e.g., OSCORE or DTLS). In combination with the used communication protocol, this must provide encryption, integrity and replay protection, and a binding between requests and responses (Section 5.8.4.3 and Section 6.5).</t>
      </blockquote>
      <t>The text of the tenth requirement</t>
      <blockquote>
        <t>Specify the communication and security protocol for interactions between the client and AS. This must provide encryption, integrity protection, replay protection, and a binding between requests and responses (Sections 5 and 5.8).</t>
      </blockquote>
      <t>is replaced by the following text:</t>
      <blockquote>
        <t>Specify the communication and security protocol for interactions between the client and AS. The combined use of those protocols must provide encryption, integrity protection, replay protection, and a binding between requests and responses (Sections 5 and 5.8).</t>
      </blockquote>
      <t>At the time of writing, all the profiles of ACE that are published as RFC (i.e., <xref target="RFC9202"/><xref target="RFC9203"/><xref target="RFC9431"/>) already comply with the two updated requirements as formulated above.</t>
    </section>
    <section anchor="sec-updated-error-responses">
      <name>Updated Payload Format of Error Responses</name>
      <t>This section deprecates the original payload format of error responses conveying an error code, when CBOR is used to encode message payloads in the ACE framework. That format is referred to, e.g., when defining the error responses of Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>.</t>
      <t>Also, this section defines a new payload format that allows such error responses to convey an error code together with further error-specific information, according to the problem-details format specified in <xref target="RFC9290"/>.</t>
      <t>Such error responses <bcp14>MUST</bcp14> have Content-Format set to application/concise-problem-details+cbor. The payload of these error responses <bcp14>MUST</bcp14> be a CBOR map specifying a Concise Problem Details data item (see <xref section="2" sectionFormat="of" target="RFC9290"/>). The CBOR map is formatted as follows.</t>
      <ul spacing="normal">
        <li>
          <t>It <bcp14>MUST</bcp14> include the Custom Problem Detail entry "ace-error" registered in <xref target="iana-problem-details"/> of this document.  </t>
          <t>
This entry is formatted as a CBOR map including only one field, namely "error-code". The map key for "error-code" is the CBOR unsigned integer with value 0. The value of "error-code" is a CBOR integer specifying the error code associated with the occurred error. This value is taken from the "CBOR Value" column of the "OAuth Error Code CBOR Mappings" registry <xref target="ACE.OAuth.Error.Code.CBOR.Mappings"/>.  </t>
          <t>
The new payload format <bcp14>MUST</bcp14> use the field "error-code" in order to convey the same information that the original payload format conveys through the "error" parameter (see, e.g., Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>).  </t>
          <t>
The CDDL notation <xref target="RFC8610"/> of the "ace-error" entry is given below.</t>
        </li>
      </ul>
      <sourcecode type="CDDL"><![CDATA[
   ace-error = {
     &(error-code: 0) => int
   }
]]></sourcecode>
      <ul spacing="normal">
        <li>
          <t>It <bcp14>MAY</bcp14> include further Standard Problem Detail entries or Custom Problem Detail entries (see <xref target="RFC9290"/>). The following Standard Problem Detail entries are of particular relevance for the ACE framework.  </t>
          <ul spacing="normal">
            <li>
              <t>"detail" (map key -2): its value is a CBOR text string that specifies a human-readable, diagnostic description of the occurred error (see <xref section="2" sectionFormat="of" target="RFC9290"/>).      </t>
              <t>
The diagnostic text is intended for software engineers as well as for device and network operators, in order to aid debugging and provide context for possible intervention. The diagnostic message <bcp14>SHOULD</bcp14> be logged by the sender of the error response. The entry "detail" is unlikely relevant in an unattended setup where human intervention is not expected.      </t>
              <t>
The new payload format <bcp14>MUST</bcp14> use the Standard Problem Detail entry "detail" in order to convey the same information that the original payload format conveys through the "error_description" parameter (see, e.g., Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>).</t>
            </li>
            <li>
              <t>"instance" (map key -3): its value is a URI reference identifying the specific occurrence of the error (see <xref section="2" sectionFormat="of" target="RFC9290"/>).      </t>
              <t>
The new payload format <bcp14>MUST</bcp14> use the Standard Problem Detail entry "instance" in order to convey the same information that the original payload format conveys through the "error_uri" parameter (see, e.g., Sections <xref target="RFC9200" section="5.8.3" sectionFormat="bare"/> and <xref target="RFC9200" section="5.9.3" sectionFormat="bare"/> of <xref target="RFC9200"/>).</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>An example of error response using the problem-details format is shown in <xref target="fig-example-error-response"/>.</t>
      <figure anchor="fig-example-error-response">
        <name>Example of Error Response with Problem Details.</name>
        <artwork><![CDATA[
Header: Bad Request (Code=4.00)
Content-Format: 257 (application/concise-problem-details+cbor)
Payload:
{
  / title /  -1 : "Incompatible ACE profile",
  / detail / -2 : "The RS supports only the OSCORE profile",
    e'ace-error': {
      / error_code / 0: 8 / incompatible_ace_profiles /
    }
}
]]></artwork>
      </figure>
      <t>When the ACE framework is used with CBOR for encoding message payloads, the following applies.</t>
      <ul spacing="normal">
        <li>
          <t>It is <bcp14>RECOMMENDED</bcp14> that authorization servers, clients, and resource servers support the payload format defined in this section.</t>
        </li>
        <li>
          <t>Authorization servers, clients, and resource servers that support the payload format defined in this section <bcp14>MUST</bcp14> use it when composing an outgoing error response that conveys an error code.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations from the ACE framework for Authentication and Authorization <xref target="RFC9200"/> apply to this document, together with those from the specific profile of ACE used, e.g., <xref target="RFC9202"/><xref target="RFC9203"/><xref target="RFC9431"/><xref target="I-D.ietf-ace-edhoc-oscore-profile"/><xref target="I-D.ietf-ace-group-oscore-profile"/><xref target="RFC9431"/>.</t>
      <t>When using the problem-details format defined in <xref target="RFC9290"/> for error responses, then the privacy and security considerations from Sections <xref target="RFC9290" section="4" sectionFormat="bare"/> and <xref target="RFC9290" section="5" sectionFormat="bare"/> of <xref target="RFC9290"/> also apply.</t>
      <t>Editor's note: add more security considerations.</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-oauth-params">
        <name>OAuth Parameters Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Parameters" registry.</t>
        <ul spacing="normal">
          <li>
            <t>Name: token_upload</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>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: token_hash</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: to_rs</t>
          </li>
          <li>
            <t>Parameter Usage Location: token request</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: from_rs</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: rs_cnf2</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: audience2</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: anchor_cnf</t>
          </li>
          <li>
            <t>Parameter Usage Location: token response</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: token_series_id</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 entries to the "OAuth Parameters CBOR Mappings" registry, following the procedure specified in <xref target="RFC9200"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: token_upload</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: unsigned integer</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: token_hash</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: unsigned integer</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: to_rs</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: from_rs</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: rs_cnf2</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: audience2</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: anchor_cnf</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: array</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: token_series_id</t>
          </li>
          <li>
            <t>CBOR Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Value Type: byte string</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [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: token_series_id</t>
          </li>
          <li>
            <t>Claim Description: The identifier of a token series</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: token_series_id</t>
          </li>
          <li>
            <t>Claim Description: The identifier of a token series</t>
          </li>
          <li>
            <t>JWT Claim Name: token_series_id</t>
          </li>
          <li>
            <t>Claim Key: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Claim Value Type: byte string</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="sec-token_series_id"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oauth-extensions-errors">
        <name>OAuth Extensions Errors Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Extensions Errors" registry within the "OAuth Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Name: unknown_credential_referenced</t>
          </li>
          <li>
            <t>Usage Location: token error response</t>
          </li>
          <li>
            <t>Protocol Extension: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="sec-coord-exchanged-cred"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oauth-error-code-cbor-mappings">
        <name>OAuth Error Code CBOR Mappings Registry</name>
        <t>IANA is asked to add the following entries to the "OAuth Error Code CBOR Mappings" registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Name: unknown_credential_referenced</t>
          </li>
          <li>
            <t>CBOR Value: TBD (value between 1 and 255)</t>
          </li>
          <li>
            <t>Reference: [RFC-XXXX]</t>
          </li>
          <li>
            <t>Original Specification: [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oauth-parameters">
        <name>OAuth Parameters</name>
        <t>In the "OAuth Parameters" registry within the "OAuth Parameters" registry group, IANA is asked to update the entry for "rs_cnf" as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The "Parameter Usage Location" column specifies "token request, token response".</t>
          </li>
          <li>
            <t>The "Reference" column specifies "[RFC9201, Section 5][RFC-XXXX, <xref target="sec-cred-rs-value"/>]".</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-oauth-parameters-cbor-mappings">
        <name>OAuth Parameters CBOR Mappings</name>
        <t>In the "OAuth Parameters CBOR Mappings" registry within the "Authentication and Authorization for Constrained Environments (ACE)" registry group, IANA is asked to update the entry for "rs_cnf" as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The "Value Type" column specifies "True or False or Null or map".</t>
          </li>
          <li>
            <t>The "Reference" column specifies "[RFC9201, Section 3.2][RFC-XXXX, <xref target="sec-cred-rs-value"/>]".</t>
          </li>
        </ul>
      </section>
      <section anchor="iana-problem-details">
        <name>Custom Problem Detail Keys Registry</name>
        <t>IANA is asked to register the following entry in the "Custom Problem Detail Keys" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <ul spacing="normal">
          <li>
            <t>Key Value: TBD (value between 0 and 23)</t>
          </li>
          <li>
            <t>Name: ace-error</t>
          </li>
          <li>
            <t>Brief Description: Carry ACE <xref target="RFC9200"/> problem details in a Concise Problem Details data item.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="sec-updated-error-responses"/> of [RFC-XXXX]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </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="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="RFC6920">
          <front>
            <title>Naming Things with Hashes</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="D. Kutscher" initials="D." surname="Kutscher"/>
            <author fullname="C. Dannewitz" initials="C." surname="Dannewitz"/>
            <author fullname="B. Ohlman" initials="B." surname="Ohlman"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document defines a set of ways to identify a thing (a digital object in this case) using the output from a hash function. It specifies a new URI scheme for this purpose, a way to map these to HTTP URLs, and binary and human-speakable formats for these names. The various formats are designed to support, but not require, a strong link to the referenced object, such that the referenced object may be authenticated to the same degree as the reference to it. The reason for this work is to standardise current uses of hash outputs in URLs and to support new information-centric applications and other uses of hash outputs in protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6920"/>
          <seriesInfo name="DOI" value="10.17487/RFC6920"/>
        </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="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="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <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="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="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="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="RFC9202">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="S. Gerdes" initials="S." surname="Gerdes"/>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a profile of the Authentication and Authorization for Constrained Environments (ACE) framework that allows constrained servers to delegate client authentication and authorization. The protocol relies on DTLS version 1.2 or later for communication security between entities in a constrained network using either raw public keys or pre-shared keys. A resource-constrained server can use this protocol to delegate management of authorization information to a trusted host with less-severe limitations regarding processing power and memory.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9202"/>
          <seriesInfo name="DOI" value="10.17487/RFC9202"/>
        </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="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC9430">
          <front>
            <title>Extension of the Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE) to Transport Layer Security (TLS)</title>
            <author fullname="O. Bergmann" initials="O." surname="Bergmann"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document updates "Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)" (RFC 9202) by specifying that the profile applies to TLS as well as DTLS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9430"/>
          <seriesInfo name="DOI" value="10.17487/RFC9430"/>
        </reference>
        <reference anchor="RFC9431">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT) and Transport Layer Security (TLS) Profile of Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="C. Sengul" initials="C." surname="Sengul"/>
            <author fullname="A. Kirby" initials="A." surname="Kirby"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework to enable authorization in a publish-subscribe messaging system based on Message Queuing Telemetry Transport (MQTT). Proof-of-Possession keys, bound to OAuth 2.0 access tokens, are used to authenticate and authorize MQTT Clients. The protocol relies on TLS for confidentiality and MQTT server (Broker) authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9431"/>
          <seriesInfo name="DOI" value="10.17487/RFC9431"/>
        </reference>
        <reference anchor="I-D.ietf-ace-edhoc-oscore-profile">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC) and Object Security for Constrained Environments (OSCORE) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-edhoc-oscore-profile-06"/>
        </reference>
        <reference anchor="I-D.ietf-ace-revoked-token-notification">
          <front>
            <title>Notification of Revoked Access Tokens in 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="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Sebastian Echeverria" initials="S." surname="Echeverria">
              <organization>CMU SEI</organization>
            </author>
            <author fullname="Grace Lewis" initials="G." surname="Lewis">
              <organization>CMU SEI</organization>
            </author>
            <date day="22" month="September" year="2024"/>
            <abstract>
              <t>   This document specifies a method of the Authentication and
   Authorization for Constrained Environments (ACE) framework, which
   allows an authorization server to notify clients and resource servers
   (i.e., registered devices) about revoked access tokens.  As specified
   in this document, the method allows clients and resource servers to
   access a Token Revocation List on the authorization server by using
   the Constrained Application Protocol (CoAP), with the possible
   additional use of resource observation.  Resulting (unsolicited)
   notifications of revoked access tokens complement alternative
   approaches such as token introspection, while not requiring
   additional endpoints on clients and resource servers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-revoked-token-notification-09"/>
        </reference>
        <reference anchor="ACE.OAuth.Error.Code.CBOR.Mappings" target="https://www.iana.org/assignments/ace/ace.xhtml#oauth-error-code-cbor-mappings">
          <front>
            <title>OAuth Error Code CBOR Mappings</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Named.Information.Hash.Algorithm" target="https://www.iana.org/assignments/named-information/named-information.xhtml">
          <front>
            <title>Named Information Hash Algorithm</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SHA-256" target="http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date year="2008" month="October"/>
          </front>
          <seriesInfo name="FIPS 180-3" value=""/>
        </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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-ace-group-oscore-profile">
          <front>
            <title>The Group Object Security for Constrained RESTful Environments (Group OSCORE) Profile of 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="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   This document specifies a profile for the Authentication and
   Authorization for Constrained Environments (ACE) framework.  The
   profile uses Group Object Security for Constrained RESTful
   Environments (Group OSCORE) to provide communication security between
   a client and one or multiple resource servers that are members of an
   OSCORE group.  The profile securely binds an OAuth 2.0 access token
   to the public key of the client associated with the private key used
   by that client in the OSCORE group.  The profile uses Group OSCORE to
   achieve server authentication, as well as proof-of-possession for the
   client's public key.  Also, it provides proof of the client's
   membership to the OSCORE group by binding the access token to
   information from the Group OSCORE Security Context, thus allowing the
   resource server(s) to verify the client's membership upon receiving a
   message protected with Group OSCORE from the client.  Effectively,
   the profile enables fine-grained access control paired with secure
   group communication, in accordance with the Zero Trust principles.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-group-oscore-profile-03"/>
        </reference>
        <reference anchor="I-D.ietf-ace-authcred-dtls-profile">
          <front>
            <title>Additional Formats of Authentication Credentials for the Datagram Transport Layer Security (DTLS) Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <date day="15" month="January" year="2025"/>
            <abstract>
              <t>   This document updates the Datagram Transport Layer Security (DTLS)
   Profile for Authentication and Authorization for Constrained
   Environments (ACE).  In particular, it specifies the use of
   additional formats of authentication credentials for establishing a
   DTLS session, when peer authentication is based on asymmetric
   cryptography.  Therefore, this document updates RFC 9202.  What is
   defined in this document is seamlessly applicable also if the profile
   uses Transport Layer Security (TLS) instead, as defined in RFC 9430.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-authcred-dtls-profile-00"/>
        </reference>
      </references>
    </references>
    <?line 1155?>

<section anchor="sec-benefits-for-profiles">
      <name>Benefits for ACE Profiles</name>
      <t>For any profile of ACE, the following holds.</t>
      <ul spacing="normal">
        <li>
          <t>The SDC workflow defined in <xref target="sec-workflow"/> is effectively possible to use. This is beneficial for deployments where the communication leg between C and the RS is constrained, but the communication leg between the AS and RS is not.</t>
        </li>
        <li>
          <t>When the SDC workflow is used, the "token_upload" parameter defined in <xref target="sec-token_upload"/> is used:  </t>
          <ul spacing="normal">
            <li>
              <t>To inform the AS about C opting in to use the SDC workflow.</t>
            </li>
            <li>
              <t>To request the AS that the follow-up successful access token response will have to include certain information, in case the AS has successfully uploaded the access token to the RS.</t>
            </li>
            <li>
              <t>To inform C that the AS has attempted to upload the issued access token to the RS, specifying whether the uploading has succeeded or failed.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>When the SDC workflow is used, it remains possible for C to always obtain the issued access token from the AS.  </t>
          <t>
That is, by specifying the value 2 for the "token_upload" parameter in the access token request, C will ensure to receive the access token from the AS, even in case the AS successfully uploads the access token to the RS on behalf of C.  </t>
          <t>
This is useful in profiles of ACE where C can re-upload the same access token to the RS by itself, e.g., in order to perform a key update like defined for the OSCORE profile <xref target="RFC9203"/>.</t>
        </li>
      </ul>
      <section anchor="dtls-profile">
        <name>DTLS Profile</name>
        <t>When the RPK mode of the DTLS profile is used (see <xref section="3.2" sectionFormat="of" target="RFC9202"/>), it becomes possible for the AS to effectively issue an access token intended to an audience that includes multiple RSs. This is enabled by the parameters "rs_cnf2" and "audience2" defined in <xref target="sec-rs_cnf2-audience2"/>, as well as by the "anchor_cnf" parameter defined in <xref target="sec-anchor_cnf"/>. This seamlessly applies also if the profile uses Transport Layer Security (TLS) <xref target="RFC8446"/>, as defined in <xref target="RFC9430"/>.</t>
      </section>
      <section anchor="edhoc-and-oscore-profile">
        <name>EDHOC and OSCORE Profile</name>
        <t>When the EDHOC and OSCORE profile is used <xref target="I-D.ietf-ace-edhoc-oscore-profile"/>, it becomes possible for the AS to effectively issue an access token intended to an audience that includes multiple RSs. This is enabled by the parameters "rs_cnf2" and "audience2" defined in <xref target="sec-rs_cnf2-audience2"/>, as well as by the "anchor_cnf" parameter defined in <xref target="sec-anchor_cnf"/>.</t>
      </section>
    </section>
    <section anchor="sec-open-points">
      <name>Open Points</name>
      <section anchor="sec-open-points-workflow">
        <name>SDC Workflow</name>
        <t>The following discusses open points related to the use of the SDC workflow defined in <xref target="sec-workflow"/>.</t>
        <section anchor="sec-open-points-workflow-dynamic-access-rights">
          <name>Prevent Ambiguities in the Dynamic Update of Access Rights</name>
          <t>In some profiles of ACE, C can request a new access token to update its access rights, while preserving the same secure association with the RS. The new access token supersedes the current one stored at the RS, as they are both part of the same token series.</t>
          <t>When using the original workflow, C uploads the new access token to the RS by protecting the message exchange through the secure association with the RS. This allows the RS to determine that the upload of such access token is for updating the access rights of C.</t>
          <t>When using the SDC workflow, the AS uploads the new access token to the RS also when an update of access rights for C is to be performed. This message exchange is protected through the secure association between the AS and the RS.</t>
          <t>In this latter case, even though the access token claim "token_series_id" defined in <xref target="sec-token_series_id"/> provides the RS with an explicit indication for recognizing a stored access token as belonging to an ongoing token series, such a process might still lead to ambiguities.</t>
          <t>For example, the RS might have deleted a stored access token due to memory limitations. This effectively terminates the corresponding token series, which is however impractical for the RS to remember indefinitely. Consequently, if the AS uploads to the RS a new access token belonging to the same token series, the RS would erroneously interpret it to be the first access token of a new series.</t>
          <t>This can be avoided by relying on a new "updated_rights" parameter, which the AS can include in a POST request to the authz-info endpoint when uploading to the RS an access token for dynamically updating the access rights of C (see <xref target="sec-more-parameters"/>).</t>
        </section>
      </section>
      <section anchor="sec-more-parameters">
        <name>Further New Parameters to Consider</name>
        <t>The following discusses possible, further new parameters that can be defined for addressing the open points raised earlier in <xref target="sec-open-points"/>.</t>
        <ul spacing="normal">
          <li>
            <t>"updated_rights" - When using the SDC workflow and issuing an access token for dynamically updating the access rights of C, the AS specifies this parameter in the request sent to the RS for uploading the access token on behalf of C (see <xref target="sec-open-points-workflow-dynamic-access-rights"/>). This parameter encodes the CBOR simple value <tt>true</tt> (0xf5).</t>
          </li>
        </ul>
      </section>
    </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[
; OAuth Parameters CBOR Mappings
token_upload = 48
token_hash = 49
to_rs = 50
from_rs = 51
rs_cnf2 = 52
audience2 = 53
anchor_cnf = 54
token_series_id_param = 55

; CBOR Web Token (CWT) Claims
token_series_id_claim = 42

; CWT Confirmation Methods
x5chain = 24

; Custom Problem Detail Keys Registry
ace-error = 2
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-03-04">
        <name>Version -03 to -04</name>
        <ul spacing="normal">
          <li>
            <t>Updated document title.</t>
          </li>
          <li>
            <t>Defined name for the new workflow.</t>
          </li>
          <li>
            <t>Improved definition of "token series".</t>
          </li>
          <li>
            <t>Revised note on the new workflow suitable for "unaware" clients.</t>
          </li>
          <li>
            <t>Revised criterion for the AS to choose a token series identifier.</t>
          </li>
          <li>
            <t>Extended semantics of the "ace_profile" parameter.</t>
          </li>
          <li>
            <t>Specified means for C and the AS to coordinate on the exchange of public authentication credentials.</t>
          </li>
          <li>
            <t>Removed content on bidirectional access control.</t>
          </li>
          <li>
            <t>Suggested value ranges for codepoints to register.</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>Defined parameter and claim "token_series_id".</t>
          </li>
          <li>
            <t>Defined parameters "to_rs" and "from_rs".</t>
          </li>
          <li>
            <t>Defined use of "to_rs" and "from_rs" in the OSCORE profile.</t>
          </li>
          <li>
            <t>Lowercase use of "client", "resource server", and "authorization server".</t>
          </li>
          <li>
            <t>Fixed naming of parameters/claims for audience.</t>
          </li>
          <li>
            <t>Split elision and comments in the examples in CBOR Diagnostic Notation.</t>
          </li>
          <li>
            <t>SHA-256 is mandatory to implement for computing token hashes.</t>
          </li>
          <li>
            <t>Fixes in the IANA considerations.</t>
          </li>
          <li>
            <t>Removed (parts of) appendices that are not needed anymore.</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>CBOR diagnostic notation uses placeholders from a CDDL model.</t>
          </li>
          <li>
            <t>Note on the new workflow supporting also non-ACE clients.</t>
          </li>
          <li>
            <t>Revised semantics of the "token_upload" parameter.</t>
          </li>
          <li>
            <t>Defined the new "token_hash" parameter.</t>
          </li>
          <li>
            <t>First definition of bidirectional access control through a single access token.</t>
          </li>
          <li>
            <t>Revised and extended considerations and next steps in appendices.</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Definition of the "token series" moved to the "Terminology" section.</t>
          </li>
          <li>
            <t>Clarifications and fixes on using parameters in messages.</t>
          </li>
          <li>
            <t>Amended two of the requirements on profiles of the framework.</t>
          </li>
          <li>
            <t>The client has to opt-in for using the new workflow.</t>
          </li>
          <li>
            <t>Parameter "token_uploaded" renamed to "token_upload".</t>
          </li>
          <li>
            <t>Updated format of error response payload to use RFC 9290.</t>
          </li>
          <li>
            <t>Security considerations inherited from other documents.</t>
          </li>
          <li>
            <t>Editorial fixes and improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Christian Amsüss"/>, <contact fullname="Rikard Höglund"/>, and <contact fullname="Dave Robin"/> 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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
ypJC4i319ZpEBxhURVeQWkA83UbxMjU2g0OvymJQRJR6x5x+g8r4/zZ/at80
5Z9vvNV/9IPq+dpP6quf4Nedo91mU6rP53In8sk//JQb6ifr1TWz/pTzqNiv
/h5m/Q5nPeKd8+R6gfTgBfsOymb9Rr1n53SXr6r46rmYAI5u5Jw78YJZ1O5K
MK3Zq/zzr5XwOXXoRUHZ2zne/YneGfEprp7nXJEVD/3TzsluxVR6R5pmd/Vj
W6BPP3a7+TvfVAMQ6Wxk6Owbl9LydLYVmRFwmHt6BSp7gXOeadGsnyxS2ZZz
Oqt97FH8xjnQHw+9r/KaD1cGfFtHfvodKU46RVDpaq36g0xMSyV92Rln/hQr
yCh9f+Pss5wmNhd3liamJNrro7+g0y5dLkykjLldy3s3n0bvdVxs0xQqrX9s
m7Vm5GBJ+potJAt5bGCMlWf/lCtSmDCJinXoqB5gUMuYr/aQzQWr+VJTLGxE
536gwJkqlRA9sKCa+O7waQST3ht5TkKkKNGNaoGSI5JOIHZg4L9oAqOsmSYw
wf2uBamnyKG1FLXibrVXSIVO1c7LVMGnknJPJfJyR31rJuFKwZJxtDBU65Gc
3haG8o8lE8vXs4VkXLmvb1zJbEnJzeHM41SKWxKXFrT+dRvZ9JPz6k88evMd
Hd+SccrFL0tfemDnqKN/Vt+vE8u2SGaJrNezc9Td1d+XrKdSRuf2tR1IbvXP
t9u8utXBGXUMpe681cj8OQ7O2nFoPd28gFen2V6PpSB82npWHkClb1QoHL8Q
fJ6KYZZpJrYmYGsmG3qVSFN5jVkmymQ0ZryTOiiNdMu1pmI9KVpE5O9nr43X
9F6tUjVcSfopfqKGEbCWYyOah8o7s2FyMoVU8r40dLXZadCsDEU5H4mqvDL5
vSBEQZzOhD83qUFOOrVdkHdpe6Y5AqukcsqeBTnkDddEJCJbJjrlLQczyfvg
JXYLNSwk+ZbWZOlUcoGVipDW7iz8dgDBpNtiTg0iv0AbWl80zqMyjbFhqWlW
YpuMeZrCu79joiRprxbhkF5XRWLWartrV3vO3rV7S41C0rKCmTdiDcgUyI86
ZubvYOLTFXjSqnUmplNHJ1ZUS2VNWSZmCxldX5ut7fhLLaW6KqF+7KNzXabx
ERA8dNSDYRLaudBmf90nPSpyv5seF5X4UFoUpuEKGnu1/TDxo6kyFSpOD55B
nWGRf67lvUWr4C5S+CsfRL9vA8C4OZlt0fG+89OiHl4JgDLa054uhSNDgiN9
VInw4wAMlJQTn6JyGNln34aXlQN6Y6cbW1g0rLjsZHxHqSwcgfUCX4Fvc0+x
YQJqyJECx4rjP+Ljb8xNPk7ES+VEfomNZUcJfiEby4KUWn3qHTe8Ewb+C07R
WcnyLvMy+zdSR1UA3BMVUv1AZa2p4oW5cqTptDhKuqJgjZL8xsJQS6NwonUA
LvUGrf1Wv9WjAYatgROPW+uMkdyT4xGEclWsiZJcFU4XRBJH3vK58fnkenag
R6bAU9F1cTyjPdjZOmrZTjILYrOQap8T/5xvn2uOUEK2KqM+XUboX+G6jGLB
Ig/AkQP0p/h3nB3gqfxdO9+DvD8mOqi2IlNKnTwhiXZd4GMlX41yCMfPMYrB
iTY88iKeRgFBOjOnZkzRadDXlwmLP1B0Yjz4gUlUyi1tohKb9T71ojxOjS9s
RS2TWD6LVDoNzjBhLL1Pt4IZAosPgk2xy4WBjioiJyIjJsKcKWL/GG3TDvmj
Zm8K2Q0jd0O0GF0t8XExgRLn9TGdv1S4pMpzZvMJjTbj+8RAOzYWs7qYqVi6
VQvJhJggLIhCS5y3vjdfzsYyg6k8kvrI+swWJWrbYl8u0FGrVvmUzXI2tTYk
Xar8iiobLJUq2mi9NWZl4qo4pDE6yjUlGt1PpfJp4+xrWm61Lph6Km15xerl
nikfKBAasbZKScaiKlMYrTMVi4qv64bnc0l5SMUuMsQuSuKL5nBEZAuLD6A+
Ys4WrjyJrzlUoI0rU5DiIjPz37NsLvBv5FHX8JTMd/J+UMmKpRjHSheqwdDp
Xg3Jcfh9TgmTTwDuKHVnOZeZNHKulEEvC3VyOVjIoilrmqxczr0wK24uF+sJ
5y4CQlNMTOrbXiAScu5behVxElQ4bf1120pOWe3WPqQ9bbGguYj05pzX5li7
lKWFgmOV5ihn7Gw9ozmhlC1ZKGjOr4Sr91EiFGwdXkL3UUuonmLljk+1A0EG
sdLiCdRtikpp17bcKpkHiRMmzXbD6zRQie3KPihyfoyllTKAjaqm3Qpvx2q0
/Qp+VroLrTqowpIqr9V6HqmqUFgT3OBUZTfmN6rDArHV8XZGIGhBQu9SetM4
ltLY7CVAfMpMjgWw8oKhXLlIvcexYtSZpLzLArWsQnm4cppGOc6tmSRrqHK4
rObbaBOXFHsDtBJZ82VxcDfPyDbBaTmaOa/Cq4TUSk8IlZk9jWBQfo2nkQwM
9BI3jQXROxklNSRrnc/VxCR9YPQkI7xDU5o6POOAKN8nDWOzszo/d0XP2RPm
/G0lVLJityaQe+cIpU/YaXvLnZLWLjdamRyodJ6xIJrWRr4y6x0hv8J7V8L/
S5U23oKG2boRy9VW7XixgGMBdgXikRlthHyUROVv8IqpB0lVCb7R7vExSoz7
eXbd+bl2/ak7LnirqzWWMu7LNWizxZIrQX8l6HY3g+4TMZMnJ7mvwOxUNSC1
GicXSa9d8+gCnm6OZMdb5dqnVCRpptBzLFml86nCiCS/srYgVYkbAa74ioRb
Lg41yodk2GlSLCYytWOg8NzPAA4J5mjFZ1j3If1NK9G7hfKIRo5MgR/lbcko
U8X46Wo7YJVWbEOhYMqUmDGrfOjle1eG+Pab1+WE7r4/wc7K6821WpnHbStx
U61frwndPN50W2EvFaNL9VzPiBwPKBCwWxmZUzTsBAHgdkcleyc++JLKfg+9
s7fASXawqfS37Va7i03jvXdJ1HwZp9kh8Km0Jc849gyvq2/P/OzmUAKePgQk
IYaaL8joPvQ6B96Ob1ooYsfpb7C1NI1/xl0YqOnyR+68/FwXXsKP3sDDwUEJ
vxDzNE76e51OvaEeTIN4QU/BnwN8EB2A6mvxzCYGLHWi7ssPtVoJNGQmkA0O
aeRIiKDhs7v19l77H5pH1+LQ6w2G7Yr9lqxTb1CWfV4B+T73uvBVb9g23wKx
yM3Dn3349qNq+v6c6p2vvgcKee517G/wu/eZ+rgP/15oonrecJ6KQjnpzbNe
2O7u7fd6k2DYHe4F4pn7JK6i2aEn93rDwV4P/j4YToZiOIbfDp6phx9q5p+H
0gSWVdJGJbRICUVVDHYSnEwtauq8rxOZu4UVcE+V+rARt8BHfnR40Y/2qa7y
sVgV2aVSS5U2o31Q0kjO+EsxjWe99G5KSDQTkfEXljznCN4Xod7dVKivIp+G
J245/vZFYP9CAvtT7fQvYvuzEdvdz1Jsr5HcNulJYXvzLGzv9/o9v9Nqtfr7
nQMjRZ97O3jKqNGMmFIyDQaL8BqkKLv/nRG29IRs25xWEJfq4EdESb0Mdr3n
pRqFt0an+O+gVRSl4H8ZPcOKwPKTNlE6T5oLA35tnYRzzH59RYSY/Genjfzm
XAzK86xzvzYV3RsAo7NegzHxG7qTgGjrcTG7rdSBx+sdACCn/cCTaxe605XU
SbMbbPRiw2wLKDE6V0UIde8samRkZ1bDGUujeVAMEJscVpm0VV7qt0hi/MWk
ZDkVAFZQS53aL6rWb9VDUrrUzhdV6zenainW8iT6lRzsV9KtbDmkFa1Ha1mV
uhWpTToZkAS0nQpIkZutEgFzIaF1aYCPztkjFq/u5tFYo5bMqcIEFpwM+8tk
qrMkCaxYA77AlcPvuVbwKnUaL6Xkm1XmITdXFBSbrsu2cW7Xr7psK256opWo
QO8uXzT3zUIo4x2vwTQF9RHDFKu9MeoHNJlg/0IFK2w8mV/vfqujGppRL8pd
CZGK+NxnmKKTX2J5gs7XT5qe4xwuPfoTaY22Cr2Rr2tlrk+jKtlH3UWUV9uU
tm9p3Guz8spT0re7VyTXPPaQGnmXFhCtzO5xE1FK6NcvtCd0kq3crbe2XAUe
sfWrkBeAmQk1n2mqsVxWoBpMFlAjTyum7XNqQQF3lZkGTfy6CawMXtOx9RGN
ovgPSzu6S/Qrm6s7r65dQXwrqU/tV6rDlUbIXbychpymeeObHlHY2rQqcWyC
tuWdnzrHNxGRXdVUKtfYAnR7FuOZhZ14L48uXl6dvjl7d8l7MOU/1u6oTlBm
dVCLZJkpHBbu8XoMLcsLjr77y+XJhRYjBR91nqAZxgxGLuXgOkZVr1cBeNkL
DtbiQHJl9SKvz0Dq6vLkz5dKEG1B1rTDwmh6oDKhibvPTfwJx3WLSYkCrI38
vPB9i1aURVbWQq2z7Y+BRIHXM1Fq6nB3dS3mIvFl/hHKBOsKG6kF4LXZqoSO
Ez9JcaWjXux6q2xnv8CXPLdhNd+y4nbMnY2FdM64zXb18+ztWc4DnRhPGgL5
1ojaTWUdn78CX7SbBJSMqYvkAjinEZZI4l0IeKk5aIwonWCSpulRq3KZsGeR
mHIJkFbf6+vuiK6D2XCN/Q3uAezrbqpGFJSFpqh9UEQ1Rs7NGU47za6DS+Zo
7r7TGx9vlfb8NH9dhLxvmq9wmuH90Vmc0M1cqFWKmamBY6ibQ6FhL3JUyQVy
1p2rXOSl551oh1/1gLS2De83Z31Yts67N62F8cy51yvJMdwqLaJ9vsqk4V1H
6IKSp8pX2OGulyXXkhbEIAmtSk8m7Ep6QdGHaVpJ5esJZtTMP4+qLcCR2ZUC
SMIqQZ/Wl9ucuteT9QCtmTv4sMonopWqjqp+cN7WBxZ5kCyylnvEgRlJ9xXo
cZIAV3vsOW3wSwagbaxskSywlQXwJfHv18wjKD18at/b2XVfcg0+awd45/N0
gFdnGlhfItE9Ix9uuzPodYcH7cGe6HQnojve64/99l6wfwDKR9vvhnuWmzv/
Z9Db39sT42F3Mun3w4HfOWi3u4NeW4QHe5OJ6D/7kp1YlIP/dXMGDG39WPAb
V30rbbZHc8QnTTog7/mVLMeXd8Jqdwv83JSfbehHt4qh5H28fF2Zum22paow
6aufr8BezqOm3WYm5ddRc0k6imSAlqG9uusaK3B20WluET9XRf4dN1g1pC/v
Nia3kjEOneIc8lRZp+TO0tdtfWl1VWeZl3dVA4BWviq/xHWuOi9Vqi9rOmvJ
i9PXFICaOjqwgOSjjTykXTXGuRB5NeRzcN2k11vRNz2xL0YrpkDkTcFiNzH7
qjLZiQehcSfXbnyeeX5R0mTObvgECFqxI0UTxQZMj+qq4Ci17jlI7UraopNd
doGwbyK1u48oGVJ+RNR9KjbZYVFnoVFTyf0BLU2XFisttPy3mGmcqquVRWFa
nSyy/g5sw3pKOOBa5qOaw23HfSyTZjvGM2pY3m05QnlrvQkHMG6pleZT3DD+
uXEo23Jc7/t+PL8qxRVgwr3V3fUgFLSvUtVrVY7YJ/AlTQ/5wG/RAfJLs6zV
UZQvPGsLnoXOtXepKDx9pp4u6qX5ha1QUx8NSLFWrZXCfcOdNpj7gW4pwGSk
fhfYIX+ODfJVD9VUO28cfsX+ar5FB4eV7qq8t6fI8fGLyqCSpL6Zv/BGV6+P
zshJGlO/0wldmA2wmIYphcWP+Bezz9LGFV6/jWSNI4I5wg7MXKB7jneiem86
VmSINHt9KoqhxVz+SF/njzBc+QLuTRfYW7fAcyCCBbXCPD2G/xcWqqmo6ghv
sl7iKuNlNNX8iLxIdqu59TrjGpaXmeBArO4fVROoi75LojEVqy65aFcY+jGD
YJhPDq7M60OtlrhRSkJYIRMiv1MpddZxTTkDkVenamyKPRTwVehAypSE8ouO
hb6TYkO6b1n7FVfcVfAqUWQVhb/86nru6k4tX/lGQt32rESFPiyqP7R1+xo8
R5vz86nPxtDmTnCaVlKbHZ1fmK0VqYhw3K2ComQwXffcymVuw2W6JVxGY5Uv
id4Eqzl+Ur6uRzCV4vKKIqHcDNhUKOTFgeBg7HYCobuO325I9S7Wae9EJFsx
//5TLWYlCTiLI04/Upps6jopXf16VfRJxzI2DD+NyOOVoGtQ3OYOhm7Zm6dM
k1lQJBy7ybysW6CxeV2xUsUrD3y5bXfnNiAu69m8QX1UQUsthl/1vXY5/Uxq
qo3/xgHa31j9lLwUt9qLlItS5sk4d55kWzbAAOik33rtD+3Ovt/d25/sTXx/
PBj4hGTUA/HLzrA/8HQ/4y/h40eFj39zfWMooRkOKPOOq1NM1bx6DXhJIuBV
8fjvIJRX0GVp+LyMw1aTZpeorzvw9w8OOkG41277AbBZJk3+sg1/Khxo89Ch
2dGXIPfK2LF64ApvQscIqd/t7Hf3+/t51gCfjvtd5AnPPs8Q+QYbhSckKVp7
9fv7eVqDT4N+F4nsmVVkJq6UIH3u9TCe/RwOr7+4YomMwWirxmxVaHx1cBy/
hSHh7777MX5BQe+2jPE/a7hfzlIdEZ8c+JP93n5vuC96g57Y24c/otPvDsfh
QV8MJ8/Mmw9O+PsRRV2uRvLoQHhRbzkzess78tp9XpHyn72Lj3TAKHNOwelN
p4EyugGcsqG54m3kq03mL9CxPHs/so7wI/v2flSM+ce6jJMn6RUQZldeO87M
pyt9kvK7pv78EfFyOYZ0LeqR6qX3DfwscWq9gopgkd2XNbtfEPHVF/GijnLR
RmGqM1/NfTi5mh0VT1abU9zcMfW9GSaB40k5v0i9Hb6Pw/f45mz1CoLAtoiH
rQPnDpHdYvVWyUareitX1ik5F9Loq1kXy/FUwYATz5Vpn7JR7a6dt2+uMJcS
f5aK6S07UUby6ohUpyxonXkcsV5kX8Riz68g72pRcFo4yzWLhLkRxNzPiu8k
VPbOzSXouMibovK+fX/M0SdLj8ONSr0wt1V5mwa6tn1rnQ11LQ4Q7/s5mmta
xcWxAiIODSCRB48uinSutbPvY10ZKCO0s8MF76yI501siXDPpr+fJP49qV3a
5aHSu98o/4m55qJ65yvu79EHoeWd+PCAnMepruFluNaDgR8+ig2rzy/KZ7eK
B9jilErvPPM/cIWSjosofd8UbCvMEqcwR6xnKjf3+ntgZ+MOca1NvibNvq6e
8Fv5/t4+HlF6HwtiSt4H0stUnFRaoCGTiLqXSOGmBGgJRlZU0Ivz4edg28tj
y3nfRCIEfCUTrDM08+9VmbvNrC0F3QkcWdfoWBhyk/fxAOyI1jWwshXSqA4v
1RF0dRjhKl6AgUCxT50cmGbJMsBLnnbpcNLUufCqdlch05TXejl98u1zKDkv
FQfFswUMMp5aobiSSCGuTn+PtpO1T/cmMGLp5kx6R3N9TVQi0Gjiq8XiSRP+
v4jxOudUB6sBh0j1GrzGZ8eCTvqX3TpfJBQwm+iOQJZ9o5gCW/BdvwUG0s53
vr5v1XbpGrFbLgTtm8ryFUTWPYmfxAr+y/AsVZ9RClVVzyQdzVZVW8F17hZp
reJ2OmxevSgqs08kbfrzyqG8i5dv3706lnd2KAZiFZLqIkc6DHb1iLxYTUtS
Bwi5WwrXXOgKUjFf5t/at0NyqOEQVZaOVeJ9LBmu6w7XUI5dWgmZFKSCpEv+
OWdDqJg0qiO3UYgX+pxfaERUHilTzD+p1MrM9Q3llyJGzeyT6a9IYNonTYEp
wyFtlqrY/IYrKO5ts2Ii+V6ZKxvx/bSuZlJG86cgH/xBlgHb6Ug7JUm7debG
2p4bPUsd6Zfa1oHyXG/ataDgfrMTsB15aXAsF8YQp5lM+KREeyKjRu6MimOl
h0wHdNJS21mp1wX+j1Qjx2t45k6T6f1ad9vP7iIatqtcRKWdgsbD/rOL6dGf
et2b961Wq9N9kk5BrIkAkZyfff8pTYKU20pjHh1XfyXabDBh/q3g4pJUQU/m
yzw+5j9YXYxhP8VlGfREF344GXWdigz70SC5hb+p5KIDP5xRMWzVwx9o3032
W43HQa9/MGwPukPh98NeVxz024Efdv1ur9/p768oW1F/wjDodvYOOn6n60/G
wdgPDnrDbrfdH4Zhvz9pP6tYxz2vo0fr6A86B6I72Ov2huOu3wbAt7u9Sfug
15l0Jr394QbrCPw9fxL6w/4kCEW7094Put1+MOgIfzwZtve6z4pjPOQ/eiis
9XNHoB/sDcSBCERPDNrjSbAvwmG7d3Cwv38wgP23NwDcIOjvjSedYTg5GA6H
bb/f6R7sB+N+r703wbqkjRA4FINQDDud3v6+3x/v+/td+LnXh+WFvT0RjDdZ
R9fv7e+FQAViGI57Qdc/6IWTbmcy6fkT2NlGCHQ/+NvmLlbliiu6U1c0AqoO
rM5z7quGFYl2HISa02gnoVzJj3VVTePPg5s4wQ+la9B8sGkvKvOGra78/F5A
1tZKJ9/MDciu0QpPYNELVz5VuSPuE9xwKJOTJYXzcb5UuaBH+pJmgAuo9VEo
3Usl6sH5xXM2lXJ9M7azlkouolTWw11pdnG1m5RXwhdLcVg3cZylqqB/I4/d
c8sMfKS7joG5AoqkusupVrvslHNkxL2K5L218RgVCBna1n6gPJ5RHZvfxlOM
fDpId5Ri2kHBx7nLMPsEq5sgoc0KqbhRFlcqMnWdNK4hTkK2NDDIrd1X8g5y
XAymMn6qQ9Dev6J5m+RWUz3sZCp8vOFXWdufRPpr9vLFPbnKPVnlnCzkqVew
1C9OzGonZsPxYtrQtc+HsvXuuFDGOjdxqpLwV5RKhbFwKMSEODbOYWFFo7K2
iJ03HaBVyZ7LvCmFaqRi2PJBrz6MgyW13LGTwpCS0GWHUAU4MFMulbhGsGzC
IEpjTjJnshpMGkK6UUzFAVDoK3cEbQIW2cdmxKQ3w1tC06VCpEOBZ99fnfPt
1GkaBxHJAKV/6tibyiFFd45hitby4FhRGyCpifrz+7UMwNm7TaS0oi2guQKQ
dli/FJgaTkq3+qSV51gQg5YcV/eW2zbzk2tBolY5gVnT8qkBHidqqqZDztYt
tCi+EYLWHGM/talP/tk51zEkWmhxK0AdW9PZDKYigtt9Ye6FusbT52qevGtt
Mw+gZT/8ak7Axzj4mCkWHas59+KdU3mi06rLfeUlxJtzljdcJ601nlIZlJpY
1lhBRtqZUy9Yf1tVhmlDeWXq5wZnSxLtKq3Od3Q6W/FebcWk1pkhmq9mx9ex
DIyMldV2We4vtRcC71GASTcjxEm4tPjPrUH7gC6b56Zgph+aHNNOfoDTFoD6
hL+CSaDjCq4im1c3pHsxrzZ59Q+D4AakU93l707nMhHexEEha/yLm/bp3bTi
mSH6ovM175QTzyTyOBWx194H3aY3hH87ofDb7V4bfof/uvBTZzJoh701vrO2
3x7CIP7+sL8fiF7Y7uMY8PKw1+n04d9ue43bst0bDOitoD0edPvDfq/b3utT
w5x+t93v9Tvr1tARnT1YKcwK/+vI//T/Bj5+u3oEeBff6cr/rHdhM/AdgmPd
GgAOeiedPVxFF9fUg7/7vUE37K+BQ3+Iz/ThScDHHvy93zuATzp9WNHgACDZ
WwvJPQsPiEcXMzBEe1UHJhyhRwmo/XGn2xn644OhGIx7416v354MxuGk3RXD
gzWQnHSG3U7Pb8NGBiLs9/uD9rjT7hwE3XCCe9r313hB/aAvOv1wfxi0D/Z7
IkTHrph0+7CL4f6wEwT9dXAY9Pc6e3ti2O4CStphe9CZ7O0ddP0AaBEQOum1
19JDuz1mfHbC9gRwSlTdBqMVvpEUv3oE9zwAXPfwcPX7bYwJ9Afh3sF+sHqE
g7bYgxPYDgMwtf3hoB+IYBhM/OGkDeSxNwQgiTVw6IqwvTcJACMH/WC/PxwC
MGB+oOrewf4gnIzD/uoRxpMwHIZ9P5j09tv9oAcEKsaT3ngPltEdAiL2+pPV
IwQAxP7Ebw+G4dgX/tB1X9uO6i281JYreG3e76c7qn+01AqnGZVzSUIqkgg5
dejclKA/3e66BP3aFncmfGpnJycGrNpzP/IaBrtDU9V+fvZeTdqK9r25uCvq
4uH93J+pNsKLkHNE0W8on0yi65sszfXtL4wUWXFt1u74sQ/s4FMbwzi1fIOB
waZzjD1hRQI45PfQOEKVzJlB9Rax3t6mh4oEZL7FlExZ4oI8XCrpwbg/Z6Lt
+qEUjBJny9o5sw6KAD34mVFvjam9PTInXfo2VGxiGk1EFs1E2dwNnfwO2uht
pOp0NiZ0uzqMO8rciLnO3DGA3ABzv3iLpic4iqZz0aZUV9bVTFqABbIrEEoE
LEtM4/k1vvm0JBhbNlrZGuW8v0ZbGtMo2mRmZmswR4dFH4fC9u2tkwhk2yO1
ukcb7wXZTyLVFMNb8VNZ460aJzoz+O4cOvUw76KTLnun63PxghFjmRaObnmT
dt9bxPHUOZ0AjikIb2r9gmZXEk8lFyt21wDIo9awc3lxdXrcQF/O0bvjXdlN
ex7BiYRBdPKhX2TgxVpKZ4cqQZTG1zf5rKRQ8nzBmrgKB5ZDcV5jNpqyj23i
RLl0KUKvahueoc8VuG9MycVLVBfQ6wunIFYZiooxW7vHWRkXXBmFLJ23Scjg
nvaK6mhh1DbebnBPWHGvFMDggVU4Ti28LB8h46vh3Qh1hZ81HjAC9F74QRKn
qaY4a0S3xlehL6EG/tQBUB4Ocq7LXu3c/GBeyipoNMOnSs+CaqhehvhymS6d
q+znzyW/rlAQinwOD4tSLvQhK2sEXXI4hAyMccjKObTOtnzp+8tfMbkFE17B
fUc/XKZOq//c4Sp0ZDQhYqAERJ8VwSswUV65hX5yY0X+3JeVhsFd1qSHUnJd
nU44md4OdBlG7VOfNYq6MWqX2BEojCYTGHueWcG75zwm8VO1zrWc1WLYeNJW
iQRK0qzYrS2wTXqEsnWc9lcv4sTcn+pbqe3FnSCKVDqBioCbrRWa5IE2jPEA
bwI/xO4NDnmhpS8IObv43pthhoCkp+PLVxeFFmAUTpIvrOoSxuXa9NjJ8cu3
zGoLL2zm0PzKe4e2gwi5ZYn8qu6daXyoW5aW/BwNJx9raljm7UPWgJkNFAP1
zkwrA5cqyE4gOVoCL+622hU2IHqM4yT6h4xWU/MV7mWkLFQ+uRzQKe9qlXIW
fYOz3xnU+GO/1XNS4RsrdA86+6DqhWVJ8atTrgx7X5/bj2HX10d/cVh0BWQL
jQOKDE4XIueNUI4g3PlJqJi6faERKXuycU3lVp3KzVUEsHKVmnm5V4fQjbZ4
aY9ztRVJBLuJiLa9OL7lygTV3VEBoZA/Ud7JApNH7GJjmRmV3vgqAFy6Yru8
yTJwC5VLQBdJAnNonb2EJlyq3GXNKPcazUfFKp9WDGX0WJvkeDJ6pW4nV1xZ
OE7rZSghTBTJhoOSBagr2ZjHFRdjWKRSETgsp7i1rZ/dJVtNzEaqvmyt7b1J
XY2mD4O1zY42pcdEKrVl/eVdjZXgICDbBREU1dYarQEy1zltA+lY3Yu17rZL
EkqjmMoE2akl7Ujd8wCGOuMg4ZEbJBzpIGGqxVaAIzWVkRk2MZD4QFIhjc3e
UqkRNSQssdaQUoQm+UMuWeK6KCXogMfUWtXaQL676ooeRcwLJCnoxeuKbrMi
7N/ozy2c4WmoXhXlb1naJSBNWvx4FkCRxE57TiYKVcVx8sQL+ZBPkX/WXmVI
0E/F06gktnJTpSThJljBKA3e4u5xy80wm6aOsnOUSaSjsNX9L3dGu94MnaUA
3gC/Xs5VHhOnkVmxZ+sIkBtEQ4fTIwiVuiNnZQQbGyx5OzobatcksQo/AQaD
Fgyl0IVLWoZsbR2CvZrJTFc7Hq5yDaZxAL+mWZz418rZhcSxSPDS+szeL71T
djO81FmIk1feR7ujSHPXc+5NS7fdt60856nt3TSLQO0Ge1/SWslWaBtV9YdI
SbJzNTCCJeVUGgzBfjP2xMBm4mUSoChS7QW4+9UtGp84/XI+FpjTrNtlYbhh
JIlGWQ5orwLoN8K+5CV3tqZYKYesAsc0ypY+3zwoIcC1pjbL3mRifexX9hL3
XsZ3AO6EmKIuak2XE+Bh5Mth5qi9EoWGZgVSNSuoxjzpVYjlkoGBJrOSE+BP
1eUHrO9zGjUaZ5Q47HBL6iguhYtQnFlYomUlDFOmYSMPGmqBmXaa5mJk1Azz
pcxfluw6UqY2hbUU9tCdszb7JY+6OpBJPhtvRfWwVEZIMiKPDJo0mmpf+pLA
5SzRwK2kUrJynTvprsE2/mJLGhvduUpYzgouyVFdVcWc31SS6l01bMmGMTWg
oBz54Oo0D7Ua6X/1FZw8BgKezxESC+ExxiZLGIQhjFXqIEYFsQFtpVtuYjwx
pRntLq1EuvKz6QKldZRElOyePIANM7UbMGjtE8htfdG6UaJRrdY9ieN7K/Js
2IBh66x55cu1fzNW0YCsolPM88d49wU5GbwTHHoD+2g5JylyZQB2pSET1u1l
cjWJdPFyYcCYcrNkQVMiyj1/MaK7ScoRNspImzRcKvUq9yH8pokTNTHTrDkD
lOOlsujcyBUnH9EFG0yr8o6NEkyonrIo0MqC1tpuNj3Lyuh4K2VCcRVYZP68
SroqHlrmSc82PrmamxR79VZypHXHlpgc/9JddYi34q/rDvJoxRleOdG6U71D
NVK2xqRj96V5rmtYff5q9K1lTOX+7cKxMRpSRmNDu8kZulTtI2UMHb+WTkRM
hEczqpG5UX7NZi0tqCiWCnoRDavao1qtYUvu7rYk2aXjq1ztm920nqQBppRn
ZRo7voriIKsyZOhUhRStwwapI617pOoQcwEn8A3aNx6uG1UQtjbF52ZzDblI
UBTPsa7dK5YU1GpngpvSapNUA7VRCY2US3l01oJ7d3Flf2nitrr5Cg5enraR
D748VWlueeqETXlVSNa8c131UvUYpUugw2flYVhkLi9ySW1/dZWYIRGb0nXi
Uk39N6BA8W/eTvvDZKAcdOgbypNm8dbpDZJx1rKFgsd+eyao/JebLElGTBci
QT8EGdOVcldnMtiePzXjYwA9gaMgId3/rUHaVmx/OWi7MgGsX9RG5XVBxs6a
T++ttpDSX0spCdK5+Uh8zZfTKaNruAZd2tjSOHA68NgVodoAWwe87QC92eRl
zMxJaMrpTZQdons4MQvGxj4I6pQzRZ4m5PMLWS6418To/EjlFCbVkLPbKlQ6
qhqqCtKuXl55mgrBA0OF5ad2dWSDapNRj0O3re6vihOhrmv1CmXcjqyEzGWC
WQ7Te1IIxXZ8wC0BRTJaowvlGM6aI7Zaqpr4/bmVmoTQP1ORjXwA385hesDq
QmU6jxyzmaicBvC9acT+rSQ3B+HMjaBIv7OqEvZgz6RswvHQTbCcYZy4LZI7
NfxT4jyawLmwnof1Hv77Ms7AGvuDd2FHqtDFG2XkyM7iIOb0KSvp7PzCm2G9
mCyJk/5ffCpCe3s2W84VrmUBu4xfAAViJGJX7owGkVm4qGQk9wu2yWUT/Wta
hTrZ/r2aiQa2vRT9Vg9PXsTp535gXeBkKjIBFoe/6p4xAhrPxhSLi+cmH44S
Zdwh1Cqkv74CUI11UOKsC7/QxlgSfeoEx9ICTOlr0/N5sFtCVlh7txlZuTvk
vhN5oE/IxWhaPziNly1s8PXTm0HGBsdTQSj1Biqh5RMJ7+mhIiSVidDccUhd
FuVwnwvQjliAqzz9O5iXGpOqfM0cN2TFC+0pcsdSG21geMBkVddyK65pJXnx
j/1eh5p4So+FVDv0EUSeKpl6CUtNZsspN5pBfcQRFbJ+1OPqU1wq6QG63Kgo
M9hZqKFTLAdaJEJVsVi3NKnL2yZ6IleXSWVpsAzfGd+n7DRKolG1OMdccW6z
MwNJ6F/ru+G0VoIAn6CUxduhZOWLnJqIHfu70kAqvkqTkH9DCeP8+mDJueSw
niSHg5ybGYlDXvBSUijF/tAcPFQ7GEyYJZ9qfna+/vZW3LvQ8dy7vifLhH5h
JOksAytxsZFvvEyECtrsrBkKMEKmqVpSLi2OdnfAu7soW6FRRt2SZuxsRGqX
VdQMWwmilIL99tRU6KzKw+6tywbTIjpyvYHNzZJMQrgInAKVH5zCO5a7Ayr2
wUqBT3LhApOJc2BCBXrsSMFFNmwyisrX2N6n4OwfAY8CO8adHag2S+4pMYbP
Ub3cd58DS1nLFX3xAA+ZX54FFbsPGGnjQt0+OIfzAZ/Ujf9fRh7ktXfEuO1v
VZJH+ZV5+XvCrBKS/CByeerNnBpsBz5y5RfEUwJS0kN+TgpSGQlNqQjAurWk
ThP9Cb+tw5DT5WyuHZycRsoMD4vyeVGvZfRD4Qag+/EjqrP0eIseb+HjLXy8
9VoHS3Q/45LzzYUY0g/BN/+5MLFC1fKck1qHSVeld3NXMVZ+GdFk9ZWWtGbs
DiR9xfk2ZGq7enuj4+NXaCvxiogz7A87bUWlwqFvTZ7X0a1Mi79zuyfQeFgy
q9/yvlXl/v+0Y4B06LV3vW//gERTLLCVp9DKlFOs8CKD/fhJWHYUKeM9WXFW
8QHJJvKcwShI62ZAmc/Z5rIqAc1iceurXKGivEJIf+3V+fjXvR11Hpvd3UNy
MGtqL3ZG93J5OL53s5z58yYqDui1aHhh5F/P4xQWAzIpDZJooS70LJ6udUyS
OlwQPKxRaTV2ISSV2MST7A5BIdCNLtDZYpXpUhmruI0CDpjNQSMDQHjxAq8/
pY6M9gnxoxCeHi+vr1Vdj9IGsU4KZ8fxdOYe6Z6YLEQ3C+QWqzQI2cp9jMlT
19dGEcYYpklaLHXKMFNX2EIlZY53X07vFaIzabkv58igZWQgWy5k/JMQ5KxS
uZnEhwVlJllwXsdcVlGjvcqfn+FcWdT1JMwHz4TKOrRPRa94Kt6dn9qJJblY
qlaMJLHremyxDdU/BTrMdn4JhIBd9gSIOHJ6S+VcklZb3HK1EjXiG4ykkrpj
N0VwLYtCkx3VR8dKRJe9dDBBfbeWb6TTHey5nXRWKZ27Nd1JB0XPc27HgL1q
qItz/dRuFmhV4tElgc89Hgp7PmNnm/olOQRV5V3KihfCxM2DlTcMimda8j0z
3aefM2SvSA167rUPvX28wK4qr1622nmorW484cK4pOmEa/6x0pVToaldhEld
siWXttDoPRJNyIlVAK5grq0qnuGmmecno7evX5+8OT6R9ZhltT0wji4HlrY7
5XGqrxUmpGfZOS5WTNs217hc8jFzsfzdekLDNiJZk8/XKkiDOF5mXMWaO2+y
RpWPvGMakp1/oZwxdIVriNIUzzj7wYi3aHdN4Dxh9S1zEIzozGXLkOvGgZRd
s4UovWdT07JfGjnD1boW2mHQpe04Fcda4y7ZKMs89xC3nis+pAdV4eu1fK6Y
K3GgSthypqwVIFok0a0f3Lt+tDLEWOy6z6zaEVGcU0Cgx+awYQQ61DNSKUCN
9sPQm2Fso2IGIpzTozdHJURj+/NvZAdY6/jKJeEmcQAYiauiY/Jz8ToOvTNs
GyyUy5EcZkYQk6Ol/vHjP12cvHrx8FA3dh8OYYo3M6sVnkWInBnv6Z4F14m/
uOEUTjb3zkyw71zZd1+hk8tKiCMRia4tggI16nzPbieEnbtnpeVLZ0o9P4sx
I4mlvIGPDzl2Iy/FhA9NieU7Yo+vYt7RYVkKqNth7mtvxPnKI+4QMEUReXpy
+QK+OVcKEEgVBc9a7ffj5A/5leCNyRut48lmvUrSzTf+yfPJizp/yS3KSOUv
OaXutvqLTqpbSv2yBORUhf/SZ6iMmzjOo2re4mbYPgmLqfJb5Ru6UmFPiD2J
y3y70nNdwaJoiu/F/aF3+d2xt8Omlgqc8O3i3cFgF54kX5t3eb+AQfI+wiqA
fu29VdbMhc3SN2Vcn+HqmN08bmFWN50nXJNhgp/TqgyffNyqqE3+E67HZqKf
yYpsDvt5LKnIfn9dkgImi5cveD+IseyXOOKGHiVsmFui/D2N56onyqOYcOl8
j+O9e4POgeS9PE4llOXXx8axdphvLVdouEKvVcq3agFHGDUb3Bn9cLm7FqxW
p5lHQXXFpI+DLfaelbBdDdrHQfZffrjcaNyNTgY/Wn0+NtRSypp2PnD4uqjA
nOgCIXb9rNBcirVEn6C9FOa1wm2yN/gac4rbxFsay8qaKniqXC90jXFUJFXa
il6iy462wEJpx4FqVFQEIldgpKpw61MQsz4cauNnrS+IKoOpoRTXtZ/Mb6Mk
nnN6ys7R6GT3E1BqgrvrT9cnSZeCyl3qMqCvuKXEOuLdhsYbXgGbnI3DEQuK
JExiK1PW5Ccc6qaZVfaRjoqbkGE9X2zhmEt104hTg7RskB//KiuEGjoHb/Dj
3+jT5p/hT6O8TvfHv9Ur3DXuoahGQPEsVMD51yLwJ8GnERNlwL9MuL76BVZU
4A9vsMU/3gDnLz4Bgb1WdxsUlgfWv0dXdQlPy2e9lDAxlS1TwsnMRcrVs1ag
2Mbe+cnFJVYRuFgcxecnu+ukEN5WVc2L2syLertGr1dRH/jkO+DEE1f7GIHS
fk9eb9udLoHkKW8zX5a1LteptZ3cqsr1y4uuWrPZ9MZ+8B49xt+JuZhgGJZC
BLDsQtr5WD7RhCeUcx3R/IJuLrzPOfvzsaGbeBqalq4XxyMPAxITbOtQuJ5J
fQMrxhSpyUSVMJukAO7pIrOHIsxJxcUF6loRvuWH0W+qlN1s16kwuaNOZ6Ao
lT0UiaYadCfS6tezG93K81wVmZgWcll+wzLMJqtabFfNylur7AcZNDjKIYaz
m6BxyzizXgyVWo68eMENxee6CVxuOS09gGn0xoU/KlbNWAS6Wl+odRcBo6I0
QqvKK+ACKTeRMXI7cmE4wuljw/uU1bT5xmKMqVZ+61YPEzkkZmzMFpli0xTJ
w69L+6iqcZ1SMlWsSrnyNACRs1ouNTXFGwbhyFKmx1qkR3j30IxuYcl1p6JG
J3c+Xudj7l0rW6l7K5FnWsOP7/PZeMzGujpVqZLc1hQEEWJBoaY70WJVOV98
xVpag7u/5BBdguR0BY6xOmUsbvzphBoFmMxJhqe8hSufrc1nnguaE9G0EM/X
e5VPNabWLWI6UUFKO6tjIRKiMZ+yVqTEx0QhfVB1f8vKlp8sV6kdlmSvVige
b+GpbC2qIvO51Jae3YGuS21SItX+Kkde6lDHDkOVXRTn+cpj0wPfvpTW7QDp
XEerkSKo6VaxEiy1yr+ogM+6XW6zC/qshDPdo670ErvCcPYVa+oaLuHPgGBS
7CXFaQvyUka3jSZ1z73UPWRf+feYlKgirztYWiM9Ff3+UC6yEDvu99oK94Wm
akU6qOy7pmhgo8j4F0JYSwio9rzFphJn2EbOKDoxfNak1nIpm4/Ix39QfLzk
KaOw5Fs0hFEaLFOqP8CJ+HHMK/Qz08le18lsrhfJmwXPZBe1o9k4ul5GmVXY
ecy3ishSEetCmnO6TmTlNprySpIm00KTbyBZ1WxRcVoZpCv2jDFGUuFmE9Vp
nu5VSG51lp9ObzF55E7h2rmsNyrMpbuNy65GXBNKqfNUFRqa/nCy1hTrMmAa
6jdfuAsydw1JLn9E5/Ep4CEwbLFWBgojb1RZkxxNZVhZdymYNMD1wChr2x7i
SZhFc6u7vRSHZX3VZSmCuYjGksyMLiWGc3CwKVf3gtoQDsR4KWkKs2w1wbrT
sooUqZbyUhzrW9cLkItSqzXgGjCW6PFawzyViV5TVCUT2etKtrXTYzob4xbn
xdbnFQq97eaVidAaf7qa/AMmQlJ1fqgMEG4iEsTX8+gfXDSjqNtpnpi6zU8w
GW2uLoG0W4vIXl6yfaTsupNmqPZNZc8137CZfGN2uV7Vq+dW6CaX5cuSDTFn
YhaDmTyNZlEm05dkXYwlmph+dVGa23m2cGcF39Z6wx0PvWi2oLrFQN83qc4F
1thRNhKAlArHMrqRAr0JyMawiFz3W7FJ2VBtkaQLbWYKDERDilsOoYk+F/Ey
pS4EsFFgghlKbnOFU0ljGH1DkmZKukUollTdxlGo+ktM72XfWn6hLn0DV3yo
nPYZ5ioE3dzQNLLxzt5SQwCn6Tl67v7RRNvLdD7nRv7aTrLAVXINbenVV+Uc
x+4NOCNNx7hsKa8ZxOELWTTyBnZq+QmxybNMhdNiLz9EteBWulND16Rw0rgZ
nnI4Gfa2KeCHYWJ1kXUUAD9KTZNYwxBszYOjXgWENb0VjJdr1yvaqG4JcM3E
7T4iuRvP6BHnhjeDb5Yimg7yTNI162zsbqGRPKhafrMorizdqBkQN6jGcqjX
8IrVLC4Mp020xKYPtY+HwCfiWxHNk0nw4KS050qgfrfG5V2zDW/vW6+/XzNJ
MPj7QY3STuDHQbsmsz3wl05NKsH4S7emNWH8tVez7iCE3/u1nEy5IsjgV4Ma
LHFFgLbwJosxWFiX3sRQqX0L72u6hTetyYtc4cFunx5c7zWu2bVi3VKY6tR3
gwyV7k4Yo0/Afkio0qjpT6Pr+bf1qZhkdBuid6zSXFn/Nfquyn+VXtK0iGJg
JH8C7OEem+0eUnSz3WdHNw7Q7sGvD3g2VRW2TqmlBdKxPZZ8AGs0tdxBvmE5
3b72Tmco73EEFkCyjqtuCwx295+LW+IYmAKs+nXYw4H0BgGqLLz6cu5jsVZd
5bo7YwRgusLQUoMw1iDQEfUcd+SVFUGnQU4KvdHWXAZCb13owD7f7Ow2Y9+k
me/6Nu28xRnBM+BiEmIyURgl7C3xtdNS3sfFa1teX/O1hMwiEpySl4icRHJs
K3rBcKBkaHI3Rx/UJVyMTnWnlENHXaajnkVHXfj1wSYW9+qcCi2yVfoGRf2u
MLJBFrXkHu7D0swsfbD8thp6/RVoUgk58NQATFT1Bna+dKon6g1l0BcLL3gt
LwBYdCpIKym7w4ckp+nJh7QzBX1ITKNUBfDQD0+e/UjRCSmh9DsxuGNTH/hG
FrryUC+Pmt3BEPXDGdZ1Zah7op8aX5+pRthYuLHMjG6J/FkWtbwgXMtpKbxV
yL03RLiDliQej12PeleC4q6u/kJjEwsE5+w+9uf3qI+oNJdEx7GZroSmtVUU
1mEK61oU1oFficIIKlbVpC7/JfcW5fFjfEb37/I9w2Q5nl/Nd6hShvQNtOLm
8byJDtgyxlNkGRW+aIds1ZR1Iy3zj74gFdlloqvOvTYHsRH7/HrqqibOmgn+
iuflSjm41JVKd8WCY3kaz5+GyzbjsmPhsg2/Gm6ht2nAqOSFx9Sn0kIuyXiK
p/H1fd2pjipZHLOyWGmXFneBvUkDm3d2NJNuQdUNKtcLKnZd8mTHWPXRHASU
vWOoECXGOBWYEqw2auW2IDJNHoRDPCLEmC5KW9q5S1gtW1hXdTDRdV4ySobl
KliNw4yjopgnmoM9EOlbIGMyD5Q6kG4sKLyjABNlpiK8ZvAh1n33M9RTuHxG
hN/WqdViXVotzG5TpOVAUM82YDLz96BOfxzdJCCzIjAFjmbpf/7fFFTmBwz7
fzyP3mNZ68v//I/r6XIePqjryOCrY7Tez+NxNH8wl3bJNlPclQZJBTgXho6V
7UnVZXSPDDME4/e9uEMZ/Sz1Tufz+JbZztE1sPd770+nb968/dORHc0/eXd+
8v2RNzp5dXk6ar45+fMlEhL12xv95ez85OLidzS/HPxlt91t6ycuTl+cXjRf
oody548JFm7714lgzn4w6A4HXdD5/z+kY5K0B1IBAA==

-->

</rfc>
