<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.26 (Ruby 2.7.0) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-teep-otrp-over-http-15" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="TEEP HTTP Transport">HTTP Transport for Trusted Execution Environment Provisioning: Agent Initiated Communication</title>

    <author initials="D." surname="Thaler" fullname="Dave Thaler">
      <organization>Microsoft</organization>
      <address>
        <email>dthaler@microsoft.com</email>
      </address>
    </author>

    <date year="2023" month="March" day="27"/>

    <area>Security</area>
    <workgroup>TEEP WG</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The Trusted Execution Environment Provisioning (TEEP) Protocol is used to manage code and
configuration data in a Trusted Execution
Environment (TEE).  This document specifies the HTTP transport for TEEP communication where
a Trusted Application Manager (TAM) service is used to manage code and data in TEEs on devices that can initiate
communication to the TAM.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>A Trusted Execution Environment (TEE) is an environment that
enforces that any code within that environment cannot be tampered with,
and that any data used by such code cannot be read or tampered with
by any code outside that environment.
The Trusted Execution Environment Provisioning (TEEP) protocol is designed to
provision authorized code and configuration into TEEs.</t>

<t>To be secure against malware, a TEEP implementation (referred to as a
TEEP "Agent" on the client side is expected to run inside a TEE, and a "Trusted Application Manager (TAM)" on
the server side) might or might not run inside a TEE.
However, the transport for TEEP,
along with the underlying TCP/IP stack, does not necessarily run inside a TEE.  This split allows
the set of highly trusted code to be kept as small as possible, including allowing code
(e.g., TCP/IP or QUIC <xref target="RFC9000"/>) that only sees encrypted messages, to be kept out of the TEE.
See section 6.2 of <xref target="I-D.ietf-teep-architecture"/> for a depiction
of various implementation models.</t>

<t>The TEEP specification <xref target="I-D.ietf-teep-protocol"/> describes the
behavior of TEEP Agents and TAMs, but does not specify the details of the transport.
The purpose of this document is to provide such details.  That is,
a TEEP-over-HTTP (TEEP/HTTP) implementation delivers messages up to a TEEP
implementation, and accepts messages from the TEEP implementation to be sent over a network.
The TEEP-over-HTTP implementation can be implemented either outside a TEE (i.e., in
a TEEP "Broker") or inside a TEE.</t>

<t>There are two topological scenarios (among others) in which TEEP could be deployed:</t>

<t><list style="numbers">
  <t>TAMs are reachable on the Internet, and Agents are on networks that might be
behind a firewall or stateful NAT, so that communication must be initiated by an Agent.
Thus, the Agent has an HTTP Client and the TAM has an HTTP Server.</t>
  <t>Agents are reachable on the Internet, and TAMs are on networks that might be
behind a firewall or stateful NAT, so that communication must be initiated by a TAM.
Thus, the Agent has an HTTP Server and the TAM has an HTTP Client.</t>
</list></t>

<t>The remainder of this document focuses primarily on the first scenario as depicted
in <xref target="communication-model"/>, but some sections (<xref target="use-of-http"/>
and <xref target="security"/>) may apply to the second scenario as well.  A more complete
discussion of the second scenario may be handled by a separate document.</t>

<figure title="Agent Initiated Communication" anchor="communication-model"><artwork><![CDATA[
    +------------------+           TEEP           +------------------+
    |    TEEP Agent    | <----------------------> |        TAM       |
    +------------------+                          +------------------+
             |                                              |
    +------------------+      TEEP-over-HTTP      +------------------+
    | TEEP/HTTP Client | <----------------------> | TEEP/HTTP Server |
    +------------------+                          +------------------+
             |                                              |
    +------------------+           HTTP           +------------------+
    |    HTTP Client   | <----------------------> |    HTTP Server   |
    +------------------+                          +------------------+
]]></artwork></figure>

<t>This document specifies the middle layer (TEEP-over-HTTP), whereas
the top layer (TEEP) is specified in <xref target="I-D.ietf-teep-protocol"/>
and the bottom layer (HTTP) is specified in <xref target="RFC9110"/>.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY",
and "OPTIONAL" 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>This document also uses various terms defined in
<xref target="I-D.ietf-teep-architecture"/>, including Trusted Execution Environment (TEE),
Trusted Application (TA), Trusted Application Manager (TAM), TEEP Agent, TEEP Broker,
and Rich Execution Environment (REE).</t>

</section>
<section anchor="teep-broker"><name>TEEP Broker</name>

<t>Section 6 of the TEEP architecture <xref target="I-D.ietf-teep-architecture"/> defines a TEEP "Broker"
as being a component on the device, but outside the TEE, that facilitates communication
with a TAM. That document further explains that the protocol layer at which the
TEEP broker operates may vary by implementation, and it depicts several exemplary models.
An implementation is free to choose any of these models, although model A is the one we
will use in our examples.</t>

<t>Passing information from an REE component to a TEE component is typically spoken of as
being passed "in" to the TEE, and information passed in the opposite direction is spoken of
as being passed "out".  In the protocol layering sense, information is typically spoken
of as being passed "up" or "down" the stack.  Since the layer at which information is
passed in/out may vary by implementation, we will generally use "up" and "down" in this
document.</t>

<section anchor="use-of-abstract-apis"><name>Use of Abstract APIs</name>

<t>This document refers to various APIs between a TEEP implementation and a TEEP/HTTP implementation
in the abstract, meaning the literal syntax and programming language
are not specified, so that various concrete APIs can be designed
(outside of the IETF) that are compliant.</t>

<t>Some TEE architectures (e.g., SGX) may support API calls both into and out of a TEE.
In other TEE architectures, there may be no calls out from a TEE, but merely data returned
from calls into a TEE.  This document attempts to be agnostic as to the
concrete API architecture for Broker/Agent communication.  Since in model A,
the Broker/Agent communication is done at the layer between the TEEP and TEEP/HTTP
implementations, and there may be some architectures that do not support calls out
of the TEE (which would be downcalls from TEEP in model A), we will refer to passing
information up to the TEEP implementation as API calls, but will simply refer to
"passing data" back down from a TEEP implementation.  A concrete API might pass data
back via an API downcall or via data returned from an API upcall.</t>

<t>This document will also refer to passing "no" data back out of a TEEP implementation.
In a concrete API, this might be implemented by not making any downcall, or by
returning 0 bytes from an upcall, for example.</t>

</section>
</section>
<section anchor="use-of-http"><name>Use of HTTP as a Transport</name>

