<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-oscore-capable-proxies-02" category="std" consensus="true" submissionType="IETF" updates="8613, 8768" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="OSCORE-capable Proxies">OSCORE-capable Proxies</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-capable-proxies-02"/>
    <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="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Object Security for Constrained RESTful Environments (OSCORE) can be used to protect CoAP messages end-to-end between two endpoints at the application layer, also in the presence of intermediaries such as proxies. This document defines how to use OSCORE for protecting CoAP messages also between an origin application endpoint and an intermediary, or between two intermediaries. Also, it defines rules to escalate the protection of a CoAP option, in order to encrypt and integrity-protect it whenever possible. Finally, it defines how to secure a CoAP message by applying multiple, nested OSCORE protections, e.g., both end-to-end between origin application endpoints, and between an application endpoint and an intermediary or between two intermediaries. Therefore, this document updates RFC 8613. Furthermore, this document updates RFC 8768, by explicitly defining the processing with OSCORE for the CoAP option Hop-Limit. The approach defined in this document can be seamlessly used with Group OSCORE, for protecting CoAP messages when group communication is used in the presence of intermediaries.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/core-wg/oscore-capable-proxies"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> supports the presence of intermediaries, such as forward-proxies and reverse-proxies, which assist origin clients by performing requests to origin servers on their behalf, and forwarding back the corresponding responses.</t>
      <t>CoAP supports also group communication scenarios <xref target="I-D.ietf-core-groupcomm-bis"/>, where clients can send a one-to-many request targeting all the servers in the group, e.g., by using IP multicast. Like for one-to-one communication, group settings can also rely on intermediaries <xref target="I-D.ietf-core-groupcomm-proxy"/>.</t>
      <t>The protocol Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> can be used to protect CoAP messages between two endpoints at the application layer, especially achieving end-to-end security in the presence of (non-trusted) intermediaries. When CoAP group communication is used, the same can be achieved by means of the protocol Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
      <t>For a number of use cases (see <xref target="sec-use-cases"/>), it is required and/or beneficial that communications are secured also between an application endpoint (i.e., a CoAP origin client/server) and an intermediary, as well as between two adjacent intermediaries in a chain. This especially applies to the communication leg between the CoAP origin client and the adjacent intermediary acting as next hop towards the CoAP origin server.</t>
      <t>In such cases, and especially if the origin client already uses OSCORE to achieve end-to-end security with the origin server, it would be convenient that OSCORE is used also to secure communications between the origin client and its next hop.</t>
      <t>However, the original specification <xref target="RFC8613"/> does not define how OSCORE can be used to protect CoAP messages in such communication leg, or how to generally process CoAP messages with OSCORE at an intermediary. In fact, this would require to consider also an intermediary as an "OSCORE endpoint".</t>
      <t>This document fills this gap, and updates <xref target="RFC8613"/> as follows.</t>
      <ul spacing="normal">
        <li>
          <t>It defines how to use OSCORE for protecting a CoAP message in the communication leg between: i) an origin client/server and an intermediary; or ii) two adjacent intermediaries in an intermediary chain. That is, besides origin clients/servers, it allows also intermediaries to be "OSCORE endpoints".</t>
        </li>
        <li>
          <t>It defines rules to escalate the protection of a CoAP option that is originally meant to be unprotected or only integrity-protected by OSCORE. This results in both encrypting and integrity-protecting a CoAP option whenever it is possible.</t>
        </li>
        <li>
          <t>It admits a CoAP message to be secured by multiple, nested OSCORE protections applied in sequence, as an "OSCORE-in-OSCORE" process. For instance, this is the case when the message is OSCORE-protected end-to-end between the origin client and origin server, and the result is further OSCORE-protected over the leg between the current and next hop (e.g., the origin client and the adjacent intermediary acting as next hop towards the origin server).</t>
        </li>
      </ul>
      <t>Furthermore, this document updates <xref target="RFC8768"/>, as it explicitly defines the CoAP option Hop-Limit to be of Class E for OSCORE (see <xref target="sec-hop-limit"/>). This prevents undesired message size overhead, in case the Hop-Limit option is first added to a request by an origin client instead of an intermediary.</t>
      <t>This document does not specify any new signaling method to guide the message processing on the different endpoints. In particular, every endpoint is always able to understand what steps to take on an incoming message, depending on the presence of the OSCORE Option and of other CoAP options intended for an intermediary.</t>
      <t>The approach defined in this document can be seamlessly adopted also when Group OSCORE is used, for protecting CoAP messages in group communication scenarios that rely on intermediaries.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts related to CoAP <xref target="RFC7252"/>, OSCORE <xref target="RFC8613"/>, and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>. This document especially builds on concepts and mechanics related to intermediaries such as CoAP forward-proxies and reverse-proxies.</t>
        <t>In addition, this document uses the following terms.</t>
        <ul spacing="normal">
          <li>
            <t>Source application endpoint: an origin client producing a request, or an origin server producing a response.</t>
          </li>
          <li>
            <t>Destination application endpoint: an origin server intended to consume a request, or an origin client intended to consume a response.</t>
          </li>
          <li>
            <t>Application endpoint: a source or destination application endpoint.</t>
          </li>
          <li>
            <t>Source OSCORE endpoint: an endpoint protecting a message with OSCORE or Group OSCORE.</t>
          </li>
          <li>
            <t>Destination OSCORE endpoint: an endpoint unprotecting a message with OSCORE or Group OSCORE.</t>
          </li>
          <li>
            <t>OSCORE endpoint: a source or destination OSCORE endpoint. An OSCORE endpoint is not necessarily also an application endpoint with respect to a certain message.</t>
          </li>
          <li>
            <t>Hop: an endpoint in the end-to-end path between two application endpoints included.</t>
          </li>
          <li>
            <t>Proxy-related options: either of the following (set of) CoAP options that a proxy can use to understand where to forward a CoAP request. These CoAP options are defined in <xref target="RFC7252"/> and <xref target="I-D.ietf-core-href"/>.  </t>
            <ul spacing="normal">
              <li>
                <t>The Proxy-Uri Option or the Proxy-Cri Option. These are relevant when using a forward-proxy.</t>
              </li>
              <li>
                <t>The set of CoAP options comprising the Proxy-Scheme Option or the Proxy-Scheme-Number Option, together with any of the Uri-* Options. This is relevant when using a forward-proxy.</t>
              </li>
              <li>
                <t>The set of CoAP options comprising any of the Uri-Host, Uri-Port, and Uri-Path Options, when those are not used together with the Proxy-Scheme Option or the Proxy-Scheme-Number Option. This is relevant when using a reverse-proxy.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>OSCORE-in-OSCORE: the process by which a message protected with (Group) OSCORE is further protected with (Group) OSCORE. This means that, if such a process is used, a successful decryption and verification of an OSCORE-protected message might yield an OSCORE-protected message.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-use-cases">
      <name>Use Cases</name>
      <t>The approach defined in this document has been motivated by a number of use cases, which are summarized below.</t>
      <section anchor="ssec-uc1">
        <name>CoAP Group Communication with Proxies</name>
        <t>CoAP supports also one-to-many group communication, e.g., over IP multicast <xref target="I-D.ietf-core-groupcomm-bis"/>, which can be protected end-to-end between origin client and origin servers by using Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/>.</t>
        <t>This communication model can be assisted by intermediaries such as a CoAP forward-proxy or reverse-proxy, which relays a group request to the origin servers. If Group OSCORE is used, the proxy is intentionally not a member of the OSCORE group. Furthermore, <xref target="I-D.ietf-core-groupcomm-proxy"/> defines a signaling protocol between origin client and proxy, to ensure that responses from the different origin servers are forwarded back to the origin client within a time interval set by the client, and that they can be distinguished from one another.</t>
        <t>In particular, it is required that the proxy identifies the origin client as allowed-listed, before forwarding a group request to the servers (see <xref section="4" sectionFormat="of" target="I-D.ietf-core-groupcomm-proxy"/>). This requires a security association between the origin client and the proxy, which would be convenient to provide with a dedicated OSCORE Security Context between the two, since the client is possibly using also Group OSCORE with the origin servers.</t>
      </section>
      <section anchor="ssec-uc2">
        <name>CoAP Observe Notifications over Multicast</name>
        <t>The Observe extension for CoAP <xref target="RFC7641"/> allows a client to register its interest in "observing" a resource at a server. The server can then send back notification responses upon changes to the resource representation, all matching with the original observation request.</t>
        <t>In some applications, such as pub-sub <xref target="I-D.ietf-core-coap-pubsub"/>, multiple clients are interested to observe the same resource at the same server. Hence, <xref target="I-D.ietf-core-observe-multicast-notifications"/> defines a method that allows the server to send a multicast notification to all the observer clients at once, e.g., over IP multicast. To this end, the server synchronizes the clients by providing them with a common "phantom observation request", against which the following multicast notifications will match.</t>
        <t>In case the clients and the server use Group OSCORE for end-to-end security and a proxy is also involved, an additional step is required (see <xref section="12" sectionFormat="of" target="I-D.ietf-core-observe-multicast-notifications"/>). That is, clients are in turn required to provide the proxy with the obtained "phantom observation request", thus enabling the proxy to receive the multicast notifications from the server.</t>
        <t>Therefore, it is preferable to have a security association also between each client and the proxy, to especially ensure the integrity of that information provided to the proxy (see <xref section="15.3" sectionFormat="of" target="I-D.ietf-core-observe-multicast-notifications"/>). Like for the use case in <xref target="ssec-uc1"/>, this would be conveniently achieved with a dedicated OSCORE Security Context between a client and the proxy, since the client is also using Group OSCORE with the origin server.</t>
      </section>
      <section anchor="ssec-uc3">
        <name>LwM2M Client and External Application Server</name>
        <t>The Lightweight Machine-to-Machine (LwM2M) protocol <xref target="LwM2M-Core"/> enables a LwM2M Client device to securely bootstrap and then register at a LwM2M Server, with which it will perform most of its following communication exchanges. As per the transport bindings specification of LwM2M <xref target="LwM2M-Transport"/>, the LwM2M Client and LwM2M Server can use CoAP and OSCORE to secure their communications at the application layer, including during the device registration process.</t>
        <t>Furthermore, Section 5.5.1 of <xref target="LwM2M-Transport"/> specifies that:</t>
        <blockquote>
          <t>OSCORE <bcp14>MAY</bcp14> also be used between LwM2M endpoint and non-LwM2M endpoint, e.g., between an Application Server and a LwM2M Client via a LwM2M server. Both the LwM2M endpoint and non-LwM2M endpoint <bcp14>MUST</bcp14> implement OSCORE and be provisioned with an OSCORE Security Context.</t>
        </blockquote>
        <t>In such a case, the LwM2M Server can practically act as forward-proxy between the LwM2M Client and the external Application Server. At the same time, the LwM2M Client and LwM2M Server must continue protecting communications on their leg using their OSCORE Security Context. Like for the use case in <xref target="ssec-uc1"/>, this also allows the LwM2M Server to identify the LwM2M Client, before forwarding its request outside the LwM2M domain and towards the external Application Server.</t>
      </section>
      <section anchor="ssec-uc4">
        <name>LwM2M Gateway</name>
        <t>The specification <xref target="LwM2M-Gateway"/> extends the LwM2M architecture by defining the LwM2M Gateway functionality. That is, a LwM2M Server can manage end IoT devices that are deployed "behind" the LwM2M Gateway. While it is outside the scope of that specification, it is possible for the LwM2M Gateway to use any suitable protocol with its connected end IoT devices, as well as to carry out any required protocol translation.</t>
        <t>Practically, the LwM2M Server can send a request to the LwM2M Gateway, asking to forward it to an end IoT device. With particular reference to CoAP and the related transport binding specified in <xref target="LwM2M-Transport"/>, the LwM2M Server acting as CoAP client sends its request to the LwM2M Gateway acting as CoAP server.</t>
        <t>If CoAP is used in the communication leg between the LwM2M Gateway and the end IoT devices, then the LwM2M Gateway fundamentally acts as a CoAP reverse-proxy (see <xref section="5.7.3" sectionFormat="of" target="RFC7252"/>). That is, in addition to its own resources, the LwM2M Gateway serves the resources hosted by each end IoT device standing behind it, as exposed by the LwM2M Gateway under a dedicated URI path. As per <xref target="LwM2M-Gateway"/>, the first URI path segment is used as "prefix" to identify the specific IoT device, while the remaining URI path segments specify the target resource at the IoT device.</t>
        <t>As per Section 7 of <xref target="LwM2M-Gateway"/>, message exchanges between the LwM2M Server and the L2M2M Gateway are secured using the LwM2M-defined technologies, while the LwM2M protocol does not provide end-to-end security between the LwM2M Server and the end IoT devices. However, the approach defined in this document makes it possible to achieve both goals, by allowing the LwM2M Server to use OSCORE for protecting a message both end-to-end with the targeted end IoT device and with the LwM2M Gateway acting as reverse-proxy.</t>
      </section>
      <section anchor="further-use-cases">
        <name>Further Use Cases</name>
        <t>The approach defined in this document can be useful also in the following use cases relying on a proxy.</t>
        <ul spacing="normal">
          <li>
            <t>A server aware of a suitable cross-proxy can rely on it as a third-party service, in order to indicate transports for CoAP available to that server (see <xref section="4" sectionFormat="of" target="I-D.ietf-core-transport-indication"/>).  </t>
            <t>
From a security point of view, it would be convenient if the proxy could provide suitable credentials to the client, as a general trusted proxy for the system. At the same time, it can be desirable to limit the use of such a proxy to a set of clients which have permission to use it, and that the proxy can identify through a secure communication association.  </t>
            <t>
However, in order for OSCORE to be an applicable security mechanism for this scenario, OSCORE has to be terminated at the proxy. That is, it would be required for a client and the proxy to share a dedicated OSCORE Security Context and to use it for protecting their communication leg.</t>
          </li>
          <li>
            <t>The method specified in <xref target="I-D.ietf-core-coap-pm"/> relies on the Performance Measurement Option to enable network telemetry for CoAP communications. This makes it possible to efficiently measure Round-Trip Time and message losses, both end-to-end and hop-by-hop. In particular, on-path probes such as intermediary proxies can be deployed to perform measurements hop-by-hop.  </t>
            <t>
When OSCORE is used in deployments including on-path probes, an inner Performance Measurement Option is protected end-to-end between the two application endpoints and enables end-to-end measurements between those. At the same time, an outer Performance Measurement Option allows also hop-by-hop measurements to be performed by reying on an on-path probe.  </t>
            <t>
Therefore, it is preferable to have a secure association with an on-path probe, in order to also ensure the integrity of the hop-by-hop measurements exchanged with the probe.</t>
          </li>
          <li>
            <t>The method specified in <xref target="I-D.ietf-ace-coap-est-oscore"/> enables public-key certificate enrollment for Internet of Things deployments. This leverages payload formats defined in Enrollment over Secure Transport (EST) <xref target="RFC7030"/>, while relying on CoAP for message transfer and on OSCORE for message protection.  </t>
            <t>
In real-world deployments, an EST server issuing public-key certificates may reside outside a constrained network that includes devices acting as EST clients. In particular, the EST clients are expected to support only CoAP, while the EST server in a non-constrained network is expected to support only HTTP. This requires a CoAP-to-HTTP proxy to be deployed between the EST clients and the EST server, in order to map CoAP messages with HTTP messages across the two networks.  </t>
            <t>
Even in such a scenario, the EST server and every EST client can still effectively use OSCORE to protect their communications end-to-end. At the same time, it is desirable to have an additional secure association between the EST client and the CoAP-to-HTTP proxy, especially in order for the proxy to identify the EST client before forwarding EST messages out of the CoAP boundary of the constrained network and towards the EST server.</t>
          </li>
          <li>
            <t>A proxy may be deployed to act as an entry point to a firewalled network, which only authenticated clients can join. In particular, authentication can rely on the used secure communication association between a client and the proxy. If the proxy could share a dedicated OSCORE Security Context with each client, the proxy can rely on it to identify the client, before forwarding its messages to any other member of the firewalled network.</t>
          </li>
          <li>
            <t>The approach defined in this document does not pose a limit to the number of OSCORE protections applied to the same CoAP message.  </t>
            <t>
This enables more privacy-oriented scenarios based on proxy chains, where the origin client protects a CoAP request first by using the OSCORE Security Context shared with the origin server, and then by using different OSCORE Security Contexts shared with the different hops in the chain. Once received at a chain hop, the request would be stripped of the OSCORE protection associated with that hop before being forwarded to the next one.  </t>
            <t>
Building on that, it is also possible to enable the operation of hidden services and clients through onion routing with CoAP <xref target="I-D.amsuess-t2trg-onion-coap"/>, similarly to how Tor (The Onion Router) <xref target="TOR-SPEC"/> enables it for TCP-based protocols.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-message-processing">
      <name>Message Processing</name>
      <t>As mentioned in <xref target="intro"/>, this document introduces the following two main deviations from the original OSCORE specification <xref target="RFC8613"/>.</t>
      <ol spacing="normal" type="1"><li>
          <t>An "OSCORE endpoint", as a producer/consumer of an OSCORE Option, can be not only an application endpoint (i.e., an origin client or server), but also an intermediary such as a proxy.  </t>
          <t>
Hence, OSCORE can be used between an origin client/server and a proxy, as well as between two proxies in an intermediary chain.</t>
        </li>
        <li>
          <t>A CoAP message can be secured by multiple OSCORE protections applied in sequence. In such a case, the final result is a message with nested OSCORE protections, as the output of an "OSCORE-in-OSCORE" process. Hence, following a decryption, the resulting message might legitimately include an OSCORE Option, and thus have in turn to be decrypted.  </t>
          <t>
The most common case is expected to consider a message protected with up to two OSCORE layers, i.e.: i) an inner layer, protecting the message end-to-end between the origin client and the origin server acting as application endpoints; and ii) an outer layer, protecting the message between a certain OSCORE endpoint and the other OSCORE endpoint adjacent in the intermediary chain.  </t>
          <t>
However, a message can also be protected with a higher, arbitrary number of nested OSCORE layers, e.g., in scenarios relying on a longer chain of intermediaries. For instance, the origin client can sequentially apply multiple OSCORE layers to a request, each of which to be consumed and removed by one of the intermediaries in the chain, until the origin server is reached and it consumes the innermost OSCORE layer.  </t>
          <t>
An OSCORE endpoint <bcp14>SHOULD</bcp14> define the maximum number of OSCORE layers that it is able to apply (remove) when processing an outgoing (incoming) CoAP message. The defined limit has to appropriately reflect the security requirements of the application. At the same time, such a limit is typically bounded by the maximum number of OSCORE Security Contexts that can be active at the endpoint, and by the number of intermediary OSCORE endpoints that have been explicitly set up by the communicating parties.  </t>
          <t>
If its defined limit is reached when processing a CoAP message, an OSCORE endpoint <bcp14>MUST NOT</bcp14> perform any further OSCORE processing on that message. If the message is an outgoing request and it requires further OSCORE processing beyond the set limit, the endpoint <bcp14>MUST</bcp14> abort the message sending. If the message is an incoming request and it requires further OSCORE processing beyond the set limit, the endpoint <bcp14>MUST</bcp14> reply with a 4.01 (Unauthorized) error response. The endpoint protects such a response by applying the same OSCORE layers that it successfully removed from the corresponding incoming request, but in the reverse order than the one according to which they were removed (see <xref target="outgoing-responses"/>).</t>
        </li>
      </ol>
      <t><xref target="sec-examples"/> provides a number of examples where the approach defined in this document is used to protect message exchanges.</t>
      <section anchor="general-rules">
        <name>Protection of CoAP Options</name>
        <t>Let us consider a sender endpoint that, when protecting an outgoing message M, applies the i-th OSCORE layer in sequence, by using the OSCORE Security Context shared with another OSCORE endpoint X.</t>
        <t>As usual, the sender endpoint encrypts and integrity-protects the CoAP options included in M that are specified as Class E for OSCORE <xref target="RFC8613"/>.</t>
        <t>In addition to that, the sender endpoint <bcp14>MUST</bcp14> perform the procedure defined below for each CoAP option OPT that is included in M and that is originally specified as Class U or I for OSCORE. Depending on the outcome of such a procedure, the sender endpoint processes OPT as per its original Class U or I, or instead as if it was specified as Class E.</t>
        <t>When protecting M by using the OSCORE Security Context shared with another OSCORE endpoint X and applying the i-th OSCORE layer in sequence, the sender endpoint performs the following steps, for each CoAP option OPT included in M and originally defined as Class U or I for OSCORE. <xref target="sec-option-protection-diag"/> provides an overview as a state diagram.</t>
        <t>Note that the sender endpoint can assess some conditions only "to the best of its knowledge". This is due to the possible presence of a reverse-proxy standing for X and whose presence as reverse-proxy is, by definition, expected to be unknown to the sender endpoint.</t>
        <ol spacing="normal" type="1"><li>
            <t>If the sender endpoint has added OPT to M, then this algorithm moves to step 2. Otherwise, this algorithm moves to step 4.</t>
          </li>
          <li>
            <t>If, to the best of the sender endpoint's knowledge, X is a consumer of OPT, then this algorithm moves to step 3. Otherwise, this algorithm moves to step 4.</t>
          </li>
          <li>
            <t>If, to the best of the sender endpoint's knowledge, X is the immediately next consumer of OPT, then this algorithm moves to step 5. Otherwise, this algorithm moves to step 9.</t>
          </li>
          <li>
            <t>If any of the following conditions holds, then this algorithm moves to step 6. Otherwise, this algorithm moves to step 9.  </t>
            <ul spacing="normal">
              <li>
                <t>To the best of the sender endpoint's knowledge, X is the next hop for the sender endpoint; or</t>
              </li>
              <li>
                <t>To the best of the sender endpoint's knowledge, the next hop for the sender endpoint is not the immediately next consumer of OPT.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If X needs to access OPT before having removed the i-th OSCORE layer or in order to remove the i-th OSCORE layer, then this algorithm moves to step 9. Otherwise, this algorithm moves to step 6.</t>
          </li>
          <li>
            <t>If OPT is the Uri-Host or Uri-Port Option, then this algorithm moves to step 7. Otherwise, this algorithm moves to step 8.</t>
          </li>
          <li>
            <t>If M includes the Proxy-Scheme or Proxy-Scheme-Number Option, then this algorithm moves to step 8. Otherwise, this algorithm moves to step 9.</t>
          </li>
          <li>
            <t>The sender endpoint determines that OPT will be processed as if it was specified as Class E for OSCORE, i.e., to be both encrypted and integrity-protected. Then, the sender enpoint terminates this algorithm.</t>
          </li>
          <li>
            <t>The sender endpoint determines that OPT will be processed as per its original Class U or I for OSCORE. Then, the sender enpoint terminates this algorithm.</t>
          </li>
        </ol>
      </section>
      <section anchor="outgoing-requests">
        <name>Processing of an Outgoing Request</name>
        <t>The rules from <xref target="general-rules"/> apply when processing an outgoing request message, with the following additions.</t>
        <t>When a source application endpoint applies multiple OSCORE layers in sequence to protect an outgoing request, and it uses an OSCORE Security Context shared with the other application endpoint, then the first OSCORE layer <bcp14>MUST</bcp14> be applied by using that Security Context.</t>
        <t>After that, the source application endpoint further protects the outgoing request, by applying one OSCORE layer for each intermediary with which it shares an OSCORE Security Context. When doing so, the source application endpoint applies those OSCORE layers in the same order according to which those intermediaries are positioned in the chain, starting from the one closest to the other application endpoint and moving backwards towards the one closest to the source application endpoint.</t>
      </section>
      <section anchor="incoming-requests">
        <name>Processing of an Incoming Request</name>
        <t>Upon receiving a request REQ, the recipient endpoint performs the actions described in the following steps. <xref target="sec-incoming-req-diag"/> provides an overview as a state diagram.</t>
        <ol spacing="normal" type="1"><li>
            <t>If REQ includes proxy-related options, the endpoint moves to step 2. Otherwise, the endpoint moves to step 3.</t>
          </li>
          <li>
            <t>The endpoint proceeds as defined below, depending on which of the two following conditions holds.  </t>
            <ul spacing="normal">
              <li>
                <t>REQ includes either of the following (set) of CoAP options: the Proxy-Uri Option; the Proxy-Cri Option; the Proxy-Scheme Option or the Proxy-Scheme-Number Option, together with any of the Uri-* Options.      </t>
                <t>
If the endpoint is not configured to be a forward-proxy, it <bcp14>MUST</bcp14> stop processing the request and <bcp14>MUST</bcp14> respond with a 5.05 (Proxying Not Supported) error response to (the previous hop towards) the origin client, as per <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses"/>.      </t>
                <t>
Otherwise, the endpoint <bcp14>MUST</bcp14> check whether forwarding this request to (the next hop towards) the origin server is an acceptable operation to perform, according to the endpoint's configuration and a possible authorization enforcement. This check can be based, for instance, on the specific OSCORE Security Context that the endpoint used to decrypt the incoming message, before performing this step.      </t>
                <t>
In case the check fails, the endpoint <bcp14>MUST</bcp14> stop processing the request and <bcp14>MUST</bcp14> respond with a 4.01 (Unauthorized) error response to (the previous hop towards) the origin client, as per <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses"/>.      </t>
                <t>
Instead, in case the check succeeds, the endpoint consumes the proxy-related options as per <xref section="5.7.2" sectionFormat="of" target="RFC7252"/>. In particular, the endpoint checks whether the authority (host and port) of the request URI identifies the endpoint itself. In such a case, the endpoint moves to step 1.      </t>
                <t>
Otherwise, the endpoint forwards REQ to (the next hop towards) the origin server according to the request URI, unless differently indicated in REQ, e.g., by means of any of its CoAP options. For instance, a forward-proxy does not forward a request that includes proxy-related options together with the Listen-To-Multicast-Notifications Option (see <xref section="12" sectionFormat="of" target="I-D.ietf-core-observe-multicast-notifications"/>).      </t>
                <t>
If the endpoint forwards REQ to (the next hop towards) the origin server, this may result in (further) protecting REQ over that communication leg, as per <xref target="outgoing-requests"/>.      </t>
                <t>
After that, the endpoint does not take any further action.</t>
              </li>
              <li>
                <t>REQ does not include the Proxy-Scheme Option or the Proxy-Scheme-Number Option, but it includes one or more Uri-Path Options, and/or the Uri-Host Option, and/or the Uri-Port Option.      </t>
                <t>
If the endpoint is not configured to be a reverse-proxy, or what is targeted by the value of the Uri-Path, Uri-Host, and Uri-Port Options is not intended to support reverse-proxy functionalities, then the endpoint proceeds to step 3.      </t>
                <t>
Otherwise, the endpoint <bcp14>MUST</bcp14> check whether forwarding this request to (the next hop towards) the origin server is an acceptable operation to perform, according to the endpoint's configuration and a possible authorization enforcement. This check can be based, for instance, on the specific OSCORE Security Context that the endpoint used to decrypt the incoming message, before performing this step.      </t>
                <t>
In case the check fails, the endpoint <bcp14>MUST</bcp14> stop processing the request and <bcp14>MUST</bcp14> respond with a 4.01 (Unauthorized) error response to (the previous hop towards) the origin client, as per <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses"/>.      </t>
                <t>
Otherwise, the endpoint consumes the present Uri-Path, Uri-Host, and Uri-Port Options, and forwards REQ to (the next hop towards) the origin server, unless differently indicated in REQ (e.g., by means of any of its CoAP options).      </t>
                <t>
If the endpoint forwards REQ to (the next hop towards) the origin server, this may result in (further) protecting REQ over that communication leg, as per <xref target="outgoing-requests"/>.      </t>
                <t>
After that, the endpoint does not take any further action.      </t>
                <t>
Note that, when forwarding REQ, the endpoint might not remove all the Uri-Path Options originally present, e.g., in case the next hop towards the origin server is a further reverse-proxy.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The endpoint proceeds as defined below, depending on which of the two following conditions holds.  </t>
            <ul spacing="normal">
              <li>
                <t>REQ does not include an OSCORE Option.      </t>
                <t>
If the endpoint does not have an application to handle REQ, it <bcp14>MUST</bcp14> stop processing the request and <bcp14>MAY</bcp14> respond with a 4.00 (Bad Request) error response to (the previous hop towards) the origin client. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses"/>.      </t>
                <t>