<t>This document uses HTTP <xref target="RFC9110"/> as a transport.
For the motivation behind the HTTP recommendations in this document,
see the discussion of HTTP as a transport in <xref target="RFC9205"/>.</t>

<t>Redirects MUST NOT be automatically followed.
Cookies are not used.</t>

<t>Content is not intended to be treated as active by browsers and so HTTP responses
with content MUST have the following header fields as explained in Section 4.13 of
<xref target="RFC9205"/> (using the TEEP media type defined
in <xref target="I-D.ietf-teep-protocol"/>):</t>

<figure><artwork><![CDATA[
    Content-Type: application/teep+cbor
    X-Content-Type-Options: nosniff
    Content-Security-Policy: default-src 'none'
    Referrer-Policy: no-referrer
]]></artwork></figure>

<t>Only the POST method is specified for TAM resources exposed over HTTP.
Since POST responses without explicit freshness information are uncacheable
(see Section 9.3.3 of <xref target="RFC9110"/>), the Cache-Control header MUST NOT be used.</t>

<t>A URI of such a resource is referred to as a "TAM URI".  A TAM URI can
be any HTTP(S) URI.  The URI to use is configured in a TEEP Agent
via an out-of-band mechanism, as discussed in the next section.</t>

<t>It is RECOMMENDED that implementations use HTTPS.
Although TEEP is protected end-to-end inside of HTTP, there is still value
in using HTTPS for transport, since HTTPS can provide additional protections
as discussed in Section 6 of <xref target="RFC9205"/>.</t>

<t>However, there may be constrained nodes where code space is an
issue. <xref target="RFC7925"/> provides TLS profiles that can be used in many
constrained nodes, but in rare cases the most constrained nodes
might need to use HTTP without a TLS stack, relying on the end-to-end
security provided by the TEEP protocol. See Sections 4.4.2 and 6 of <xref target="RFC9205"/>
for more discussion of additional security considerations that apply
in this case.</t>

<t>When HTTPS is used, clients MUST use the procedures detailed in
Section 4.3.4 of <xref target="RFC9110"/> to verify the authenticity of the server.
See <xref target="BCP195"/> for additional TLS recommendations
and <xref target="RFC7925"/> for TLS recommendations related to IoT devices.</t>

</section>
<section anchor="teephttp-client-behavior"><name>TEEP/HTTP Client Behavior</name>

<section anchor="request-ta"><name>Receiving a request to install a new Trusted Application</name>

<t>In some environments, an application installer can determine (e.g., from an application manifest)
that the application being installed or updated has a dependency on a given Trusted Application (TA)
being available in a given type of TEE. In such a case, it will notify a TEEP Broker, where
the notification will contain the following:</t>

<t><list style="symbols">
  <t>A unique identifier of the TA</t>
  <t>Optionally, any metadata to provide to the TEEP Agent.  This might
include a TAM URI provided in the application manifest, for example.</t>
  <t>Optionally, any requirements that may affect the choice of TEE,
if multiple are available to the TEEP Broker.</t>
</list></t>

<t>When a TEEP Broker receives such a notification, it first identifies
in an implementation-dependent way which TEE (if any) is most appropriate
based on the constraints expressed.  If there is only one TEE, the choice
is obvious.  Otherwise, the choice might be based on factors such as
capabilities of available TEE(s) compared with TEE requirements in the notification.
Once the TEEP Broker picks a TEE, it passes the notification to the TEEP/HTTP Client for that TEE.</t>

<t>The TEEP/HTTP Client then informs the TEEP Agent in that TEE by invoking
an appropriate "RequestTA" API that identifies the TA needed and any other
associated metadata.  The TEEP/HTTP Client need not know whether the TEE already has
such a TA installed or whether it is up to date.</t>

<t>The TEEP Agent will either (a) pass no data back, (b) pass back a TAM URI to connect to,
or (c) pass back a message and TAM URI to send it to.  The TAM URI
passed back may or may not be the same as the TAM URI, if any, provided by
the TEEP/HTTP Client, depending on the TEEP Agent's configuration.  If they differ,
the TEEP/HTTP Client MUST use the TAM URI passed back.</t>

<section anchor="client-start"><name>Session Creation</name>

<t>If no data is passed back, the TEEP/HTTP Client simply informs its caller (e.g., the
application installer) of success.</t>

<t>If the TEEP Agent passes back a TAM URI with no message, the TEEP/HTTP Client
attempts to create session state,
then sends an HTTP(S) POST to the TAM URI with an Accept header field with the TEEP media type
specified in <xref target="I-D.ietf-teep-protocol"/>,
and an empty body. The HTTP request is then associated with the TEEP/HTTP Client's session state.</t>

<t>If the TEEP Agent instead passes back a TAM URI with a message, the TEEP/HTTP Client
attempts to create session state and handles the message as
specified in <xref target="send-msg"/>.</t>

<t>Session state consists of:</t>

<t><list style="symbols">
  <t>Any context (e.g., a handle) that the TEEP Agent wishes to be provided back to it
in any later conceptual API calls into it related to this session.</t>
  <t>Any context that identifies an HTTP request, if one is outstanding.  Initially, none exists.</t>
</list></t>

</section>
</section>
<section anchor="receiving-a-notification-that-a-trusted-application-is-no-longer-needed"><name>Receiving a notification that a Trusted Application is no longer needed</name>

<t>In some environments, an application installer can determine (e.g., from an application manifest)
that a given Trusted Application is no longer needed, such as
if the application that previously depended on the TA is uninstalled
or updated in a way that removes the dependency.
In such a case, it will notify a TEEP Broker, where
the notification will contain the following:</t>

<t><list style="symbols">
  <t>A unique identifier of the TA</t>
  <t>Optionally, any metadata to provide to the TEEP Agent.  This might
include a TAM URI provided in the original application manifest, for example.</t>
  <t>Optionally, any requirements that may affect the choice of TEE,
if multiple are available to the TEEP Broker.</t>
</list></t>

<t>When a TEEP Broker receives such a notification, it first identifies
in an implementation-dependent way which TEE (if any) is believed to
contain the TA that is no longer needed, similar to the process in <xref target="request-ta"/>.
Once the TEEP Broker picks a TEE, it passes the notification to the TEEP/HTTP
Client for that TEE.</t>

<t>The TEEP/HTTP Client then informs the TEEP Agent in that TEE by invoking
an appropriate "UnrequestTA" API that identifies the unneeded TA.
The TEEP/HTTP Client need not know whether the TEE actually has
the TA installed.</t>

<t>Finally, the TEEP Agent responds to the TEEP/HTTP Client as in <xref target="request-ta"/>.
Specifically, the TEEP Agent will either (a) pass no data back, (b) pass back a TAM URI to connect to,
or (c) pass back a message and TAM URI to send it to.  The TAM URI
passed back may or may not be the same as the TAM URI, if any, provided by
the TEEP/HTTP Client, depending on the TEEP Agent's configuration.  If they differ,
the TEEP/HTTP Client MUST use the TAM URI passed back.</t>

<t>Processing then continues as in <xref target="client-start"/>.</t>

</section>
<section anchor="send-msg"><name>Getting a TAM URI and message back from a TEEP Agent</name>

<t>When a TEEP Agent passes a TAM URI and optionally a message to a TEEP/HTTP Client, the
TEEP/HTTP Client MUST do the following, using the TEEP/HTTP Client's session state associated
with its API call to the TEEP Agent.</t>

<t>The TEEP/HTTP Client sends an HTTP POST request to the TAM URI with Accept
and Content-Type header fields with the TEEP media type, and a body
containing the TEEP message (if any) provided by the TEEP Agent.
The HTTP request is then associated with the TEEP/HTTP Client's session state.</t>

</section>
<section anchor="http-response"><name>Receiving an HTTP response</name>

<t>When an HTTP response is received in response to a request associated
with a given session state, the TEEP/HTTP Client MUST do the following.</t>

<t>If the HTTP response body is empty, the TEEP/HTTP Client's task is complete, and
it can delete its session state, and its task is done.</t>

<t>If instead the HTTP response body is not empty, the TEEP/HTTP Client passes
(e.g., using the "ProcessTeepMessage" API as mentioned in Section 6.2.1 of <xref target="I-D.ietf-teep-architecture"/>)
the response body up to the TEEP Agent
associated with the session.  The TEEP Agent will then either pass no data back,
or pass back a message.</t>

<t>If no data is passed back, the TEEP/HTTP Client's task is complete, and it
can delete its session state, and inform its caller (e.g., the application
installer) of success.</t>

<t>If instead the TEEP Agent passes back a message, the TEEP/HTTP Client
handles the message as specified in <xref target="send-msg"/>.</t>

</section>
<section anchor="handling-checks-for-policy-changes"><name>Handling checks for policy changes</name>

<t>An implementation MUST provide a way to periodically check for TAM policy
changes, such as a Trusted Application needing to be deleted from a TEE
because it is no longer permitted, or needing to be updated to a later
version.
This can be done in any implementation-specific manner, such as any of the
following or a combination thereof:</t>

<t>A) The TEEP/HTTP Client might call up to the TEEP Agent at an interval previously
   specified by the TEEP Agent.
   This approach requires that the TEEP/HTTP Client be capable of running a periodic timer.</t>

<t>B) The TEEP/HTTP Client might be informed when an existing TA is invoked, and call up to the TEEP Agent if
   more time has passed than was previously specified by the TEEP Agent.  This approach allows
   the device to go to sleep for a potentially long period of time.</t>

<t>C) The TEEP/HTTP Client might be informed when any attestation attempt determines that the device
   is out of compliance, and call up to the TEEP Agent to remediate.</t>

<t>The TEEP/HTTP Client informs the TEEP Agent by invoking an appropriate "RequestPolicyCheck" API.
The TEEP Agent will either (a) pass no data back, (b) pass back a TAM URI to connect to,
or (c) pass back a message and TAM URI to send it to.  Processing then continues
as specified in <xref target="client-start"/>.</t>

<t>The TEEP Agent might need to talk to multiple TAMs, however, as shown in
Figure 1 of <xref target="I-D.ietf-teep-architecture"/>.  To accomplish this,
the TEEP/HTTP Client keeps invoking the "RequestPolicyCheck" API until
the TEEP Agent passes no data back, so that the TEEP Agent can return
each TAM URI in response to a separate API call.</t>

</section>
<section anchor="error-handling"><name>Error handling</name>

<t>If any local error occurs where the TEEP/HTTP Client cannot get
a message (empty or not) back from the TEEP Agent, the
TEEP/HTTP Client deletes its session state, and informs its caller (if any, e.g.,
the application installer) of a failure.
Note that no timeout check is used at the TEEP/HTTP Client layer;
any timeout would be done inside the TEEP Agent.</t>

<t>If any HTTP request results in an HTTP error response or
a lower layer error (e.g., network unreachable), the
TEEP/HTTP Client calls the TEEP Agent's "ProcessError" API, and then
deletes its session state and informs its caller of a failure.</t>

</section>
</section>
<section anchor="teephttp-server-behavior"><name>TEEP/HTTP Server Behavior</name>

<section anchor="receiving-an-http-post-request"><name>Receiving an HTTP POST request</name>

<t>If the TAM does not receive the appropriate Content-Type header
field value, the TAM SHOULD fail the request, returning a 415 Unsupported Media Type
response.  Similarly, if an appropriate Accept header field is not
present, the TAM SHOULD fail the request with an appropriate error response.
(This is for consistency with common implementation practice to allow
the HTTP server to choose a default error response, since in some
implementations the choice is done at the HTTP layer rather than the
layer at which TEEP-over-HTTP would be implemented.)
Otherwise, processing continues as follows.</t>

<t>When an HTTP POST request is received with an empty body, this indicates
a request for a new TEEP session, and
the TEEP/HTTP Server invokes the TAM's "ProcessConnect" API.  The TAM will then
pass back a message.</t>

<t>When an HTTP POST request is received with a non-empty body, this indicates a
message on an existing TEEP session, and the TEEP/HTTP Server passes the
request body to the TAM (e.g., using the "ProcessTeepMessage" API mentioned in
<xref target="I-D.ietf-teep-architecture"/>). The TAM will
then pass back a (possibly empty) message.</t>

</section>
<section anchor="getting-an-empty-message-back-from-the-tam"><name>Getting an empty message back from the TAM</name>

<t>If the TAM passes back an empty message, the TEEP/HTTP Server sends a successful
(2xx) response with no body.  It SHOULD be status 204 (No Content).</t>

</section>
<section anchor="getting-a-message-from-the-tam"><name>Getting a message from the TAM</name>

<t>If the TAM passes back a non-empty message, the TEEP/HTTP Server
generates a successful (2xx) response with a Content-Type
header field with the TEEP media type, and with the message as the body.</t>