Otherwise, the endpoint delivers REQ to the application.</t>
              </li>
              <li>
                <t>REQ includes an OSCORE Option.      </t>
                <t>
If REQ includes any Uri-Path Options, the endpoint <bcp14>MUST</bcp14> stop processing the request and <bcp14>MAY</bcp14> respond with a 4.00 (Bad Request) error response to (the previous hop towards) the origin client. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses"/>.      </t>
                <t>
Otherwise, the endpoint <bcp14>MUST</bcp14> check whether decrypting the request is an acceptable operation to perform, according to the endpoint's configuration and a possible authorization enforcement, and in view of the (previous hop towards the) origin client being the alleged request sender. This check can be based, for instance, on considering the source addressing information of the request, and then asserting whether the OSCORE Security Context indicated by the OSCORE Option is not only available to use, but also present in a local list of OSCORE Security Contexts that are usable to decrypt a request from the alleged request sender.      </t>
                <t>
In case the check fails, the endpoint <bcp14>MUST</bcp14> stop processing the request and <bcp14>MUST</bcp14> respond with a 4.01 (Unauthorized) error response to (the previous hop towards) the origin client, as per <xref section="5.10.2" sectionFormat="of" target="RFC7252"/>. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses"/>.      </t>
                <t>
Instead, in case the check succeeds, the endpoint decrypts REQ using the OSCORE Security Context indicated by the OSCORE Option, i.e., REQ* = dec(REQ). After that, the possible presence of an OSCORE Option in the decrypted request REQ* is not treated as an error situation.      </t>
                <t>
If the OSCORE processing results in an error, the endpoint <bcp14>MUST</bcp14> stop processing the request and performs error handling as per <xref section="8.2" sectionFormat="of" target="RFC8613"/> or Sections <xref target="I-D.ietf-core-oscore-groupcomm" section="8.2" sectionFormat="bare"/> and <xref target="I-D.ietf-core-oscore-groupcomm" section="9.4" sectionFormat="bare"/> of <xref target="I-D.ietf-core-oscore-groupcomm"/>, in case OSCORE or Group OSCORE is used, respectively. In case the endpoint sends an error response to (the previous hop towards) the origin client, this may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses"/>.      </t>
                <t>
Otherwise, REQ takes REQ*, and the endpoint moves to step 1.</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
      <section anchor="outgoing-responses">
        <name>Processing of an Outgoing Response</name>
        <t>The rules from <xref target="general-rules"/> apply when processing an outgoing response message, with the following additions.</t>
        <t>When a source application endpoint applies multiple OSCORE layers in sequence to protect an outgoing response, and it uses an OSCORE Security Context shared with the other application endpoint, then the first OSCORE layer <bcp14>MUST</bcp14> be applied by using that Security Context.</t>
        <t>The sender endpoint protects the response by applying the same OSCORE layers that it removed from the corresponding incoming request, but in the reverse order than the one according to which they were removed.</t>
        <t>In case the response is an error response, the sender endpoint protects it by applying the same OSCORE layers that it successfully removed from the corresponding incoming request, but in the reverse order than the one according to which they were removed.</t>
      </section>
      <section anchor="incoming-responses">
        <name>Processing of an Incoming Response</name>
        <t>The recipient endpoint removes the same OSCORE layers that it added when protecting the corresponding outgoing request, but in the reverse order than the one according to which they were removed.</t>
        <t>When doing so, the possible presence of an OSCORE Option in the decrypted response following the removal of an OSCORE layer is not treated as an error situation, unless it occurs after having removed as many OSCORE layers as were added in the outgoing request. In such a case, the endpoint <bcp14>MUST</bcp14> stop processing the response.</t>
      </section>
    </section>
    <section anchor="sec-hop-limit">
      <name>OSCORE Processing of the Hop-Limit Option</name>
      <t>The CoAP option Hop-Limit is defined in <xref target="RFC8768"/> and can be used to detect forwarding loops through a chain of proxies. The first proxy in the chain that understands the option can include it in a received request (if not present already), then sets a proper integer value specifying the desired maximum number of hops, and finally forward the request to the next hop. Any following proxy that understands the option decrements the option value and forwards the request if the new value is different from zero, or returns a 5.08 (Hop Limit Reached) error response otherwise.</t>
      <t><xref target="RFC8768"/> does not define how the Hop-Limit Option is processed by OSCORE. As a consequence, the default behavior specified in <xref section="4.1" sectionFormat="of" target="RFC8613"/> applies, i.e., the Hop-Limit Option has to be processed as Class E for OSCORE.</t>
      <t>However, this results in additionally and unjustifiably increasing the size of OSCORE-protected CoAP messages, in case the origin client is the first endpoint to add the Hop-Limit Option in a CoAP request. In the typical scenario where the origin client and the origin server share an OSCORE Security Context, the origin client including the Hop-Limit Option in a request will also protect that option when protecting the request end-to-end for the origin server, per the default processing mentioned above. After that, the origin client sends the request to its adjacent proxy in the chain, which will add an outer Hop-Limit Option to be effectively considered from then on as the message is forwarded towards the origin server.</t>
      <t>This prevents the first proxy in the chain from building on the intent from the origin client, which was presumably in the position to specify a better initial value for the Hop-Limit Option. While this does not fundamentally prevent the detection of forwarding loops, it is conducive to deviations from the intention of the origin client. Moreover, it results in undesired overhead due to the presence of the inner Hop-Limit Option included by the client. That inner option will not be visible by the proxies in the chain and therefore will serve no practical purpose, but it will still be conveyed within the request as this traverses each hop towards the origin server.</t>
      <t>In order to prevent that by construction, this section updates <xref target="RFC8768"/> by explicitly defining the Hop-Limit Option to be of Class U for OSCORE.</t>
      <t>Therefore, with reference to the scenario discussed above, the origin client does not protect the Hop-Limit Option when protecting the request end-to-end for the origin server, thus allowing the first proxy in the chain to see and process the Hop-Limit Option as expected.</t>
      <t>When OSCORE is used at proxies like defined in this document, the process defined in <xref target="general-rules"/> seamlessly applies also to the Hop-Limit Option. Therefore, in a scenario where the origin client also shares an OSCORE Security Context with the first proxy in the chain, the origin client does not protect the Hop-Limit Option end-to-end for the origin server, but it does protect it when protecting the request for that proxy by means of their shared OSCORE Security Context.</t>
    </section>
    <section anchor="sec-response-caching">
      <name>Caching of OSCORE-Protected Responses</name>
      <t>Although it is not possible as per the original OSCORE specification <xref target="RFC8613"/>, effective cacheability of OSCORE-protected responses at proxies can be achieved. To this end, the approach defined in <xref target="I-D.amsuess-core-cachable-oscore"/> can be used, as based on Deterministic Requests protected with the pairwise mode of Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> used end-to-end between an origin client and an origin server. The applicability of this approach is limited to requests that are safe (in the RESTful sense) to process and do not yield side effects at the origin server.</t>
      <t>In particular, this approach requires both the origin client and the origin server to have already joined the correct OSCORE group. Then, starting from the same plain CoAP request, different clients in the OSCORE group are able to deterministically generate a same request protected with Group OSCORE, which is sent to a proxy for being forwarded to the origin server. The proxy can effectively cache the resulting OSCORE-protected response from the server, since the same plain CoAP request will result again in the same Deterministic Request and thus will produce a cache hit.</t>
      <t>When using this approach, the following also applies in addition to what is defined in <xref target="sec-message-processing"/>, when processing incoming messages at a proxy that implements caching of responses.</t>
      <ul spacing="normal">
        <li>
          <t>Upon receiving a request from (the previous hop towards) the origin client, the proxy checks if specifically the message available during the execution of step 2 in <xref target="incoming-requests"/> produces a cache hit.  </t>
          <t>
That is, such a message: i) is exactly the one to be forwarded to (the next hop towards) the origin server, if no cache hit has occurred; and ii) is the result of an OSCORE decryption at the proxy, if OSCORE is used on the communication leg between the proxy and (the previous hop towards) the origin client.</t>
        </li>
        <li>
          <t>Upon receiving a response from (the next hop towards) the origin server, the proxy first removes the same OSCORE layers that it added when protecting the corresponding outgoing request, as defined in <xref target="incoming-responses"/>.  </t>
          <t>
Then, the proxy stores specifically that resulting response message in its cache. That is, such a message is exactly the one to be forwarded to (the previous hop towards) the origin client.</t>
        </li>
      </ul>
      <t>The specific rules about serving a request with a cached response are defined in <xref section="5.6" sectionFormat="of" target="RFC7252"/>, as well as in <xref section="7" sectionFormat="of" target="I-D.ietf-core-groupcomm-proxy"/> for group communication scenarios.</t>
    </section>
    <section anchor="establishment-of-oscore-security-contexts">
      <name>Establishment of OSCORE Security Contexts</name>
      <t>Like the original OSCORE specification <xref target="RFC8613"/>, this document is not devoted to any particular approach that two OSCORE endpoints use for establishing an OSCORE Security Context.</t>
      <t>At the same time, the following applies, depending on the two peers using OSCORE or Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm"/> to protect their communications.</t>
      <ul spacing="normal">
        <li>
          <t>When using OSCORE, the establishment of the OSCORE Security Context can rely on the authenticated key exchange protocol EDHOC <xref target="RFC9528"/>.  </t>
          <t>
Assuming that OSCORE has to be used both between the two origin application endpoints as well as between the origin client and the first proxy in the chain, it is expected that the origin client first runs EDHOC with the first proxy in the chain, and then with the origin server through the chain of proxies (see the example in <xref target="sec-example-edhoc"/>).  </t>
          <t>
Furthermore, the additional use of the combined EDHOC + OSCORE request defined in <xref target="I-D.ietf-core-oscore-edhoc"/> is particularly beneficial in this case (see the example in <xref target="sec-example-edhoc-comb-req"/>), and especially when relying on a long chain of proxies.</t>
        </li>
        <li>
          <t>The use of Group OSCORE is expected to be limited between the origin applications endpoints, e.g., between the origin client and multiple origin servers. In order to join the same OSCORE group and obtain the corresponding Group OSCORE Security Context, those endpoints can use the approach defined in <xref target="I-D.ietf-ace-key-groupcomm-oscore"/> and based on the ACE framework for Authentication and Authorization in constrained environments <xref target="RFC9200"/>.  </t>
          <t>
For the purposes of this document, there is no need for a proxy to also be a member of the OSCORE group whose Group OSCORE Security Context is used by the origin application endpoints for protecting communications end-to-end.</t>
        </li>
      </ul>
    </section>
    <section anchor="coap-header-compression-with-schc">
      <name>CoAP Header Compression with SCHC</name>
      <t>The method defined in this document enables and results in the possible protection of the same CoAP message with multiple, nested OSCORE layers. Especially when this happens, it is desirable to compress the header of protected CoAP messages, in order to improve performance and ensure that CoAP is usable also in Low-Power Wide-Area Networks (LPWANs).</t>
      <t>To this end, it is possible to use the Static Context Header Compression and fragmentation (SCHC) framework <xref target="RFC8724"/>. In particular, <xref target="I-D.ietf-schc-8824-update"/> specifies how to use SCHC for compressing headers of CoAP messages, also when messages are protected with OSCORE. The SCHC Compression/Decompression is applicable also in the presence of CoAP proxies, and especially to the two following cases.</t>
      <ul spacing="normal">
        <li>
          <t>In case OSCORE is not used at all, the SCHC processing occurs hop-by-hop, by relying on SCHC Rules that are consistently shared between two adjacent hops.</t>
        </li>
        <li>
          <t>In case OSCORE is used only end-to-end between the application endpoints, then an Inner SCHC Compression/Decompression and an Outer SCHC Compression/Decompression are performed (see <xref section="8.2" sectionFormat="of" target="I-D.ietf-schc-8824-update"/>). In particular, the following holds.  </t>
          <t>
The SCHC processing occurs end-to-end as to the Inner SCHC Compression/Decompression. This relies on Inner SCHC Rules that are shared between the two application endpoints, which act as OSCORE endpoints and share the used OSCORE Security Context.  </t>
          <t>
The SCHC processing occurs hop-by-hop as to the Outer SCHC Compression/Decompression. This relies on Outer SCHC Rules that are shared between two adjacent hops.</t>
        </li>
      </ul>
      <t>When using the method defined in this document, and thus enabling also an intermediary proxy to be an OSCORE endpoint, the SCHC processing above is generalized as specified below.</t>
      <t>When processing an outgoing CoAP message, a sender endpoint proceeds as follows.</t>
      <ul spacing="normal">
        <li>
          <t>The sender endpoint performs one Inner SCHC Compression for each OSCORE layer applied to the outgoing message.  </t>
          <t>
Each Inner SCHC Compression occurs before protecting the message with that OSCORE layer, and relies on the SCHC Rules that are shared with the other OSCORE endpoint.</t>
        </li>
        <li>
          <t>The sender endpoint performs exactly one Outer SCHC Compression.  </t>
          <t>