</section>
<section anchor="error-handling-1"><name>Error handling</name>

<t>If any error occurs where the TEEP/HTTP Server cannot get
a message (empty or not) back from the TAM, the
TEEP/HTTP Server generates an appropriate HTTP 5xx error response.
Note that no timeout check is used at the TEEP/HTTP Client layer;
any timeout would be handled inside the TEEP Agent.</t>

</section>
</section>
<section anchor="sample-message-flow"><name>Sample message flow</name>

<t>The following shows a sample TEEP message flow that uses application/teep+cbor
as the Content-Type.</t>

<t><list style="numbers">
  <t>An application installer determines (e.g., from an application manifest)
that the application has a dependency on TA "X", and passes
this notification to the TEEP Broker.  The TEEP Broker
picks a TEE (e.g., the only one available) based on
this notification, and passes the information to the
TEEP/HTTP Client for that TEE.</t>
  <t>The TEEP/HTTP Client calls the TEEP Agent's "RequestTA" API, passing
TA Needed = X.</t>
  <t>The TEEP Agent finds that no such TA is already installed,
but that it can be obtained from a given TAM.  The TEEP
Agent passes back the TAM URI (e.g., "https://example.com/tam")
to the TEEP/HTTP Client.</t>
  <t>The TEEP/HTTP Client sends an HTTP POST request to the TAM URI:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
        POST /tam HTTP/1.1
        Host: example.com
        Accept: application/teep+cbor
        Content-Length: 0
        User-Agent: Foo/1.0
]]></artwork></figure>
  <vspace blankLines='1'/>
where the TEEP/HTTP Client fills in an implementation-specific value in the
User-Agent header field.</t>
  <t>On the TAM side, the TEEP/HTTP Server receives the HTTP POST request, and calls
the TAM's "ProcessConnect" API.</t>
  <t>The TAM generates a TEEP message (where typically QueryRequest
is the first message) and passes it to the TEEP/HTTP Server.</t>
  <t>The TEEP/HTTP Server sends an HTTP successful response with
the TEEP message in the body:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
        HTTP/1.1 200 OK
        Content-Type: application/teep+cbor
        Content-Length: [length of TEEP message here]
        Server: Bar/2.2
        X-Content-Type-Options: nosniff
        Content-Security-Policy: default-src 'none'
        Referrer-Policy: no-referrer

        [TEEP message here]
]]></artwork></figure>
  <vspace blankLines='1'/>
where the TEEP/HTTP Server fills in an implementation-specific value in the
Server header field.</t>
  <t>Back on the TEEP Agent side, the TEEP/HTTP Client gets the HTTP response, extracts the TEEP
message and passes it up to the TEEP Agent.</t>
  <t>The TEEP Agent processes the TEEP message, and generates a TEEP
response (e.g., QueryResponse) which it passes back to the TEEP/HTTP Client.</t>
  <t>The TEEP/HTTP Client gets the TEEP message and sends
an HTTP POST request to the TAM URI, with the TEEP message in the body:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
       POST /tam HTTP/1.1
       Host: example.com
       Accept: application/teep+cbor
       Content-Type: application/teep+cbor
       Content-Length: [length of TEEP message here]
       User-Agent: Foo/1.0

       [TEEP message here]
]]></artwork></figure>
  </t>
  <t>The TEEP/HTTP Server receives the HTTP POST request, and passes the payload up
to the TAM.</t>
  <t>Steps 6-11 are then repeated until the TAM passes no data back
to the TEEP/HTTP Server in step 6.</t>
  <t>The TEEP/HTTP Server sends an HTTP successful response with
no body:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
       HTTP/1.1 204 No Content
       Server: Bar/2.2
]]></artwork></figure>
  </t>
  <t>The TEEP/HTTP Client deletes its session state.</t>
</list></t>

</section>
<section anchor="security"><name>Security Considerations</name>

<t><xref target="use-of-http"/> discussed security recommendations for HTTPS transport
of TEEP messages. See Section 6 of <xref target="RFC9205"/>
for additional discussion of HTTP(S) security considerations.
See section 9 of <xref target="I-D.ietf-teep-architecture"/> for security considerations
specific to the use of TEEP.
See Section 7 of <xref target="RFC3986"/> for security considerations on dereferencing URIs.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no actions for IANA.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>




<reference anchor='I-D.ietf-teep-protocol'>
   <front>
      <title>Trusted Execution Environment Provisioning (TEEP) Protocol</title>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         </author>
      <author fullname='Mingliang Pei' initials='M.' surname='Pei'>
         <organization>Broadcom</organization>
      </author>
      <author fullname='Dave Wheeler' initials='D. M.' surname='Wheeler'>
         <organization>Amazon</organization>
      </author>
      <author fullname='Dave Thaler' initials='D.' surname='Thaler'>
         <organization>Microsoft</organization>
      </author>
      <author fullname='Akira Tsukamoto' initials='A.' surname='Tsukamoto'>
         </author>
      <date day='13' month='March' year='2023'/>
      <abstract>
	 <t>   This document specifies a protocol that installs, updates, and
   deletes Trusted Components in a device with a Trusted Execution
   Environment (TEE).  This specification defines an interoperable
   protocol for managing the lifecycle of Trusted Components.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teep-protocol-12'/>
   
</reference>



<reference anchor='RFC9110'>
<front>
<title>HTTP Semantics</title>
<author fullname='R. Fielding' initials='R.' role='editor' surname='Fielding'><organization/></author>
<author fullname='M. Nottingham' initials='M.' role='editor' surname='Nottingham'><organization/></author>
<author fullname='J. Reschke' initials='J.' role='editor' surname='Reschke'><organization/></author>
<date month='June' year='2022'/>
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes. </t><t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t></abstract>
</front>
<seriesInfo name='STD' value='97'/>
<seriesInfo name='RFC' value='9110'/>
<seriesInfo name='DOI' value='10.17487/RFC9110'/>
</reference>



<reference anchor='RFC2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<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='RFC7925'>
<front>
<title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
<author fullname='H. Tschofenig' initials='H.' role='editor' surname='Tschofenig'><organization/></author>
<author fullname='T. Fossati' initials='T.' surname='Fossati'><organization/></author>
<date month='July' year='2016'/>
<abstract><t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t><t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery.  The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t></abstract>
</front>
<seriesInfo name='RFC' value='7925'/>
<seriesInfo name='DOI' value='10.17487/RFC7925'/>
</reference>



<reference anchor='BCP195'>
<front>
<title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
<author fullname='Y. Sheffer' initials='Y.' surname='Sheffer'><organization/></author>
<author fullname='P. Saint-Andre' initials='P.' surname='Saint-Andre'><organization/></author>
<author fullname='T. Fossati' initials='T.' surname='Fossati'><organization/></author>
<date month='November' year='2022'/>
<abstract><t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols.  Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation.  This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t><t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t></abstract>
</front>
<seriesInfo name='BCP' value='195'/>
<seriesInfo name='RFC' value='9325'/>
<seriesInfo name='DOI' value='10.17487/RFC9325'/>
</reference>



<reference anchor='RFC3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author fullname='T. Berners-Lee' initials='T.' surname='Berners-Lee'><organization/></author>
<author fullname='R. Fielding' initials='R.' surname='Fielding'><organization/></author>
<author fullname='L. Masinter' initials='L.' surname='Masinter'><organization/></author>
<date month='January' year='2005'/>
<abstract><t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='66'/>
<seriesInfo name='RFC' value='3986'/>
<seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC9000'>
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
<author fullname='J. Iyengar' initials='J.' role='editor' surname='Iyengar'><organization/></author>
<author fullname='M. Thomson' initials='M.' role='editor' surname='Thomson'><organization/></author>
<date month='May' year='2021'/>
<abstract><t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t></abstract>
</front>
<seriesInfo name='RFC' value='9000'/>
<seriesInfo name='DOI' value='10.17487/RFC9000'/>
</reference>


<reference anchor='I-D.ietf-teep-architecture'>
   <front>
      <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
      <author fullname='Mingliang Pei' initials='M.' surname='Pei'>
         <organization>Broadcom</organization>
      </author>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Dave Thaler' initials='D.' surname='Thaler'>
         <organization>Microsoft</organization>
      </author>
      <author fullname='Dave Wheeler' initials='D. M.' surname='Wheeler'>
         <organization>Amazon</organization>
      </author>
      <date day='24' month='October' year='2022'/>
      <abstract>
	 <t>   A Trusted Execution Environment (TEE) is an environment that enforces
   that any code within that environment cannot be tampered with, and
   that any data used by such code cannot be read or tampered with by
   any code outside that environment.  This architecture document
   motivates the design and standardization of a protocol for managing
   the lifecycle of trusted applications running inside such a TEE.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teep-architecture-19'/>
   
</reference>



<reference anchor='RFC9205'>
<front>
<title>Building Protocols with HTTP</title>
<author fullname='M. Nottingham' initials='M.' surname='Nottingham'><organization/></author>
<date month='June' year='2022'/>
<abstract><t>Applications often use HTTP as a substrate to create HTTP-based APIs. This document specifies best practices for writing specifications that use HTTP to define new application protocols. It is written primarily to guide IETF efforts to define application protocols using HTTP for deployment on the Internet but might be applicable in other situations.</t><t>This document obsoletes RFC 3205.</t></abstract>
</front>
<seriesInfo name='BCP' value='56'/>
<seriesInfo name='RFC' value='9205'/>
<seriesInfo name='DOI' value='10.17487/RFC9205'/>
</reference>




    </references>




  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1cW3MbR3Z+RxX+Qy/0YCIGRiQl2RaTzS5FSTYrosQVqVqn