This occurs after having performed all the intended OSCORE protections of the outgoing message, and relies on the SCHC Rules that are shared with the (next hop towards the) destination application endpoint.</t>
        </li>
      </ul>
      <t>That is, with respect to the SCHC Compression/Decompression processing, the following holds.</t>
      <t>An Inner SCHC Compression is intended for a destination OSCORE endpoint, which performs the following steps.</t>
      <ol spacing="normal" type="1"><li>
          <t>It decrypts an incoming message with the OSCORE Security Context shared with the other OSCORE endpoint.</t>
        </li>
        <li>
          <t>It performs the corresponding Inner SCHC Decompression, by relying on the SCHC Rules shared with the other OSCORE endpoint.</t>
        </li>
      </ol>
      <t>An Outer SCHC Compression is intended for the (next hop towards the) destination application endpoint, which performs the following steps.</t>
      <ol spacing="normal" type="1"><li>
          <t>It performs a corresponding Outer SCHC Decompression on an incoming message, by relying on the SCHC Rules shared with the previous hop towards the destination application endpoint.</t>
        </li>
        <li>
          <t>Unless it is exactly the destination application endpoint, it performs a new Outer SCHC Compression on the result from the previous step, by relying on the SCHC Rules shared with the (next hop towards the) destination application endpoint. Then, it sends the result to the (next-hop towards the) destination application endpoint.</t>
        </li>
      </ol>
      <t>Note that the generalization above does not alter the core approach, design choices, and features of the SCHC Compression/Decompression applied to CoAP headers.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations about CoAP <xref target="RFC7252"/> and group communication for CoAP <xref target="I-D.ietf-core-groupcomm-bis"/> apply to this document. The same security considerations from <xref target="RFC8613"/> and <xref target="I-D.ietf-core-oscore-groupcomm"/> apply to this document, when using OSCORE or Group OSCORE to protect exchanged messages.</t>
      <t>Further security considerations to take into account are inherited from the specifically used CoAP options, extensions, and methods employed when relying on OSCORE or Group OSCORE.</t>
      <t>This document does not change the security properties of OSCORE and Group OSCORE. That is, given any two OSCORE endpoints, the method defined in this document provides them with the same security guarantees that OSCORE and Group OSCORE provide in the case where such endpoints are specifically application endpoints.</t>
      <section anchor="preserving-location-anonimity">
        <name>Preserving Location Anonimity</name>
        <t>Before decrypting an incoming request (see step 3 in <xref target="incoming-requests"/>), the recipient endpoint checks whether decrypting the request is an acceptable operation to perform, according to the endpoint's configuration and a possible authorization enforcement, and in the light of the alleged request sender and the OSCORE Security Context to use.</t>
        <t>This is particularly relevant for an origin server that expects to receive messages protected end-to-end by origin clients, but only if sent by a reverse-proxy as its adjacent hop.</t>
        <t>In such a setup, that check prevents a malicious sender endpoint C from associating the addressing information of the origin server S with the OSCORE Security Context CTX that C and S are sharing. Making such an association would compromise the location anonimity of the origin server, as otherwise afforded by the reverse-proxy.</t>
        <t>That is, if C gains knowledge of some addressing information ADDR, then C might send a request directly addressed to ADDR and protected with CTX. A response protected with CTX would prove that ADDR is in fact the addressing information of S.</t>
        <t>However, after performing and failing the check on the received request, S replies with a 4.01 (Unauthorized) error response that is not protected with CTX, hence preserving the location anonimity of the origin server.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <section anchor="iana-coap-options">
        <name>CoAP Option Numbers Registry</name>
        <t>IANA is asked to add this document as an additional reference for the Hop-Limit Option in the "CoAP Option Numbers" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="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="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>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="RFC8768">
          <front>
            <title>Constrained Application Protocol (CoAP) Hop-Limit Option</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="T. Reddy.K" initials="T." surname="Reddy.K"/>
            <author fullname="J. Shallow" initials="J." surname="Shallow"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>The presence of Constrained Application Protocol (CoAP) proxies may lead to infinite forwarding loops, which is undesirable. To prevent and detect such loops, this document specifies the Hop-Limit CoAP option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8768"/>
          <seriesInfo name="DOI" value="10.17487/RFC8768"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document defines the security protocol Group Object Security for
   Constrained RESTful Environments (Group OSCORE), providing end-to-end
   security of CoAP messages exchanged between members of a group, e.g.,
   sent over IP multicast.  In particular, the described protocol
   defines how OSCORE is used in a group communication setting to
   provide source authentication for CoAP group requests, sent by a
   client to multiple servers, and for protection of the corresponding
   CoAP responses.  Group OSCORE also defines a pairwise mode where each
   member of the group can efficiently derive a symmetric pairwise key
   with any other member of the group for pairwise OSCORE communication.
   Group OSCORE can be used between endpoints communicating with CoAP or
   CoAP-mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-21"/>
        </reference>
        <reference anchor="I-D.ietf-core-href">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="21" month="April" year="2024"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that represents the URI components
   in Concise Binary Object Representation (CBOR) instead of in a
   sequence of characters.  This simplifies parsing, comparison, and
   reference resolution in environments with severe limitations on
   processing power, code size, and memory size.


   // (This "cref" paragraph will be removed by the RFC editor:) The
   // present revision –15 of this draft continues -14 by picking up
   // more comments, such as moving to a CRI scheme number registration
   // system based on unsigned numbers.  This revision still contains
   // open issues and is intended to serve as a snapshot.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-15"/>
        </reference>
        <reference anchor="I-D.ietf-schc-8824-update">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Ivan Martinez" initials="I." surname="Martinez">
              <organization>Nokia Bell Labs</organization>
            </author>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document defines how to compress Constrained Application
   Protocol (CoAP) headers using the Static Context Header Compression
   and fragmentation (SCHC) framework.  SCHC defines a header
   compression mechanism adapted for Constrained Devices.  SCHC uses a
   static description of the header to reduce the header's redundancy
   and size.  While RFC 8724 describes the SCHC compression and
   fragmentation framework, and its application for IPv6/UDP headers,
   this document applies SCHC to CoAP headers.  The CoAP header
   structure differs from IPv6 and UDP, since CoAP uses a flexible
   header with a variable number of options, themselves of variable
   length.  The CoAP message format is asymmetric: the request messages
   have a header format different from the format in the response
   messages.  This specification gives guidance on applying SCHC to
   flexible headers and how to leverage the asymmetry for more efficient
   compression Rules.  This document replaces and obsoletes RFC 8824.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-8824-update-01"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="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="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-bis">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang" initials="C." surname="Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="24" month="April" year="2024"/>
            <abstract>
              <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces and obsoletes RFC 7390, while it updates RFC 7252
   and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-11"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-proxy">
          <front>
            <title>Proxy Operations for CoAP Group Communication</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document specifies the operations performed by a proxy, when
   using the Constrained Application Protocol (CoAP) in group
   communication scenarios.  Such a proxy processes a single request
   sent by a client over unicast, and distributes the request to a group
   of servers, e.g., over UDP/IP multicast as the defined default
   transport protocol.  Then, the proxy collects the individual
   responses from those servers and relays those responses back to the
   client, in a way that allows the client to distinguish the responses
   and their origin servers through embedded addressing information.
   This document updates RFC7252 with respect to caching of response
   messages at proxies.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-proxy-01"/>
        </reference>
        <reference anchor="I-D.ietf-core-observe-multicast-notifications">
          <front>
            <title>Observe Notifications as CoAP Multicast Responses</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="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) allows clients to
   "observe" resources at a server, and receive notifications as unicast
   responses upon changes of the resource state.  In some use cases,
   such as based on publish-subscribe, it would be convenient for the
   server to send a single notification addressed to all the clients
   observing a same target resource.  This document updates RFC7252 and
   RFC7641, and defines how a server sends observe notifications as
   response messages over multicast, synchronizing all the observers of
   a same resource on a same shared Token value.  Besides, this document
   defines how Group OSCORE can be used to protect multicast
   notifications end-to-end between the server and the observer clients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-observe-multicast-notifications-08"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc">
          <front>
            <title>Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Application Protocol (CoAP) and Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov" initials="S." surname="Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <date day="9" month="April" year="2024"/>
            <abstract>
              <t>   The lightweight authenticated key exchange protocol Ephemeral Diffie-
   Hellman Over COSE (EDHOC) can be run over the Constrained Application
   Protocol (CoAP) and used by two peers to establish a Security Context
   for the security protocol Object Security for Constrained RESTful
   Environments (OSCORE).  This document details this use of the EDHOC
   protocol, by specifying a number of additional and optional
   mechanisms.  These especially include an optimization approach for
   combining the execution of EDHOC with the first OSCORE transaction.
   This combination reduces the number of round trips required to set up
   an OSCORE Security Context and to complete an OSCORE transaction
   using that Security Context.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-11"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="18" month="April" year="2024"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-14"/>
        </reference>
        <reference anchor="I-D.ietf-core-transport-indication">
          <front>
            <title>CoAP Transport Indication</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <date day="18" month="March" year="2024"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP, [RFC7252]) is available
   over different transports (UDP, DTLS, TCP, TLS, WebSockets), but
   lacks a way to unify these addresses.  This document provides
   terminology and provisions based on Web Linking [RFC8288] to express
   alternative transports available to a device, and to optimize
   exchanges using these.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-transport-indication-05"/>
        </reference>
        <reference anchor="I-D.ietf-ace-key-groupcomm-oscore">
          <front>
            <title>Key Management for OSCORE Groups in ACE</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Jiye Park" initials="J." surname="Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="6" month="March" year="2023"/>
            <abstract>
              <t>   This document defines an application profile of the ACE framework for
   Authentication and Authorization, to request and provision keying
   material in group communication scenarios that are based on CoAP and
   are secured with Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  This application profile delegates the
   authentication and authorization of Clients, that join an OSCORE
   group through a Resource Server acting as Group Manager for that
   group.  This application profile leverages protocol-specific
   transport profiles of ACE to achieve communication security, server
   authentication 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="Internet-Draft" value="draft-ietf-ace-key-groupcomm-oscore-16"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pm">
          <front>
            <title>Constrained Application Protocol (CoAP) Performance Measurement Option</title>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei</organization>
            </author>
            <author fullname="Tianran Zhou" initials="T." surname="Zhou">
              <organization>Huawei</organization>
            </author>
            <author fullname="Massimo Nilo" initials="M." surname="Nilo">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Fabrizio Milan" initials="F." surname="Milan">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Fabio Bulgarella" initials="F." surname="Bulgarella">
              <organization>Telecom Italia</organization>
            </author>
            <date day="19" month="April" year="2024"/>
            <abstract>
              <t>   This document specifies a method for the Performance Measurement of
   the Constrained Application Protocol (CoAP).  A new CoAP option is
   defined in order to enable network telemetry both end-to-end and hop-
   by-hop.  The endpoints cooperate by marking and, possibly, mirroring
   information on the round-trip connection.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-coap-est-oscore-05"/>
        </reference>
        <reference anchor="I-D.amsuess-core-cachable-oscore">
          <front>
            <title>Cacheable OSCORE</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="January" year="2024"/>
            <abstract>
              <t>   Group communication with the Constrained Application Protocol (CoAP)
   can be secured end-to-end using Group Object Security for Constrained
   RESTful Environments (Group OSCORE), also across untrusted
   intermediary proxies.  However, this sidesteps the proxies' abilities
   to cache responses from the origin server(s).  This specification
   restores cacheability of protected responses at proxies, by
   introducing consensus requests which any client in a group can send
   to one server or multiple servers in the same group.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-cachable-oscore-08"/>
        </reference>
        <reference anchor="I-D.amsuess-t2trg-onion-coap">
          <front>
            <title>Using onion routing with CoAP</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="17" month="May" year="2024"/>
            <abstract>
              <t>   The CoAP protocol was designed with direct connections and proxies in
   mind.  This document defines mechanisms by which chains of proxies
   can be set up.  In combination, they enable the operation of hidden
   services and client similar to how Tor (The Onion Router) enables it
   for TCP based protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-t2trg-onion-coap-02"/>
        </reference>
        <reference anchor="LwM2M-Core" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Core-V1_2-20201110-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification - Core, Approved Version 1.2, OMA-TS-LightweightM2M_Core-V1_2-20201110-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
        <reference anchor="LwM2M-Transport" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Transport-V1_2-20201110-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification - Transport Bindings, Approved Version 1.2, OMA-TS-LightweightM2M_Transport-V1_2-20201110-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
        <reference anchor="LwM2M-Gateway" target="https://www.openmobilealliance.org/release/LwM2M_Gateway/V1_1-20210518-A/OMA-TS-LWM2M_Gateway-V1_1-20210518-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Gateway Technical Specification - Approved Version 1.1, OMA-TS-LWM2M_Gateway-V1_1-20210518-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2021" month="May"/>
          </front>
        </reference>
        <reference anchor="TOR-SPEC" target="https://spec.torproject.org/">
          <front>
            <title>Tor Specifications</title>
            <author>
              <organization>Tor Project</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="sec-examples">
      <name>Examples of Message Exchanges</name>
      <t>This section provides a number of examples where the approach defined in this document is used to protect message exchanges.</t>
      <t>The presented examples build on the example shown in <xref section="A.1" sectionFormat="of" target="RFC8613"/>, and illustrate an origin client requesting the alarm status from an origin server, through a forward-proxy.</t>
      <t>The abbreviations "REQ" and "RESP" are used to denote a request message and a response message, respectively.</t>
      <section anchor="example-1">
        <name>Example 1</name>
        <t>In the example shown in <xref target="fig-example-client-proxy"/>, message exchanges are protected with OSCORE over the following legs.</t>
        <ul spacing="normal">
          <li>
            <t>End-to-end, between the client and the server, using the OSCORE Security Context CTX_C_S. The client uses the OSCORE Sender ID 0x5f when using OSCORE with the server.</t>
          </li>
          <li>
            <t>Between the client and the proxy, using the OSCORE Security Context CTX_C_P. The client uses the OSCORE Sender ID 0x20 when using OSCORE with the proxy.</t>
          </li>
        </ul>
        <figure anchor="fig-example-client-proxy">
          <name>Use of OSCORE between Client-Server and Client-Proxy</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1360" width="544" viewBox="0 0 544 1360" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 24,104 L 24,112" fill="none" stroke="black"/>
                <path d="M 24,168 L 24,1168" fill="none" stroke="black"/>
                <path d="M 24,1224 L 24,1232" fill="none" stroke="black"/>
                <path d="M 24,1288 L 24,1296" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,400" fill="none" stroke="black"/>
                <path d="M 88,456 L 88,896" fill="none" stroke="black"/>
                <path d="M 88,952 L 88,1296" fill="none" stroke="black"/>
                <path d="M 152,48 L 152,624" fill="none" stroke="black"/>
                <path d="M 152,680 L 152,688" fill="none" stroke="black"/>
                <path d="M 152,744 L 152,1296" fill="none" stroke="black"/>
                <path d="M 24,192 L 80,192" fill="none" stroke="black"/>
                <path d="M 88,480 L 144,480" fill="none" stroke="black"/>
                <path d="M 96,768 L 152,768" fill="none" stroke="black"/>
                <path d="M 32,976 L 88,976" fill="none" stroke="black"/>
                <path d="M 264,384 L 272,368" fill="none" stroke="black"/>
                <path d="M 272,384 L 284,360" fill="none" stroke="black"/>
                <path d="M 264,1152 L 272,1136" fill="none" stroke="black"/>
                <path d="M 272,1152 L 280,1136" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="152,480 140,474.4 140,485.6" fill="black" transform="rotate(0,144,480)"/>
                <polygon class="arrowhead" points="104,768 92,762.4 92,773.6" fill="black" transform="rotate(180,96,768)"/>
                <polygon class="arrowhead" points="88,192 76,186.4 76,197.6" fill="black" transform="rotate(0,80,192)"/>
                <polygon class="arrowhead" points="40,976 28,970.4 28,981.6" fill="black" transform="rotate(180,32,976)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Proxy</text>
                  <text x="148" y="36">Server</text>
                  <text x="24" y="52">|</text>
                  <text x="32" y="68">Encrypt</text>
                  <text x="16" y="84">REQ</text>
                  <text x="52" y="84">with</text>
                  <text x="32" y="100">CTX_C_S</text>
                  <text x="32" y="132">Encrypt</text>
                  <text x="16" y="148">REQ</text>
                  <text x="52" y="148">with</text>
                  <text x="32" y="164">CTX_C_P</text>
                  <text x="216" y="196">Code:</text>
                  <text x="260" y="196">0.02</text>
                  <text x="308" y="196">(POST)</text>
                  <text x="52" y="212">POST</text>
                  <text x="212" y="212">Token:</text>
                  <text x="260" y="212">0x8c</text>
                  <text x="208" y="228">OSCORE:</text>
                  <text x="284" y="228">[kid:0x20,</text>
                  <text x="360" y="228">Partial</text>
                  <text x="420" y="228">IV:31]</text>
                  <text x="212" y="244">0xff</text>
                  <text x="204" y="260">Payload:</text>
                  <text x="268" y="260">{Code:</text>
                  <text x="316" y="260">0.02</text>
                  <text x="368" y="260">(POST),</text>
                  <text x="280" y="276">OSCORE:</text>
                  <text x="356" y="276">[kid:0x5f,</text>
                  <text x="432" y="276">Partial</text>
                  <text x="496" y="276">IV:42],</text>
                  <text x="288" y="292">Uri-Host:</text>
                  <text x="388" y="292">"example.com",</text>
                  <text x="304" y="308">Proxy-Scheme:</text>
                  <text x="392" y="308">"coap",</text>
                  <text x="272" y="324">0xff,</text>
                  <text x="276" y="340">{Code:</text>
                  <text x="324" y="340">0.01</text>
                  <text x="372" y="340">(GET),</text>
                  <text x="296" y="356">Uri-Path:</text>
                  <text x="396" y="356">"alarm_status"</text>
                  <text x="256" y="372">}</text>
                  <text x="328" y="372">Encrypted</text>
                  <text x="388" y="372">with</text>
                  <text x="440" y="372">CTX_C_S</text>
                  <text x="248" y="388">}</text>
                  <text x="320" y="388">Encrypted</text>
                  <text x="380" y="388">with</text>
                  <text x="432" y="388">CTX_C_P</text>
                  <text x="96" y="420">Decrypt</text>
                  <text x="80" y="436">REQ</text>
                  <text x="116" y="436">with</text>
                  <text x="96" y="452">CTX_C_P</text>
                  <text x="216" y="484">Code:</text>
                  <text x="260" y="484">0.02</text>
                  <text x="308" y="484">(POST)</text>
                  <text x="116" y="500">POST</text>
                  <text x="212" y="500">Token:</text>
                  <text x="260" y="500">0x7b</text>
                  <text x="200" y="516">Uri-Host:</text>
                  <text x="296" y="516">"example.com"</text>
                  <text x="208" y="532">OSCORE:</text>
                  <text x="284" y="532">[kid:0x5f,</text>
                  <text x="360" y="532">Partial</text>
                  <text x="420" y="532">IV:42]</text>
                  <text x="212" y="548">0xff</text>
                  <text x="204" y="564">Payload:</text>
                  <text x="248" y="564">{</text>
                  <text x="272" y="580">Code:</text>
                  <text x="316" y="580">0.01</text>
                  <text x="364" y="580">(GET),</text>
                  <text x="288" y="596">Uri-Path:</text>
                  <text x="388" y="596">"alarm_status"</text>
                  <text x="248" y="612">}</text>
                  <text x="268" y="612">//</text>
                  <text x="320" y="612">Encrypted</text>
                  <text x="380" y="612">with</text>
                  <text x="432" y="612">CTX_C_S</text>
                  <text x="160" y="644">Decrypt</text>
                  <text x="144" y="660">REQ</text>
                  <text x="180" y="660">with</text>
                  <text x="160" y="676">CTX_C_S</text>
                  <text x="160" y="708">Encrypt</text>
                  <text x="148" y="724">RESP</text>
                  <text x="188" y="724">with</text>
                  <text x="160" y="740">CTX_C_S</text>
                  <text x="216" y="772">Code:</text>
                  <text x="260" y="772">2.04</text>
                  <text x="320" y="772">(Changed)</text>
                  <text x="124" y="788">2.04</text>
                  <text x="212" y="788">Token:</text>
                  <text x="260" y="788">0x7b</text>
                  <text x="208" y="804">OSCORE:</text>
                  <text x="248" y="804">-</text>
                  <text x="212" y="820">0xff</text>
                  <text x="204" y="836">Payload:</text>
                  <text x="268" y="836">{Code:</text>
                  <text x="316" y="836">2.05</text>
                  <text x="380" y="836">(Content),</text>
                  <text x="272" y="852">0xff,</text>
                  <text x="264" y="868">"0"</text>
                  <text x="248" y="884">}</text>
                  <text x="268" y="884">//</text>
                  <text x="320" y="884">Encrypted</text>
                  <text x="380" y="884">with</text>
                  <text x="432" y="884">CTX_C_S</text>
                  <text x="96" y="916">Encrypt</text>
                  <text x="84" y="932">RESP</text>
                  <text x="124" y="932">with</text>
                  <text x="96" y="948">CTX_C_P</text>
                  <text x="216" y="980">Code:</text>
                  <text x="260" y="980">2.04</text>
                  <text x="320" y="980">(Changed)</text>
                  <text x="60" y="996">2.04</text>
                  <text x="212" y="996">Token:</text>
                  <text x="260" y="996">0x8c</text>
                  <text x="208" y="1012">OSCORE:</text>
                  <text x="248" y="1012">-</text>
                  <text x="212" y="1028">0xff</text>
                  <text x="204" y="1044">Payload:</text>
                  <text x="268" y="1044">{Code:</text>
                  <text x="316" y="1044">2.04</text>
                  <text x="380" y="1044">(Changed),</text>
                  <text x="280" y="1060">OSCORE:</text>
                  <text x="324" y="1060">-,</text>
                  <text x="272" y="1076">0xff,</text>
                  <text x="276" y="1092">{Code:</text>
                  <text x="324" y="1092">2.05</text>
                  <text x="388" y="1092">(Content),</text>
                  <text x="280" y="1108">0xff,</text>
                  <text x="272" y="1124">"0"</text>
                  <text x="256" y="1140">}</text>
                  <text x="328" y="1140">Encrypted</text>
                  <text x="388" y="1140">with</text>
                  <text x="440" y="1140">CTX_C_S</text>
                  <text x="248" y="1156">}</text>
                  <text x="320" y="1156">Encrypted</text>
                  <text x="380" y="1156">with</text>
                  <text x="432" y="1156">CTX_C_P</text>
                  <text x="32" y="1188">Decrypt</text>
                  <text x="20" y="1204">RESP</text>
                  <text x="60" y="1204">with</text>
                  <text x="32" y="1220">CTX_C_P</text>
                  <text x="32" y="1252">Decrypt</text>
                  <text x="20" y="1268">RESP</text>
                  <text x="60" y="1268">with</text>
                  <text x="32" y="1284">CTX_C_S</text>
                  <text x="28" y="1332">Square</text>
                  <text x="92" y="1332">brackets</text>
                  <text x="136" y="1332">[</text>
                  <text x="160" y="1332">...</text>
                  <text x="184" y="1332">]</text>
                  <text x="228" y="1332">indicate</text>
                  <text x="296" y="1332">content</text>
                  <text x="340" y="1332">of</text>
                  <text x="396" y="1332">compressed</text>
                  <text x="460" y="1332">COSE</text>
                  <text x="512" y="1332">object.</text>
                  <text x="24" y="1348">Curly</text>
                  <text x="84" y="1348">brackets</text>
                  <text x="128" y="1348">{</text>
                  <text x="152" y="1348">...</text>
                  <text x="176" y="1348">}</text>
                  <text x="220" y="1348">indicate</text>
                  <text x="296" y="1348">encrypted</text>
                  <text x="360" y="1348">data.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client  Proxy  Server
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_S   |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0x8c
  |       |       |   OSCORE: [kid:0x20, Partial IV:31]
  |       |       |     0xff
  |       |       |  Payload: {Code: 0.02 (POST),
  |       |       |            OSCORE: [kid:0x5f, Partial IV:42],
  |       |       |            Uri-Host: "example.com",
  |       |       |            Proxy-Scheme: "coap",
  |       |       |            0xff,
  |       |       |            {Code: 0.01 (GET),
  |       |       |             Uri-Path: "alarm_status"
  |       |       |            } // Encrypted with CTX_C_S
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |       +------>|     Code: 0.02 (POST)
  |       | POST  |    Token: 0x7b
  |       |       | Uri-Host: "example.com"
  |       |       |   OSCORE: [kid:0x5f, Partial IV:42]
  |       |       |     0xff
  |       |       |  Payload: {
  |       |       |            Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_C_S
  |       |       |
  |       |<------+     Code: 2.04 (Changed)
  |       |  2.04 |    Token: 0x7b
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |     Code: 2.04 (Changed)
  |  2.04 |       |    Token: 0x8c
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.04 (Changed),
  |       |       |            OSCORE: -,
  |       |       |            0xff,
  |       |       |            {Code: 2.05 (Content),
  |       |       |             0xff,
  |       |       |             "0"
  |       |       |            } // Encrypted with CTX_C_S
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_P   |       |
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_S   |       |
  |       |       |

Square brackets [ ... ] indicate content of compressed COSE object.
Curly brackets { ... } indicate encrypted data.
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="example-2">
        <name>Example 2</name>
        <t>In the example shown in <xref target="fig-example-proxy-server"/>, message exchanges are protected with OSCORE over the following legs.</t>
        <ul spacing="normal">
          <li>
            <t>End-to-end between the client and the server, using the OSCORE Security Context CTX_C_S. The client uses the OSCORE Sender ID 0x5f when using OSCORE with the server.</t>
          </li>
          <li>
            <t>Between the proxy and the server, using the OSCORE Security Context CTX_P_S. The proxy uses the OSCORE Sender ID 0xd4 when using OSCORE with the server.</t>
          </li>
        </ul>
        <figure anchor="fig-example-proxy-server">
          <name>Use of OSCORE between Client-Server and Proxy-Server</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1344" width="560" viewBox="0 0 560 1344" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 24,104 L 24,1216" fill="none" stroke="black"/>
                <path d="M 24,1272 L 24,1280" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,272" fill="none" stroke="black"/>
                <path d="M 88,328 L 88,1008" fill="none" stroke="black"/>
                <path d="M 88,1064 L 88,1280" fill="none" stroke="black"/>
                <path d="M 152,48 L 152,544" fill="none" stroke="black"/>
                <path d="M 152,600 L 152,608" fill="none" stroke="black"/>
                <path d="M 152,664 L 152,672" fill="none" stroke="black"/>
                <path d="M 152,728 L 152,736" fill="none" stroke="black"/>
                <path d="M 152,792 L 152,1280" fill="none" stroke="black"/>
                <path d="M 24,128 L 80,128" fill="none" stroke="black"/>
                <path d="M 88,352 L 144,352" fill="none" stroke="black"/>
                <path d="M 96,816 L 152,816" fill="none" stroke="black"/>
                <path d="M 32,1088 L 88,1088" fill="none" stroke="black"/>
                <path d="M 296,528 L 304,512" fill="none" stroke="black"/>
                <path d="M 304,528 L 316,504" fill="none" stroke="black"/>
                <path d="M 296,992 L 304,976" fill="none" stroke="black"/>
                <path d="M 304,992 L 312,976" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="152,352 140,346.4 140,357.6" fill="black" transform="rotate(0,144,352)"/>
                <polygon class="arrowhead" points="104,816 92,810.4 92,821.6" fill="black" transform="rotate(180,96,816)"/>
                <polygon class="arrowhead" points="88,128 76,122.4 76,133.6" fill="black" transform="rotate(0,80,128)"/>
                <polygon class="arrowhead" points="40,1088 28,1082.4 28,1093.6" fill="black" transform="rotate(180,32,1088)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Proxy</text>
                  <text x="148" y="36">Server</text>
                  <text x="24" y="52">|</text>
                  <text x="32" y="68">Encrypt</text>
                  <text x="16" y="84">REQ</text>
                  <text x="52" y="84">with</text>
                  <text x="32" y="100">CTX_C_S</text>
                  <text x="248" y="132">Code:</text>
                  <text x="292" y="132">0.02</text>
                  <text x="340" y="132">(POST)</text>
                  <text x="52" y="148">POST</text>
                  <text x="244" y="148">Token:</text>
                  <text x="292" y="148">0x8c</text>
                  <text x="232" y="164">Uri-Host:</text>
                  <text x="328" y="164">"example.com"</text>
                  <text x="216" y="180">Proxy-Scheme:</text>
                  <text x="300" y="180">"coap"</text>
                  <text x="240" y="196">OSCORE:</text>
                  <text x="316" y="196">[kid:0x5f,</text>
                  <text x="392" y="196">Partial</text>
                  <text x="452" y="196">IV:42]</text>
                  <text x="244" y="212">0xff</text>
                  <text x="236" y="228">Payload:</text>
                  <text x="300" y="228">{Code:</text>
                  <text x="348" y="228">0.01</text>
                  <text x="396" y="228">(GET),</text>
                  <text x="320" y="244">Uri-Path:</text>
                  <text x="420" y="244">"alarm_status"</text>
                  <text x="280" y="260">}</text>
                  <text x="300" y="260">//</text>
                  <text x="352" y="260">Encrypted</text>
                  <text x="412" y="260">with</text>
                  <text x="464" y="260">CTX_C_S</text>
                  <text x="96" y="292">Encrypt</text>
                  <text x="80" y="308">REQ</text>
                  <text x="116" y="308">with</text>
                  <text x="96" y="324">CTX_P_S</text>
                  <text x="248" y="356">Code:</text>
                  <text x="292" y="356">0.02</text>
                  <text x="340" y="356">(POST)</text>
                  <text x="116" y="372">POST</text>
                  <text x="244" y="372">Token:</text>
                  <text x="292" y="372">0x7b</text>
                  <text x="240" y="388">OSCORE:</text>
                  <text x="316" y="388">[kid:0xd4,</text>
                  <text x="392" y="388">Partial</text>
                  <text x="452" y="388">IV:31]</text>
                  <text x="244" y="404">0xff</text>
                  <text x="236" y="420">Payload:</text>
                  <text x="300" y="420">{Code:</text>
                  <text x="348" y="420">0.02</text>
                  <text x="400" y="420">(POST),</text>
                  <text x="320" y="436">Uri-Host:</text>
                  <text x="420" y="436">"example.com",</text>
                  <text x="312" y="452">OSCORE:</text>
                  <text x="388" y="452">[kid:0x5f,</text>
                  <text x="464" y="452">Partial</text>
                  <text x="528" y="452">IV:42],</text>
                  <text x="304" y="468">0xff,</text>
                  <text x="308" y="484">{Code:</text>
                  <text x="356" y="484">0.01</text>
                  <text x="404" y="484">(GET),</text>
                  <text x="328" y="500">Uri-Path:</text>
                  <text x="428" y="500">"alarm_status"</text>
                  <text x="288" y="516">}</text>
                  <text x="360" y="516">Encrypted</text>
                  <text x="420" y="516">with</text>
                  <text x="472" y="516">CTX_C_S</text>
                  <text x="280" y="532">}</text>
                  <text x="352" y="532">Encrypted</text>
                  <text x="412" y="532">with</text>
                  <text x="464" y="532">CTX_P_S</text>
                  <text x="160" y="564">Decrypt</text>
                  <text x="144" y="580">REQ</text>
                  <text x="180" y="580">with</text>
                  <text x="160" y="596">CTX_P_S</text>
                  <text x="160" y="628">Decrypt</text>
                  <text x="144" y="644">REQ</text>
                  <text x="180" y="644">with</text>
                  <text x="160" y="660">CTX_C_S</text>
                  <text x="160" y="692">Encrypt</text>
                  <text x="148" y="708">RESP</text>
                  <text x="188" y="708">with</text>
                  <text x="160" y="724">CTX_C_S</text>
                  <text x="160" y="756">Encrypt</text>
                  <text x="148" y="772">RESP</text>
                  <text x="188" y="772">with</text>
                  <text x="160" y="788">CTX_P_S</text>
                  <text x="248" y="820">Code:</text>
                  <text x="292" y="820">2.04</text>
                  <text x="352" y="820">(Changed)</text>
                  <text x="124" y="836">2.04</text>
                  <text x="244" y="836">Token:</text>
                  <text x="292" y="836">0x7b</text>
                  <text x="240" y="852">OSCORE:</text>
                  <text x="280" y="852">-</text>
                  <text x="244" y="868">0xff</text>
                  <text x="236" y="884">Payload:</text>
                  <text x="300" y="884">{Code:</text>
                  <text x="348" y="884">2.04</text>
                  <text x="412" y="884">(Changed),</text>
                  <text x="312" y="900">OSCORE:</text>
                  <text x="356" y="900">-,</text>
                  <text x="304" y="916">0xff,</text>
                  <text x="308" y="932">{Code:</text>
                  <text x="356" y="932">2.05</text>
                  <text x="420" y="932">(Content),</text>
                  <text x="312" y="948">0xff,</text>
                  <text x="304" y="964">"0"</text>
                  <text x="288" y="980">}</text>
                  <text x="360" y="980">Encrypted</text>
                  <text x="420" y="980">with</text>
                  <text x="472" y="980">CTX_C_S</text>
                  <text x="280" y="996">}</text>
                  <text x="352" y="996">Encrypted</text>
                  <text x="412" y="996">with</text>
                  <text x="464" y="996">CTX_P_S</text>
                  <text x="96" y="1028">Decrypt</text>
                  <text x="84" y="1044">RESP</text>
                  <text x="124" y="1044">with</text>
                  <text x="96" y="1060">CTX_P_S</text>
                  <text x="248" y="1092">Code:</text>
                  <text x="292" y="1092">2.04</text>
                  <text x="352" y="1092">(Changed)</text>
                  <text x="60" y="1108">2.04</text>
                  <text x="244" y="1108">Token:</text>
                  <text x="292" y="1108">0x8c</text>
                  <text x="240" y="1124">OSCORE:</text>
                  <text x="280" y="1124">-</text>
                  <text x="244" y="1140">0xff</text>
                  <text x="236" y="1156">Payload:</text>
                  <text x="300" y="1156">{Code:</text>
                  <text x="348" y="1156">2.05</text>
                  <text x="412" y="1156">(Content),</text>
                  <text x="304" y="1172">0xff,</text>
                  <text x="296" y="1188">"0"</text>
                  <text x="280" y="1204">}</text>
                  <text x="300" y="1204">//</text>
                  <text x="352" y="1204">Encrypted</text>
                  <text x="412" y="1204">with</text>
                  <text x="464" y="1204">CTX_C_S</text>
                  <text x="32" y="1236">Decrypt</text>
                  <text x="20" y="1252">RESP</text>
                  <text x="60" y="1252">with</text>
                  <text x="32" y="1268">CTX_C_S</text>
                  <text x="28" y="1316">Square</text>
                  <text x="92" y="1316">brackets</text>
                  <text x="136" y="1316">[</text>
                  <text x="160" y="1316">...</text>
                  <text x="184" y="1316">]</text>
                  <text x="228" y="1316">indicate</text>
                  <text x="296" y="1316">content</text>
                  <text x="340" y="1316">of</text>
                  <text x="396" y="1316">compressed</text>
                  <text x="460" y="1316">COSE</text>
                  <text x="512" y="1316">object.</text>
                  <text x="24" y="1332">Curly</text>
                  <text x="84" y="1332">brackets</text>
                  <text x="128" y="1332">{</text>
                  <text x="152" y="1332">...</text>
                  <text x="176" y="1332">}</text>
                  <text x="220" y="1332">indicate</text>
                  <text x="296" y="1332">encrypted</text>
                  <text x="360" y="1332">data.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client  Proxy  Server
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_S   |       |
  |       |       |
  +------>|       |         Code: 0.02 (POST)
  | POST  |       |        Token: 0x8c
  |       |       |     Uri-Host: "example.com"
  |       |       | Proxy-Scheme: "coap"
  |       |       |       OSCORE: [kid:0x5f, Partial IV:42]
  |       |       |         0xff
  |       |       |      Payload: {Code: 0.01 (GET),
  |       |       |                Uri-Path: "alarm_status"
  |       |       |               } // Encrypted with CTX_C_S
  |       |       |
  |     Encrypt   |
  |     REQ with  |
  |     CTX_P_S   |
  |       |       |
  |       +------>|         Code: 0.02 (POST)
  |       | POST  |        Token: 0x7b
  |       |       |       OSCORE: [kid:0xd4, Partial IV:31]
  |       |       |         0xff
  |       |       |      Payload: {Code: 0.02 (POST),
  |       |       |                Uri-Host: "example.com",
  |       |       |                OSCORE: [kid:0x5f, Partial IV:42],
  |       |       |                0xff,
  |       |       |                {Code: 0.01 (GET),
  |       |       |                 Uri-Path: "alarm_status"
  |       |       |                } // Encrypted with CTX_C_S
  |       |       |               } // Encrypted with CTX_P_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_P_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_P_S
  |       |       |
  |       |<------+         Code: 2.04 (Changed)
  |       |  2.04 |        Token: 0x7b
  |       |       |       OSCORE: -
  |       |       |         0xff
  |       |       |      Payload: {Code: 2.04 (Changed),
  |       |       |                OSCORE: -,
  |       |       |                0xff,
  |       |       |                {Code: 2.05 (Content),
  |       |       |                 0xff,
  |       |       |                 "0"
  |       |       |                } // Encrypted with CTX_C_S
  |       |       |               } // Encrypted with CTX_P_S
  |       |       |
  |     Decrypt   |
  |     RESP with |
  |     CTX_P_S   |
  |       |       |
  |<------+       |         Code: 2.04 (Changed)
  |  2.04 |       |        Token: 0x8c
  |       |       |       OSCORE: -
  |       |       |         0xff
  |       |       |      Payload: {Code: 2.05 (Content),
  |       |       |                0xff,
  |       |       |                "0"
  |       |       |               } // Encrypted with CTX_C_S
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_S   |       |
  |       |       |

Square brackets [ ... ] indicate content of compressed COSE object.
Curly brackets { ... } indicate encrypted data.
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="example-3">
        <name>Example 3</name>
        <t>In the example shown in <xref target="fig-example-client-proxy-server"/>, message exchanges are protected with OSCORE over the following legs.</t>
        <ul spacing="normal">
          <li>
            <t>End-to-end between the client and the server, using the OSCORE Security Context CTX_C_S. The client uses the OSCORE Sender ID 0x5f when using OSCORE with the server.</t>
          </li>
          <li>
            <t>Between the client and the proxy, using the OSCORE Security Context CTX_C_P. The client uses the OSCORE Sender ID 0x20 when using OSCORE with the proxy.</t>
          </li>
          <li>
            <t>Between the proxy and the server, using the OSCORE Security Context CTX_P_S. The proxy uses the OSCORE Sender ID 0xd4 when using OSCORE with the server.</t>
          </li>
        </ul>
        <figure anchor="fig-example-client-proxy-server">
          <name>Use of OSCORE between Client-Server, Client-Proxy, and Proxy-Server</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1728" width="544" viewBox="0 0 544 1728" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,104 L 24,112" fill="none" stroke="black"/>
                <path d="M 24,168 L 24,1536" fill="none" stroke="black"/>
                <path d="M 24,1592 L 24,1600" fill="none" stroke="black"/>
                <path d="M 24,1656 L 24,1664" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,400" fill="none" stroke="black"/>
                <path d="M 88,456 L 88,464" fill="none" stroke="black"/>
                <path d="M 88,520 L 88,1200" fill="none" stroke="black"/>
                <path d="M 88,1256 L 88,1264" fill="none" stroke="black"/>
                <path d="M 88,1320 L 88,1664" fill="none" stroke="black"/>
                <path d="M 152,48 L 152,736" fill="none" stroke="black"/>
                <path d="M 152,792 L 152,800" fill="none" stroke="black"/>
                <path d="M 152,856 L 152,864" fill="none" stroke="black"/>
                <path d="M 152,920 L 152,928" fill="none" stroke="black"/>
                <path d="M 152,984 L 152,1664" fill="none" stroke="black"/>
                <path d="M 24,192 L 80,192" fill="none" stroke="black"/>
                <path d="M 88,544 L 144,544" fill="none" stroke="black"/>
                <path d="M 96,1008 L 152,1008" fill="none" stroke="black"/>
                <path d="M 32,1344 L 88,1344" fill="none" stroke="black"/>
                <path d="M 256,384 L 264,368" fill="none" stroke="black"/>
                <path d="M 264,384 L 276,360" fill="none" stroke="black"/>
                <path d="M 256,720 L 264,704" fill="none" stroke="black"/>
                <path d="M 264,720 L 276,696" fill="none" stroke="black"/>
                <path d="M 256,1184 L 264,1168" fill="none" stroke="black"/>
                <path d="M 264,1184 L 272,1168" fill="none" stroke="black"/>
                <path d="M 256,1520 L 264,1504" fill="none" stroke="black"/>
                <path d="M 264,1520 L 272,1504" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="152,544 140,538.4 140,549.6" fill="black" transform="rotate(0,144,544)"/>
                <polygon class="arrowhead" points="104,1008 92,1002.4 92,1013.6" fill="black" transform="rotate(180,96,1008)"/>
                <polygon class="arrowhead" points="88,192 76,186.4 76,197.6" fill="black" transform="rotate(0,80,192)"/>
                <polygon class="arrowhead" points="40,1344 28,1338.4 28,1349.6" fill="black" transform="rotate(180,32,1344)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Proxy</text>
                  <text x="148" y="36">Server</text>
                  <text x="24" y="52">|</text>
                  <text x="32" y="68">Encrypt</text>
                  <text x="16" y="84">REQ</text>
                  <text x="52" y="84">with</text>
                  <text x="32" y="100">CTX_C_S</text>
                  <text x="32" y="132">Encrypt</text>
                  <text x="16" y="148">REQ</text>
                  <text x="52" y="148">with</text>
                  <text x="32" y="164">CTX_C_P</text>
                  <text x="208" y="196">Code:</text>
                  <text x="252" y="196">0.02</text>
                  <text x="300" y="196">(POST)</text>
                  <text x="52" y="212">POST</text>
                  <text x="204" y="212">Token:</text>
                  <text x="252" y="212">0x8c</text>
                  <text x="200" y="228">OSCORE:</text>
                  <text x="276" y="228">[kid:0x20,</text>
                  <text x="352" y="228">Partial</text>
                  <text x="412" y="228">IV:31]</text>
                  <text x="204" y="244">0xff</text>
                  <text x="196" y="260">Payload:</text>
                  <text x="260" y="260">{Code:</text>
                  <text x="308" y="260">0.02</text>
                  <text x="360" y="260">(POST),</text>
                  <text x="272" y="276">OSCORE:</text>
                  <text x="348" y="276">[kid:0x5f,</text>
                  <text x="424" y="276">Partial</text>
                  <text x="488" y="276">IV:42],</text>
                  <text x="280" y="292">Uri-Host:</text>
                  <text x="380" y="292">"example.com",</text>
                  <text x="296" y="308">Proxy-Scheme:</text>
                  <text x="384" y="308">"coap",</text>
                  <text x="264" y="324">0xff,</text>
                  <text x="268" y="340">{Code:</text>
                  <text x="316" y="340">0.01</text>
                  <text x="364" y="340">(GET),</text>
                  <text x="288" y="356">Uri-Path:</text>
                  <text x="388" y="356">"alarm_status"</text>
                  <text x="248" y="372">}</text>
                  <text x="320" y="372">Encrypted</text>
                  <text x="380" y="372">with</text>
                  <text x="432" y="372">CTX_C_S</text>
                  <text x="240" y="388">}</text>
                  <text x="312" y="388">Encrypted</text>
                  <text x="372" y="388">with</text>
                  <text x="424" y="388">CTX_C_P</text>
                  <text x="96" y="420">Decrypt</text>
                  <text x="80" y="436">REQ</text>
                  <text x="116" y="436">with</text>
                  <text x="96" y="452">CTX_C_P</text>
                  <text x="96" y="484">Encrypt</text>
                  <text x="80" y="500">REQ</text>
                  <text x="116" y="500">with</text>
                  <text x="96" y="516">CTX_P_S</text>
                  <text x="208" y="548">Code:</text>
                  <text x="252" y="548">0.02</text>
                  <text x="300" y="548">(POST)</text>
                  <text x="116" y="564">POST</text>
                  <text x="204" y="564">Token:</text>
                  <text x="252" y="564">0x7b</text>
                  <text x="200" y="580">OSCORE:</text>
                  <text x="276" y="580">[kid:0xd4,</text>
                  <text x="352" y="580">Partial</text>
                  <text x="412" y="580">IV:31]</text>
                  <text x="204" y="596">0xff</text>
                  <text x="196" y="612">Payload:</text>
                  <text x="260" y="612">{Code:</text>
                  <text x="308" y="612">0.02</text>
                  <text x="360" y="612">(POST),</text>
                  <text x="280" y="628">Uri-Host:</text>
                  <text x="380" y="628">"example.com",</text>
                  <text x="272" y="644">OSCORE:</text>
                  <text x="348" y="644">[kid:0x5f,</text>
                  <text x="424" y="644">Partial</text>
                  <text x="488" y="644">IV:42],</text>
                  <text x="264" y="660">0xff,</text>
                  <text x="268" y="676">{Code:</text>
                  <text x="316" y="676">0.01</text>
                  <text x="364" y="676">(GET),</text>
                  <text x="288" y="692">Uri-Path:</text>
                  <text x="388" y="692">"alarm_status"</text>
                  <text x="248" y="708">}</text>
                  <text x="320" y="708">Encrypted</text>
                  <text x="380" y="708">with</text>
                  <text x="432" y="708">CTX_C_S</text>
                  <text x="240" y="724">}</text>
                  <text x="312" y="724">Encrypted</text>
                  <text x="372" y="724">with</text>
                  <text x="424" y="724">CTX_P_S</text>
                  <text x="160" y="756">Decrypt</text>
                  <text x="144" y="772">REQ</text>
                  <text x="180" y="772">with</text>
                  <text x="160" y="788">CTX_P_S</text>
                  <text x="160" y="820">Decrypt</text>
                  <text x="144" y="836">REQ</text>
                  <text x="180" y="836">with</text>
                  <text x="160" y="852">CTX_C_S</text>
                  <text x="160" y="884">Encrypt</text>
                  <text x="148" y="900">RESP</text>
                  <text x="188" y="900">with</text>
                  <text x="160" y="916">CTX_C_S</text>
                  <text x="160" y="948">Encrypt</text>
                  <text x="148" y="964">RESP</text>
                  <text x="188" y="964">with</text>
                  <text x="160" y="980">CTX_P_S</text>
                  <text x="208" y="1012">Code:</text>
                  <text x="252" y="1012">2.04</text>
                  <text x="312" y="1012">(Changed)</text>
                  <text x="124" y="1028">2.04</text>
                  <text x="204" y="1028">Token:</text>
                  <text x="252" y="1028">0x7b</text>
                  <text x="200" y="1044">OSCORE:</text>
                  <text x="240" y="1044">-</text>
                  <text x="204" y="1060">0xff</text>
                  <text x="196" y="1076">Payload:</text>
                  <text x="260" y="1076">{Code:</text>
                  <text x="308" y="1076">2.04</text>
                  <text x="372" y="1076">(Changed),</text>
                  <text x="272" y="1092">OSCORE:</text>
                  <text x="316" y="1092">-,</text>
                  <text x="264" y="1108">0xff,</text>
                  <text x="268" y="1124">{Code:</text>
                  <text x="316" y="1124">2.05</text>
                  <text x="380" y="1124">(Content),</text>
                  <text x="272" y="1140">0xff,</text>
                  <text x="264" y="1156">"0"</text>
                  <text x="248" y="1172">}</text>
                  <text x="320" y="1172">Encrypted</text>
                  <text x="380" y="1172">with</text>
                  <text x="432" y="1172">CTX_C_S</text>
                  <text x="240" y="1188">}</text>
                  <text x="312" y="1188">Encrypted</text>
                  <text x="372" y="1188">with</text>
                  <text x="424" y="1188">CTX_P_S</text>
                  <text x="96" y="1220">Decrypt</text>
                  <text x="84" y="1236">RESP</text>
                  <text x="124" y="1236">with</text>
                  <text x="96" y="1252">CTX_P_S</text>
                  <text x="96" y="1284">Encrypt</text>
                  <text x="84" y="1300">RESP</text>
                  <text x="124" y="1300">with</text>
                  <text x="96" y="1316">CTX_C_P</text>
                  <text x="208" y="1348">Code:</text>
                  <text x="252" y="1348">2.04</text>
                  <text x="312" y="1348">(Changed)</text>
                  <text x="60" y="1364">2.04</text>
                  <text x="204" y="1364">Token:</text>
                  <text x="252" y="1364">0x8c</text>
                  <text x="200" y="1380">OSCORE:</text>
                  <text x="240" y="1380">-</text>
                  <text x="204" y="1396">0xff</text>
                  <text x="196" y="1412">Payload:</text>
                  <text x="260" y="1412">{Code:</text>
                  <text x="308" y="1412">2.04</text>
                  <text x="372" y="1412">(Changed),</text>
                  <text x="272" y="1428">OSCORE:</text>
                  <text x="316" y="1428">-,</text>
                  <text x="264" y="1444">0xff,</text>
                  <text x="268" y="1460">{Code:</text>
                  <text x="316" y="1460">2.05</text>
                  <text x="380" y="1460">(Content),</text>
                  <text x="272" y="1476">0xff,</text>
                  <text x="264" y="1492">"0"</text>
                  <text x="248" y="1508">}</text>
                  <text x="320" y="1508">Encrypted</text>
                  <text x="380" y="1508">with</text>
                  <text x="432" y="1508">CTX_C_S</text>
                  <text x="240" y="1524">}</text>
                  <text x="312" y="1524">Encrypted</text>
                  <text x="372" y="1524">with</text>
                  <text x="424" y="1524">CTX_C_P</text>
                  <text x="32" y="1556">Decrypt</text>
                  <text x="20" y="1572">RESP</text>
                  <text x="60" y="1572">with</text>
                  <text x="32" y="1588">CTX_C_P</text>
                  <text x="32" y="1620">Decrypt</text>
                  <text x="20" y="1636">RESP</text>
                  <text x="60" y="1636">with</text>
                  <text x="32" y="1652">CTX_C_S</text>
                  <text x="28" y="1700">Square</text>
                  <text x="92" y="1700">brackets</text>
                  <text x="136" y="1700">[</text>
                  <text x="160" y="1700">...</text>
                  <text x="184" y="1700">]</text>
                  <text x="228" y="1700">indicate</text>
                  <text x="296" y="1700">content</text>
                  <text x="340" y="1700">of</text>
                  <text x="396" y="1700">compressed</text>
                  <text x="460" y="1700">COSE</text>
                  <text x="512" y="1700">object.</text>
                  <text x="24" y="1716">Curly</text>
                  <text x="84" y="1716">brackets</text>
                  <text x="128" y="1716">{</text>
                  <text x="152" y="1716">...</text>
                  <text x="176" y="1716">}</text>
                  <text x="220" y="1716">indicate</text>
                  <text x="296" y="1716">encrypted</text>
                  <text x="360" y="1716">data.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client  Proxy  Server
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_S   |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |    Code: 0.02 (POST)
  | POST  |       |   Token: 0x8c
  |       |       |  OSCORE: [kid:0x20, Partial IV:31]
  |       |       |    0xff
  |       |       | Payload: {Code: 0.02 (POST),
  |       |       |           OSCORE: [kid:0x5f, Partial IV:42],
  |       |       |           Uri-Host: "example.com",
  |       |       |           Proxy-Scheme: "coap",
  |       |       |           0xff,
  |       |       |           {Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |     Encrypt   |
  |     REQ with  |
  |     CTX_P_S   |
  |       |       |
  |       +------>|    Code: 0.02 (POST)
  |       | POST  |   Token: 0x7b
  |       |       |  OSCORE: [kid:0xd4, Partial IV:31]
  |       |       |    0xff
  |       |       | Payload: {Code: 0.02 (POST),
  |       |       |           Uri-Host: "example.com",
  |       |       |           OSCORE: [kid:0x5f, Partial IV:42],
  |       |       |           0xff,
  |       |       |           {Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_P_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_P_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_P_S
  |       |       |
  |       |<------+    Code: 2.04 (Changed)
  |       |  2.04 |   Token: 0x7b
  |       |       |  OSCORE: -
  |       |       |    0xff
  |       |       | Payload: {Code: 2.04 (Changed),
  |       |       |           OSCORE: -,
  |       |       |           0xff,
  |       |       |           {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_P_S
  |       |       |
  |     Decrypt   |
  |     RESP with |
  |     CTX_P_S   |
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |    Code: 2.04 (Changed)
  |  2.04 |       |   Token: 0x8c
  |       |       |  OSCORE: -
  |       |       |    0xff
  |       |       | Payload: {Code: 2.04 (Changed),
  |       |       |           OSCORE: -,
  |       |       |           0xff,
  |       |       |           {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_C_P
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_P   |       |
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_S   |       |
  |       |       |

Square brackets [ ... ] indicate content of compressed COSE object.
Curly brackets { ... } indicate encrypted data.
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="sec-example-edhoc">
        <name>Example 4</name>
        <t>In the example shown in <xref target="fig-example-edhoc"/>, message exchanges are protected over the following legs.</t>
        <ul spacing="normal">
          <li>
            <t>End-to-end, between the client and the server, using the OSCORE Security Context CTX_C_S. The client uses the OSCORE Sender ID 0x5f when using OSCORE with the server.</t>
          </li>
          <li>
            <t>Between the client and the proxy, using the OSCORE Security Context CTX_C_P. The client uses the OSCORE Sender ID 0x20 when using OSCORE with the proxy.</t>
          </li>
        </ul>
        <t>The example also shows how the client establishes an OSCORE Security Context CTX_C_P with the proxy and CTX_C_S with the server, by using the key exchange protocol EDHOC <xref target="RFC9528"/>.</t>
        <figure anchor="fig-example-edhoc">
          <name>Use of OSCORE between Client-Server and Proxy-Server, with OSCORE Security Contexts established through EDHOC</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="3248" width="544" viewBox="0 0 544 3248" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 24,48 L 24,240" fill="none" stroke="black"/>
                <path d="M 24,280 L 24,496" fill="none" stroke="black"/>
                <path d="M 24,552 L 24,1248" fill="none" stroke="black"/>
                <path d="M 24,1288 L 24,1296" fill="none" stroke="black"/>
                <path d="M 24,1352 L 24,1904" fill="none" stroke="black"/>
                <path d="M 24,1960 L 24,1968" fill="none" stroke="black"/>
                <path d="M 24,2024 L 24,3008" fill="none" stroke="black"/>
                <path d="M 24,3064 L 24,3072" fill="none" stroke="black"/>
                <path d="M 24,3128 L 24,3136" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,400" fill="none" stroke="black"/>
                <path d="M 88,440 L 88,768" fill="none" stroke="black"/>
                <path d="M 88,824 L 88,1040" fill="none" stroke="black"/>
                <path d="M 88,1096 L 88,1568" fill="none" stroke="black"/>
                <path d="M 88,1624 L 88,2256" fill="none" stroke="black"/>
                <path d="M 88,2312 L 88,2736" fill="none" stroke="black"/>
                <path d="M 88,2792 L 88,3136" fill="none" stroke="black"/>
                <path d="M 152,48 L 152,1760" fill="none" stroke="black"/>
                <path d="M 152,1800 L 152,2464" fill="none" stroke="black"/>
                <path d="M 152,2520 L 152,2528" fill="none" stroke="black"/>
                <path d="M 152,2584 L 152,3136" fill="none" stroke="black"/>
                <path d="M 24,64 L 80,64" fill="none" stroke="black"/>
                <path d="M 32,176 L 88,176" fill="none" stroke="black"/>
                <path d="M 24,304 L 80,304" fill="none" stroke="black"/>
                <path d="M 32,464 L 88,464" fill="none" stroke="black"/>
                <path d="M 24,576 L 80,576" fill="none" stroke="black"/>
                <path d="M 88,848 L 144,848" fill="none" stroke="black"/>
                <path d="M 96,976 L 152,976" fill="none" stroke="black"/>
                <path d="M 32,1120 L 88,1120" fill="none" stroke="black"/>
                <path d="M 24,1376 L 80,1376" fill="none" stroke="black"/>
                <path d="M 88,1648 L 144,1648" fill="none" stroke="black"/>
                <path d="M 96,1824 L 152,1824" fill="none" stroke="black"/>
                <path d="M 32,1872 L 88,1872" fill="none" stroke="black"/>
                <path d="M 24,2048 L 80,2048" fill="none" stroke="black"/>
                <path d="M 88,2336 L 144,2336" fill="none" stroke="black"/>
                <path d="M 96,2608 L 152,2608" fill="none" stroke="black"/>
                <path d="M 32,2816 L 88,2816" fill="none" stroke="black"/>
                <path d="M 264,1552 L 268,1544" fill="none" stroke="black"/>
                <path d="M 264,2240 L 272,2224" fill="none" stroke="black"/>
                <path d="M 272,2240 L 284,2216" fill="none" stroke="black"/>
                <path d="M 264,2992 L 272,2976" fill="none" stroke="black"/>
                <path d="M 272,2992 L 280,2976" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="152,2336 140,2330.4 140,2341.6" fill="black" transform="rotate(0,144,2336)"/>
                <polygon class="arrowhead" points="152,1648 140,1642.4 140,1653.6" fill="black" transform="rotate(0,144,1648)"/>
                <polygon class="arrowhead" points="152,848 140,842.4 140,853.6" fill="black" transform="rotate(0,144,848)"/>
                <polygon class="arrowhead" points="104,2608 92,2602.4 92,2613.6" fill="black" transform="rotate(180,96,2608)"/>
                <polygon class="arrowhead" points="104,1824 92,1818.4 92,1829.6" fill="black" transform="rotate(180,96,1824)"/>
                <polygon class="arrowhead" points="104,976 92,970.4 92,981.6" fill="black" transform="rotate(180,96,976)"/>
                <polygon class="arrowhead" points="88,2048 76,2042.4 76,2053.6" fill="black" transform="rotate(0,80,2048)"/>
                <polygon class="arrowhead" points="88,1376 76,1370.4 76,1381.6" fill="black" transform="rotate(0,80,1376)"/>
                <polygon class="arrowhead" points="88,576 76,570.4 76,581.6" fill="black" transform="rotate(0,80,576)"/>
                <polygon class="arrowhead" points="88,304 76,298.4 76,309.6" fill="black" transform="rotate(0,80,304)"/>
                <polygon class="arrowhead" points="88,64 76,58.4 76,69.6" fill="black" transform="rotate(0,80,64)"/>
                <polygon class="arrowhead" points="40,2816 28,2810.4 28,2821.6" fill="black" transform="rotate(180,32,2816)"/>
                <polygon class="arrowhead" points="40,1872 28,1866.4 28,1877.6" fill="black" transform="rotate(180,32,1872)"/>
                <polygon class="arrowhead" points="40,1120 28,1114.4 28,1125.6" fill="black" transform="rotate(180,32,1120)"/>
                <polygon class="arrowhead" points="40,464 28,458.4 28,469.6" fill="black" transform="rotate(180,32,464)"/>
                <polygon class="arrowhead" points="40,176 28,170.4 28,181.6" fill="black" transform="rotate(180,32,176)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Proxy</text>
                  <text x="148" y="36">Server</text>
                  <text x="216" y="68">Code:</text>
                  <text x="260" y="68">0.02</text>
                  <text x="308" y="68">(POST)</text>
                  <text x="52" y="84">POST</text>
                  <text x="212" y="84">Token:</text>
                  <text x="260" y="84">0xf3</text>
                  <text x="200" y="100">Uri-Path:</text>
                  <text x="296" y="100">".well-known"</text>
                  <text x="200" y="116">Uri-Path:</text>
                  <text x="272" y="116">"edhoc"</text>
                  <text x="212" y="132">0xff</text>
                  <text x="204" y="148">Payload:</text>
                  <text x="268" y="148">(true,</text>
                  <text x="320" y="148">EDHOC</text>
                  <text x="388" y="148">message_1)</text>
                  <text x="216" y="180">Code:</text>
                  <text x="260" y="180">2.04</text>
                  <text x="320" y="180">(Changed)</text>
                  <text x="60" y="196">2.04</text>
                  <text x="212" y="196">Token:</text>
                  <text x="260" y="196">0xf3</text>
                  <text x="212" y="212">0xff</text>
                  <text x="204" y="228">Payload:</text>
                  <text x="264" y="228">EDHOC</text>
                  <text x="328" y="228">message_2</text>
                  <text x="40" y="260">Establish</text>
                  <text x="32" y="276">CTX_C_P</text>
                  <text x="216" y="308">Code:</text>
                  <text x="260" y="308">0.02</text>
                  <text x="308" y="308">(POST)</text>
                  <text x="52" y="324">POST</text>
                  <text x="212" y="324">Token:</text>
                  <text x="260" y="324">0x82</text>
                  <text x="200" y="340">Uri-Path:</text>
                  <text x="296" y="340">".well-known"</text>
                  <text x="200" y="356">Uri-Path:</text>
                  <text x="272" y="356">"edhoc"</text>
                  <text x="212" y="372">0xff</text>
                  <text x="204" y="388">Payload:</text>
                  <text x="264" y="388">(C_R,</text>
                  <text x="312" y="388">EDHOC</text>
                  <text x="380" y="388">message_3)</text>
                  <text x="104" y="420">Establish</text>
                  <text x="96" y="436">CTX_C_P</text>
                  <text x="56" y="484">ACK</text>
                  <text x="32" y="516">Encrypt</text>
                  <text x="16" y="532">REQ</text>
                  <text x="52" y="532">with</text>
                  <text x="32" y="548">CTX_C_P</text>
                  <text x="216" y="580">Code:</text>
                  <text x="260" y="580">0.02</text>
                  <text x="308" y="580">(POST)</text>
                  <text x="52" y="596">POST</text>
                  <text x="212" y="596">Token:</text>
                  <text x="260" y="596">0xbe</text>
                  <text x="208" y="612">OSCORE:</text>
                  <text x="284" y="612">[kid:0x20,</text>
                  <text x="360" y="612">Partial</text>
                  <text x="416" y="612">IV:0]</text>
                  <text x="212" y="628">0xff</text>
                  <text x="204" y="644">Payload:</text>
                  <text x="268" y="644">{Code:</text>
                  <text x="316" y="644">0.02</text>
                  <text x="368" y="644">(POST),</text>
                  <text x="288" y="660">Uri-Host:</text>
                  <text x="388" y="660">"example.com",</text>
                  <text x="288" y="676">Uri-Path:</text>
                  <text x="388" y="676">".well-known",</text>
                  <text x="288" y="692">Uri-Path:</text>
                  <text x="364" y="692">"edhoc",</text>
                  <text x="304" y="708">Proxy-Scheme:</text>
                  <text x="392" y="708">"coap",</text>
                  <text x="272" y="724">0xff,</text>
                  <text x="276" y="740">(true,</text>
                  <text x="328" y="740">EDHOC</text>
                  <text x="396" y="740">message_1)</text>
                  <text x="248" y="756">}</text>
                  <text x="268" y="756">//</text>
                  <text x="320" y="756">Encrypted</text>
                  <text x="380" y="756">with</text>
                  <text x="432" y="756">CTX_C_P</text>
                  <text x="96" y="788">Decrypt</text>
                  <text x="80" y="804">REQ</text>
                  <text x="116" y="804">with</text>
                  <text x="96" y="820">CTX_C_P</text>
                  <text x="216" y="852">Code:</text>
                  <text x="260" y="852">0.02</text>
                  <text x="308" y="852">(POST)</text>
                  <text x="116" y="868">POST</text>
                  <text x="212" y="868">Token:</text>
                  <text x="260" y="868">0xa5</text>
                  <text x="200" y="884">Uri-Host:</text>
                  <text x="300" y="884">"example.com",</text>
                  <text x="200" y="900">Uri-Path:</text>
                  <text x="296" y="900">".well-known"</text>
                  <text x="200" y="916">Uri-Path:</text>
                  <text x="272" y="916">"edhoc"</text>
                  <text x="212" y="932">0xff</text>
                  <text x="204" y="948">Payload:</text>
                  <text x="268" y="948">(true,</text>
                  <text x="320" y="948">EDHOC</text>
                  <text x="388" y="948">message_1)</text>
                  <text x="216" y="980">Code:</text>
                  <text x="260" y="980">2.04</text>
                  <text x="320" y="980">(Changed)</text>
                  <text x="124" y="996">2.04</text>
                  <text x="212" y="996">Token:</text>
                  <text x="260" y="996">0xa5</text>
                  <text x="212" y="1012">0xff</text>
                  <text x="204" y="1028">Payload:</text>
                  <text x="264" y="1028">EDHOC</text>
                  <text x="328" y="1028">message_2</text>
                  <text x="96" y="1060">Encrypt</text>
                  <text x="84" y="1076">RESP</text>
                  <text x="124" y="1076">with</text>
                  <text x="96" y="1092">CTX_C_P</text>
                  <text x="216" y="1124">Code:</text>
                  <text x="260" y="1124">2.04</text>
                  <text x="320" y="1124">(Changed)</text>
                  <text x="60" y="1140">2.04</text>
                  <text x="212" y="1140">Token:</text>
                  <text x="260" y="1140">0xbe</text>
                  <text x="208" y="1156">OSCORE:</text>
                  <text x="248" y="1156">-</text>
                  <text x="212" y="1172">0xff</text>
                  <text x="204" y="1188">Payload:</text>
                  <text x="268" y="1188">{Code:</text>
                  <text x="316" y="1188">2.04</text>
                  <text x="380" y="1188">(Changed),</text>
                  <text x="272" y="1204">0xff,</text>
                  <text x="272" y="1220">EDHOC</text>
                  <text x="336" y="1220">message_2</text>
                  <text x="248" y="1236">}</text>
                  <text x="268" y="1236">//</text>
                  <text x="320" y="1236">Encrypted</text>
                  <text x="380" y="1236">with</text>
                  <text x="432" y="1236">CTX_C_P</text>
                  <text x="40" y="1268">Establish</text>
                  <text x="32" y="1284">CTX_C_S</text>
                  <text x="32" y="1316">Encrypt</text>
                  <text x="16" y="1332">REQ</text>
                  <text x="52" y="1332">with</text>
                  <text x="32" y="1348">CTX_C_P</text>
                  <text x="216" y="1380">Code:</text>
                  <text x="260" y="1380">0.02</text>
                  <text x="308" y="1380">(POST)</text>
                  <text x="52" y="1396">POST</text>
                  <text x="212" y="1396">Token:</text>
                  <text x="260" y="1396">0xb9</text>
                  <text x="208" y="1412">OSCORE:</text>
                  <text x="284" y="1412">[kid:0x20,</text>
                  <text x="360" y="1412">Partial</text>
                  <text x="416" y="1412">IV:1]</text>
                  <text x="212" y="1428">0xff</text>
                  <text x="204" y="1444">Payload:</text>
                  <text x="268" y="1444">{Code:</text>
                  <text x="316" y="1444">0.02</text>
                  <text x="368" y="1444">(POST),</text>
                  <text x="288" y="1460">Uri-Host:</text>
                  <text x="388" y="1460">"example.com",</text>
                  <text x="288" y="1476">Uri-Path:</text>
                  <text x="388" y="1476">".well-known",</text>
                  <text x="288" y="1492">Uri-Path:</text>
                  <text x="364" y="1492">"edhoc",</text>
                  <text x="304" y="1508">Proxy-Scheme:</text>
                  <text x="392" y="1508">"coap",</text>
                  <text x="272" y="1524">0xff,</text>
                  <text x="272" y="1540">(C_R,</text>
                  <text x="320" y="1540">EDHOC</text>
                  <text x="388" y="1540">message_3)</text>
                  <text x="248" y="1556">}</text>
                  <text x="272" y="1556">/</text>
                  <text x="320" y="1556">Encrypted</text>
                  <text x="380" y="1556">with</text>
                  <text x="432" y="1556">CTX_C_P</text>
                  <text x="96" y="1588">Decrypt</text>
                  <text x="80" y="1604">REQ</text>
                  <text x="116" y="1604">with</text>
                  <text x="96" y="1620">CTX_C_P</text>
                  <text x="216" y="1652">Code:</text>
                  <text x="260" y="1652">0.02</text>
                  <text x="308" y="1652">(POST)</text>
                  <text x="116" y="1668">POST</text>
                  <text x="212" y="1668">Token:</text>
                  <text x="260" y="1668">0xdd</text>
                  <text x="200" y="1684">Uri-Host:</text>
                  <text x="300" y="1684">"example.com",</text>
                  <text x="200" y="1700">Uri-Path:</text>
                  <text x="296" y="1700">".well-known"</text>
                  <text x="200" y="1716">Uri-Path:</text>
                  <text x="272" y="1716">"edhoc"</text>
                  <text x="212" y="1732">0xff</text>
                  <text x="204" y="1748">Payload:</text>
                  <text x="264" y="1748">(C_R,</text>
                  <text x="312" y="1748">EDHOC</text>
                  <text x="380" y="1748">message_3)</text>
                  <text x="168" y="1780">Establish</text>
                  <text x="160" y="1796">CTX_C_S</text>
                  <text x="120" y="1844">ACK</text>
                  <text x="56" y="1892">ACK</text>
                  <text x="32" y="1924">Encrypt</text>
                  <text x="16" y="1940">REQ</text>
                  <text x="52" y="1940">with</text>
                  <text x="32" y="1956">CTX_C_S</text>
                  <text x="32" y="1988">Encrypt</text>
                  <text x="16" y="2004">REQ</text>
                  <text x="52" y="2004">with</text>
                  <text x="32" y="2020">CTX_C_P</text>
                  <text x="216" y="2052">Code:</text>
                  <text x="260" y="2052">0.02</text>
                  <text x="308" y="2052">(POST)</text>
                  <text x="52" y="2068">POST</text>
                  <text x="212" y="2068">Token:</text>
                  <text x="260" y="2068">0x8c</text>
                  <text x="208" y="2084">OSCORE:</text>
                  <text x="284" y="2084">[kid:0x20,</text>
                  <text x="360" y="2084">Partial</text>
                  <text x="416" y="2084">IV:2]</text>
                  <text x="212" y="2100">0xff</text>
                  <text x="204" y="2116">Payload:</text>
                  <text x="268" y="2116">{Code:</text>
                  <text x="316" y="2116">0.02</text>
                  <text x="368" y="2116">(POST),</text>
                  <text x="280" y="2132">OSCORE:</text>
                  <text x="356" y="2132">[kid:0x5f,</text>
                  <text x="432" y="2132">Partial</text>
                  <text x="492" y="2132">IV:0],</text>
                  <text x="288" y="2148">Uri-Host:</text>
                  <text x="388" y="2148">"example.com",</text>
                  <text x="304" y="2164">Proxy-Scheme:</text>
                  <text x="392" y="2164">"coap",</text>
                  <text x="272" y="2180">0xff,</text>
                  <text x="276" y="2196">{Code:</text>
                  <text x="324" y="2196">0.01</text>
                  <text x="372" y="2196">(GET),</text>
                  <text x="296" y="2212">Uri-Path:</text>
                  <text x="396" y="2212">"alarm_status"</text>
                  <text x="256" y="2228">}</text>
                  <text x="328" y="2228">Encrypted</text>
                  <text x="388" y="2228">with</text>
                  <text x="440" y="2228">CTX_C_S</text>
                  <text x="248" y="2244">}</text>
                  <text x="320" y="2244">Encrypted</text>
                  <text x="380" y="2244">with</text>
                  <text x="432" y="2244">CTX_C_P</text>
                  <text x="96" y="2276">Decrypt</text>
                  <text x="80" y="2292">REQ</text>
                  <text x="116" y="2292">with</text>
                  <text x="96" y="2308">CTX_C_P</text>
                  <text x="216" y="2340">Code:</text>
                  <text x="260" y="2340">0.02</text>
                  <text x="308" y="2340">(POST)</text>
                  <text x="116" y="2356">POST</text>
                  <text x="212" y="2356">Token:</text>
                  <text x="260" y="2356">0x7b</text>
                  <text x="200" y="2372">Uri-Host:</text>
                  <text x="300" y="2372">"example.com",</text>
                  <text x="208" y="2388">OSCORE:</text>
                  <text x="284" y="2388">[kid:0x5f,</text>
                  <text x="360" y="2388">Partial</text>
                  <text x="416" y="2388">IV:0]</text>
                  <text x="212" y="2404">0xff</text>
                  <text x="204" y="2420">Payload:</text>
                  <text x="268" y="2420">{Code:</text>
                  <text x="316" y="2420">0.01</text>
                  <text x="364" y="2420">(GET),</text>
                  <text x="288" y="2436">Uri-Path:</text>
                  <text x="388" y="2436">"alarm_status"</text>
                  <text x="248" y="2452">}</text>
                  <text x="268" y="2452">//</text>
                  <text x="320" y="2452">Encrypted</text>
                  <text x="380" y="2452">with</text>
                  <text x="432" y="2452">CTX_C_S</text>
                  <text x="160" y="2484">Decrypt</text>
                  <text x="144" y="2500">REQ</text>
                  <text x="180" y="2500">with</text>
                  <text x="160" y="2516">CTX_C_S</text>
                  <text x="160" y="2548">Encrypt</text>
                  <text x="148" y="2564">RESP</text>
                  <text x="188" y="2564">with</text>
                  <text x="160" y="2580">CTX_C_S</text>
                  <text x="216" y="2612">Code:</text>
                  <text x="260" y="2612">2.04</text>
                  <text x="320" y="2612">(Changed)</text>
                  <text x="124" y="2628">2.04</text>
                  <text x="212" y="2628">Token:</text>
                  <text x="260" y="2628">0x7b</text>
                  <text x="208" y="2644">OSCORE:</text>
                  <text x="248" y="2644">-</text>
                  <text x="212" y="2660">0xff</text>
                  <text x="204" y="2676">Payload:</text>
                  <text x="268" y="2676">{Code:</text>
                  <text x="316" y="2676">2.05</text>
                  <text x="380" y="2676">(Content),</text>
                  <text x="272" y="2692">0xff,</text>
                  <text x="264" y="2708">"0"</text>
                  <text x="248" y="2724">}</text>
                  <text x="268" y="2724">//</text>
                  <text x="320" y="2724">Encrypted</text>
                  <text x="380" y="2724">with</text>
                  <text x="432" y="2724">CTX_C_S</text>
                  <text x="96" y="2756">Encrypt</text>
                  <text x="84" y="2772">RESP</text>
                  <text x="124" y="2772">with</text>
                  <text x="96" y="2788">CTX_C_P</text>
                  <text x="216" y="2820">Code:</text>
                  <text x="260" y="2820">2.04</text>
                  <text x="320" y="2820">(Changed)</text>
                  <text x="60" y="2836">2.04</text>
                  <text x="212" y="2836">Token:</text>
                  <text x="260" y="2836">0x8c</text>
                  <text x="208" y="2852">OSCORE:</text>
                  <text x="248" y="2852">-</text>
                  <text x="212" y="2868">0xff</text>
                  <text x="204" y="2884">Payload:</text>
                  <text x="268" y="2884">{Code:</text>
                  <text x="316" y="2884">2.04</text>
                  <text x="380" y="2884">(Changed),</text>
                  <text x="280" y="2900">OSCORE:</text>
                  <text x="324" y="2900">-,</text>
                  <text x="272" y="2916">0xff,</text>
                  <text x="276" y="2932">{Code:</text>
                  <text x="324" y="2932">2.05</text>
                  <text x="388" y="2932">(Content),</text>
                  <text x="280" y="2948">0xff,</text>
                  <text x="272" y="2964">"0"</text>
                  <text x="256" y="2980">}</text>
                  <text x="328" y="2980">Encrypted</text>
                  <text x="388" y="2980">with</text>
                  <text x="440" y="2980">CTX_C_S</text>
                  <text x="248" y="2996">}</text>
                  <text x="320" y="2996">Encrypted</text>
                  <text x="380" y="2996">with</text>
                  <text x="432" y="2996">CTX_C_P</text>
                  <text x="32" y="3028">Decrypt</text>
                  <text x="20" y="3044">RESP</text>
                  <text x="60" y="3044">with</text>
                  <text x="32" y="3060">CTX_C_P</text>
                  <text x="32" y="3092">Decrypt</text>
                  <text x="20" y="3108">RESP</text>
                  <text x="60" y="3108">with</text>
                  <text x="32" y="3124">CTX_C_S</text>
                  <text x="28" y="3172">Square</text>
                  <text x="92" y="3172">brackets</text>
                  <text x="136" y="3172">[</text>
                  <text x="160" y="3172">...</text>
                  <text x="184" y="3172">]</text>
                  <text x="228" y="3172">indicate</text>
                  <text x="296" y="3172">content</text>
                  <text x="340" y="3172">of</text>
                  <text x="396" y="3172">compressed</text>
                  <text x="460" y="3172">COSE</text>
                  <text x="512" y="3172">object.</text>
                  <text x="24" y="3188">Curly</text>
                  <text x="84" y="3188">brackets</text>
                  <text x="128" y="3188">{</text>
                  <text x="152" y="3188">...</text>
                  <text x="176" y="3188">}</text>
                  <text x="220" y="3188">indicate</text>
                  <text x="296" y="3188">encrypted</text>
                  <text x="360" y="3188">data.</text>
                  <text x="16" y="3220">(A,</text>
                  <text x="44" y="3220">B)</text>
                  <text x="96" y="3220">indicates</text>
                  <text x="144" y="3220">a</text>
                  <text x="172" y="3220">CBOR</text>
                  <text x="228" y="3220">sequence</text>
                  <text x="304" y="3220">[RFC8742]</text>
                  <text x="68" y="3236">of</text>
                  <text x="96" y="3236">two</text>
                  <text x="132" y="3236">CBOR</text>
                  <text x="172" y="3236">data</text>
                  <text x="216" y="3236">items</text>
                  <text x="248" y="3236">A</text>
                  <text x="272" y="3236">and</text>
                  <text x="300" y="3236">B.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client  Proxy  Server
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0xf3
  |       |       | Uri-Path: ".well-known"
  |       |       | Uri-Path: "edhoc"
  |       |       |     0xff
  |       |       |  Payload: (true, EDHOC message_1)
  |       |       |
  |<------+       |     Code: 2.04 (Changed)
  |  2.04 |       |    Token: 0xf3
  |       |       |     0xff
  |       |       |  Payload: EDHOC message_2
  |       |       |
Establish |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0x82
  |       |       | Uri-Path: ".well-known"
  |       |       | Uri-Path: "edhoc"
  |       |       |     0xff
  |       |       |  Payload: (C_R, EDHOC message_3)
  |       |       |
  |     Establish |
  |     CTX_C_P   |
  |       |       |
  |<------+       |
  |  ACK  |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0xbe
  |       |       |   OSCORE: [kid:0x20, Partial IV:0]
  |       |       |     0xff
  |       |       |  Payload: {Code: 0.02 (POST),
  |       |       |            Uri-Host: "example.com",
  |       |       |            Uri-Path: ".well-known",
  |       |       |            Uri-Path: "edhoc",
  |       |       |            Proxy-Scheme: "coap",
  |       |       |            0xff,
  |       |       |            (true, EDHOC message_1)
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |       +------>|     Code: 0.02 (POST)
  |       | POST  |    Token: 0xa5
  |       |       | Uri-Host: "example.com",
  |       |       | Uri-Path: ".well-known"
  |       |       | Uri-Path: "edhoc"
  |       |       |     0xff
  |       |       |  Payload: (true, EDHOC message_1)
  |       |       |
  |       |<------+     Code: 2.04 (Changed)
  |       |  2.04 |    Token: 0xa5
  |       |       |     0xff
  |       |       |  Payload: EDHOC message_2
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |     Code: 2.04 (Changed)
  |  2.04 |       |    Token: 0xbe
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.04 (Changed),
  |       |       |            0xff,
  |       |       |            EDHOC message_2
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
Establish |       |
CTX_C_S   |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0xb9
  |       |       |   OSCORE: [kid:0x20, Partial IV:1]
  |       |       |     0xff
  |       |       |  Payload: {Code: 0.02 (POST),
  |       |       |            Uri-Host: "example.com",
  |       |       |            Uri-Path: ".well-known",
  |       |       |            Uri-Path: "edhoc",
  |       |       |            Proxy-Scheme: "coap",
  |       |       |            0xff,
  |       |       |            (C_R, EDHOC message_3)
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |       +------>|     Code: 0.02 (POST)
  |       | POST  |    Token: 0xdd
  |       |       | Uri-Host: "example.com",
  |       |       | Uri-Path: ".well-known"
  |       |       | Uri-Path: "edhoc"
  |       |       |     0xff
  |       |       |  Payload: (C_R, EDHOC message_3)
  |       |       |
  |       |     Establish
  |       |     CTX_C_S
  |       |       |
  |       |<------+
  |       |  ACK  |
  |       |       |
  |<------+       |
  |  ACK  |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_S   |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0x8c
  |       |       |   OSCORE: [kid:0x20, Partial IV:2]
  |       |       |     0xff
  |       |       |  Payload: {Code: 0.02 (POST),
  |       |       |            OSCORE: [kid:0x5f, Partial IV:0],
  |       |       |            Uri-Host: "example.com",
  |       |       |            Proxy-Scheme: "coap",
  |       |       |            0xff,
  |       |       |            {Code: 0.01 (GET),
  |       |       |             Uri-Path: "alarm_status"
  |       |       |            } // Encrypted with CTX_C_S
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |       +------>|     Code: 0.02 (POST)
  |       | POST  |    Token: 0x7b
  |       |       | Uri-Host: "example.com",
  |       |       |   OSCORE: [kid:0x5f, Partial IV:0]
  |       |       |     0xff
  |       |       |  Payload: {Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_C_S
  |       |       |
  |       |<------+     Code: 2.04 (Changed)
  |       |  2.04 |    Token: 0x7b
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |     Code: 2.04 (Changed)
  |  2.04 |       |    Token: 0x8c
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.04 (Changed),
  |       |       |            OSCORE: -,
  |       |       |            0xff,
  |       |       |            {Code: 2.05 (Content),
  |       |       |             0xff,
  |       |       |             "0"
  |       |       |            } // Encrypted with CTX_C_S
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_P   |       |
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_S   |       |
  |       |       |

Square brackets [ ... ] indicate content of compressed COSE object.
Curly brackets { ... } indicate encrypted data.

(A, B) indicates a CBOR sequence [RFC8742]
       of two CBOR data items A and B.
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="sec-example-edhoc-comb-req">
        <name>Example 5</name>
        <t>In the example shown in <xref target="fig-example-edhoc-comb-req"/>, message exchanges are protected over the following legs.</t>
        <ul spacing="normal">
          <li>
            <t>End-to-end, between the client and the server. The client uses the OSCORE Sender ID 0x5f when using OSCORE with the server.</t>
          </li>
          <li>
            <t>Between the client and the proxy. The client uses the OSCORE Sender ID 0x20 when using OSCORE with the proxy.</t>
          </li>
        </ul>
        <t>The example also shows how the client establishes an OSCORE Security Context CTX_C_P with the proxy and CTX_C_S with the server, by using the key exchange protocol EDHOC <xref target="RFC9528"/>.</t>
        <t>In particular, the client relies on the EDHOC + OSCORE request defined in <xref target="I-D.ietf-core-oscore-edhoc"/> and denoted as COMB_REQ, in order to transport the last EDHOC message_3 and the first OSCORE-protected application CoAP request combined together.</t>
        <figure anchor="fig-example-edhoc-comb-req">
          <name>Use of OSCORE between Client-Server and Proxy-Server, with OSCORE Security Contexts established through EDHOC using the EDHOC + OSCORE request</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="3008" width="544" viewBox="0 0 544 3008" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 24,48 L 24,240" fill="none" stroke="black"/>
                <path d="M 24,280 L 24,288" fill="none" stroke="black"/>
                <path d="M 24,344 L 24,352" fill="none" stroke="black"/>
                <path d="M 24,432 L 24,1264" fill="none" stroke="black"/>
                <path d="M 24,1320 L 24,1328" fill="none" stroke="black"/>
                <path d="M 24,1368 L 24,1376" fill="none" stroke="black"/>
                <path d="M 24,1432 L 24,1440" fill="none" stroke="black"/>
                <path d="M 24,1576 L 24,2768" fill="none" stroke="black"/>
                <path d="M 24,2824 L 24,2832" fill="none" stroke="black"/>
                <path d="M 24,2888 L 24,2896" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,672" fill="none" stroke="black"/>
                <path d="M 88,712 L 88,720" fill="none" stroke="black"/>
                <path d="M 88,840 L 88,1056" fill="none" stroke="black"/>
                <path d="M 88,1112 L 88,1856" fill="none" stroke="black"/>
                <path d="M 88,1912 L 88,2496" fill="none" stroke="black"/>
                <path d="M 88,2552 L 88,2896" fill="none" stroke="black"/>
                <path d="M 152,48 L 152,2112" fill="none" stroke="black"/>
                <path d="M 152,2152 L 152,2160" fill="none" stroke="black"/>
                <path d="M 152,2280 L 152,2288" fill="none" stroke="black"/>
                <path d="M 152,2344 L 152,2896" fill="none" stroke="black"/>
                <path d="M 24,64 L 80,64" fill="none" stroke="black"/>
                <path d="M 32,176 L 88,176" fill="none" stroke="black"/>
                <path d="M 24,448 L 80,448" fill="none" stroke="black"/>
                <path d="M 88,864 L 144,864" fill="none" stroke="black"/>
                <path d="M 96,992 L 152,992" fill="none" stroke="black"/>
                <path d="M 32,1136 L 88,1136" fill="none" stroke="black"/>
                <path d="M 24,1600 L 80,1600" fill="none" stroke="black"/>
                <path d="M 88,1936 L 144,1936" fill="none" stroke="black"/>
                <path d="M 96,2368 L 152,2368" fill="none" stroke="black"/>
                <path d="M 32,2576 L 88,2576" fill="none" stroke="black"/>
                <path d="M 264,1840 L 272,1824" fill="none" stroke="black"/>
                <path d="M 272,1840 L 284,1816" fill="none" stroke="black"/>
                <path d="M 264,2752 L 272,2736" fill="none" stroke="black"/>
                <path d="M 272,2752 L 280,2736" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="152,1936 140,1930.4 140,1941.6" fill="black" transform="rotate(0,144,1936)"/>
                <polygon class="arrowhead" points="152,864 140,858.4 140,869.6" fill="black" transform="rotate(0,144,864)"/>
                <polygon class="arrowhead" points="104,2368 92,2362.4 92,2373.6" fill="black" transform="rotate(180,96,2368)"/>
                <polygon class="arrowhead" points="104,992 92,986.4 92,997.6" fill="black" transform="rotate(180,96,992)"/>
                <polygon class="arrowhead" points="88,1600 76,1594.4 76,1605.6" fill="black" transform="rotate(0,80,1600)"/>
                <polygon class="arrowhead" points="88,448 76,442.4 76,453.6" fill="black" transform="rotate(0,80,448)"/>
                <polygon class="arrowhead" points="88,64 76,58.4 76,69.6" fill="black" transform="rotate(0,80,64)"/>
                <polygon class="arrowhead" points="40,2576 28,2570.4 28,2581.6" fill="black" transform="rotate(180,32,2576)"/>
                <polygon class="arrowhead" points="40,1136 28,1130.4 28,1141.6" fill="black" transform="rotate(180,32,1136)"/>
                <polygon class="arrowhead" points="40,176 28,170.4 28,181.6" fill="black" transform="rotate(180,32,176)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Proxy</text>
                  <text x="148" y="36">Server</text>
                  <text x="216" y="68">Code:</text>
                  <text x="260" y="68">0.02</text>
                  <text x="308" y="68">(POST)</text>
                  <text x="52" y="84">POST</text>
                  <text x="212" y="84">Token:</text>
                  <text x="260" y="84">0xf3</text>
                  <text x="200" y="100">Uri-Path:</text>
                  <text x="296" y="100">".well-known"</text>
                  <text x="200" y="116">Uri-Path:</text>
                  <text x="272" y="116">"edhoc"</text>
                  <text x="212" y="132">0xff</text>
                  <text x="204" y="148">Payload:</text>
                  <text x="268" y="148">(true,</text>
                  <text x="320" y="148">EDHOC</text>
                  <text x="388" y="148">message_1)</text>
                  <text x="208" y="180">Code:</text>
                  <text x="252" y="180">2.04</text>
                  <text x="312" y="180">(Changed)</text>
                  <text x="60" y="196">2.04</text>
                  <text x="204" y="196">Token:</text>
                  <text x="252" y="196">0xf3</text>
                  <text x="204" y="212">0xff</text>
                  <text x="196" y="228">Payload:</text>
                  <text x="256" y="228">EDHOC</text>
                  <text x="320" y="228">message_2</text>
                  <text x="40" y="260">Establish</text>
                  <text x="32" y="276">CTX_C_P</text>
                  <text x="32" y="308">Encrypt</text>
                  <text x="16" y="324">REQ</text>
                  <text x="52" y="324">with</text>
                  <text x="32" y="340">CTX_C_P</text>
                  <text x="32" y="372">Prepare</text>
                  <text x="36" y="388">COMB_REQ</text>
                  <text x="16" y="404">for</text>
                  <text x="40" y="404">P</text>
                  <text x="20" y="420">from</text>
                  <text x="56" y="420">REQ</text>
                  <text x="216" y="452">Code:</text>
                  <text x="260" y="452">0.02</text>
                  <text x="308" y="452">(POST)</text>
                  <text x="52" y="468">POST</text>
                  <text x="212" y="468">Token:</text>
                  <text x="260" y="468">0x82</text>
                  <text x="208" y="484">OSCORE:</text>
                  <text x="284" y="484">[kid:0x20,</text>
                  <text x="360" y="484">Partial</text>
                  <text x="416" y="484">IV:0]</text>
                  <text x="212" y="500">EDHOC:</text>
                  <text x="248" y="500">-</text>
                  <text x="212" y="516">0xff</text>
                  <text x="204" y="532">Payload:</text>
                  <text x="264" y="532">EDHOC</text>
                  <text x="332" y="532">message_3,</text>
                  <text x="388" y="532">//</text>
                  <text x="436" y="532">Intended</text>
                  <text x="488" y="532">for</text>
                  <text x="512" y="532">P</text>
                  <text x="268" y="548">{Code:</text>
                  <text x="316" y="548">0.02</text>
                  <text x="368" y="548">(POST),</text>
                  <text x="288" y="564">Uri-Host:</text>
                  <text x="388" y="564">"example.com",</text>
                  <text x="288" y="580">Uri-Path:</text>
                  <text x="388" y="580">".well-known",</text>
                  <text x="288" y="596">Uri-Path:</text>
                  <text x="364" y="596">"edhoc",</text>
                  <text x="304" y="612">Proxy-Scheme:</text>
                  <text x="392" y="612">"coap",</text>
                  <text x="272" y="628">0xff,</text>
                  <text x="276" y="644">(true,</text>
                  <text x="328" y="644">EDHOC</text>
                  <text x="396" y="644">message_1)</text>
                  <text x="248" y="660">}</text>
                  <text x="268" y="660">//</text>
                  <text x="320" y="660">Encrypted</text>
                  <text x="380" y="660">with</text>
                  <text x="432" y="660">CTX_C_P</text>
                  <text x="104" y="692">Establish</text>
                  <text x="96" y="708">CTX_C_P</text>
                  <text x="96" y="740">Rebuild</text>
                  <text x="80" y="756">REQ</text>
                  <text x="116" y="756">from</text>
                  <text x="100" y="772">COMB_REQ</text>
                  <text x="88" y="788">|</text>
                  <text x="96" y="804">Decrypt</text>
                  <text x="80" y="820">REQ</text>
                  <text x="116" y="820">with</text>
                  <text x="96" y="836">CTX_C_P</text>
                  <text x="216" y="868">Code:</text>
                  <text x="260" y="868">0.02</text>
                  <text x="308" y="868">(POST)</text>
                  <text x="116" y="884">POST</text>
                  <text x="212" y="884">Token:</text>
                  <text x="260" y="884">0xa5</text>
                  <text x="200" y="900">Uri-Host:</text>
                  <text x="300" y="900">"example.com",</text>
                  <text x="200" y="916">Uri-Path:</text>
                  <text x="296" y="916">".well-known"</text>
                  <text x="200" y="932">Uri-Path:</text>
                  <text x="272" y="932">"edhoc"</text>
                  <text x="212" y="948">0xff</text>
                  <text x="204" y="964">Payload:</text>
                  <text x="268" y="964">(true,</text>
                  <text x="320" y="964">EDHOC</text>
                  <text x="388" y="964">message_1)</text>
                  <text x="208" y="996">Code:</text>
                  <text x="252" y="996">2.04</text>
                  <text x="312" y="996">(Changed)</text>
                  <text x="124" y="1012">2.04</text>
                  <text x="204" y="1012">Token:</text>
                  <text x="252" y="1012">0xa5</text>
                  <text x="204" y="1028">0xff</text>
                  <text x="196" y="1044">Payload:</text>
                  <text x="256" y="1044">EDHOC</text>
                  <text x="320" y="1044">message_2</text>
                  <text x="96" y="1076">Encrypt</text>
                  <text x="84" y="1092">RESP</text>
                  <text x="124" y="1092">with</text>
                  <text x="96" y="1108">CTX_C_P</text>
                  <text x="216" y="1140">Code:</text>
                  <text x="260" y="1140">2.04</text>
                  <text x="320" y="1140">(Changed)</text>
                  <text x="60" y="1156">2.04</text>
                  <text x="212" y="1156">Token:</text>
                  <text x="260" y="1156">0x82</text>
                  <text x="208" y="1172">OSCORE:</text>
                  <text x="248" y="1172">-</text>
                  <text x="212" y="1188">0xff</text>
                  <text x="204" y="1204">Payload:</text>
                  <text x="268" y="1204">{Code:</text>
                  <text x="316" y="1204">2.04</text>
                  <text x="380" y="1204">(Changed),</text>
                  <text x="272" y="1220">0xff,</text>
                  <text x="272" y="1236">EDHOC</text>
                  <text x="336" y="1236">message_2</text>
                  <text x="248" y="1252">}</text>
                  <text x="268" y="1252">//</text>
                  <text x="320" y="1252">Encrypted</text>
                  <text x="380" y="1252">with</text>
                  <text x="432" y="1252">CTX_C_P</text>
                  <text x="32" y="1284">Decrypt</text>
                  <text x="20" y="1300">RESP</text>
                  <text x="60" y="1300">with</text>
                  <text x="32" y="1316">CTX_C_P</text>
                  <text x="40" y="1348">Establish</text>
                  <text x="32" y="1364">CTX_C_S</text>
                  <text x="32" y="1396">Encrypt</text>
                  <text x="16" y="1412">REQ</text>
                  <text x="52" y="1412">with</text>
                  <text x="32" y="1428">CTX_C_S</text>
                  <text x="32" y="1460">Prepare</text>
                  <text x="36" y="1476">COMB_REQ</text>
                  <text x="16" y="1492">for</text>
                  <text x="40" y="1492">S</text>
                  <text x="20" y="1508">from</text>
                  <text x="56" y="1508">REQ</text>
                  <text x="24" y="1524">|</text>
                  <text x="32" y="1540">Encrypt</text>
                  <text x="16" y="1556">REQ</text>
                  <text x="52" y="1556">with</text>
                  <text x="32" y="1572">CTX_C_P</text>
                  <text x="216" y="1604">Code:</text>
                  <text x="260" y="1604">0.02</text>
                  <text x="308" y="1604">(POST)</text>
                  <text x="52" y="1620">POST</text>
                  <text x="212" y="1620">Token:</text>
                  <text x="260" y="1620">0x83</text>
                  <text x="208" y="1636">OSCORE:</text>
                  <text x="284" y="1636">[kid:0x20,</text>
                  <text x="360" y="1636">Partial</text>
                  <text x="416" y="1636">IV:1]</text>
                  <text x="212" y="1652">0xff</text>
                  <text x="204" y="1668">Payload:</text>
                  <text x="268" y="1668">{Code:</text>
                  <text x="316" y="1668">0.02</text>
                  <text x="368" y="1668">(POST),</text>
                  <text x="288" y="1684">Uri-Host:</text>
                  <text x="388" y="1684">"example.com",</text>
                  <text x="280" y="1700">OSCORE:</text>
                  <text x="356" y="1700">[kid:0x5f,</text>
                  <text x="432" y="1700">Partial</text>
                  <text x="492" y="1700">IV:0],</text>
                  <text x="276" y="1716">EDHOC:</text>
                  <text x="316" y="1716">-,</text>
                  <text x="304" y="1732">Proxy-Scheme:</text>
                  <text x="392" y="1732">"coap",</text>
                  <text x="272" y="1748">0xff,</text>
                  <text x="272" y="1764">EDHOC</text>
                  <text x="340" y="1764">message_3,</text>
                  <text x="396" y="1764">//</text>
                  <text x="444" y="1764">Intended</text>
                  <text x="496" y="1764">for</text>
                  <text x="520" y="1764">S</text>
                  <text x="256" y="1780">{</text>
                  <text x="280" y="1796">Code:</text>
                  <text x="324" y="1796">0.01</text>
                  <text x="372" y="1796">(GET),</text>
                  <text x="352" y="1812">Uri-Path:"alarm_status"</text>
                  <text x="256" y="1828">}</text>
                  <text x="328" y="1828">Encrypted</text>
                  <text x="388" y="1828">with</text>
                  <text x="440" y="1828">CTX_C_S</text>
                  <text x="248" y="1844">}</text>
                  <text x="320" y="1844">Encrypted</text>
                  <text x="380" y="1844">with</text>
                  <text x="432" y="1844">CTX_C_P</text>
                  <text x="96" y="1876">Decrypt</text>
                  <text x="80" y="1892">REQ</text>
                  <text x="116" y="1892">with</text>
                  <text x="96" y="1908">CTX_C_P</text>
                  <text x="216" y="1940">Code:</text>
                  <text x="260" y="1940">0.02</text>
                  <text x="308" y="1940">(POST)</text>
                  <text x="116" y="1956">POST</text>
                  <text x="212" y="1956">Token:</text>
                  <text x="260" y="1956">0xa6</text>
                  <text x="200" y="1972">Uri-Host:</text>
                  <text x="300" y="1972">"example.com",</text>
                  <text x="208" y="1988">OSCORE:</text>
                  <text x="284" y="1988">[kid:0x5f,</text>
                  <text x="360" y="1988">Partial</text>
                  <text x="416" y="1988">IV:0]</text>
                  <text x="212" y="2004">EDHOC:</text>
                  <text x="248" y="2004">-</text>
                  <text x="212" y="2020">0xff</text>
                  <text x="204" y="2036">Payload:</text>
                  <text x="264" y="2036">EDHOC</text>
                  <text x="332" y="2036">message_3,</text>
                  <text x="388" y="2036">//</text>
                  <text x="436" y="2036">Intended</text>
                  <text x="488" y="2036">for</text>
                  <text x="512" y="2036">S</text>
                  <text x="248" y="2052">{</text>
                  <text x="272" y="2068">Code:</text>
                  <text x="316" y="2068">0.01</text>
                  <text x="364" y="2068">(GET),</text>
                  <text x="288" y="2084">Uri-Path:</text>
                  <text x="388" y="2084">"alarm_status"</text>
                  <text x="248" y="2100">}</text>
                  <text x="268" y="2100">//</text>
                  <text x="320" y="2100">Encrypted</text>
                  <text x="380" y="2100">with</text>
                  <text x="432" y="2100">CTX_C_S</text>
                  <text x="168" y="2132">Establish</text>
                  <text x="160" y="2148">CTX_C_S</text>
                  <text x="160" y="2180">Rebuild</text>
                  <text x="144" y="2196">REQ</text>
                  <text x="180" y="2196">from</text>
                  <text x="164" y="2212">COMB_REQ</text>
                  <text x="152" y="2228">|</text>
                  <text x="160" y="2244">Decrypt</text>
                  <text x="144" y="2260">REQ</text>
                  <text x="180" y="2260">with</text>
                  <text x="160" y="2276">CTX_C_S</text>
                  <text x="160" y="2308">Encrypt</text>
                  <text x="148" y="2324">RESP</text>
                  <text x="188" y="2324">with</text>
                  <text x="160" y="2340">CTX_C_S</text>
                  <text x="216" y="2372">Code:</text>
                  <text x="260" y="2372">2.04</text>
                  <text x="320" y="2372">(Changed)</text>
                  <text x="124" y="2388">2.04</text>
                  <text x="212" y="2388">Token:</text>
                  <text x="260" y="2388">0xa6</text>
                  <text x="208" y="2404">OSCORE:</text>
                  <text x="248" y="2404">-</text>
                  <text x="212" y="2420">0xff</text>
                  <text x="204" y="2436">Payload:</text>
                  <text x="268" y="2436">{Code:</text>
                  <text x="316" y="2436">2.05</text>
                  <text x="380" y="2436">(Content),</text>
                  <text x="272" y="2452">0xff,</text>
                  <text x="264" y="2468">"0"</text>
                  <text x="248" y="2484">}</text>
                  <text x="268" y="2484">//</text>
                  <text x="320" y="2484">Encrypted</text>
                  <text x="380" y="2484">with</text>
                  <text x="432" y="2484">CTX_C_S</text>
                  <text x="96" y="2516">Encrypt</text>
                  <text x="84" y="2532">RESP</text>
                  <text x="124" y="2532">with</text>
                  <text x="96" y="2548">CTX_C_P</text>
                  <text x="216" y="2580">Code:</text>
                  <text x="260" y="2580">2.04</text>
                  <text x="320" y="2580">(Changed)</text>
                  <text x="60" y="2596">2.04</text>
                  <text x="212" y="2596">Token:</text>
                  <text x="260" y="2596">0x83</text>
                  <text x="208" y="2612">OSCORE:</text>
                  <text x="248" y="2612">-</text>
                  <text x="212" y="2628">0xff</text>
                  <text x="204" y="2644">Payload:</text>
                  <text x="268" y="2644">{Code:</text>
                  <text x="316" y="2644">2.04</text>
                  <text x="380" y="2644">(Changed),</text>
                  <text x="280" y="2660">OSCORE:</text>
                  <text x="324" y="2660">-,</text>
                  <text x="272" y="2676">0xff,</text>
                  <text x="276" y="2692">{Code:</text>
                  <text x="324" y="2692">2.05</text>
                  <text x="388" y="2692">(Content),</text>
                  <text x="280" y="2708">0xff,</text>
                  <text x="272" y="2724">"0"</text>
                  <text x="256" y="2740">}</text>
                  <text x="328" y="2740">Encrypted</text>
                  <text x="388" y="2740">with</text>
                  <text x="440" y="2740">CTX_C_S</text>
                  <text x="248" y="2756">}</text>
                  <text x="320" y="2756">Encrypted</text>
                  <text x="380" y="2756">with</text>
                  <text x="432" y="2756">CTX_C_P</text>
                  <text x="32" y="2788">Decrypt</text>
                  <text x="20" y="2804">RESP</text>
                  <text x="60" y="2804">with</text>
                  <text x="32" y="2820">CTX_C_P</text>
                  <text x="32" y="2852">Decrypt</text>
                  <text x="20" y="2868">RESP</text>
                  <text x="60" y="2868">with</text>
                  <text x="32" y="2884">CTX_C_S</text>
                  <text x="28" y="2932">Square</text>
                  <text x="92" y="2932">brackets</text>
                  <text x="136" y="2932">[</text>
                  <text x="160" y="2932">...</text>
                  <text x="184" y="2932">]</text>
                  <text x="228" y="2932">indicate</text>
                  <text x="296" y="2932">content</text>
                  <text x="340" y="2932">of</text>
                  <text x="396" y="2932">compressed</text>
                  <text x="460" y="2932">COSE</text>
                  <text x="512" y="2932">object.</text>
                  <text x="24" y="2948">Curly</text>
                  <text x="84" y="2948">brackets</text>
                  <text x="128" y="2948">{</text>
                  <text x="152" y="2948">...</text>
                  <text x="176" y="2948">}</text>
                  <text x="220" y="2948">indicate</text>
                  <text x="296" y="2948">encrypted</text>
                  <text x="360" y="2948">data.</text>
                  <text x="16" y="2980">(A,</text>
                  <text x="44" y="2980">B)</text>
                  <text x="96" y="2980">indicates</text>
                  <text x="144" y="2980">a</text>
                  <text x="172" y="2980">CBOR</text>
                  <text x="228" y="2980">sequence</text>
                  <text x="304" y="2980">[RFC8742]</text>
                  <text x="68" y="2996">of</text>
                  <text x="96" y="2996">two</text>
                  <text x="132" y="2996">CBOR</text>
                  <text x="172" y="2996">data</text>
                  <text x="216" y="2996">items</text>
                  <text x="248" y="2996">A</text>
                  <text x="272" y="2996">and</text>
                  <text x="300" y="2996">B.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client  Proxy  Server
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0xf3
  |       |       | Uri-Path: ".well-known"
  |       |       | Uri-Path: "edhoc"
  |       |       |     0xff
  |       |       |  Payload: (true, EDHOC message_1)
  |       |       |
  |<------+       |    Code: 2.04 (Changed)
  |  2.04 |       |   Token: 0xf3
  |       |       |    0xff
  |       |       | Payload: EDHOC message_2
  |       |       |
Establish |       |
CTX_C_P   |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
Prepare   |       |
COMB_REQ  |       |
for P     |       |
from REQ  |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0x82
  |       |       |   OSCORE: [kid:0x20, Partial IV:0]
  |       |       |    EDHOC: -
  |       |       |     0xff
  |       |       |  Payload: EDHOC message_3, // Intended for P
  |       |       |           {Code: 0.02 (POST),
  |       |       |            Uri-Host: "example.com",
  |       |       |            Uri-Path: ".well-known",
  |       |       |            Uri-Path: "edhoc",
  |       |       |            Proxy-Scheme: "coap",
  |       |       |            0xff,
  |       |       |            (true, EDHOC message_1)
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
  |     Establish |
  |     CTX_C_P   |
  |       |       |
  |     Rebuild   |
  |     REQ from  |
  |     COMB_REQ  |
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |       +------>|     Code: 0.02 (POST)
  |       | POST  |    Token: 0xa5
  |       |       | Uri-Host: "example.com",
  |       |       | Uri-Path: ".well-known"
  |       |       | Uri-Path: "edhoc"
  |       |       |     0xff
  |       |       |  Payload: (true, EDHOC message_1)
  |       |       |
  |       |<------+    Code: 2.04 (Changed)
  |       |  2.04 |   Token: 0xa5
  |       |       |    0xff
  |       |       | Payload: EDHOC message_2
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |     Code: 2.04 (Changed)
  |  2.04 |       |    Token: 0x82
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.04 (Changed),
  |       |       |            0xff,
  |       |       |            EDHOC message_2
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_P   |       |
  |       |       |
Establish |       |
CTX_C_S   |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_S   |       |
  |       |       |
Prepare   |       |
COMB_REQ  |       |
for S     |       |
from REQ  |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0x83
  |       |       |   OSCORE: [kid:0x20, Partial IV:1]
  |       |       |     0xff
  |       |       |  Payload: {Code: 0.02 (POST),
  |       |       |            Uri-Host: "example.com",
  |       |       |            OSCORE: [kid:0x5f, Partial IV:0],
  |       |       |            EDHOC: -,
  |       |       |            Proxy-Scheme: "coap",
  |       |       |            0xff,
  |       |       |            EDHOC message_3, // Intended for S
  |       |       |            {
  |       |       |             Code: 0.01 (GET),
  |       |       |             Uri-Path:"alarm_status"
  |       |       |            } // Encrypted with CTX_C_S
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |       +------>|     Code: 0.02 (POST)
  |       | POST  |    Token: 0xa6
  |       |       | Uri-Host: "example.com",
  |       |       |   OSCORE: [kid:0x5f, Partial IV:0]
  |       |       |    EDHOC: -
  |       |       |     0xff
  |       |       |  Payload: EDHOC message_3, // Intended for S
  |       |       |           {
  |       |       |            Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |
  |       |     Establish
  |       |     CTX_C_S
  |       |       |
  |       |     Rebuild
  |       |     REQ from
  |       |     COMB_REQ
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_C_S
  |       |       |
  |       |<------+     Code: 2.04 (Changed)
  |       |  2.04 |    Token: 0xa6
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |     Code: 2.04 (Changed)
  |  2.04 |       |    Token: 0x83
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.04 (Changed),
  |       |       |            OSCORE: -,
  |       |       |            0xff,
  |       |       |            {Code: 2.05 (Content),
  |       |       |             0xff,
  |       |       |             "0"
  |       |       |            } // Encrypted with CTX_C_S
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_P   |       |
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_S   |       |
  |       |       |

Square brackets [ ... ] indicate content of compressed COSE object.
Curly brackets { ... } indicate encrypted data.

(A, B) indicates a CBOR sequence [RFC8742]
       of two CBOR data items A and B.
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="example-6">
        <name>Example 6</name>
        <t>In the example shown in <xref target="fig-example-reverse-proxy-without-end-to-end"/>, message exchanges are protected with OSCORE over the following legs.</t>
        <ul spacing="normal">
          <li>
            <t>Between the client and the proxy, using the OSCORE Security Context CTX_C_P. The client uses the OSCORE Sender ID 0x20 when using OSCORE with the proxy.</t>
          </li>
          <li>
            <t>Between the proxy and the server, using the OSCORE Security Context CTX_P_S. The proxy uses the OSCORE Sender ID 0xd4 when using OSCORE with the server.</t>
          </li>
        </ul>
        <t>In this example, the proxy is specifically a reverse-proxy. Like typically expected in such a case, the client is not aware of that, and believes to communicate with an origin server.</t>
        <t>In order to determine where it has to forward an incoming request to, the proxy relies on the hostname that clients specify in the Uri-Host Option of their sent requests. In particular, upon receiving a request that includes the Uri-Host Option with value "dev.example", the proxy forwards the request to the origin server shown in the example.</t>
        <t>Furthermore, this example assumes that, in the URI identifying the target resource at the server, the host component represents the destination IP address of the request as an IP-literal. Therefore, the request from the proxy to the server does not include a Uri-Host Option (see <xref section="6.4" sectionFormat="of" target="RFC7252"/>).</t>
        <figure anchor="fig-example-reverse-proxy-without-end-to-end">
          <name>Use of OSCORE between Client-Proxy and Proxy-Server (the proxy is a reverse-proxy)</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1200" width="544" viewBox="0 0 544 1200" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,104 L 24,1072" fill="none" stroke="black"/>
                <path d="M 24,1128 L 24,1136" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,256" fill="none" stroke="black"/>
                <path d="M 88,312 L 88,320" fill="none" stroke="black"/>
                <path d="M 88,376 L 88,800" fill="none" stroke="black"/>
                <path d="M 88,856 L 88,864" fill="none" stroke="black"/>
                <path d="M 88,920 L 88,1136" fill="none" stroke="black"/>
                <path d="M 152,48 L 152,528" fill="none" stroke="black"/>
                <path d="M 152,584 L 152,592" fill="none" stroke="black"/>
                <path d="M 152,648 L 152,1136" fill="none" stroke="black"/>
                <path d="M 24,128 L 80,128" fill="none" stroke="black"/>
                <path d="M 88,400 L 144,400" fill="none" stroke="black"/>
                <path d="M 96,672 L 152,672" fill="none" stroke="black"/>
                <path d="M 32,944 L 88,944" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="152,400 140,394.4 140,405.6" fill="black" transform="rotate(0,144,400)"/>
                <polygon class="arrowhead" points="104,672 92,666.4 92,677.6" fill="black" transform="rotate(180,96,672)"/>
                <polygon class="arrowhead" points="88,128 76,122.4 76,133.6" fill="black" transform="rotate(0,80,128)"/>
                <polygon class="arrowhead" points="40,944 28,938.4 28,949.6" fill="black" transform="rotate(180,32,944)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Proxy</text>
                  <text x="148" y="36">Server</text>
                  <text x="24" y="52">|</text>
                  <text x="32" y="68">Encrypt</text>
                  <text x="16" y="84">REQ</text>
                  <text x="52" y="84">with</text>
                  <text x="32" y="100">CTX_C_P</text>
                  <text x="216" y="132">Code:</text>
                  <text x="260" y="132">0.02</text>
                  <text x="308" y="132">(POST)</text>
                  <text x="52" y="148">POST</text>
                  <text x="212" y="148">Token:</text>
                  <text x="260" y="148">0x8c</text>
                  <text x="200" y="164">Uri-Host:</text>
                  <text x="296" y="164">"dev.example"</text>
                  <text x="208" y="180">OSCORE:</text>
                  <text x="284" y="180">[kid:0x20,</text>
                  <text x="360" y="180">Partial</text>
                  <text x="420" y="180">IV:31]</text>
                  <text x="212" y="196">0xff</text>
                  <text x="204" y="212">Payload:</text>
                  <text x="268" y="212">{Code:</text>
                  <text x="316" y="212">0.01</text>
                  <text x="364" y="212">(GET),</text>
                  <text x="288" y="228">Uri-Path:</text>
                  <text x="388" y="228">"alarm_status"</text>
                  <text x="248" y="244">}</text>
                  <text x="268" y="244">//</text>
                  <text x="320" y="244">Encrypted</text>
                  <text x="380" y="244">with</text>
                  <text x="432" y="244">CTX_C_P</text>
                  <text x="96" y="276">Decrypt</text>
                  <text x="80" y="292">REQ</text>
                  <text x="116" y="292">with</text>
                  <text x="96" y="308">CTX_C_P</text>
                  <text x="96" y="340">Encrypt</text>
                  <text x="80" y="356">REQ</text>
                  <text x="116" y="356">with</text>
                  <text x="96" y="372">CTX_P_S</text>
                  <text x="216" y="404">Code:</text>
                  <text x="260" y="404">0.02</text>
                  <text x="308" y="404">(POST)</text>
                  <text x="116" y="420">POST</text>
                  <text x="212" y="420">Token:</text>
                  <text x="260" y="420">0x7b</text>
                  <text x="208" y="436">OSCORE:</text>
                  <text x="284" y="436">[kid:0xd4,</text>
                  <text x="360" y="436">Partial</text>
                  <text x="420" y="436">IV:42]</text>
                  <text x="212" y="452">0xff</text>
                  <text x="204" y="468">Payload:</text>
                  <text x="248" y="468">{</text>
                  <text x="272" y="484">Code:</text>
                  <text x="316" y="484">0.01</text>
                  <text x="364" y="484">(GET),</text>
                  <text x="288" y="500">Uri-Path:</text>
                  <text x="388" y="500">"alarm_status"</text>
                  <text x="248" y="516">}</text>
                  <text x="268" y="516">//</text>
                  <text x="320" y="516">Encrypted</text>
                  <text x="380" y="516">with</text>
                  <text x="432" y="516">CTX_P_S</text>
                  <text x="160" y="548">Decrypt</text>
                  <text x="144" y="564">REQ</text>
                  <text x="180" y="564">with</text>
                  <text x="160" y="580">CTX_P_S</text>
                  <text x="160" y="612">Encrypt</text>
                  <text x="148" y="628">RESP</text>
                  <text x="188" y="628">with</text>
                  <text x="160" y="644">CTX_P_S</text>
                  <text x="216" y="676">Code:</text>
                  <text x="260" y="676">2.04</text>
                  <text x="320" y="676">(Changed)</text>
                  <text x="124" y="692">2.04</text>
                  <text x="212" y="692">Token:</text>
                  <text x="260" y="692">0x7b</text>
                  <text x="208" y="708">OSCORE:</text>
                  <text x="248" y="708">-</text>
                  <text x="212" y="724">0xff</text>
                  <text x="204" y="740">Payload:</text>
                  <text x="268" y="740">{Code:</text>
                  <text x="316" y="740">2.05</text>
                  <text x="380" y="740">(Content),</text>
                  <text x="272" y="756">0xff,</text>
                  <text x="264" y="772">"0"</text>
                  <text x="248" y="788">}</text>
                  <text x="268" y="788">//</text>
                  <text x="320" y="788">Encrypted</text>
                  <text x="380" y="788">with</text>
                  <text x="432" y="788">CTX_P_S</text>
                  <text x="96" y="820">Decrypt</text>
                  <text x="84" y="836">RESP</text>
                  <text x="124" y="836">with</text>
                  <text x="96" y="852">CTX_P_S</text>
                  <text x="96" y="884">Encrypt</text>
                  <text x="84" y="900">RESP</text>
                  <text x="124" y="900">with</text>
                  <text x="96" y="916">CTX_C_P</text>
                  <text x="216" y="948">Code:</text>
                  <text x="260" y="948">2.04</text>
                  <text x="320" y="948">(Changed)</text>
                  <text x="60" y="964">2.04</text>
                  <text x="212" y="964">Token:</text>
                  <text x="260" y="964">0x8c</text>
                  <text x="208" y="980">OSCORE:</text>
                  <text x="248" y="980">-</text>
                  <text x="212" y="996">0xff</text>
                  <text x="204" y="1012">Payload:</text>
                  <text x="268" y="1012">{Code:</text>
                  <text x="316" y="1012">2.05</text>
                  <text x="380" y="1012">(Content),</text>
                  <text x="272" y="1028">0xff,</text>
                  <text x="264" y="1044">"0"</text>
                  <text x="248" y="1060">}</text>
                  <text x="268" y="1060">//</text>
                  <text x="320" y="1060">Encrypted</text>
                  <text x="380" y="1060">with</text>
                  <text x="432" y="1060">CTX_C_P</text>
                  <text x="32" y="1092">Decrypt</text>
                  <text x="20" y="1108">RESP</text>
                  <text x="60" y="1108">with</text>
                  <text x="32" y="1124">CTX_C_P</text>
                  <text x="28" y="1172">Square</text>
                  <text x="92" y="1172">brackets</text>
                  <text x="136" y="1172">[</text>
                  <text x="160" y="1172">...</text>
                  <text x="184" y="1172">]</text>
                  <text x="228" y="1172">indicate</text>
                  <text x="296" y="1172">content</text>
                  <text x="340" y="1172">of</text>
                  <text x="396" y="1172">compressed</text>
                  <text x="460" y="1172">COSE</text>
                  <text x="512" y="1172">object.</text>
                  <text x="24" y="1188">Curly</text>
                  <text x="84" y="1188">brackets</text>
                  <text x="128" y="1188">{</text>
                  <text x="152" y="1188">...</text>
                  <text x="176" y="1188">}</text>
                  <text x="220" y="1188">indicate</text>
                  <text x="296" y="1188">encrypted</text>
                  <text x="360" y="1188">data.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client  Proxy  Server
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |     Code: 0.02 (POST)
  | POST  |       |    Token: 0x8c
  |       |       | Uri-Host: "dev.example"
  |       |       |   OSCORE: [kid:0x20, Partial IV:31]
  |       |       |     0xff
  |       |       |  Payload: {Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |     Encrypt   |
  |     REQ with  |
  |     CTX_P_S   |
  |       |       |
  |       +------>|     Code: 0.02 (POST)
  |       | POST  |    Token: 0x7b
  |       |       |   OSCORE: [kid:0xd4, Partial IV:42]
  |       |       |     0xff
  |       |       |  Payload: {
  |       |       |            Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_P_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_P_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_P_S
  |       |       |
  |       |<------+     Code: 2.04 (Changed)
  |       |  2.04 |    Token: 0x7b
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_P_S
  |       |       |
  |     Decrypt   |
  |     RESP with |
  |     CTX_P_S   |
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |     Code: 2.04 (Changed)
  |  2.04 |       |    Token: 0x8c
  |       |       |   OSCORE: -
  |       |       |     0xff
  |       |       |  Payload: {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_P
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_P   |       |
  |       |       |

Square brackets [ ... ] indicate content of compressed COSE object.
Curly brackets { ... } indicate encrypted data.
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="example-7">
        <name>Example 7</name>
        <t>In the example shown in <xref target="fig-example-reverse-proxy-with-end-to-end"/>, message exchanges are protected with OSCORE over the following legs.</t>
        <ul spacing="normal">
          <li>
            <t>End-to-end between the client and the server, using the OSCORE Security Context CTX_C_S. The client uses the OSCORE Sender ID 0x5f when using OSCORE with the server.</t>
          </li>
          <li>
            <t>Between the client and the proxy, using the OSCORE Security Context CTX_C_P. The client uses the OSCORE Sender ID 0x20 when using OSCORE with the proxy.</t>
          </li>
          <li>
            <t>Between the proxy and the server, using the OSCORE Security Context CTX_P_S. The proxy uses the OSCORE Sender ID 0xd4 when using OSCORE with the server.</t>
          </li>
        </ul>
        <t>In this example, the proxy is specifically a reverse-proxy. However, unlike typically expected, the client is aware to communicate with a reverse-proxy. This is the case, e.g., in the LwM2M scenario considered in <xref target="ssec-uc4"/>, where the LwM2M Server acts as CoAP client, and it uses a LwM2M Gateway acting as a CoAP-to-CoAP reverse-proxy in order to reach an end IoT device.</t>
        <t>In order to determine where it has to forward an incoming request to, the proxy relies on the URI path components that are specified as value of the Uri-Path options included in the request. In particular, the proxy relies on the first URI path segment to identify the specific IoT device where to forward the request to, while the remaining URI path segments specify the target resource at the IoT device.</t>
        <t>However, as shown in the example, the URI path segments that specify the target resource are hidden from the proxy, since they are protected by the additional use of OSCORE end-to-end between the client and the server.</t>
        <t>Furthermore, this example assumes that, in the URIs identifying the target resource at the proxy as well as in the URI identifying the target resource at the server, the host component represents the destination IP address of the request as an IP-literal. Therefore, both the request from the client to the proxy and the request from the proxy to the server do not include a Uri-Host Option (see <xref section="6.4" sectionFormat="of" target="RFC7252"/>).</t>
        <figure anchor="fig-example-reverse-proxy-with-end-to-end">
          <name>Use of OSCORE between Client-Proxy and Proxy-Server (the proxy is a reverse-proxy)</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1696" width="544" viewBox="0 0 544 1696" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,104 L 24,112" fill="none" stroke="black"/>
                <path d="M 24,168 L 24,1504" fill="none" stroke="black"/>
                <path d="M 24,1560 L 24,1568" fill="none" stroke="black"/>
                <path d="M 24,1624 L 24,1632" fill="none" stroke="black"/>
                <path d="M 88,48 L 88,384" fill="none" stroke="black"/>
                <path d="M 88,440 L 88,448" fill="none" stroke="black"/>
                <path d="M 88,504 L 88,1168" fill="none" stroke="black"/>
                <path d="M 88,1224 L 88,1232" fill="none" stroke="black"/>
                <path d="M 88,1288 L 88,1632" fill="none" stroke="black"/>
                <path d="M 152,48 L 152,704" fill="none" stroke="black"/>
                <path d="M 152,760 L 152,768" fill="none" stroke="black"/>
                <path d="M 152,824 L 152,832" fill="none" stroke="black"/>
                <path d="M 152,888 L 152,896" fill="none" stroke="black"/>
                <path d="M 152,952 L 152,1632" fill="none" stroke="black"/>
                <path d="M 24,192 L 80,192" fill="none" stroke="black"/>
                <path d="M 88,528 L 144,528" fill="none" stroke="black"/>
                <path d="M 96,976 L 152,976" fill="none" stroke="black"/>
                <path d="M 32,1312 L 88,1312" fill="none" stroke="black"/>
                <path d="M 256,368 L 264,352" fill="none" stroke="black"/>
                <path d="M 264,368 L 276,344" fill="none" stroke="black"/>
                <path d="M 256,688 L 264,672" fill="none" stroke="black"/>
                <path d="M 264,688 L 276,664" fill="none" stroke="black"/>
                <path d="M 256,1152 L 264,1136" fill="none" stroke="black"/>
                <path d="M 264,1152 L 272,1136" fill="none" stroke="black"/>
                <path d="M 256,1488 L 264,1472" fill="none" stroke="black"/>
                <path d="M 264,1488 L 272,1472" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="152,528 140,522.4 140,533.6" fill="black" transform="rotate(0,144,528)"/>
                <polygon class="arrowhead" points="104,976 92,970.4 92,981.6" fill="black" transform="rotate(180,96,976)"/>
                <polygon class="arrowhead" points="88,192 76,186.4 76,197.6" fill="black" transform="rotate(0,80,192)"/>
                <polygon class="arrowhead" points="40,1312 28,1306.4 28,1317.6" fill="black" transform="rotate(180,32,1312)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="88" y="36">Proxy</text>
                  <text x="148" y="36">Server</text>
                  <text x="24" y="52">|</text>
                  <text x="32" y="68">Encrypt</text>
                  <text x="16" y="84">REQ</text>
                  <text x="52" y="84">with</text>
                  <text x="32" y="100">CTX_C_S</text>
                  <text x="32" y="132">Encrypt</text>
                  <text x="16" y="148">REQ</text>
                  <text x="52" y="148">with</text>
                  <text x="32" y="164">CTX_C_P</text>
                  <text x="208" y="196">Code:</text>
                  <text x="252" y="196">0.02</text>
                  <text x="300" y="196">(POST)</text>
                  <text x="52" y="212">POST</text>
                  <text x="204" y="212">Token:</text>
                  <text x="252" y="212">0x8c</text>
                  <text x="200" y="228">OSCORE:</text>
                  <text x="276" y="228">[kid:0x20,</text>
                  <text x="352" y="228">Partial</text>
                  <text x="412" y="228">IV:31]</text>
                  <text x="204" y="244">0xff</text>
                  <text x="196" y="260">Payload:</text>
                  <text x="260" y="260">{Code:</text>
                  <text x="308" y="260">0.02</text>
                  <text x="360" y="260">(POST),</text>
                  <text x="272" y="276">OSCORE:</text>
                  <text x="348" y="276">[kid:0x5f,</text>
                  <text x="424" y="276">Partial</text>
                  <text x="488" y="276">IV:42],</text>
                  <text x="280" y="292">Uri-Path:</text>
                  <text x="352" y="292">"dev1",</text>
                  <text x="264" y="308">0xff,</text>
                  <text x="268" y="324">{Code:</text>
                  <text x="316" y="324">0.01</text>
                  <text x="364" y="324">(GET),</text>
                  <text x="288" y="340">Uri-Path:</text>
                  <text x="388" y="340">"alarm_status"</text>
                  <text x="248" y="356">}</text>
                  <text x="320" y="356">Encrypted</text>
                  <text x="380" y="356">with</text>
                  <text x="432" y="356">CTX_C_S</text>
                  <text x="240" y="372">}</text>
                  <text x="312" y="372">Encrypted</text>
                  <text x="372" y="372">with</text>
                  <text x="424" y="372">CTX_C_P</text>
                  <text x="96" y="404">Decrypt</text>
                  <text x="80" y="420">REQ</text>
                  <text x="116" y="420">with</text>
                  <text x="96" y="436">CTX_C_P</text>
                  <text x="96" y="468">Encrypt</text>
                  <text x="80" y="484">REQ</text>
                  <text x="116" y="484">with</text>
                  <text x="96" y="500">CTX_P_S</text>
                  <text x="208" y="532">Code:</text>
                  <text x="252" y="532">0.02</text>
                  <text x="300" y="532">(POST)</text>
                  <text x="116" y="548">POST</text>
                  <text x="204" y="548">Token:</text>
                  <text x="252" y="548">0x7b</text>
                  <text x="200" y="564">OSCORE:</text>
                  <text x="276" y="564">[kid:0xd4,</text>
                  <text x="352" y="564">Partial</text>
                  <text x="412" y="564">IV:31]</text>
                  <text x="204" y="580">0xff</text>
                  <text x="196" y="596">Payload:</text>
                  <text x="260" y="596">{Code:</text>
                  <text x="308" y="596">0.02</text>
                  <text x="360" y="596">(POST),</text>
                  <text x="272" y="612">OSCORE:</text>
                  <text x="348" y="612">[kid:0x5f,</text>
                  <text x="424" y="612">Partial</text>
                  <text x="488" y="612">IV:42],</text>
                  <text x="264" y="628">0xff,</text>
                  <text x="268" y="644">{Code:</text>
                  <text x="316" y="644">0.01</text>
                  <text x="364" y="644">(GET),</text>
                  <text x="288" y="660">Uri-Path:</text>
                  <text x="388" y="660">"alarm_status"</text>
                  <text x="248" y="676">}</text>
                  <text x="320" y="676">Encrypted</text>
                  <text x="380" y="676">with</text>
                  <text x="432" y="676">CTX_C_S</text>
                  <text x="240" y="692">}</text>
                  <text x="312" y="692">Encrypted</text>
                  <text x="372" y="692">with</text>
                  <text x="424" y="692">CTX_P_S</text>
                  <text x="160" y="724">Decrypt</text>
                  <text x="144" y="740">REQ</text>
                  <text x="180" y="740">with</text>
                  <text x="160" y="756">CTX_P_S</text>
                  <text x="160" y="788">Decrypt</text>
                  <text x="144" y="804">REQ</text>
                  <text x="180" y="804">with</text>
                  <text x="160" y="820">CTX_C_S</text>
                  <text x="160" y="852">Encrypt</text>
                  <text x="148" y="868">RESP</text>
                  <text x="188" y="868">with</text>
                  <text x="160" y="884">CTX_C_S</text>
                  <text x="160" y="916">Encrypt</text>
                  <text x="148" y="932">RESP</text>
                  <text x="188" y="932">with</text>
                  <text x="160" y="948">CTX_P_S</text>
                  <text x="208" y="980">Code:</text>
                  <text x="252" y="980">2.04</text>
                  <text x="312" y="980">(Changed)</text>
                  <text x="124" y="996">2.04</text>
                  <text x="204" y="996">Token:</text>
                  <text x="252" y="996">0x7b</text>
                  <text x="200" y="1012">OSCORE:</text>
                  <text x="240" y="1012">-</text>
                  <text x="204" y="1028">0xff</text>
                  <text x="196" y="1044">Payload:</text>
                  <text x="260" y="1044">{Code:</text>
                  <text x="308" y="1044">2.04</text>
                  <text x="372" y="1044">(Changed),</text>
                  <text x="272" y="1060">OSCORE:</text>
                  <text x="316" y="1060">-,</text>
                  <text x="264" y="1076">0xff,</text>
                  <text x="268" y="1092">{Code:</text>
                  <text x="316" y="1092">2.05</text>
                  <text x="380" y="1092">(Content),</text>
                  <text x="272" y="1108">0xff,</text>
                  <text x="264" y="1124">"0"</text>
                  <text x="248" y="1140">}</text>
                  <text x="320" y="1140">Encrypted</text>
                  <text x="380" y="1140">with</text>
                  <text x="432" y="1140">CTX_C_S</text>
                  <text x="240" y="1156">}</text>
                  <text x="312" y="1156">Encrypted</text>
                  <text x="372" y="1156">with</text>
                  <text x="424" y="1156">CTX_P_S</text>
                  <text x="96" y="1188">Decrypt</text>
                  <text x="84" y="1204">RESP</text>
                  <text x="124" y="1204">with</text>
                  <text x="96" y="1220">CTX_P_S</text>
                  <text x="96" y="1252">Encrypt</text>
                  <text x="84" y="1268">RESP</text>
                  <text x="124" y="1268">with</text>
                  <text x="96" y="1284">CTX_C_P</text>
                  <text x="208" y="1316">Code:</text>
                  <text x="252" y="1316">2.04</text>
                  <text x="312" y="1316">(Changed)</text>
                  <text x="60" y="1332">2.04</text>
                  <text x="204" y="1332">Token:</text>
                  <text x="252" y="1332">0x8c</text>
                  <text x="200" y="1348">OSCORE:</text>
                  <text x="240" y="1348">-</text>
                  <text x="204" y="1364">0xff</text>
                  <text x="196" y="1380">Payload:</text>
                  <text x="260" y="1380">{Code:</text>
                  <text x="308" y="1380">2.04</text>
                  <text x="372" y="1380">(Changed),</text>
                  <text x="272" y="1396">OSCORE:</text>
                  <text x="316" y="1396">-,</text>
                  <text x="264" y="1412">0xff,</text>
                  <text x="268" y="1428">{Code:</text>
                  <text x="316" y="1428">2.05</text>
                  <text x="380" y="1428">(Content),</text>
                  <text x="272" y="1444">0xff,</text>
                  <text x="264" y="1460">"0"</text>
                  <text x="248" y="1476">}</text>
                  <text x="320" y="1476">Encrypted</text>
                  <text x="380" y="1476">with</text>
                  <text x="432" y="1476">CTX_C_S</text>
                  <text x="240" y="1492">}</text>
                  <text x="312" y="1492">Encrypted</text>
                  <text x="372" y="1492">with</text>
                  <text x="424" y="1492">CTX_C_P</text>
                  <text x="32" y="1524">Decrypt</text>
                  <text x="20" y="1540">RESP</text>
                  <text x="60" y="1540">with</text>
                  <text x="32" y="1556">CTX_C_P</text>
                  <text x="32" y="1588">Decrypt</text>
                  <text x="20" y="1604">RESP</text>
                  <text x="60" y="1604">with</text>
                  <text x="32" y="1620">CTX_C_S</text>
                  <text x="28" y="1668">Square</text>
                  <text x="92" y="1668">brackets</text>
                  <text x="136" y="1668">[</text>
                  <text x="160" y="1668">...</text>
                  <text x="184" y="1668">]</text>
                  <text x="228" y="1668">indicate</text>
                  <text x="296" y="1668">content</text>
                  <text x="340" y="1668">of</text>
                  <text x="396" y="1668">compressed</text>
                  <text x="460" y="1668">COSE</text>
                  <text x="512" y="1668">object.</text>
                  <text x="24" y="1684">Curly</text>
                  <text x="84" y="1684">brackets</text>
                  <text x="128" y="1684">{</text>
                  <text x="152" y="1684">...</text>
                  <text x="176" y="1684">}</text>
                  <text x="220" y="1684">indicate</text>
                  <text x="296" y="1684">encrypted</text>
                  <text x="360" y="1684">data.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client  Proxy  Server
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_S   |       |
  |       |       |
Encrypt   |       |
REQ with  |       |
CTX_C_P   |       |
  |       |       |
  +------>|       |    Code: 0.02 (POST)
  | POST  |       |   Token: 0x8c
  |       |       |  OSCORE: [kid:0x20, Partial IV:31]
  |       |       |    0xff
  |       |       | Payload: {Code: 0.02 (POST),
  |       |       |           OSCORE: [kid:0x5f, Partial IV:42],
  |       |       |           Uri-Path: "dev1",
  |       |       |           0xff,
  |       |       |           {Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_C_P
  |       |       |
  |     Decrypt   |
  |     REQ with  |
  |     CTX_C_P   |
  |       |       |
  |     Encrypt   |
  |     REQ with  |
  |     CTX_P_S   |
  |       |       |
  |       +------>|    Code: 0.02 (POST)
  |       | POST  |   Token: 0x7b
  |       |       |  OSCORE: [kid:0xd4, Partial IV:31]
  |       |       |    0xff
  |       |       | Payload: {Code: 0.02 (POST),
  |       |       |           OSCORE: [kid:0x5f, Partial IV:42],
  |       |       |           0xff,
  |       |       |           {Code: 0.01 (GET),
  |       |       |            Uri-Path: "alarm_status"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_P_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_P_S
  |       |       |
  |       |     Decrypt
  |       |     REQ with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_C_S
  |       |       |
  |       |     Encrypt
  |       |     RESP with
  |       |     CTX_P_S
  |       |       |
  |       |<------+    Code: 2.04 (Changed)
  |       |  2.04 |   Token: 0x7b
  |       |       |  OSCORE: -
  |       |       |    0xff
  |       |       | Payload: {Code: 2.04 (Changed),
  |       |       |           OSCORE: -,
  |       |       |           0xff,
  |       |       |           {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_P_S
  |       |       |
  |     Decrypt   |
  |     RESP with |
  |     CTX_P_S   |
  |       |       |
  |     Encrypt   |
  |     RESP with |
  |     CTX_C_P   |
  |       |       |
  |<------+       |    Code: 2.04 (Changed)
  |  2.04 |       |   Token: 0x8c
  |       |       |  OSCORE: -
  |       |       |    0xff
  |       |       | Payload: {Code: 2.04 (Changed),
  |       |       |           OSCORE: -,
  |       |       |           0xff,
  |       |       |           {Code: 2.05 (Content),
  |       |       |            0xff,
  |       |       |            "0"
  |       |       |           } // Encrypted with CTX_C_S
  |       |       |          } // Encrypted with CTX_C_P
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_P   |       |
  |       |       |
Decrypt   |       |
RESP with |       |
CTX_C_S   |       |
  |       |       |

Square brackets [ ... ] indicate content of compressed COSE object.
Curly brackets { ... } indicate encrypted data.
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="sec-option-protection-diag">
      <name>State Diagram: Protection of CoAP Options</name>
      <t><xref target="fig-option-protection-diagram"/> overviews the rules defined in <xref target="general-rules"/>, to determine whether a CoAP option that is originally specified as Class U or I for OSCORE has to be processed like if it was specified as Class E, when protecting an outgoing message.</t>
      <figure anchor="fig-option-protection-diagram">
        <name>Protection of CoAP Options of Class U or I in Outgoing Messages.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1120" width="576" viewBox="0 0 576 1120" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,160 L 8,256" fill="none" stroke="black"/>
              <path d="M 8,320 L 8,368" fill="none" stroke="black"/>
              <path d="M 24,480 L 24,640" fill="none" stroke="black"/>
              <path d="M 48,264 L 48,312" fill="none" stroke="black"/>
              <path d="M 48,376 L 48,416" fill="none" stroke="black"/>
              <path d="M 48,448 L 48,472" fill="none" stroke="black"/>
              <path d="M 48,688 L 48,1088" fill="none" stroke="black"/>
              <path d="M 80,736 L 80,768" fill="none" stroke="black"/>
              <path d="M 104,320 L 104,368" fill="none" stroke="black"/>
              <path d="M 104,992 L 104,1024" fill="none" stroke="black"/>
              <path d="M 104,1072 L 104,1104" fill="none" stroke="black"/>
              <path d="M 120,816 L 120,984" fill="none" stroke="black"/>
              <path d="M 144,864 L 144,912" fill="none" stroke="black"/>
              <path d="M 184,320 L 184,384" fill="none" stroke="black"/>
              <path d="M 208,392 L 208,416" fill="none" stroke="black"/>
              <path d="M 208,448 L 208,472" fill="none" stroke="black"/>
              <path d="M 208,688 L 208,728" fill="none" stroke="black"/>
              <path d="M 208,960 L 208,984" fill="none" stroke="black"/>
              <path d="M 232,480 L 232,640" fill="none" stroke="black"/>
              <path d="M 304,992 L 304,1024" fill="none" stroke="black"/>
              <path d="M 320,480 L 320,560" fill="none" stroke="black"/>
              <path d="M 336,320 L 336,384" fill="none" stroke="black"/>
              <path d="M 352,608 L 352,728" fill="none" stroke="black"/>
              <path d="M 352,816 L 352,856" fill="none" stroke="black"/>
              <path d="M 352,960 L 352,1064" fill="none" stroke="black"/>
              <path d="M 416,320 L 416,400" fill="none" stroke="black"/>
              <path d="M 416,736 L 416,768" fill="none" stroke="black"/>
              <path d="M 416,864 L 416,912" fill="none" stroke="black"/>
              <path d="M 456,448 L 456,472" fill="none" stroke="black"/>
              <path d="M 456,608 L 456,1064" fill="none" stroke="black"/>
              <path d="M 480,1072 L 480,1104" fill="none" stroke="black"/>
              <path d="M 496,480 L 496,560" fill="none" stroke="black"/>
              <path d="M 536,448 L 536,1088" fill="none" stroke="black"/>
              <path d="M 568,160 L 568,256" fill="none" stroke="black"/>
              <path d="M 568,320 L 568,400" fill="none" stroke="black"/>
              <path d="M 8,160 L 88,160" fill="none" stroke="black"/>
              <path d="M 104,160 L 568,160" fill="none" stroke="black"/>
              <path d="M 8,256 L 568,256" fill="none" stroke="black"/>
              <path d="M 8,320 L 104,320" fill="none" stroke="black"/>
              <path d="M 184,320 L 336,320" fill="none" stroke="black"/>
              <path d="M 416,320 L 568,320" fill="none" stroke="black"/>
              <path d="M 112,336 L 128,336" fill="none" stroke="black"/>
              <path d="M 160,336 L 176,336" fill="none" stroke="black"/>
              <path d="M 344,336 L 360,336" fill="none" stroke="black"/>
              <path d="M 392,336 L 408,336" fill="none" stroke="black"/>
              <path d="M 8,368 L 104,368" fill="none" stroke="black"/>
              <path d="M 184,384 L 336,384" fill="none" stroke="black"/>
              <path d="M 416,400 L 568,400" fill="none" stroke="black"/>
              <path d="M 24,480 L 232,480" fill="none" stroke="black"/>
              <path d="M 320,480 L 496,480" fill="none" stroke="black"/>
              <path d="M 320,560 L 496,560" fill="none" stroke="black"/>
              <path d="M 24,640 L 232,640" fill="none" stroke="black"/>
              <path d="M 80,736 L 416,736" fill="none" stroke="black"/>
              <path d="M 80,768 L 416,768" fill="none" stroke="black"/>
              <path d="M 144,864 L 416,864" fill="none" stroke="black"/>
              <path d="M 144,912 L 416,912" fill="none" stroke="black"/>
              <path d="M 104,992 L 304,992" fill="none" stroke="black"/>
              <path d="M 104,1024 L 304,1024" fill="none" stroke="black"/>
              <path d="M 104,1072 L 480,1072" fill="none" stroke="black"/>
              <path d="M 48,1088 L 96,1088" fill="none" stroke="black"/>
              <path d="M 488,1088 L 536,1088" fill="none" stroke="black"/>
              <path d="M 104,1104 L 480,1104" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="496,1088 484,1082.4 484,1093.6" fill="black" transform="rotate(180,488,1088)"/>
              <polygon class="arrowhead" points="464,1064 452,1058.4 452,1069.6" fill="black" transform="rotate(90,456,1064)"/>
              <polygon class="arrowhead" points="464,472 452,466.4 452,477.6" fill="black" transform="rotate(90,456,472)"/>
              <polygon class="arrowhead" points="416,336 404,330.4 404,341.6" fill="black" transform="rotate(0,408,336)"/>
              <polygon class="arrowhead" points="360,1064 348,1058.4 348,1069.6" fill="black" transform="rotate(90,352,1064)"/>
              <polygon class="arrowhead" points="360,856 348,850.4 348,861.6" fill="black" transform="rotate(90,352,856)"/>
              <polygon class="arrowhead" points="360,728 348,722.4 348,733.6" fill="black" transform="rotate(90,352,728)"/>
              <polygon class="arrowhead" points="216,984 204,978.4 204,989.6" fill="black" transform="rotate(90,208,984)"/>
              <polygon class="arrowhead" points="216,728 204,722.4 204,733.6" fill="black" transform="rotate(90,208,728)"/>
              <polygon class="arrowhead" points="216,472 204,466.4 204,477.6" fill="black" transform="rotate(90,208,472)"/>
              <polygon class="arrowhead" points="184,336 172,330.4 172,341.6" fill="black" transform="rotate(0,176,336)"/>
              <polygon class="arrowhead" points="128,984 116,978.4 116,989.6" fill="black" transform="rotate(90,120,984)"/>
              <polygon class="arrowhead" points="104,1088 92,1082.4 92,1093.6" fill="black" transform="rotate(0,96,1088)"/>
              <polygon class="arrowhead" points="56,472 44,466.4 44,477.6" fill="black" transform="rotate(90,48,472)"/>
              <polygon class="arrowhead" points="56,312 44,306.4 44,317.6" fill="black" transform="rotate(90,48,312)"/>
              <circle cx="40" cy="496" r="6" class="closeddot" fill="black"/>
              <circle cx="40" cy="576" r="6" class="closeddot" fill="black"/>
              <circle cx="96" cy="96" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="96" cy="112" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="96" cy="128" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="96" cy="144" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="96" cy="160" r="6" class="opendot" fill="white" stroke="black"/>
              <g class="text">
                <text x="108" y="36">..........................</text>
                <text x="8" y="52">:</text>
                <text x="208" y="52">:</text>
                <text x="8" y="68">:</text>
                <text x="44" y="68">Source</text>
                <text x="100" y="68">OSCORE</text>
                <text x="164" y="68">endpoint</text>
                <text x="208" y="68">:</text>
                <text x="8" y="84">:</text>
                <text x="208" y="84">:</text>
                <text x="48" y="100">:..........</text>
                <text x="156" y="100">.............:</text>
                <text x="24" y="196">I</text>
                <text x="52" y="196">must</text>
                <text x="104" y="196">protect</text>
                <text x="148" y="196">an</text>
                <text x="196" y="196">outgoing</text>
                <text x="264" y="196">message</text>
                <text x="304" y="196">M</text>
                <text x="328" y="196">for</text>
                <text x="376" y="196">another</text>
                <text x="436" y="196">OSCORE</text>
                <text x="500" y="196">endpoint</text>
                <text x="548" y="196">X.</text>
                <text x="24" y="228">M</text>
                <text x="68" y="228">includes</text>
                <text x="112" y="228">a</text>
                <text x="140" y="228">CoAP</text>
                <text x="188" y="228">option</text>
                <text x="232" y="228">OPT</text>
                <text x="260" y="228">of</text>
                <text x="296" y="228">Class</text>
                <text x="328" y="228">U</text>
                <text x="348" y="228">or</text>
                <text x="368" y="228">I</text>
                <text x="392" y="228">for</text>
                <text x="440" y="228">OSCORE.</text>
                <text x="32" y="340">Did</text>
                <text x="56" y="340">I</text>
                <text x="80" y="340">add</text>
                <text x="144" y="340">YES</text>
                <text x="204" y="340">As</text>
                <text x="232" y="340">far</text>
                <text x="260" y="340">as</text>
                <text x="280" y="340">I</text>
                <text x="304" y="340">can</text>
                <text x="376" y="340">YES</text>
                <text x="436" y="340">As</text>
                <text x="464" y="340">far</text>
                <text x="492" y="340">as</text>
                <text x="512" y="340">I</text>
                <text x="536" y="340">can</text>
                <text x="32" y="356">OPT</text>
                <text x="60" y="356">to</text>
                <text x="84" y="356">M?</text>
                <text x="216" y="356">tell,</text>
                <text x="252" y="356">is</text>
                <text x="272" y="356">X</text>
                <text x="288" y="356">a</text>
                <text x="448" y="356">tell,</text>
                <text x="484" y="356">is</text>
                <text x="504" y="356">X</text>
                <text x="528" y="356">the</text>
                <text x="228" y="372">consumer</text>
                <text x="276" y="372">of</text>
                <text x="308" y="372">OPT?</text>
                <text x="472" y="372">immediately</text>
                <text x="540" y="372">next</text>
                <text x="460" y="388">consumer</text>
                <text x="508" y="388">of</text>
                <text x="540" y="388">OPT?</text>
                <text x="456" y="420">|</text>
                <text x="536" y="420">|</text>
                <text x="52" y="436">NO</text>
                <text x="212" y="436">NO</text>
                <text x="456" y="436">YES</text>
                <text x="540" y="436">NO</text>
                <text x="60" y="500">As</text>
                <text x="88" y="500">far</text>
                <text x="116" y="500">as</text>
                <text x="136" y="500">I</text>
                <text x="160" y="500">can</text>
                <text x="200" y="500">tell,</text>
                <text x="348" y="500">Does</text>
                <text x="376" y="500">X</text>
                <text x="404" y="500">need</text>
                <text x="436" y="500">to</text>
                <text x="56" y="516">X</text>
                <text x="76" y="516">is</text>
                <text x="100" y="516">my</text>
                <text x="132" y="516">next</text>
                <text x="172" y="516">hop;</text>
                <text x="356" y="516">access</text>
                <text x="400" y="516">OPT</text>
                <text x="444" y="516">before</text>
                <text x="372" y="532">decrypting</text>
                <text x="424" y="532">M</text>
                <text x="444" y="532">or</text>
                <text x="468" y="532">in</text>
                <text x="44" y="548">OR</text>
                <text x="352" y="548">order</text>
                <text x="388" y="548">to</text>
                <text x="432" y="548">decrypt</text>
                <text x="476" y="548">M?</text>
                <text x="60" y="580">As</text>
                <text x="88" y="580">far</text>
                <text x="116" y="580">as</text>
                <text x="136" y="580">I</text>
                <text x="160" y="580">can</text>
                <text x="200" y="580">tell,</text>
                <text x="352" y="580">|</text>
                <text x="456" y="580">|</text>
                <text x="60" y="596">my</text>
                <text x="92" y="596">next</text>
                <text x="128" y="596">hop</text>
                <text x="156" y="596">is</text>
                <text x="184" y="596">not</text>
                <text x="356" y="596">NO</text>
                <text x="456" y="596">YES</text>
                <text x="64" y="612">the</text>
                <text x="128" y="612">immediately</text>
                <text x="196" y="612">next</text>
                <text x="84" y="628">consumer</text>
                <text x="132" y="628">of</text>
                <text x="160" y="628">OPT</text>
                <text x="48" y="660">|</text>
                <text x="208" y="660">|</text>
                <text x="52" y="676">NO</text>
                <text x="208" y="676">YES</text>
                <text x="100" y="756">Is</text>
                <text x="128" y="756">OPT</text>
                <text x="160" y="756">the</text>
                <text x="212" y="756">Uri-Host</text>
                <text x="260" y="756">or</text>
                <text x="308" y="756">Uri-Port</text>
                <text x="376" y="756">Option?</text>
                <text x="120" y="788">|</text>
                <text x="352" y="788">|</text>
                <text x="124" y="804">NO</text>
                <text x="352" y="804">YES</text>
                <text x="172" y="884">Does</text>
                <text x="200" y="884">M</text>
                <text x="240" y="884">include</text>
                <text x="288" y="884">the</text>
                <text x="356" y="884">Proxy-Scheme</text>
                <text x="164" y="900">or</text>
                <text x="256" y="900">Proxy-Scheme-Number</text>
                <text x="368" y="900">Option?</text>
                <text x="208" y="932">|</text>
                <text x="352" y="932">|</text>
                <text x="208" y="948">YES</text>
                <text x="356" y="948">NO</text>
                <text x="144" y="1012">Process</text>
                <text x="192" y="1012">OPT</text>
                <text x="220" y="1012">as</text>
                <text x="256" y="1012">Class</text>
                <text x="288" y="1012">E</text>
                <text x="144" y="1092">Process</text>
                <text x="192" y="1092">OPT</text>
                <text x="220" y="1092">as</text>
                <text x="248" y="1092">per</text>
                <text x="280" y="1092">its</text>
                <text x="332" y="1092">original</text>
                <text x="392" y="1092">Class</text>
                <text x="424" y="1092">U</text>
                <text x="444" y="1092">or</text>
                <text x="464" y="1092">I</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
..........................
:                        :
: Source OSCORE endpoint :
:                        :
:..........o.............:
           o
           o
           o
+----------o----------------------------------------------------------+
|                                                                     |
| I must protect an outgoing message M for another OSCORE endpoint X. |
|                                                                     |
| M includes a CoAP option OPT of Class U or I for OSCORE.            |
|                                                                     |
+---------------------------------------------------------------------+
     |
     |
     v
+-----------+         +------------------+         +------------------+
| Did I add |---YES-->| As far as I can  |---YES-->| As far as I can  |
| OPT to M? |         | tell, is X a     |         | tell, is X the   |
+-----------+         | consumer of OPT? |         | immediately next |
     |                +------------------+         | consumer of OPT? |
     |                   |                         +------------------+
     |                   |                              |         |
     NO                  NO                            YES        NO
     |                   |                              |         |
     v                   v                              v         |
  +-------------------------+          +---------------------+    |
  | * As far as I can tell, |          | Does X need to      |    |
  |   X is my next hop;     |          | access OPT before   |    |
  |                         |          | decrypting M or in  |    |
  | OR                      |          | order to decrypt M? |    |
  |                         |          +---------------------+    |
  | * As far as I can tell, |              |            |         |
  |   my next hop is not    |              NO          YES        |
  |   the immediately next  |              |            |         |
  |   consumer of OPT       |              |            |         |
  +-------------------------+              |            |         |
     |                   |                 |            |         |
     NO                 YES                |            |         |
     |                   |                 |            |         |
     |                   |                 |            |         |
     |                   v                 v            |         |
     |   +-----------------------------------------+    |         |
     |   | Is OPT the Uri-Host or Uri-Port Option? |    |         |
     |   +-----------------------------------------+    |         |
     |        |                            |            |         |
     |        NO                          YES           |         |
     |        |                            |            |         |
     |        |                            |            |         |
     |        |                            v            |         |
     |        |  +---------------------------------+    |         |
     |        |  | Does M include the Proxy-Scheme |    |         |
     |        |  | or Proxy-Scheme-Number Option?  |    |         |
     |        |  +---------------------------------+    |         |
     |        |          |                 |            |         |
     |        |         YES                NO           |         |
     |        |          |                 |            |         |
     |        v          v                 |            |         |
     |      +------------------------+     |            |         |
     |      | Process OPT as Class E |     |            |         |
     |      +------------------------+     |            |         |
     |                                     |            |         |
     |                                     v            v         |
     |      +----------------------------------------------+      |
     +----->| Process OPT as per its original Class U or I |<-----+
            +----------------------------------------------+
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="sec-incoming-req-diag">
      <name>State Diagram: Processing of Incoming Requests</name>
      <t><xref target="fig-incoming-request-diagram"/> overviews the processing of an incoming request, as specified in <xref target="incoming-requests"/>. The dotted boxes indicate ending states where the processing terminates.</t>
      <figure anchor="fig-incoming-request-diagram">
        <name>Processing of an Incoming Request.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1712" width="576" viewBox="0 0 576 1712" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,224 L 8,304" fill="none" stroke="black"/>
              <path d="M 8,512 L 8,624" fill="none" stroke="black"/>
              <path d="M 8,1040 L 8,1136" fill="none" stroke="black"/>
              <path d="M 8,1552 L 8,1632" fill="none" stroke="black"/>
              <path d="M 32,352 L 32,504" fill="none" stroke="black"/>
              <path d="M 32,672 L 32,1032" fill="none" stroke="black"/>
              <path d="M 32,1144 L 32,1544" fill="none" stroke="black"/>
              <path d="M 80,1392 L 80,1472" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,64" fill="none" stroke="black"/>
              <path d="M 120,112 L 120,216" fill="none" stroke="black"/>
              <path d="M 128,224 L 128,304" fill="none" stroke="black"/>
              <path d="M 136,880 L 136,944" fill="none" stroke="black"/>
              <path d="M 136,1312 L 136,1344" fill="none" stroke="black"/>
              <path d="M 136,1480 L 136,1504" fill="none" stroke="black"/>
              <path d="M 152,272 L 152,464" fill="none" stroke="black"/>
              <path d="M 184,512 L 184,624" fill="none" stroke="black"/>
              <path d="M 184,704 L 184,768" fill="none" stroke="black"/>
              <path d="M 200,224 L 200,288" fill="none" stroke="black"/>
              <path d="M 200,512 L 200,592" fill="none" stroke="black"/>
              <path d="M 208,1248 L 208,1312" fill="none" stroke="black"/>
              <path d="M 208,1392 L 208,1472" fill="none" stroke="black"/>
              <path d="M 216,336 L 216,504" fill="none" stroke="black"/>
              <path d="M 224,1040 L 224,1136" fill="none" stroke="black"/>
              <path d="M 232,160 L 232,176" fill="none" stroke="black"/>
              <path d="M 272,448 L 272,464" fill="none" stroke="black"/>
              <path d="M 272,1552 L 272,1632" fill="none" stroke="black"/>
              <path d="M 280,224 L 280,288" fill="none" stroke="black"/>
              <path d="M 280,640 L 280,696" fill="none" stroke="black"/>
              <path d="M 280,776 L 280,872" fill="none" stroke="black"/>
              <path d="M 280,992 L 280,1032" fill="none" stroke="black"/>
              <path d="M 280,1120 L 280,1240" fill="none" stroke="black"/>
              <path d="M 280,1320 L 280,1424" fill="none" stroke="black"/>
              <path d="M 312,704 L 312,768" fill="none" stroke="black"/>
              <path d="M 328,512 L 328,592" fill="none" stroke="black"/>
              <path d="M 336,1248 L 336,1312" fill="none" stroke="black"/>
              <path d="M 344,72 L 344,832" fill="none" stroke="black"/>
              <path d="M 352,880 L 352,944" fill="none" stroke="black"/>
              <path d="M 368,224 L 368,272" fill="none" stroke="black"/>
              <path d="M 376,280 L 376,1584" fill="none" stroke="black"/>
              <path d="M 400,1344 L 400,1392" fill="none" stroke="black"/>
              <path d="M 408,320 L 408,1336" fill="none" stroke="black"/>
              <path d="M 424,704 L 424,784" fill="none" stroke="black"/>
              <path d="M 424,1440 L 424,1544" fill="none" stroke="black"/>
              <path d="M 432,112 L 432,216" fill="none" stroke="black"/>
              <path d="M 448,432 L 448,496" fill="none" stroke="black"/>
              <path d="M 448,832 L 448,904" fill="none" stroke="black"/>
              <path d="M 448,1104 L 448,1136" fill="none" stroke="black"/>
              <path d="M 456,544 L 456,568" fill="none" stroke="black"/>
              <path d="M 456,1008 L 456,1040" fill="none" stroke="black"/>
              <path d="M 456,1184 L 456,1240" fill="none" stroke="black"/>
              <path d="M 472,320 L 472,424" fill="none" stroke="black"/>
              <path d="M 496,32 L 496,64" fill="none" stroke="black"/>
              <path d="M 496,1048 L 496,1096" fill="none" stroke="black"/>
              <path d="M 496,1144 L 496,1200" fill="none" stroke="black"/>
              <path d="M 496,1440 L 496,1464" fill="none" stroke="black"/>
              <path d="M 504,224 L 504,272" fill="none" stroke="black"/>
              <path d="M 520,1344 L 520,1392" fill="none" stroke="black"/>
              <path d="M 528,832 L 528,1000" fill="none" stroke="black"/>
              <path d="M 536,544 L 536,696" fill="none" stroke="black"/>
              <path d="M 536,1008 L 536,1040" fill="none" stroke="black"/>
              <path d="M 536,1104 L 536,1136" fill="none" stroke="black"/>
              <path d="M 544,432 L 544,496" fill="none" stroke="black"/>
              <path d="M 552,704 L 552,784" fill="none" stroke="black"/>
              <path d="M 568,48 L 568,1200" fill="none" stroke="black"/>
              <path d="M 112,32 L 496,32" fill="none" stroke="black"/>
              <path d="M 80,48 L 104,48" fill="none" stroke="black"/>
              <path d="M 504,48 L 568,48" fill="none" stroke="black"/>
              <path d="M 112,64 L 496,64" fill="none" stroke="black"/>
              <path d="M 8,224 L 128,224" fill="none" stroke="black"/>
              <path d="M 200,224 L 280,224" fill="none" stroke="black"/>
              <path d="M 368,224 L 504,224" fill="none" stroke="black"/>
              <path d="M 136,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 152,272 L 192,272" fill="none" stroke="black"/>
              <path d="M 368,272 L 504,272" fill="none" stroke="black"/>
              <path d="M 200,288 L 280,288" fill="none" stroke="black"/>
              <path d="M 8,304 L 128,304" fill="none" stroke="black"/>
              <path d="M 448,432 L 544,432" fill="none" stroke="black"/>
              <path d="M 448,496 L 544,496" fill="none" stroke="black"/>
              <path d="M 8,512 L 184,512" fill="none" stroke="black"/>
              <path d="M 200,512 L 328,512" fill="none" stroke="black"/>
              <path d="M 200,592 L 328,592" fill="none" stroke="black"/>
              <path d="M 8,624 L 184,624" fill="none" stroke="black"/>
              <path d="M 184,704 L 312,704" fill="none" stroke="black"/>
              <path d="M 424,704 L 552,704" fill="none" stroke="black"/>
              <path d="M 184,768 L 312,768" fill="none" stroke="black"/>
              <path d="M 424,784 L 552,784" fill="none" stroke="black"/>
              <path d="M 136,880 L 352,880" fill="none" stroke="black"/>
              <path d="M 136,944 L 352,944" fill="none" stroke="black"/>
              <path d="M 456,1008 L 536,1008" fill="none" stroke="black"/>
              <path d="M 8,1040 L 224,1040" fill="none" stroke="black"/>
              <path d="M 456,1040 L 536,1040" fill="none" stroke="black"/>
              <path d="M 448,1104 L 536,1104" fill="none" stroke="black"/>
              <path d="M 8,1136 L 224,1136" fill="none" stroke="black"/>
              <path d="M 448,1136 L 536,1136" fill="none" stroke="black"/>
              <path d="M 496,1200 L 520,1200" fill="none" stroke="black"/>
              <path d="M 552,1200 L 568,1200" fill="none" stroke="black"/>
              <path d="M 208,1248 L 336,1248" fill="none" stroke="black"/>
              <path d="M 208,1312 L 336,1312" fill="none" stroke="black"/>
              <path d="M 400,1344 L 520,1344" fill="none" stroke="black"/>
              <path d="M 80,1392 L 208,1392" fill="none" stroke="black"/>
              <path d="M 400,1392 L 520,1392" fill="none" stroke="black"/>
              <path d="M 216,1424 L 232,1424" fill="none" stroke="black"/>
              <path d="M 264,1424 L 280,1424" fill="none" stroke="black"/>
              <path d="M 80,1472 L 208,1472" fill="none" stroke="black"/>
              <path d="M 8,1552 L 272,1552" fill="none" stroke="black"/>
              <path d="M 280,1584 L 296,1584" fill="none" stroke="black"/>
              <path d="M 320,1584 L 376,1584" fill="none" stroke="black"/>
              <path d="M 8,1632 L 272,1632" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="544,696 532,690.4 532,701.6" fill="black" transform="rotate(90,536,696)"/>
              <polygon class="arrowhead" points="536,1000 524,994.4 524,1005.6" fill="black" transform="rotate(90,528,1000)"/>
              <polygon class="arrowhead" points="512,48 500,42.4 500,53.6" fill="black" transform="rotate(180,504,48)"/>
              <polygon class="arrowhead" points="504,1464 492,1458.4 492,1469.6" fill="black" transform="rotate(90,496,1464)"/>
              <polygon class="arrowhead" points="504,1096 492,1090.4 492,1101.6" fill="black" transform="rotate(90,496,1096)"/>
              <polygon class="arrowhead" points="480,424 468,418.4 468,429.6" fill="black" transform="rotate(90,472,424)"/>
              <polygon class="arrowhead" points="464,1240 452,1234.4 452,1245.6" fill="black" transform="rotate(90,456,1240)"/>
              <polygon class="arrowhead" points="464,568 452,562.4 452,573.6" fill="black" transform="rotate(90,456,568)"/>
              <polygon class="arrowhead" points="456,904 444,898.4 444,909.6" fill="black" transform="rotate(90,448,904)"/>
              <polygon class="arrowhead" points="440,216 428,210.4 428,221.6" fill="black" transform="rotate(90,432,216)"/>
              <polygon class="arrowhead" points="432,1544 420,1538.4 420,1549.6" fill="black" transform="rotate(90,424,1544)"/>
              <polygon class="arrowhead" points="416,1336 404,1330.4 404,1341.6" fill="black" transform="rotate(90,408,1336)"/>
              <polygon class="arrowhead" points="384,280 372,274.4 372,285.6" fill="black" transform="rotate(270,376,280)"/>
              <polygon class="arrowhead" points="352,72 340,66.4 340,77.6" fill="black" transform="rotate(270,344,72)"/>
              <polygon class="arrowhead" points="288,1320 276,1314.4 276,1325.6" fill="black" transform="rotate(270,280,1320)"/>
              <polygon class="arrowhead" points="288,1120 276,1114.4 276,1125.6" fill="black" transform="rotate(270,280,1120)"/>
              <polygon class="arrowhead" points="288,1032 276,1026.4 276,1037.6" fill="black" transform="rotate(90,280,1032)"/>
              <polygon class="arrowhead" points="288,872 276,866.4 276,877.6" fill="black" transform="rotate(90,280,872)"/>
              <polygon class="arrowhead" points="288,696 276,690.4 276,701.6" fill="black" transform="rotate(90,280,696)"/>
              <polygon class="arrowhead" points="280,448 268,442.4 268,453.6" fill="black" transform="rotate(270,272,448)"/>
              <polygon class="arrowhead" points="240,160 228,154.4 228,165.6" fill="black" transform="rotate(270,232,160)"/>
              <polygon class="arrowhead" points="224,504 212,498.4 212,509.6" fill="black" transform="rotate(90,216,504)"/>
              <polygon class="arrowhead" points="200,272 188,266.4 188,277.6" fill="black" transform="rotate(0,192,272)"/>
              <polygon class="arrowhead" points="200,240 188,234.4 188,245.6" fill="black" transform="rotate(0,192,240)"/>
              <polygon class="arrowhead" points="144,1480 132,1474.4 132,1485.6" fill="black" transform="rotate(270,136,1480)"/>
              <polygon class="arrowhead" points="144,1312 132,1306.4 132,1317.6" fill="black" transform="rotate(270,136,1312)"/>
              <polygon class="arrowhead" points="128,216 116,210.4 116,221.6" fill="black" transform="rotate(90,120,216)"/>
              <polygon class="arrowhead" points="112,48 100,42.4 100,53.6" fill="black" transform="rotate(0,104,48)"/>
              <polygon class="arrowhead" points="40,1544 28,1538.4 28,1549.6" fill="black" transform="rotate(90,32,1544)"/>
              <polygon class="arrowhead" points="40,1032 28,1026.4 28,1037.6" fill="black" transform="rotate(90,32,1032)"/>
              <polygon class="arrowhead" points="40,504 28,498.4 28,509.6" fill="black" transform="rotate(90,32,504)"/>
              <g class="text">
                <text x="36" y="52">Incoming</text>
                <text x="192" y="52">Are</text>
                <text x="232" y="52">there</text>
                <text x="312" y="52">proxy-related</text>
                <text x="404" y="52">options?</text>
                <text x="32" y="68">request</text>
                <text x="120" y="84">|</text>
                <text x="432" y="84">|</text>
                <text x="120" y="100">YES</text>
                <text x="236" y="100">..........</text>
                <text x="436" y="100">NO</text>
                <text x="200" y="116">:</text>
                <text x="236" y="116">Return</text>
                <text x="272" y="116">:</text>
                <text x="200" y="132">:</text>
                <text x="228" y="132">5.05</text>
                <text x="272" y="132">:</text>
                <text x="236" y="148">:........:</text>
                <text x="236" y="196">NO</text>
                <text x="232" y="212">|</text>
                <text x="152" y="228">YES</text>
                <text x="28" y="244">Is</text>
                <text x="64" y="244">there</text>
                <text x="104" y="244">the</text>
                <text x="220" y="244">Am</text>
                <text x="240" y="244">I</text>
                <text x="256" y="244">a</text>
                <text x="388" y="244">Is</text>
                <text x="424" y="244">there</text>
                <text x="460" y="244">an</text>
                <text x="56" y="260">Proxy-Uri</text>
                <text x="108" y="260">or</text>
                <text x="240" y="260">forward</text>
                <text x="404" y="260">OSCORE</text>
                <text x="464" y="260">Option?</text>
                <text x="56" y="276">Proxy-Cri</text>
                <text x="236" y="276">proxy?</text>
                <text x="48" y="292">Option?</text>
                <text x="408" y="292">|</text>
                <text x="472" y="292">|</text>
                <text x="216" y="308">|</text>
                <text x="412" y="308">NO</text>
                <text x="472" y="308">YES</text>
                <text x="32" y="324">|</text>
                <text x="216" y="324">YES</text>
                <text x="36" y="340">NO</text>
                <text x="276" y="388">..........</text>
                <text x="240" y="404">:</text>
                <text x="276" y="404">Return</text>
                <text x="312" y="404">:</text>
                <text x="240" y="420">:</text>
                <text x="268" y="420">4.01</text>
                <text x="312" y="420">:</text>
                <text x="276" y="436">:........:</text>
                <text x="472" y="452">Are</text>
                <text x="512" y="452">there</text>
                <text x="492" y="468">Uri-Path</text>
                <text x="152" y="484">YES</text>
                <text x="276" y="484">NO</text>
                <text x="492" y="484">Options?</text>
                <text x="152" y="500">|</text>
                <text x="272" y="500">|</text>
                <text x="456" y="516">|</text>
                <text x="536" y="516">|</text>
                <text x="28" y="532">Is</text>
                <text x="64" y="532">there</text>
                <text x="104" y="532">the</text>
                <text x="220" y="532">Is</text>
                <text x="244" y="532">it</text>
                <text x="456" y="532">YES</text>
                <text x="540" y="532">NO</text>
                <text x="68" y="548">Proxy-Scheme</text>
                <text x="132" y="548">or</text>
                <text x="252" y="548">acceptable</text>
                <text x="308" y="548">to</text>
                <text x="96" y="564">Proxy-Scheme-Number</text>
                <text x="240" y="564">forward</text>
                <text x="288" y="564">the</text>
                <text x="48" y="580">Option,</text>
                <text x="116" y="580">together</text>
                <text x="244" y="580">request?</text>
                <text x="296" y="580">(#)</text>
                <text x="476" y="580">..........</text>
                <text x="36" y="596">with</text>
                <text x="72" y="596">the</text>
                <text x="124" y="596">Uri-Host</text>
                <text x="440" y="596">:</text>
                <text x="476" y="596">Return</text>
                <text x="512" y="596">:</text>
                <text x="28" y="612">or</text>
                <text x="76" y="612">Uri-Port</text>
                <text x="144" y="612">Option?</text>
                <text x="280" y="612">|</text>
                <text x="440" y="612">:</text>
                <text x="468" y="612">4.00</text>
                <text x="512" y="612">:</text>
                <text x="280" y="628">YES</text>
                <text x="476" y="628">..........</text>
                <text x="32" y="644">|</text>
                <text x="36" y="660">NO</text>
                <text x="224" y="724">Consume</text>
                <text x="272" y="724">the</text>
                <text x="444" y="724">Is</text>
                <text x="468" y="724">it</text>
                <text x="248" y="740">proxy-related</text>
                <text x="476" y="740">acceptable</text>
                <text x="532" y="740">to</text>
                <text x="224" y="756">options</text>
                <text x="464" y="756">decrypt</text>
                <text x="512" y="756">the</text>
                <text x="468" y="772">request?</text>
                <text x="520" y="772">(#)</text>
                <text x="448" y="804">|</text>
                <text x="528" y="804">|</text>
                <text x="452" y="820">NO</text>
                <text x="528" y="820">YES</text>
                <text x="344" y="852">YES</text>
                <text x="344" y="868">|</text>
                <text x="164" y="900">Does</text>
                <text x="200" y="900">the</text>
                <text x="256" y="900">authority</text>
                <text x="168" y="916">(host</text>
                <text x="208" y="916">and</text>
                <text x="248" y="916">port)</text>
                <text x="284" y="916">of</text>
                <text x="312" y="916">the</text>
                <text x="468" y="916">..........</text>
                <text x="176" y="932">request</text>
                <text x="224" y="932">URI</text>
                <text x="276" y="932">identify</text>
                <text x="328" y="932">me?</text>
                <text x="432" y="932">:</text>
                <text x="468" y="932">Return</text>
                <text x="504" y="932">:</text>
                <text x="432" y="948">:</text>
                <text x="460" y="948">4.01</text>
                <text x="504" y="948">:</text>
                <text x="280" y="964">|</text>
                <text x="468" y="964">:........:</text>
                <text x="284" y="980">NO</text>
                <text x="496" y="1028">Decrypt</text>
                <text x="296" y="1044">...........</text>
                <text x="40" y="1060">There</text>
                <text x="76" y="1060">is</text>
                <text x="100" y="1060">no</text>
                <text x="164" y="1060">Proxy-Scheme</text>
                <text x="256" y="1060">:</text>
                <text x="296" y="1060">Forward</text>
                <text x="336" y="1060">:</text>
                <text x="28" y="1076">or</text>
                <text x="120" y="1076">Proxy-Scheme-Number</text>
                <text x="256" y="1076">:</text>
                <text x="280" y="1076">the</text>
                <text x="336" y="1076">:</text>
                <text x="48" y="1092">Option,</text>
                <text x="96" y="1092">but</text>
                <text x="136" y="1092">there</text>
                <text x="176" y="1092">are</text>
                <text x="256" y="1092">:</text>
                <text x="296" y="1092">request</text>
                <text x="336" y="1092">:</text>
                <text x="52" y="1108">Uri-Path</text>
                <text x="116" y="1108">and/or</text>
                <text x="180" y="1108">Uri-Host</text>
                <text x="296" y="1108">:.........:</text>
                <text x="44" y="1124">and/or</text>
                <text x="108" y="1124">Uri-Port</text>
                <text x="176" y="1124">Options</text>
                <text x="492" y="1124">Success?</text>
                <text x="456" y="1156">|</text>
                <text x="460" y="1172">NO</text>
                <text x="536" y="1204">YES</text>
                <text x="132" y="1252">..........</text>
                <text x="500" y="1252">................</text>
                <text x="96" y="1268">:</text>
                <text x="132" y="1268">Return</text>
                <text x="168" y="1268">:</text>
                <text x="248" y="1268">Consume</text>
                <text x="296" y="1268">the</text>
                <text x="440" y="1268">:</text>
                <text x="476" y="1268">OSCORE</text>
                <text x="528" y="1268">error</text>
                <text x="560" y="1268">:</text>
                <text x="96" y="1284">:</text>
                <text x="124" y="1284">4.01</text>
                <text x="168" y="1284">:</text>
                <text x="272" y="1284">proxy-related</text>
                <text x="440" y="1284">:</text>
                <text x="484" y="1284">handling</text>
                <text x="560" y="1284">:</text>
                <text x="132" y="1300">:........:</text>
                <text x="248" y="1300">options</text>
                <text x="500" y="1300">:..............:</text>
                <text x="140" y="1364">NO</text>
                <text x="420" y="1364">Is</text>
                <text x="456" y="1364">there</text>
                <text x="492" y="1364">an</text>
                <text x="136" y="1380">|</text>
                <text x="460" y="1380">application?</text>
                <text x="100" y="1412">Is</text>
                <text x="124" y="1412">it</text>
                <text x="424" y="1412">|</text>
                <text x="496" y="1412">|</text>
                <text x="132" y="1428">acceptable</text>
                <text x="188" y="1428">to</text>
                <text x="248" y="1428">YES</text>
                <text x="424" y="1428">YES</text>
                <text x="500" y="1428">NO</text>
                <text x="120" y="1444">forward</text>
                <text x="168" y="1444">the</text>
                <text x="124" y="1460">request?</text>
                <text x="176" y="1460">(#)</text>
                <text x="500" y="1476">..........</text>
                <text x="464" y="1492">:</text>
                <text x="500" y="1492">Return</text>
                <text x="536" y="1492">:</text>
                <text x="464" y="1508">:</text>
                <text x="492" y="1508">4.00</text>
                <text x="536" y="1508">:</text>
                <text x="136" y="1524">YES</text>
                <text x="500" y="1524">:........:</text>
                <text x="136" y="1540">|</text>
                <text x="468" y="1556">..................</text>
                <text x="28" y="1572">Am</text>
                <text x="48" y="1572">I</text>
                <text x="64" y="1572">a</text>
                <text x="128" y="1572">reverse-proxy</text>
                <text x="208" y="1572">using</text>
                <text x="248" y="1572">the</text>
                <text x="400" y="1572">:</text>
                <text x="440" y="1572">Deliver</text>
                <text x="488" y="1572">the</text>
                <text x="536" y="1572">:</text>
                <text x="40" y="1588">exact</text>
                <text x="88" y="1588">value</text>
                <text x="124" y="1588">of</text>
                <text x="160" y="1588">these</text>
                <text x="224" y="1588">Uri-Path,</text>
                <text x="308" y="1588">NO</text>
                <text x="400" y="1588">:</text>
                <text x="440" y="1588">request</text>
                <text x="484" y="1588">to</text>
                <text x="512" y="1588">the</text>
                <text x="536" y="1588">:</text>
                <text x="56" y="1604">Uri-Host,</text>
                <text x="112" y="1604">and</text>
                <text x="164" y="1604">Uri-Port</text>
                <text x="232" y="1604">Options</text>
                <text x="400" y="1604">:</text>
                <text x="456" y="1604">application</text>
                <text x="536" y="1604">:</text>
                <text x="32" y="1620">for</text>
                <text x="88" y="1620">proxying?</text>
                <text x="468" y="1620">:................:</text>
                <text x="16" y="1684">(#)</text>
                <text x="52" y="1684">This</text>
                <text x="84" y="1684">is</text>
                <text x="140" y="1684">determined</text>
                <text x="224" y="1684">according</text>
                <text x="276" y="1684">to</text>
                <text x="304" y="1684">the</text>
                <text x="364" y="1684">endpoint's</text>
                <text x="464" y="1684">configuration</text>
                <text x="48" y="1700">and</text>
                <text x="72" y="1700">a</text>
                <text x="116" y="1700">possible</text>
                <text x="208" y="1700">authorization</text>
                <text x="316" y="1700">enforcement.</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
             +-----------------------------------------------+
Incoming --->|        Are there proxy-related options?       |<-------+
request      +-----------------------------------------------+        |
              |                           ^          |                |
             YES        ..........        |          NO               |
              |         : Return :        |          |                |
              |         : 5.05   :        |          |                |
              |         :........:        |          |                |
              |             ^             |          |                |
              |             |             |          |                |
              |             NO            |          |                |
              v             |             |          v                |
+--------------+ YES    +---------+       |  +----------------+       |
| Is there the |------->| Am I a  |       |  | Is there an    |       |
| Proxy-Uri or |        | forward |       |  | OSCORE Option? |       |
| Proxy-Cri    |  +---->| proxy?  |       |  +----------------+       |
| Option?      |  |     +---------+       |   ^   |       |           |
+--------------+  |       |               |   |   NO     YES          |
   |              |      YES              |   |   |       |           |
   NO             |       |               |   |   |       |           |
   |              |       |               |   |   |       |           |
   |              |       |               |   |   |       |           |
   |              |       |  ..........   |   |   |       |           |
   |              |       |  : Return :   |   |   |       |           |
   |              |       |  : 4.01   :   |   |   |       v           |
   |              |       |  :........:   |   |   |    +-----------+  |
   |              |       |      ^        |   |   |    | Are there |  |
   |              |       |      |        |   |   |    | Uri-Path  |  |
   |             YES      |      NO       |   |   |    | Options?  |  |
   v              |       v      |        |   |   |    +-----------+  |
+---------------------+ +---------------+ |   |   |     |         |   |
| Is there the        | | Is it         | |   |   |    YES        NO  |
| Proxy-Scheme or     | | acceptable to | |   |   |     |         |   |
| Proxy-Scheme-Number | | forward the   | |   |   |     v         |   |
| Option, together    | | request? (#)  | |   |   |   ..........  |   |
| with the Uri-Host   | +---------------+ |   |   |   : Return :  |   |
| or Uri-Port Option? |           |       |   |   |   : 4.00   :  |   |
+---------------------+          YES      |   |   |   ..........  |   |
   |                              |       |   |   |               |   |
   NO                             |       |   |   |               |   |
   |                              |       |   |   |               |   |
   |                              v       |   |   |               v   |
   |                  +---------------+   |   |   | +---------------+ |
   |                  | Consume the   |   |   |   | | Is it         | |
   |                  | proxy-related |   |   |   | | acceptable to | |
   |                  | options       |   |   |   | | decrypt the   | |
   |                  +---------------+   |   |   | | request? (#)  | |
   |                              |       |   |   | +---------------+ |
   |                              |       |   |   |    |         |    |
   |                              |       |   |   |    NO       YES   |
   |                              |       |   |   |    |         |    |
   |                              |      YES  |   |    |         |    |
   |                              v       |   |   |    |         |    |
   |            +--------------------------+  |   |    |         |    |
   |            | Does the authority       |  |   |    v         |    |
   |            | (host and port) of the   |  |   |  ..........  |    |
   |            | request URI identify me? |  |   |  : Return :  |    |
   |            +--------------------------+  |   |  : 4.01   :  |    |
   |                              |           |   |  :........:  |    |
   |                              NO          |   |              |    |
   |                              |           |   |              v    |
   |                              |           |   |     +---------+   |
   v                              v           |   |     | Decrypt |   |
+--------------------------+   ...........    |   |     +---------+   |
| There is no Proxy-Scheme |   : Forward :    |   |          |        |
| or Proxy-Scheme-Number   |   : the     :    |   |          |        |
| Option, but there are    |   : request :    |   |          v        |
| Uri-Path and/or Uri-Host |   :.........:    |   |    +----------+   |
| and/or Uri-Port Options  |      ^           |   |    | Success? |   |
+--------------------------+      |           |   |    +----------+   |
   |                              |           |   |     |    |        |
   |                              |           |   |     NO   |        |
   |                              |           |   |     |    |        |
   |                              |           |   |     |    +---YES--+
   |                              |           |   |     |
   |                              |           |   |     v
   |       ..........    +---------------+    |   |   ................
   |       : Return :    | Consume the   |    |   |   : OSCORE error :
   |       : 4.01   :    | proxy-related |    |   |   : handling     :
   |       :........:    | options       |    |   |   :..............:
   |            ^        +---------------+    |   |
   |            |                 ^           |   v
   |            |                 |           |  +--------------+
   |            NO                |           |  | Is there an  |
   |            |                 |           |  | application? |
   |     +---------------+        |           |  +--------------+
   |     | Is it         |        |           |     |        |
   |     | acceptable to |---YES--+           |    YES       NO
   |     | forward the   |                    |     |        |
   |     | request? (#)  |                    |     |        v
   |     +---------------+                    |     |    ..........
   |            ^                             |     |    : Return :
   |            |                             |     |    : 4.00   :
   |           YES                            |     |    :........:
   v            |                             |     v
+--------------------------------+            |  ..................
| Am I a reverse-proxy using the |            |  : Deliver the    :
| exact value of these Uri-Path, |---NO-------+  : request to the :
| Uri-Host, and Uri-Port Options |               : application    :
| for proxying?                  |               :................:
+--------------------------------+


(#) This is determined according to the endpoint's configuration
    and a possible authorization enforcement.
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-01-02">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>Revised escalation of CoAP option protection.</t>
          </li>
          <li>
            <t>Specified general ordering for protecting outgoing requests.</t>
          </li>
          <li>
            <t>Explicit definition of OSCORE processing for the Hop-Limit option (update to RFC 8768).</t>
          </li>
          <li>
            <t>Added examples of message exchange with a reverse-proxy.</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>Escalation of option protection as explicit update point to RFC 8613.</t>
          </li>
          <li>
            <t>Clarified examples of Class U/I CoAP options that become encrypted.</t>
          </li>
          <li>
            <t>Considered also the CoAP Options Proxy-Cri and Proxy-Scheme-Number.</t>
          </li>
          <li>
            <t>Added reference to Onion CoAP as use case.</t>
          </li>
          <li>
            <t>Required to set a limit on OSCORE layers that can be added/removed.</t>
          </li>
          <li>
            <t>Revised general rules on protecting CoAP options.</t>
          </li>
          <li>
            <t>A forward-proxy consumes a request when the request URI identifies the proxy itself.</t>
          </li>
          <li>
            <t>Consistency fix: a reverse-proxy can forward based on Uri-Host, Uri-Port or Uri-Path.</t>
          </li>
          <li>
            <t>Generalized authorization checks as acceptability checks.</t>
          </li>
          <li>
            <t>Added acceptability check before decrypting a request.</t>
          </li>
          <li>
            <t>Fixes in the examples of message exchange.</t>
          </li>
          <li>
            <t>Updated state diagram of the incoming request processing.</t>
          </li>
          <li>
            <t>Added state diagram on the protection of CoAP options of Class U/I.</t>
          </li>
          <li>
            <t>Updated references.</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="Peter Blomqvist"/>, <contact fullname="David Navarro"/>, and <contact fullname="Göran Selander"/> for their comments and feedback.</t>
      <t>The work on this document has been partly supported by the Sweden's Innovation Agency VINNOVA and the Celtic-Next projects CRITISEC and CYPRESS; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