tlKpxqABdHEwjUwPSGFp5bfnXLp7em4g7XWcpLKoskUAPX051+9cGtPpdDgo
dZmpEzH64fr6UlwXMrcbU5RiYQp4t7Wlmos3n1W6LbXJxZv8VhcmX6u8FJeF
udUWPtX58kScLvGz81yXWuIzZ2a93uY6lfjcaDiQs1mhbk/E9Zs3l6K+1nAw
N2ku17CLeSEX5VSrcjEtldpMTVnA/25VMV2V5WZ69GI4gBnV0hS7E2HL+XAw
HOhNcSJK3Orx4eHLw2NYq1DyRFzBpgtd7oaDO1PcLAuz3bjl//z9cHCjdvDx
/AS2XKoiV+X0Na6NE9pS5vN/l5nJYUc7ZYeDjT4ZDoQoFqma23KX+c+FKE0a
/63zOZAhfGLhdIVa2OqD3br+vix0Wo1PgWjwfPW9zjOdR6upz+U007acwkQz
k8HAqfmHr/ErIOFabjbECxott+XKFLjvKX5PL53DE68Tcb2SmSrCx0z71/JW
Nb8xxVLm+q/ExBNxodPCWINUct+rtdQZsK2kx/649gMSOAmScjqdCjmDU8qU
SHu9Uj9DqsQBsmuMnwFtTSa0FVsLj5ZGrGUulwooNlcC2AVyYfKFXm4L2quY
y1LCcYVsLzccxOvhEuNEwMFhciDilj61G5XqhVZWlLBjEteyrhooR2ks4+Ju
pQoFdA8rnm42mf/ygrZbwHKnF2NhVXGrU7XnPOEAsJAVeCCFT+B+ZClSmcN3
rGp48ngbMBfuGdaBU3kerPV8nil8Nxw8ESjzhZlvUybHcHD6AFOISLhbWFdF
n+NmhgOVA0XC3mS+41Pc6XIFB6AP44dg87kpxUyJUq43QLM5DZ0A6eDcYQ4i
AFFnthN2m6541uppUPI5CGh9luEARoctmG1pNfzb3EPySyVxE0niXFm9zIl7
YCH8YMF6p/8KXwRm1mVT58Aj5GtCKmHwMBaNFQxeStDREqQhuwMrNkH5RUnT
602mcFc8wwEYEVUULDkS2ALT4LARWeERygvKQJppEmYkAWxYfQapLvmhYov7
oG9oiQntU4rRg8KLs4PXWCmSYvgUJxmDhC1XJbKD/0AeNdeA4/5g7hQ8M6Ht
tTUKZQDM7pJYSWO2YFCLbIcsuD67fHp+CSZTpjcTUFUQOFwlVyB6VhY627VX
dHpt4SwgVVlm7qzfO2x2IVawWXiudIcmhpXEkBu1KZG0FliR4R8bY62eZcAT
nafZdo5bohnxD3xwODhQyTKZ+I3Cmf706fxM3N//4ePbs5eHh4dfvoxZFE0O
i1oFJ1B5Wuw2uPYaT7FUdhJvAAQYt0kKTQS8UiQrxJZvkmP8EuY/n75OKqcp
i3SlSxgEEvXlCxFXgrRutNN3eOYW6GW2tilXazhG5sSSl7z0ptCJwv397+qL
eY2AhUAh0kLP2GiCIqqVvNWwOKxHM5FwWhI0ECQ46AxOF/jI6+zorHNVgl+x
/uhBUJzebrYFcEPx17HZhr+BeKSLwEgyGm4qkgSJIyZkomE/jCvItpN2P8U/
x02SAEE0jLOBP2K7Ia2jOQB91IY7NUpTYF70yKIwa8/EljKXzgDA/nFHMDOg
EYQsScWFaK+Np9EVwOPhU5AkBcoD83jjRzsVBzpRCcquP74YvSrMjSpGY5TU
hp7SymiP4D/YC+xxYzKzBCnIhE1VjuJjxYFco7IaXM6O0VvdrTTQ3DnHbTbH
rYHkZWan5ic47VFCvKeJwYCnKwkq5e2Vh2JMRS8uBX3vaOKcDBuZmSIgAoKm
yXgtdKHuUF3hQGAmSrXYZuL96fUEgJhznDVXuQatJ+IF1ErOg1dOaO7r1day
tWKAu5LkBIkTZ2xe2WuRx619fUXmkYh5nMSneeDcgT6/6akJMDx4ZD5T75GZ
IsF+FAgP0YC3NXUBf1jQjE2h12y7HS3gNLA9L2NoeNlyKYB4Gu1P7TBTslhf
vrAtsWYdrCNI5/09LDE1C4odvnxhfHF/b11cgNZ4LeHo4Ol2HjbBlwZGxevf
qSwD83EK1rFAgIaahrBrri2cgXy+s1PNh3F2IPQK1s08ma3aSMABKpCCqPWf
8GJQ/fW09fpaVC9SrerVNZrn+SmMZi7SR//UHo6vf+bR9ARwlF8/PWo/jVf/
fsLrp55He14PbqNhHh8kSzD1Xn/3kqUa7UT//wpZ6FVR5EGy+NGOKA9LS0yU
X1VaWBfuT8STDlUXlK74/Wh/uuELW6D+iI7jIZHJHcHamgiNJxzKSQcVwffF
AykO8rPNBdmkPkjkQxolZqYsAQO4eRzSaM3zOwSKR0cAFBOO1K5VsdY5ut6d
N6o3aicwc2HF6OLT1fVowv+K9x/o749vAHR+fPMa/7764fTdu/AHjxgO4N2H
T+/cAPyrevTsw8XFm/ev+Wn4VDQ+ujj915GL00YfLq/PP7w/fTcSFOTFtCbU
YNjHgGfbFApZRKacESLb8ldnl+LouTv28dHRS8CQ/Oa7o2+fwxtgg0NUBJj5
LVCTbLaSBc2Cni+VG13KDNwWIvaVucsFcjBpiwEMMoI8j4fAsME17myhc2ID
iN5+QB0HAI8Im4FeXTEVxFIgaA9GW5PIhru/GbY5NnxEvNWz+kfMbDg5qh7E
D658BBEFF5ciPuaDUQUTzIoGmIRdWWA8BUfkK01OwDZ3uB6TGOysq9hccQBK
UGUhUw2xGui0rcOW4YBiQsYpjOUrMLEtCPFCgJth/MxT4cQhXmfFg08ZoVKA
Qhuf0b6F2aiCFkWfDaKxQ2/dhe0hjmRAAoKGoSwAYvVZwUB8JsRPp3kTp2uM
AhTpRboyGL1gloLJD2/4SVgiK1dmu1zxBwA6NBssICMAESQCiDvILyqd2eKR
Ja7DMdulBDgClNeYkFnzuhR6AD4DYYj44QOY6CNcaLdBhI+x6QaoQrgGrSDz
cwOzg6iOdD4KSSafOIhXdOM0s9xsIFTTiHcApqaeFGH+SF78/CAYowRzVB0c
xHEQKVmKwqslO/ZOYW5r7u1mhDB5NAcTMWLMhukEWO4KlJqFsSEq9XWGg3C8
pxic7xOXO8yBAbtAd1FOYGvIONoDWVDehLOelASvAOGTJ+ITR7inLn0qTi/P
bdugUSaIwl5v0HAcHLu8UyrvyR9xrqfCNvWvyawiJXzmdgKRrKQ0GNEHuIli
b3cw/jPNBUxaFnK9xiGZzJdbMGCUho8ie3ByVUTi9wp4OUXvwJt2saxPrA0H
B95IODN1/ub6rUuhSI/FtXQku0L0jzIdWyoIAzgpc/X9jwz37XZDOSdYUaDA
WPTNK07KkavhlIuPhEEMKb5tz0yuCHbhUH5u3HQ4AWsd6wcauzUMzFxOE867
Leh4NIof4uXjnFXlssoS7EtpnUuVy9zYUqco3KyGlPsOZKybcUz+sGl+ypCp
ZlSD3OvcG5wJg57+Zyj1iebImVhWFy9vlTPBSNYLWDNNYic+hKzoR8FbnXUl
W3kWIse2QGNScLecOGBdvQs5B1AtHkk0Zh0IZxxXuknqQ0kjtp0o+5W+c6qn
L3EjbSVEzGaa0uKwXZgZAJebm9g/EjMwOLTBSEqac1O8WeMqx/44E00DRhmn
udWSEhYwwB8Z7Rt+XJO14AZw5HaD4zrAEW2fEFKTLGKUmxFPSevGStLaOymN
rG1/wgjRJzBq6SqwnMjgtbwh1ICpf3eUCZ5lBsiXj4FfH8L70mfUZO7OMiE5
d77QQR5nPsm+ScIpId18/yRODLTpQPiQHowhOc8S5yLfYvUBowlT6luWCZeV
CVUj8HlU05uz3LewMqibVex36vmEat9VmpxiBEomHx++cDHCR8WO1QofBZCR
2EK0AUuyR1wYzFOrOTxwZswNBkHeNmOBheY5M8AMhgH4OQL3fM61AqzUQDjk
MDz4A32rkGsAne4sOh/UZRAad2DYKzho6wBb6ual3a2wxEhZHuMz5yslMUEE
7iGDkEZaD+IYQXig+jw5ekZo4f4+HF8cbK33SSSGayCFRCCgPJx3KaO+8Gx8
Us+9OBpMr2GKE8oLOZv3FB/8Op0ZVxn9cRoPnX7YEHNPgHI214tFfTZfh55e
Gphvd4Kbk9usnNoiFV/lYEq/4gc+clGnCANzM3WFnsJvczj4gKEQnvnyA1B0
rQAvzuuhJFVTTi+QFQARsTAHNDUIWii/jGzCSgIZfpok8IzqLqjbyASdanRk
yq4A59saDkLp2YKKpsC9GdYVD1CIPbNeJs+SZ1yZCMoz5oziGT5CxCsA0jne
x4Ib5PFUfPp4jpNQFl+Gw+BRm9UvMcLjwvgR2U33BuEEYlcyKXjog6sxfk4O
VtGI0jCWtqFCx2Ino6hrOHBGFuiCNmOG0r5W6QoQkV1TxOk0twK9ufpc+kQk
neacFCuKptm3NbwibQZ3eoUhhI8E2MRaQsJcvwPNnJZmqgh4e3yEz3lIguJQ
ojG/ldlWkRawrtDkJCDBqgAoI0ngrxCC+fqJnM817guwnlsbN0mIvXbiWjQZ
KSidPK74Vc4eyI3QktQ8B6dsOeXCBTi7kcxn5J+2dqsSZ4i/fXmMiu82aMX1
uyt8s9BZXBl3YkQOH3hP8Ki+Gntr+L4gGCmtTwsBsmrvbThwNU3FIue5FLRF
0kZcYRKBHpLahbwVr9DSsyXwByDfF8yXt0uJuKqUyYLpe54ck4lt0hcAJNZb
MStd9x0R48KSeCpYsnCSxhgaM98O7aMOAB2IZ39eqdzJg+tQmLhasvMySAEX
nKVqTliN62wug1KZ7WfJc9515EcxVoFQztX6sF4OM6O12VWJdFc6QUrAs6/O
Lo9evvg9TvGMJIBqmtUpkfwNT+uz/ZHYkF1sj0SOSVcWPzfXvtMiypzU0sWv
XFnTRWkfVar0Lec7CvUfW2UpusYqPhWOQWruOtM890/c8GkpCYMAaCIMHPUp
EE6OHZGfF6wmSjoQnRKEykc5HhbFj4AO6AWsM0Zk70B7/D1HyH5iaqnYbuZE
EartYL4DsUCeUpFGiiX4/7zzTJjU8ukCeQvyQFUuXT1EzpnrwQlG+M64o+RN
MLVCCBTwBwqHrKW7fHsNmVccENpu8BFEGdIZ34AtyLuLKXgECF6A1EJjcxb6
yCLkvU7dGHbhiJYm5C/Ar0qCu1E9OQ4FuEToQjUyD+TDOTOoOE1FLiaouo+p
OzjThq8dO0JpAaRHYuHKgVi8WixA17jbY2Wwp4ipO+HtLMQakIaGaclnVzyJ
z8IUrjS/RnjUFhBw0HDHq5j4xDOu2AXaWs7KNhNgUy9FwGS5qwrF4gA2Ceej
dDjZX6BQYTYF9zbNJOEW18/iLXNJkAbMDqIFIc4Xld+jTDGGpy6n6OmCnkSY
2S2mHeCRD/jAnUaxi2gX4pOw7ALgrin84S22H27kDFOUiKLR1gaSwoIHdkxJ
CenbkeiENc55hBBRMUFQl6omQ8RGpzfWZxE0B3/OUdU0IOJlzVKRm0dBiWr6
7VFofR24sw35Fr59C0+BCa781txQkMwmxrNJjD6yKbs+HVGEyeAmSIRTNXKg
GERg9gmTn8gDhBPWpFzF8VrnIFprr+SBMTy5yc0dWgTKzPgkgMywJWyHVgt8
LUsrrFqzbP4ZTYCM43u0dfWeFz49WRbXTHEgxxx856YKgyfiYOY+pqi40nrM
8po8J9U0oIuw8kFaH+qaQ3zJ3z9mFSeZS+OJwN+FxCM9jqqPvl9y7Dxj4bES
Uyie3PTYRLB6TWLMwVa0Sd2JM/QReKmI8ZWtN7EFrYNoHSIeqkd0CmENLwSj
WB3FZTufAOBh/HKGoSY7SMYcU2BfUbKLXAT6IyCuZpl0a4BLxXjp1qWlbA3y
k/0lZc86/evYxR7YXJa4tRva4fSxwXpSe9il42/3zmDRKKuXUnQNrGcKUBMH
0zMneQgNFhjBUMRWNXlWa2J2hxqPajF11UrXiJFBRR5XxHSVJmz9hA0DfDfz
XUKi6QJ+Bj1cqMCsWFDn2tLx8b+y9cP2EBiZgU2eewgt/1Y6k/5xh4aLAbxe
2haFkBfTtV260OaqNg8BbFuiUwjAg/pQc+za9gIn3VrjqkZVszh2pXyit1JY
PDdiSo8xyHoiZi0oyQYs3wIIrhLalEzWZQxsCeC7gycd22tabN/R47hLZgS9
qqbcK3XIg52gMg2W4AmlYCoD/DISIelAx3WfRfFHJ4ikDJTANlA4H7uM3xIe
78O3HVubVNBAL1oIj2YEoEKwAwsADIICormmAh/AU++jyFV4+E3AGdESTQMI
wtw6Ia0gOWdb///haFPopcbY7++Aeg+gnikwg7euRz1mLggeq3ynROs1nKrw
Z6IonzKAYAOjoPXLrw1ch4PfHrl+youHses2d9D1+jTp2cwD0DRFE505bOo1
3ys9HfGtdrLZOAknZ+e2F+bLbs5c+b7trkn/Dm1/K2h7ycrjChU5WVidb5UN
fKuh3C/ec36vypL9pp+Z885MWaJUXD5ktt4/CRClaXxqkLU+qQmGMeJdaHGv
0zE0zrQpMTd1tzER9frMPgAYoUZXN0Ks7hFNh8foNQo1vOzLGyEt1wLNjJgZ
4cY1nUZdqg9E+2sziImDgW0UpZiewSp35n79oX59VF0HYXm9SAcCQ/cq/ftI
apojqexCjotccPic5MTvtsVFD6bqoU23HesUojgyqG8ISU63mjAo6Z4SCFJK
e8P1HW7bnvBlQV06gIifkaw1dsitXtXz2PHg9+LDkv49oeHasy+nhuHCUKUn
I2curiEEu2DJYa8k8TZJjnraqLkkx8kRZ9j3teuN2YTVN9robnDVri5J84FD
lZaJ/QgJqHMmbUdCHqLDOyS/IKDvYyiFRo9gKGGF7jRAjCMRcO1JA8T8700H
PBCWdkeczX7gRsAJuvwDPkc3zlYKQRYipQ2ViwVWJJeKWsTa7YekXKGwx0EF
IHJVaDN3XQI0Yyge86RAVZ41hDk9QRvCHxJiwx1cGbX8Vh4KqwKppGJrA3Ru
MESDIH1O3R71eXwgREaGAt7hAC9jcRB7zUUr7hmj4JQj4wZO9hfYMDrIMQIK
JwkNmFhJ8w0JdFsOpGsGeMzFcBAwuaD+dNydmOTEMfmqLq0SdKeVu6FvqZzq
I0KKKiqud/kE4aIjgq0Stu4Cl6jNtbUfLLFiojqj8KUA/MpYwjNclHrtIpRX
e49EPdyoNWgOnGOgEJ+6nyl6JWyN7KObrr0k0NwWQeVKXJ2KS07j4SAQgOL7
KlTeR5QmRfzNTpifo2O6XQ17WBoCnhlYRHcPcmPQx1PGgiTQkYQEAXbFvTA/
lyQ7atKzvi+MU05V+iHiFG+NY0nr26h8H2OqHiIi3txVBD8aKevaPntioigO
Ej0JfO48OUNLQH4n+V+YFO9F1NSZ0LCgHeC6caB6bR+sPuXaQpTPN1VXvosh
3C/AMvdb6hgRR4+4hYsia/BiKLHarigh1xdY3MDztuIVAYMeBkFoWuqsmqfu
i+p88c23jbFoQbnBbjjAm4mB8C2YF+6ueWDuvdKbogBmrpxvcm6SkpQGb4wq
+tqk6bbwjR6d53Z3+5cKYUiFnDntjM7BlOMo9Kmfoy82YV9k92OCem3Ax5UE
Dpi2/TUCKRZSZ1u6bfIejAvTGCiP5gQVnP2q/6mHPotNbbT/iIHILjwZtbOS
d4vvS8SBkCN2LXAAzoEIW/aJ/BWzIbAUWxjAq4JkF66Jlwc4TOSunoKAhfuq
4z4ac9q5FVZ7NEviMeI+UNf3C7LWy5g+vjSIXe/OcDfR+rszOiLCuOoAMh+u
ortAx8PCYCU7AkRADlRloUarSZjKXazCzQoG3i6NXnWySvH86IX4lLvGZhCN
Cworr6k247lEHdqUjcMsDglmbUtdFR8OQPA3KZT1irFvV6F8FE9cFxYg9wG5
XM2Q0xU7qCfEtXmu16aFOjd4e8C5YvLRrEzECPfrEdF9GN8Y2VjbN6hpLgC0
esnjXG2jN50WYtkGu8UJOZmzEDeueVzXr5EG1Ys6lROIoqK+gU3lh2pJHYaS
NmnF0rVkRBxPe/pX9TXXL61zBOclubbwJOMYaiui32dg1XGBbd22OKVghBaS
Z5FmnrE/Zl9fJeVCWMepua7I7eecDCtD0/7D4c+XeGNvGgizeULRecAqwYya
w9ugEDdK+Tw+1o4Dbew43htYJzWiuaJtTLQD98MhO2bvuEbFONHn+d/O8bkj
NMxVLd5sPNwMOx2dXHLMB7SLLWz44Pjz53HlFXz5mqu84rz0VmNGd6XKrRXH
h8/FwXvjzeG4nbL0R3js7iMB2XuA4YDvUpHQRKcQXYeQNXsNIfdjquIsZOHb
KDTHt0SUhzDPg2jHMeOXoJ3Ti5YLdrNFhKkbchr04vPntkX/70Ir/vcO+gHL
E3FFpblKUMg3MDavQnFE2sRoHlzLp+ITvHm6rdHTrO/4FgtC4n6G5LSvchyF
bY8rG1PU2dFY2dU9CSHz6McRS5nPAtLz7LQ7a2O+nhhl3/xVXng0KrbF6azQ
BxdKlOPQ1da9ZLwpmiLu+Pc3zYR4RJ/ZcdIdP/fBxHr32KS6i4WrnYr3XHv7
vfiRZn+WNLOQC031MSfJlN7h1ITvCAuVNq7iYvM3l/lCw7iZldzx7VJWrgeA
fkTNr0bPtnN9cU3BMWCEWXV78vSpL0EDPHpayvXISUt3JY9O97yHdo+ua3C1
vv6i4bgBevrpUXLUGvKDseWJiPbbGsFQc++9mOjlVe6dypfl6kQctkZ8AgQ4
JXKeiLfGwK4O3db3hIgLzQ0uHfXwkOcjLO76BGi+aqUaUCZ6v0jEhzzQDw1W
j+8MZfsALGMmVImbKg21B2rhyt9U0CH2avWqkSNFuNz8p60qdh99+MJZJCqY
UM+Ae2wca7Iu2/IW/TTRt015q0MFJ2+Rq6052eqs8a5djwF6yy5p9DIIQOJQ
fPiXXtF58BrWHnH7S0Z/hN8e81tDcv5b62k+84l4JYunx8lx6/tH3ffq2M2j
r35Fr/23wFrD/9J1vF4tcsz9RVrknm1p0HcJ0A3vhDYL653a5PQYUE+kSVWo
pz7TjfPKS3DSOEoLVmLdlSGlHb1seQgXqynbElZW3KYC0qpB0p1Vd7rHH479
zwM0nMEe03502GPbAzFqvKRblaiFzPNHmP5JC9Y+Sh//B73Db6fi/d7mEdp0
dNRjJR/jFCJEtZG7zMg5SC6vHP1WKy0DwOmqxNzvN9OjI/4ZHQwnC4CQVAej
ZG8zhIqTvPVp23kACOHURnzDqz37202/jxQfMPPPRRUuPmx8YWt9KKg3Z+jD
Cn/d7ax+3Q0bY9yvvuHAxi/DRdcZw3255iUxBLl8Ja6sfre6IXq2dnXP39f7
Q+PCXnRvrX3lGzu8e+7sNX798+Vjf/uzZ7rQ3Zx6edla3+x46dbyJ/m2usP3
7OV33+yfmH+tmFwWRD0Yx4Fp8tfpzk/fnzaY075/j4FTbuimuSc9Ppf4XzNm
Sf8vbtQuyr5cAAA=

-->

</rfc>

