<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-endorsements-08" category="info" consensus="true" submissionType="IETF" updates="9334" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="RATS Endorsements">RATS Endorsements</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-08"/>
    <author initials="D." surname="Thaler" fullname="Dave Thaler">
      <organization>Armidale Consulting</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>USA</country>
        </postal>
        <email>dave.thaler.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>Thomas.Fossati@linaro.org</email>
      </address>
    </author>
    <date year="2026" month="February" day="25"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 53?>

<t>In the IETF Remote Attestation Procedures (RATS) architecture, a Verifier
accepts Evidence and, using Appraisal Policy typically with additional
input from Endorsements and Reference Values, generates Attestation Results
in formats that are useful for Relying Parties.  This document illustrates the purpose and
role of Endorsements and discusses some considerations in the choice of
message format for Endorsements in the scope of the RATS architecture.</t>
      <t>This document does not aim to define a conceptual message format for Endorsements and Reference Values.
Instead, it extends RFC9334 to provide further details on Reference Values and Endorsements, as these topics were outside the scope of the RATS charter when RFC9334 was developed.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Remote ATtestation ProcedureS Working Group mailing list (rats@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/dthaler/rats-endorsements"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Section 3 in the Remote ATtestation procedures (RATS) Architecture <xref section="3" sectionFormat="of" target="RFC9334"/> gives an overview of the roles
and conceptual messages in the IETF RATS Architecture.
As discussed in that document, a Verifier accepts a well-defined set of RATS conceptual messages: Evidence, Endorsements
and Reference Values, as well as Policy for Appraisal of Evidence.  A Verifier appraises Evidence using Appraisal Policy for Evidence, typically against a set of Reference Values.</t>
      <t>Various formats of conceptual messages exist, including standard and vendor-specific formats.
One of the purposes of a Verifier is depicted
in Figure 9 of <xref target="RFC9334"/>. A Verifier is intended to be able to accept Evidence in a variety of
formats and generate Attestation Results in the formats needed by a Relying Parties it is intended to cater.</t>
    </section>
    <section anchor="statetypes">
      <name>Actual State vs Reference State</name>
      <t>Appraisal policies (Appraisal Policy for Evidence, and Appraisal Policy for
Attestation Results) involve comparing the actual state of an Attester against
desired or undesired states, in order to determine how trustworthy the Attester
is for its purposes.  The state of an Attester represents the Attester's
"shape" as the arrangement of its various execution environments, which are
typically organized hierarchically.
The state of an Attester also encompasses the combination of static and
dynamic composition (e.g., provisioned and deployed software, firmware, and
micro-code), static and dynamic configuration, and the resulting operational state
of its components at a certain point in time. Thus, a Verifier needs to receive
conceptual messages with information about actual state, and information about desired/undesired
states, and an appraisal policy that controls how the two are compared.</t>
      <t>Each Attester in general has at least one Attesting Environment and one Target
Environment (e.g., hardware, firmware, Operating System, etc.).  Typically, each
Attester has multiple Target Environments, each with their own set of claims
(called "claim sets") representing their actual state.  Additionally, the number of
Target Environments and Attesting Environments that are components of an Attester are not limited.</t>
      <t>"Actual state" is a group of claim sets about the actual state of the Attester at a
given point in time. Each claim set holds claims about a specific Target Environment
that is essential to determining trustworthiness.  Generally speaking, each claim
has a name (typically referred to as a label, and occasionally referred to as a key or code-point)
and a singleton value, being a value collected from a Target Environment of a specific Attester at a given point
in time. Some claims may inherently have multiple values, such as a list of
files in a given location on the device, but in the context of this document such
a list is treated as a single unit, representing one Attester at one point in time.</t>
      <t>"Reference state" is a group of claim sets about the desired or undesired state of
an Attester.  Typically, each claim has a name and
a set of potential values, being the values that are allowed/disallowed
when determining the trustworthiness of the Attester.
Generally, there may be varying degrees of gradation beyond just "allowed" or "disallowed."
Reference state can have a set of values per claim per Target Environment.
This is contrasted with actual state, which has a single value per claim per Target Environment.
Actual state applies to one device at one point in time.
Appraisal policy then specifies how to match the actual state values against a set of Reference Values.</t>
      <t>Some examples of such matching include:</t>
      <ul spacing="normal">
        <li>
          <t>An actual value must be in the set of allowed Reference Values.</t>
        </li>
        <li>
          <t>An actual value must not be in the set of disallowed Reference Values.</t>
        </li>
        <li>
          <t>An actual value must be in a range where two Reference Values are the min and max.</t>
        </li>
      </ul>
      <section anchor="conceptual">
        <name>RATS Conceptual Messages</name>
        <t>RATS conceptual messages in <xref target="RFC9334"/> fall into the above categories as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Actual state: Evidence, Endorsements, Attestation Results</t>
          </li>
          <li>
            <t>Reference state: Reference Values</t>
          </li>
          <li>
            <t>Appraisal policy: Appraisal Policy for Evidence, Appraisal Policy for Attestation Results</t>
          </li>
        </ul>
        <t>Hints or suggestions for how to do a comparison might
be supplied by a Reference Value Provider (as part of Reference Values),
an Endorser (in an Endorsement), and/or an Attester (in Evidence),
but the Verifier Owner is authoritative for Appraisal Policy for Evidence,
and the Relying Party Owner is authoritative for Appraisal Policy for
Attestation Results as depicted in <xref section="3" sectionFormat="of" target="RFC9334"/>.</t>
        <t><xref target="input"/> below shows an example of Verifier input for a layered Attester
as discussed in <xref section="3.2" sectionFormat="of" target="RFC9334"/>.</t>
        <figure anchor="input">
          <name>Example Verifier Input</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="576" viewBox="0 0 576 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 104,32 L 104,240" fill="none" stroke="black"/>
                <path d="M 104,272 L 104,320" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,80" fill="none" stroke="black"/>
                <path d="M 136,112 L 136,160" fill="none" stroke="black"/>
                <path d="M 136,192 L 136,240" fill="none" stroke="black"/>
                <path d="M 136,272 L 136,320" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
                <path d="M 240,112 L 240,160" fill="none" stroke="black"/>
                <path d="M 240,192 L 240,240" fill="none" stroke="black"/>
                <path d="M 240,272 L 240,320" fill="none" stroke="black"/>
                <path d="M 304,80 L 304,176" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,80" fill="none" stroke="black"/>
                <path d="M 376,112 L 376,160" fill="none" stroke="black"/>
                <path d="M 376,192 L 376,240" fill="none" stroke="black"/>
                <path d="M 376,272 L 376,320" fill="none" stroke="black"/>
                <path d="M 520,32 L 520,80" fill="none" stroke="black"/>
                <path d="M 520,112 L 520,160" fill="none" stroke="black"/>
                <path d="M 520,192 L 520,240" fill="none" stroke="black"/>
                <path d="M 520,272 L 520,320" fill="none" stroke="black"/>
                <path d="M 552,32 L 552,320" fill="none" stroke="black"/>
                <path d="M 104,32 L 120,32" fill="none" stroke="black"/>
                <path d="M 136,32 L 240,32" fill="none" stroke="black"/>
                <path d="M 376,32 L 520,32" fill="none" stroke="black"/>
                <path d="M 536,32 L 552,32" fill="none" stroke="black"/>
                <path d="M 136,80 L 240,80" fill="none" stroke="black"/>
                <path d="M 376,80 L 520,80" fill="none" stroke="black"/>
                <path d="M 136,112 L 240,112" fill="none" stroke="black"/>
                <path d="M 376,112 L 520,112" fill="none" stroke="black"/>
                <path d="M 136,160 L 240,160" fill="none" stroke="black"/>
                <path d="M 376,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 136,192 L 240,192" fill="none" stroke="black"/>
                <path d="M 264,190 L 352,190" fill="none" stroke="black"/>
                <path d="M 264,194 L 352,194" fill="none" stroke="black"/>
                <path d="M 376,192 L 520,192" fill="none" stroke="black"/>
                <path d="M 104,240 L 120,240" fill="none" stroke="black"/>
                <path d="M 136,240 L 240,240" fill="none" stroke="black"/>
                <path d="M 376,240 L 520,240" fill="none" stroke="black"/>
                <path d="M 104,272 L 120,272" fill="none" stroke="black"/>
                <path d="M 136,272 L 240,272" fill="none" stroke="black"/>
                <path d="M 376,272 L 520,272" fill="none" stroke="black"/>
                <path d="M 104,320 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,320 L 240,320" fill="none" stroke="black"/>
                <path d="M 376,320 L 520,320" fill="none" stroke="black"/>
                <path d="M 536,320 L 552,320" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,192 348,186.4 348,197.6" fill="black" transform="rotate(0,352,192)"/>
                <polygon class="arrowhead" points="312,176 300,170.4 300,181.6" fill="black" transform="rotate(90,304,176)"/>
                <polygon class="arrowhead" points="272,192 260,186.4 260,197.6" fill="black" transform="rotate(180,264,192)"/>
                <g class="text">
                  <text x="304" y="36">Appraisal</text>
                  <text x="164" y="52">Actual</text>
                  <text x="216" y="52">state</text>
                  <text x="300" y="52">Policy</text>
                  <text x="424" y="52">Reference</text>
                  <text x="488" y="52">state</text>
                  <text x="180" y="68">(layer</text>
                  <text x="220" y="68">N)</text>
                  <text x="436" y="68">(layer</text>
                  <text x="476" y="68">N)</text>
                  <text x="568" y="68">R</text>
                  <text x="568" y="84">e</text>
                  <text x="568" y="100">f</text>
                  <text x="568" y="116">e</text>
                  <text x="60" y="132">Evidence</text>
                  <text x="164" y="132">Actual</text>
                  <text x="216" y="132">state</text>
                  <text x="424" y="132">Reference</text>
                  <text x="488" y="132">state</text>
                  <text x="568" y="132">r</text>
                  <text x="180" y="148">(layer</text>
                  <text x="220" y="148">2)</text>
                  <text x="436" y="148">(layer</text>
                  <text x="476" y="148">2)</text>
                  <text x="568" y="148">e</text>
                  <text x="568" y="164">n</text>
                  <text x="568" y="180">c</text>
                  <text x="568" y="196">e</text>
                  <text x="164" y="212">Actual</text>
                  <text x="216" y="212">state</text>
                  <text x="308" y="212">Comparison</text>
                  <text x="424" y="212">Reference</text>
                  <text x="488" y="212">state</text>
                  <text x="180" y="228">(layer</text>
                  <text x="220" y="228">1)</text>
                  <text x="304" y="228">Rules</text>
                  <text x="436" y="228">(layer</text>
                  <text x="476" y="228">1)</text>
                  <text x="568" y="228">V</text>
                  <text x="568" y="244">a</text>
                  <text x="568" y="260">l</text>
                  <text x="568" y="276">u</text>
                  <text x="48" y="292">Endorsement</text>
                  <text x="164" y="292">Actual</text>
                  <text x="216" y="292">state</text>
                  <text x="424" y="292">Reference</text>
                  <text x="488" y="292">state</text>
                  <text x="568" y="292">e</text>
                  <text x="180" y="308">(layer</text>
                  <text x="220" y="308">0)</text>
                  <text x="436" y="308">(layer</text>
                  <text x="476" y="308">0)</text>
                  <text x="568" y="308">s</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
            .-- .------------.   Appraisal    .-----------------. --.
            |   |Actual state|    Policy      | Reference state |   |
            |   |  (layer N) |                |    (layer N)    |   | R
            |   '------------'       |        '-----------------'   | e
            |                        |                              | f
            |   .------------.       |        .-----------------.   | e
   Evidence |   |Actual state|       |        | Reference state |   | r
            |   |  (layer 2) |       |        |    (layer 2)    |   | e
            |   '------------'       |        '-----------------'   | n
            |                        v                              | c
            |   .------------.  <==========>  .-----------------.   | e
            |   |Actual state|   Comparison   | Reference state |   |
            |   |  (layer 1) |     Rules      |    (layer 1)    |   | V
            '-- '------------'                '-----------------'   | a
                                                                    | l
            .-- .------------.                .-----------------.   | u
Endorsement |   |Actual state|                | Reference state |   | e
            |   |  (layer 0) |                |    (layer 0)    |   | s
            '-- '------------'                '-----------------' --'
]]></artwork>
          </artset>
        </figure>
        <t>While the above example only shows one layer within Endorsements as
the typical case, there could be multiple layers (see <xref target="multiple-endorsements"/>), such as
a chip added to a hardware board potentially from a different vendor.</t>
        <t>A Trust Anchor Store is a special case of
state above, where the Reference State would be the set of trust anchors
accepted (or rejected) by the Verifier, and the Actual State would be
a trust anchor used to appraise Evidence or Endorsements.</t>
        <t>In layered attestation using DICE <xref target="TCG-DICE"/> for example, the actual state of each layer
is signed by a key held by the next lower layer.  Thus in the example diagram
above, the layer 2 actual state (e.g., OS state) is signed by a layer 1 key
(e.g., a signing key used by the firmware), the layer 1 actual state (e.g.,
firmware state) is signed by a layer 0 key (e.g., a hardware key stored in ROM),
and the layer 0 actual state (hardware specs and key ID) is signed by a layer 0
key (e.g., a vendor key) which is matched against the Verifier's trust anchor
store, which is part of the layer 0 reference state depicted above.</t>
      </section>
    </section>
    <section anchor="conditionally-endorsed-values">
      <name>Conditionally Endorsed Values</name>
      <t>The example in <xref target="input"/> shows Evidence containing actual state for layers 1 through N,
and an Endorsement containing actual state for layer 0. However,
some claims in Endorsements might be conditional and so are only treated as actual
state if a condition is met.</t>
      <t>A claim is conditional if
it only applies if other actual state matches Reference Values, according to some
matching policy.
For example, an Endorser for a given CPU might provide additional
information about what the CPU supports based on current firmware configuration
state, or an Endorser might provide additional information that if the
serial number is in a given range, then a specific security guarantee is present.</t>
      <t>Thus, actual state is determined by starting with a collection of unconditional claims
and adding any conditional claims whose conditions are met based on the actual
state.  This process is then repeated until no more conditional claims are added.</t>
      <t>Verifier policies around matching actual state against
reference state are normally expressed in Appraisal Policy for Evidence.
Similarly, reference state is normally expressed in the Reference Values
conceptual message.  Such policies allow a Verifier and Relying Parties to make
their decisions about the trustworthiness of an Attester.</t>
      <t>The use of conditionally endorsed values, however, is different in that
a matching policy is not about trustworthiness (and hence not "appraisal" per se)
but rather about whether an Endorser's claim is applicable or not, and thus
usable as input to trustworthiness appraisal or not.</t>
      <t>As such the matching policy for conditionally endorsed values must be
up to the Endorser not the Appraisal Policy Provider.  Thus, an Endorsement
format that supports conditionally endorsed values would probably include
some minimal matching policy (e.g., exact match against a singleton reference
value).  This unfortunately complicates design as a Verifier may need
multiple parsers for matching policies.</t>
    </section>
    <section anchor="endorsing-keys">
      <name>Endorsing Verification Keys</name>
      <t>Attesting Environments have cryptographic keys that allow authenticating the Evidence that they produce.</t>
      <t>Typically,
the bottom-most Attesting Environment in an Attester will sign claims about one or more Target Environments
(see also the DICE example at the end of <xref target="conceptual"/>)
with a private key that the Attesting Environment possesses, and the Verifier will appraise
the resulting Evidence with a public key it possesses, called a verification key below.
While use of public key cryptography is typical for a verification key, cryptography other than public key may also be used.</t>
      <t>Endorsing the linkage between such verification keys and their associated Attesting Environments is crucial to the verification process.</t>
      <t>The Verifier must have access to a verification key for each Attesting Environment. Such a key
could be provisioned directly in the Verifier. However, for scalability the Verifier
typically is provisioned with a trusted root CA certificate (a trust anchor). This means that an
Endorsement from an Endorser includes the Attesting Enviroment's verification key material
in the form of a certificate that chains up to that trust anchor (a certification path).  Such a certificate
might be stored in the Verifier, or might be resolved on demand via some protocol,
or might be passed to the Verifier along with the Evidence to appraise, depending on the protocol or general remote attestation procedure.
Details are out of scope of this document and left to protocol or procedure specifications.</t>
      <t>Specific protocol documents are also responsible for documenting what
particular algorithm or cryptographic protocol is used for the verification
of the Attester. The verification key (i.e., a key with the purpose of signature checking) could be, typically, a symmetric key, a raw public key, or a certified public key.</t>
      <t>Evidence can contain an identifier for the Attester
(e.g., <xref target="RFC9711"/> <tt>ueid</tt>) in a dedicated "identity claim"
that can be used by the Verifier to look up its verification key for the Attester.</t>
      <t>While identity claims are just another
type of claims that may be endorsed, some implementations might treat them
differently. For example, a Verifier might perform a first step to
cryptographically appraise that the Evidence
has been generated by the Attester that has the key material associated
with the identifier in the identity claim(s) before spending effort on
another step to appraise other claims for determining trustworthiness.</t>
      <t>This document treats identity claims as with any other claims but allows
Appraisal Policy for Evidence to have multiple phases if desired.</t>
    </section>
    <section anchor="timeliness">
      <name>Timeliness</name>
      <t>Specific protocol documents are also responsible for documenting how Timeliness
of the Endorsement itself (e.g., using a certificate lifetime) is provided.</t>
      <t><xref section="8.1" sectionFormat="of" target="RFC9334"/> discusses timeliness of claims in Evidence.  When
additional static claims are provided in Endorsements, no additional steps
are needed for timeliness of those claims since they are static rather than
dynamically varying over time.  Once timeliness of Evidence is appraised,
any matching conditionally endorsed values can be applied.</t>
      <t>If Endorsements ever carry dynamic claims in the future (e.g., whether
any vulnerabilities in the version of firmware are currently known), then
the same timeliness considerations as for claims in Evidence would apply,
and would be the responsibility of specific protocol documents. See
<xref section="10" sectionFormat="of" target="RFC9334"/> and <xref section="A" sectionFormat="of" target="RFC9334"/> for further discussion.</t>
    </section>
    <section anchor="multiple-endorsements">
      <name>Multiple Endorsements</name>
      <t><xref target="input"/> shows an example with an Endorsement at layer 0, such as
a hardware manufacturer providing claims about the hardware. However, the
same could be done at other layers in addition.  For example, an OS vendor
might provide additional static claims about the OS software it provides,
and application developers might provide additional static claims about
the applications they release.</t>
      <t><xref target="multiple"/> depicts an example with an Attester consisting of an application,
OS, firmware, and hardware, each from a different vendor that provides
an Endorsement for their own Target Environment, containing additional claims
about that Target Environment.  Thus each Target Environment (application, OS, firmware,
and hardware) has one set of claims ("claim set 1") in the Evidence, and an additional
set of claims ("claim set 2") in the Endorsement from its manufacturer.  A Verifier
that trusts each Endorser would thus use the claim sets from both conceptual
messages when comparing against reference state for a given Target Environment.</t>
      <figure anchor="multiple">
        <name>Multiple Endorsements</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="512" width="504" viewBox="0 0 504 512" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 128,32 L 128,112" fill="none" stroke="black"/>
              <path d="M 128,144 L 128,224" fill="none" stroke="black"/>
              <path d="M 128,256 L 128,336" fill="none" stroke="black"/>
              <path d="M 128,368 L 128,448" fill="none" stroke="black"/>
              <path d="M 232,48 L 232,96" fill="none" stroke="black"/>
              <path d="M 232,160 L 232,208" fill="none" stroke="black"/>
              <path d="M 232,272 L 232,320" fill="none" stroke="black"/>
              <path d="M 232,384 L 232,432" fill="none" stroke="black"/>
              <path d="M 328,48 L 328,96" fill="none" stroke="black"/>
              <path d="M 328,160 L 328,208" fill="none" stroke="black"/>
              <path d="M 328,272 L 328,320" fill="none" stroke="black"/>
              <path d="M 328,384 L 328,432" fill="none" stroke="black"/>
              <path d="M 344,32 L 344,112" fill="none" stroke="black"/>
              <path d="M 344,144 L 344,224" fill="none" stroke="black"/>
              <path d="M 344,256 L 344,336" fill="none" stroke="black"/>
              <path d="M 344,368 L 344,448" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,448" fill="none" stroke="black"/>
              <path d="M 376,48 L 376,96" fill="none" stroke="black"/>
              <path d="M 376,160 L 376,208" fill="none" stroke="black"/>
              <path d="M 376,272 L 376,320" fill="none" stroke="black"/>
              <path d="M 376,384 L 376,432" fill="none" stroke="black"/>
              <path d="M 424,456 L 424,496" fill="none" stroke="black"/>
              <path d="M 472,48 L 472,96" fill="none" stroke="black"/>
              <path d="M 472,160 L 472,208" fill="none" stroke="black"/>
              <path d="M 472,272 L 472,320" fill="none" stroke="black"/>
              <path d="M 472,384 L 472,432" fill="none" stroke="black"/>
              <path d="M 496,32 L 496,448" fill="none" stroke="black"/>
              <path d="M 128,32 L 344,32" fill="none" stroke="black"/>
              <path d="M 360,32 L 496,32" fill="none" stroke="black"/>
              <path d="M 232,48 L 328,48" fill="none" stroke="black"/>
              <path d="M 376,48 L 472,48" fill="none" stroke="black"/>
              <path d="M 80,64 L 112,64" fill="none" stroke="black"/>
              <path d="M 232,96 L 328,96" fill="none" stroke="black"/>
              <path d="M 376,96 L 472,96" fill="none" stroke="black"/>
              <path d="M 128,112 L 344,112" fill="none" stroke="black"/>
              <path d="M 128,144 L 344,144" fill="none" stroke="black"/>
              <path d="M 232,160 L 328,160" fill="none" stroke="black"/>
              <path d="M 376,160 L 472,160" fill="none" stroke="black"/>
              <path d="M 80,176 L 112,176" fill="none" stroke="black"/>
              <path d="M 232,208 L 328,208" fill="none" stroke="black"/>
              <path d="M 376,208 L 472,208" fill="none" stroke="black"/>
              <path d="M 128,224 L 344,224" fill="none" stroke="black"/>
              <path d="M 128,256 L 344,256" fill="none" stroke="black"/>
              <path d="M 232,272 L 328,272" fill="none" stroke="black"/>
              <path d="M 376,272 L 472,272" fill="none" stroke="black"/>
              <path d="M 80,288 L 112,288" fill="none" stroke="black"/>
              <path d="M 232,320 L 328,320" fill="none" stroke="black"/>
              <path d="M 376,320 L 472,320" fill="none" stroke="black"/>
              <path d="M 128,336 L 344,336" fill="none" stroke="black"/>
              <path d="M 128,368 L 344,368" fill="none" stroke="black"/>
              <path d="M 232,384 L 328,384" fill="none" stroke="black"/>
              <path d="M 376,384 L 472,384" fill="none" stroke="black"/>
              <path d="M 80,400 L 112,400" fill="none" stroke="black"/>
              <path d="M 232,432 L 328,432" fill="none" stroke="black"/>
              <path d="M 376,432 L 472,432" fill="none" stroke="black"/>
              <path d="M 128,448 L 344,448" fill="none" stroke="black"/>
              <path d="M 360,448 L 496,448" fill="none" stroke="black"/>
              <path d="M 80,496 L 424,496" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="432,456 420,450.4 420,461.6" fill="black" transform="rotate(270,424,456)"/>
              <polygon class="arrowhead" points="120,400 108,394.4 108,405.6" fill="black" transform="rotate(0,112,400)"/>
              <polygon class="arrowhead" points="120,288 108,282.4 108,293.6" fill="black" transform="rotate(0,112,288)"/>
              <polygon class="arrowhead" points="120,176 108,170.4 108,181.6" fill="black" transform="rotate(0,112,176)"/>
              <polygon class="arrowhead" points="120,64 108,58.4 108,69.6" fill="black" transform="rotate(0,112,64)"/>
              <g class="text">
                <text x="16" y="52">App</text>
                <text x="36" y="68">Endorser</text>
                <text x="176" y="68">Endorsement</text>
                <text x="280" y="68">app</text>
                <text x="424" y="68">app</text>
                <text x="256" y="84">claim</text>
                <text x="296" y="84">set</text>
                <text x="320" y="84">2</text>
                <text x="400" y="84">claim</text>
                <text x="440" y="84">set</text>
                <text x="464" y="84">1</text>
                <text x="488" y="100">E</text>
                <text x="488" y="116">v</text>
                <text x="488" y="132">i</text>
                <text x="488" y="148">d</text>
                <text x="12" y="164">OS</text>
                <text x="488" y="164">e</text>
                <text x="36" y="180">Endorser</text>
                <text x="176" y="180">Endorsement</text>
                <text x="276" y="180">OS</text>
                <text x="420" y="180">OS</text>
                <text x="488" y="180">n</text>
                <text x="256" y="196">claim</text>
                <text x="296" y="196">set</text>
                <text x="320" y="196">2</text>
                <text x="400" y="196">claim</text>
                <text x="440" y="196">set</text>
                <text x="464" y="196">1</text>
                <text x="488" y="196">c</text>
                <text x="488" y="212">e</text>
                <text x="36" y="276">Firmware</text>
                <text x="36" y="292">Endorser</text>
                <text x="176" y="292">Endorsement</text>
                <text x="276" y="292">firmware</text>
                <text x="420" y="292">firmware</text>
                <text x="256" y="308">claim</text>
                <text x="296" y="308">set</text>
                <text x="320" y="308">2</text>
                <text x="400" y="308">claim</text>
                <text x="440" y="308">set</text>
                <text x="464" y="308">1</text>
                <text x="36" y="388">Hardware</text>
                <text x="36" y="404">Endorser</text>
                <text x="176" y="404">Endorsement</text>
                <text x="276" y="404">hardware</text>
                <text x="420" y="404">hardware</text>
                <text x="256" y="420">claim</text>
                <text x="296" y="420">set</text>
                <text x="320" y="420">2</text>
                <text x="400" y="420">claim</text>
                <text x="440" y="420">set</text>
                <text x="464" y="420">1</text>
                <text x="36" y="500">Attester</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
               .--------------------------. .----------------.
App            |            .-----------. | | .-----------.  |
Endorser ----> |Endorsement |    app    | | | |    app    |  |
               |            |claim set 2| | | |claim set 1|  |
               |            '-----------' | | '-----------' E|
               '--------------------------' |               v|
                                            |               i|
               .--------------------------. |               d|
OS             |            .-----------. | | .-----------. e|
Endorser ----> |Endorsement |    OS     | | | |    OS     | n|
               |            |claim set 2| | | |claim set 1| c|
               |            '-----------' | | '-----------' e|
               '--------------------------' |                |
                                            |                |
               .--------------------------. |                |
Firmware       |            .-----------. | | .-----------.  |
Endorser ----> |Endorsement | firmware  | | | | firmware  |  |
               |            |claim set 2| | | |claim set 1|  |
               |            '-----------' | | '-----------'  |
               '--------------------------' |                |
                                            |                |
               .--------------------------. |                |
Hardware       |            .-----------. | | .-----------.  |
Endorser ----> |Endorsement | hardware  | | | | hardware  |  |
               |            |claim set 2| | | |claim set 1|  |
               |            '-----------' | | '-----------'  |
               '--------------------------' '----------------'
                                                    ^
                                                    |
Attester -------------------------------------------'
]]></artwork>
        </artset>
      </figure>
      <t>When Target Environments from different vendors each have their own
Endorser, a Verifier must be able to distinguish
which Endorser is allowed to provide an Endorsement about which
Target Environment.  For example, the OS Endorser might be trusted to
provide additional claims about the OS, but not about the hardware.
Thus, it is not as simple as saying that a Verifier has a trusted
set of Endorsers. The binding between Target Environment and Endorser might
be part of the Appraisal Policy for Evidence, or might be specified
as part of the Evidence itself (e.g., claims from a Target Environment
might include an identifier of what Endorser can provide additional
claims about it), or some combination of the two.
An Endorsement format specification should explain how this concern
is addressed.</t>
    </section>
    <section anchor="endorsement-format-considerations">
      <name>Endorsement Format Considerations</name>
      <t>This section discusses considerations around formats for Endorsements.</t>
      <section anchor="formats-security">
        <name>Security Considerations for Formats</name>
        <t>In many scenarios, a Verifier can also support a variety of different formats,
and while code size may not be a huge concern, simplicity and correctness of code
is essential to security.  "Complexity is the enemy of security" is a popular
security mantra and hence to increase security, any decrease in complexity
helps.  As such, using the same format for both Evidence and Endorsements
can reduce complexity and hence increase security.</t>
      </section>
      <section anchor="scalability">
        <name>Scalability Considerations for Formats</name>
        <t>We currently assume that Reference Value Providers typically
provide the same information to a potentially large number of clients
(Verifiers, or potentially to other entities for later relay to a Verifier),
and are generally on devices that are not constrained nodes, and hence additional
scalability, including code size, is not a significant concern.  We also assume
the same is true of Endorsers.</t>
        <t>The scenario where scalability in terms of code size is strongest, however, is
when a Verifier is embedded into a constrained node.  For example, when a constrained
node is a Relying Party for most purposes, but still needs a way to establish
trust in the Verifier it will use.  In such a case, the Relying Party may have
a constrained Verifier embedded in it that is only capable of appraising Evidence
provided by its desired Verifier.  Thus, the Relying Party uses its embedded Verifier
for purposes of appraising its desired Verifier which it treats as only an Attester,
and once appraised, then uses it for appraisal of all other Attesters.
In this scenario, the embedded Verifier may have code and data size constraints,
and a very simple (by comparison) Appraisal Policy for Evidence and desired state (e.g.,
a required trust anchor that Evidence must be signed with and little else).</t>
        <t>Using the same message format for Evidence, Endorsements, and (later) Attestation Results received
from the later Verifier, can provide code size savings due to having only a single parser
in this limited case.</t>
        <t>Similarly, an embedded constrained Verifier can choose to not support conditionally
endorsed values, in order to avoid the complexity introduced by such.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t><xref section="8.4" sectionFormat="of" target="RFC9334"/> discusses how a Verifier stores one or more trust anchors
in its trust anchor store.  The Verifier's trust in an Endorser is expressed via
storing a trust anchor for the Endorser.  The binding from an Endorsement to
a given Target Environment is done as discussed in <xref target="endorsing-keys"/> of this document.</t>
      <t><xref target="RFC9334"/> (especially Section 3.2 and Section 12) also discusses security considerations
around the remote attestation of layers, and sources of appraisal policies.
<xref target="endorsing-keys"/> of this document covers additional considerations in these areas,
and <xref target="formats-security"/> covers additional considerations around Endorsement formats.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not require any actions by IANA.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-informative-references">
      <name>Informative References</name>
      <reference anchor="RFC9334">
        <front>
          <title>Remote ATtestation procedureS (RATS) Architecture</title>
          <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
          <author fullname="D. Thaler" initials="D." surname="Thaler"/>
          <author fullname="M. Richardson" initials="M." surname="Richardson"/>
          <author fullname="N. Smith" initials="N." surname="Smith"/>
          <author fullname="W. Pan" initials="W." surname="Pan"/>
          <date month="January" year="2023"/>
          <abstract>
            <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9334"/>
        <seriesInfo name="DOI" value="10.17487/RFC9334"/>
      </reference>
      <reference anchor="RFC9711">
        <front>
          <title>The Entity Attestation Token (EAT)</title>
          <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
          <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
          <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
          <author fullname="C. Wallace" initials="C." surname="Wallace"/>
          <date month="April" year="2025"/>
          <abstract>
            <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
            <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9711"/>
        <seriesInfo name="DOI" value="10.17487/RFC9711"/>
      </reference>
      <reference anchor="TCG-DICE" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-v1.2_pub.pdf">
        <front>
          <title>DICE Attestation Architecture</title>
          <author>
            <organization>Trusted Computing Group</organization>
          </author>
          <date year="2025" month="April"/>
        </front>
      </reference>
    </references>
    <?line 403?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors wish to thank the following individuals for feedback and ideas that contributed to this document:
<contact fullname="Thomas Hardjono"/>,
<contact fullname="Laurence Lundblade"/>,
<contact fullname="Kathleen Moriarty"/>,
<contact fullname="Michael Richardson"/>,
<contact fullname="Ned Smith"/>, and
<contact fullname="Carl Wallace"/></t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9U825LbNpbv+AqU/ODWlCRfkuxMujZT6fUlcU0Sp9xO8rYz
EAlJiClSC5BqK23vt++5ACBAUt2eZKq2plOudJPAwcG54dzA5XIpWtNW+lI+
fHP19lq+qMvGOr3XdeseCrVeW328lKNXomyKWu1hWmnVpl0a3W6WVrVuqZNR
y8d/Ed2hVK12l/LLzz77XLhuvTfOmaZuTweY/erF25eiaGqna9fBoNZ2Wtxs
/Yq/NPadqbfyG9t0B+FaVZd/V1VTaz/QHCz95tqnjx9/+fipUFarSzm71kVn
TXuaiXc3sEbdalvrdvkcURWFai+lqTeNOJhLIWXbFJfypB386hrbWr1x8e/T
vv9TqK7dNfZSLGE2PHu+km93qtIWBjIpnquj7p81dqtq85tqYbOX8sruTQlv
5DPYbFe1sC0Yo/fKVEBDmLhqaeIKKfn1Fp+vimaPSABKGlCezeCPoil1+BU2
6H+1ekuL+CFd3Vp49dP1VcD125X8L2Pf7Zrqt4jtt7p+lz4FfC/lS6u6etds
tJXXr97C0yABoxce9R1AWa09lK+daVebOHJV6gT/NzsNuLRWOafln7+Im3n4
H58//fKLh3FHz5XdA6vLNt3LN9ruVX0K+3m7ki8b54C2cTtvd81eueRxTv/v
TK1s0+PNw1d++NcVvV7BHCFQNmC11hw1ysebl89QdC8libeyxc4//POTJ/6h
Vojs22ffLJ+/evYCJwHhvLRI+iHizt6iqOoSZGB/6Noo2TMa5NVwhiDkVQs6
0xLuIDrFzrS6aDur/VBlt0jSXdse3OWjRy3DLQLYLULFzTy6OSxBu1pQxkfd
oWpU6R4h/GUCf5nCXx6frJ7+/dCtV4dyQ2uh9oL4HqypFvLp46dfCLFcLkEu
kJVFK4R4Vct2p0mV5Ru9b1qdof+jbQpdAmwnL1Cr51IlCy6kkj9razYGlEYV
hT60Tr44mlLXhZag8AvZOaTU1eFglXGqkj82lSlOEgyIKVRVneSNaXdSlaXB
9VQFDAQyyI1t9pnNQmiAIAgmwf5ZVZ12C7nVtbZoojKs32jUUgewJEuDg02q
FnDXgJDedBU+h2HVCbH7UdnWaLcCKdgZJ8E6drimNFXVIaEQPBLp0NlD42hj
wjZgDprNGMfSuKIDLXFgkPZaonkEelhCzIECEKRi15gC54u9Bhneao8noZWB
9BNc0RxoPfyDzGvKh5UQOeZlA+vXDezY7MFGylJvTA2IIzrIpQ44cd/KUwRf
gbyAsCpgrGmlfg+yWbqgZLjQwTbIfrnpLGBqYeEWNNZJYkoOixZIVwRpIjoD
hdsGxMPJG5ggm65FCp4hQ7ED5sFCN2DLIiI3AKjUR13B6HLFMg8WvKy0EA/w
SLFN2RXIESHguCGZ+SyQOmjB216eDiMtSNVO3t72QAC3ZbQ1Hz/KLRgi3Kps
jtoejb4J2KMAOYE0GPMksp3VEvd5lbH7ykU5K3msaiP3U62UQSsVELOqliwI
pXS6RUSYhOP1L6MWL3LPYVoLlSPo+H+v3yhNvdKjnnh4oGRXCXY8RCdW44zB
IPGMOPXmQ20VHkywv7ClkciKn5U1TeeiLYBRUzTX740D4pm6qLoSkSCfRdmS
JPVIvtHSHXQBuBcB2Eq8rqNEegNBKyQ8QM3UgDBYeTRJL80WpeZLHHV7m0rL
KqWNQSlABQN2gWatQX3XFaqG52lPMoCp5BE2qdsT2pSwT0Q7GMgp+xikLIyv
tcbF1kDVoW1EdR8gBK4YeAmoUFcFEfK6xXWOLmEBP7p9gAtrdBrdRyF63h6Q
twj94h5+406mhoiJXc0By2NTHdH27g9AFdgF7lIxloQKMaj2NEE5ZCkSpXbG
wvZg8a4Of9AMh4IBz8GUs0GFaXu0qbvmhr3YG/A/dydaKsAVhoQOiOeibNAp
o6fRsPoANoasbwrmoRMzt1MHPfMWEoy/VfWWdBJhIPyjF3L9Hvxnooeuj8Y2
tbetNztT7PAEFL3yeC8L9rgDiaMThV6sxFkUVeUagEykpVOOjrNmvwYfjFaF
8cSQgo7J8gQOHvyO4xtHZ7y80KvtasFHBQYTmhUMVKRqTkjvZtPeKPQuNsbu
+TeEBXBss0S/c75I1pD9GvUGVYvwYJkhQ6u9yy7hNOCXQQyEpx1hV/Oph6ak
0BaOLbD7jUE3ALTE7DVGDJ3LjCsqjENxsLrQYOjFlFkhBye6pbB/tYYjLRNH
RnY8xkvgoyiLIsgijge2qFyVTnwQoNMIx4tj2QQSgGyS78MKQUfiCwXSELkK
W2RDUcmdIiJUWoFVBaL4QUi/F71AEQL49i15syJ95fkLB3M5ZONr5gDAuj7B
wvuF1G2xmqNOBKGER4CaiKghPntk4KEKq6WIOB7PVIa9GiubmzocBkUFDpAT
FwgZJGtGf+NLN5v32uYthLEZU/Ckim4p4oWUrLv9GpACIzuBCpupKXIl/mci
a0PVgrfos1VmDyc9Mml2leAzQwOsJIUHcW+0Fy8tU0YuNSMk2wIdkpFkkzRE
gCA3Fcg1Ey+Iq4wn33jngnYH6IHMIz0Bg8RGEnmjhQSb6dAIfsPyBlYIACvM
FHhO0rKCxJCiQ3nRGyyLJ4vl84cGVGqtK1aHpiiU88waD3yn0dxR1Lqkzc/J
l4FtwcqVbkHnjugvLOCgRYQV/wkTQHLw5OaQRE3snk/7SJ6M3DIht4jkvqbI
gMm7Vyfgww4PzBYQ32EaIsr70TtYrkPbTRs2qJZwxpuK3cSwRNUU3gDzoQ7+
r8Gjc921MerAYPJ9y3KRhgsIXnjY8BxifoU7pgWZPnAcGvCNMpXpjQNvFv/O
5QokuPcFPl2Iz5/CuPNEZcZ2wwNMpAdPjugcHprWy2egLHMbV+UnvaIC0OYG
jG+J9pV+FRRkZGKNxjUX7aHWrUSUdDIhABlZvsYFLblYpd5azU7j1qqSubjW
pwbk81eALWd+/RlSZNbjs5qJAXnBKatZhOKW/bbA8Hra4G9jIV5xBGkcnx6K
Uh0cm2cHFbsRu1Q0WFHuXyA1ZnhyVej5gX6i3LC0npGiq/EpB3zwCqf9MdcA
WdtiN7aCngCfEiiQXur3an+omB+kdwQXGcWRgb4U4k/yqg6r8Pb3yKi1jvE6
r+EZNbHWGQho/0dQeo5/OqC1DwvIT8To2LIbMI7CLYfWexwOErdX79Gpf8Cx
4bPeofk+ODS3D3o3B9z5czEkrn9760NyiIQ3sAcMIBpm0bpBDx0YtG0sMlGh
q4y7dEzfhIXnotHFZNLnT3KgFJejTSP8gUxd3hdyTr6eWl98a+hwtyA92y36
Apj4wdFeTsuGEjEUmziYuDfbXSuAYa4jpYgRWIY0puIQGSsvgFQwd1KI5wu0
j55IMJSYmhJtToflI8AmdT1wXNgqgFh7Qxwd3dc3NUeknBg1LSVYB1H+FNlE
8MLTePL0z8KbCvOk6qNqFrUsCRPlDoT59paSiiCD4CwADxwwgnIyXtVxfB92
c/4RCQTexUnj2RPjOTXIuySLrp4Ol/1f+JFKuePW55H5Z7Vc4r/+B06xZNc8
YvCzkvAvg/IB/6VKgg8CyfyI4eFAc8ZQpLygjcof5vRADkck7+OcNyM4D1OE
H6bT5fBtHPJB6hGcyZ+zL8LrzQjOiMYZnCkaR3xiZmWayimcM1SW9g46P+3p
/CEdkbyPc8b0+X10rj+NzsdzL8K84l46/+dX8eev99A5p8+Qzs96E/l7pPlJ
oPKbDk/zft/9+zjn5wwO0HCayumISSorMRz5e34+yOp+iyEHIyap3InE9J+X
5mTlaWme4Fak4+N7rMbjhM7uX0Bn+EemVdxeygdsreFMAQf83VJVZlt/NSs0
Fo1nXJT7avbCW/lo4l/hpBm4Lr/sTKUTdySeBzWGpXRKoDvK+0Bn2NSDGokT
FAJwEALujNPByS+arirRDYvBHIFx8sJpLBmEx1nN/ePHeQz2IGoBt/OAtTEf
x8aUilw3mJaO0Qxg66PT0myIf63PV8MxdCWpcgluYgFHrbxuGwBAURh50B5t
jKy8Z46kWASXkY7uPJ17E3aWuKgUBMGRiks4XwoErC8aTGr+SgH0HN2a1Kvo
U3RZAjmAh/2nULFwx2TwNYPeSg8qVyuqaoazWyWuA9cWqEZ7exsqvuiaAgTP
+8VkGoVCS4KIKV0HUha8NMwr7HRVhs3VGGCjr255PKV7u5hqDxJWGgWx3l54
YuMrb/vztX0u7fU1/z2Xg+W9KUM0hB+raABuFHEjqnncQh5uni74ZGpBEYbe
uexjWiEuG6UTnzoUM/KR3rz+ft77gWFmvmiciiLJeTQE8ur5uZVFtjLLOk6Z
+wDVOA7bUAB84JeK3kOXyZYgbBf93OBepxjbgWWMzifxkAohEC31CcMgk2UI
OiipHgSAnMfglrKpifKMEbjiBENGJhRTb0SeAGq26bY7+QPTNvfy7wchH6/k
tyCmR9BD4ZJ81NDEUXSC2l70myMGOc4pk61MM0a0nLclZsM1Z55IXNEt2SRO
FXC6IYI1G2FahhjyAwChoUpytg3mrRuFPwusjTWWqndgKnBfIobvHOitxMtU
29NoiZ1+Tqc9+/Env/VQ0s56FIaZ+hvMGqG04DyM4xoLtFsrZD8MKjpLRjmq
VVarED63wkFZROfc8lmhgDOvJKkCJqE59zlqk6UHKQ+w4MxJkqx0vtlKbjsF
Q1pNR4NP8lFbAZU8UtpTNdNXv0gp4bGlhCCni0LK1BeDujrlsE/Ik8SWxCZV
n+R4BBAUOy3iC85TgPD0NO3ttAj5ekphUbHeUSqLdmv1gYWzg7MSqNPIfWP1
1JqU9cPTFmvGwVmINUoF+kb5ES9OGVFCAXFoJDinD8xCg6DfI2F96Hhn3LwS
12ZvKmUxaTiEadwZkPlh7a3OODMDhLpGF6PfGaZdsqYBqvLnBWBKsL3Tggsl
JciPY77EtO1EIjTN1bL968jVSKmPuwiWMmRld94ykbBFl8Y3OoBjMNBpJkkb
cBngcYHb2RFNcNAsFs1mlKp0ek4JD9BFsjNenzX/1evjQ9cbLbJOBdXjgWsA
NfgynROdo+fK+VQCJrwGGPVlO56NFtGx30epuMHuNlS4uINgIeUnuoP0+bVo
RXDL5GMN5S3kk7yHshgcIb6LgA1MtGh3o8GuGyjgGkhwCvlSPl4wY75HIRxs
zh/iYJCL1qdwk1RtLM5EJRC01jxoe4e2sO1qUIzqRFk1ZAx2bGHhYFtzESNK
NqbesWorolcOR73DExWJnONmKCf8wBMFHzMYX2f5mz5hLlSHt0twP6i9YboA
SFn5wp4ObQOe3wE8DfRXQr2BNbBDg9XSAr64EH2C1h8wJyRv2RXU8xVrHxSF
rJu2bfbLfYPO/mTRlrOBMet3Y6qKnKu81IchDxIDreRElVNQAEN9ALgqedPB
q/GHoMZyHDa3JInij3Phz4eDNUe0Y+jChW2dQfjQYI+BCxXvLCdJ2IdgQOSV
/ki2sGS3rpjg2MiSQPWFYXQhE9biOEoVrnyI6K1WAibhJJmfEAKyDzGEtsjH
s0cDe69TkCibRNY1LUhV+ih65Ima+h127K11e6OxAoIGY7iUC5TCcrZzDUR4
rT5blkYHzHaFr9hSGSyF589Sb7t7LUJzw2Wmgs5aik5HJKSwqu8zGCy+4lOI
QigRo+W0K6Q0FvwIMiQZ63vPlZZwQHe1NhW6MemwpNGF3YII2EuF77yVtgEb
+eyK2j54BxCS5NHnfMXmZq9VHXS2zpIrHIAn7pu3fm5SvHEKHCgjku2xqcqQ
ixlbs7i+nCLHXR47tJIymHzV5uHyRTqFeAnn2zyc/Rk8EX38PmrLA/XG9nEA
aBl2V5EPVuo99cYZxd2uQOS2Af9vIdIZ1ClUBgHrvYyqCU5jbur6GH+BURZY
Ey43c4+dXwJxCj0rlls201A/tmyuxHPfg6q4mZTqen0faVoHx71UetP6Tta4
TgQWHWdu58WSYfCk4/gAzfuTqNBAsgP2AaNfgBIbhpDTjB4Nxpum6MDhgwlY
EGt3e2pXyM6LuASee0hRhDXUWTGsP1O72UjQLsxKU+yMf0QehA5nJBGcC4ra
WyHSKrA/Yx5zWkkDJuUbTnvwzC2bsQUVHW8Sw8aBTRA4QLt/hSYuRr2gPD5s
RT3Cpy0LSthmLMN4nyE0T4J7D0H0Pzptyn/MOegBJ55Eu5QzBgS2gQ65Gfeq
4GLezA7TUsj8qmneoWZRY92UWcsr/P6UyFdi/v/KKkkWHw2S7tuSWGl9M0Bw
pRasSAaPUxQR3zfOukRhNq69F9Errk54nSKNaBM7zRGktmRGFIafgA3gjDZD
ZMLFzbQhtRaP5cAd6sdZ46ETGkoj3aI7QZN2vkMxNWbJOSSiqCX89eYmJ9+F
m8OCm4aVjk2A3qCzB5ZAeIqGvfSY82NPYNK1O7qQhm3zRF835qNv4sNQNYOP
YQO5bk7cGc4hhnljzwHoxNkN399CnuZbs9cVofYvMCxYbU4AerOQHlkg3bra
BA+ck6P5QVOZjcYejHk8QTk67uuef1k9yeqeyf2HNi6eyHxSaIaz6Bfwd0WS
2fBdnYn+hEWHeakFBvLZTH1wgsJt7mImLc0waDmlwLBhs+RVg5iGNCcs7GNA
9MxC6yopRmjVwSZ+38MlXxOAbIW+IzvGeKDRAuUmhhZ3R1DeLnH2Cyn9anDF
BN0eGGXtqe97jZQlj6Ejo+2Z6uNYQuHYVai65CmZ/o4BAHQ+VxPTU5Si4pwV
IPmubm5qThrX5Gg7bKxKtj645KJY88Yc9wEi7u7EacuslhClmX05PITOKwG4
j1ongvjkcS6HCP32FtQSbcd7eZW/RfziHRWWWABCSvh90NGM7rcPpgs2aXfB
qK/AW41M6bC3lhOwaaUnJsDBn+o2iq55WC/8JDVpgIa0ChMSX5hSgGqflJ5K
DOWwp4r26VPHeD56vQEpHiZDX1/7bLo4m34cKGlECYsUvnWboiye6Xx+mjMm
xKpwNce68znOiUVI9BI4jtXXauxV1mSVAo/QDlF6fpId8cQiuWW3nJNVCfSF
eH096EBPWpoprDlTc+ODMGxfDPjvvQffpzyOrxdZ7r4cZU49uWGFiR47X2wi
7CYaVS/S/clsfyLd35yOcRSerI9aXvQN1PLJbB4sSH5PQ9Vpqvw8gKcJgGEc
hX5XqgnZrSHRBzt+qzHmYnOCaTgK2anpte8wJdBrUIakXU30ffqYLO6vjIQk
1DD7mhYJprocz7X9TFbpk3L96CX1PY6K6lOwVvDqw+CJ/CAiVfDJX+WHYSsA
SjvD5f/SJ4POiuHqHxI2+umJZNw7PS3rP6Tp+ZMXo+njRoAMQP5zHE2/82c4
3Yym38m44fTyA1iO8wvcxzj9CYzz8BPGxSf1H2Nc8ccYp/8Y48Zic+fP/dP/
KcbB9JfBAZpY4A9rXPSuIuPSJ/+/Gjee/u/FuG+D/zSxwB9mXHTOIuPSJ/9W
jBu9fPi7Otb++3fN+tDf6jqP4xjpvtsrhs93N3xNevDc7zV5aHvPYOjHeeeC
AvfosUVRyRMtvuU+3NAt2avsjNsJbirp08Iu3gpI7ssPgwRfhISZExfNhm67
d74HjQNrHRPcbSMmXOwJB56vCyWl1DTS8M0AfBOYxmAYzXUf+E2duE5B154i
ZfimiEckeIMBU8fJybXh9E6oa0x4rsm3AmzfMJ+26dzTvp/mo8PNkVKovNWn
j9+zzEjIJp27AOZDJZ/wHyQvATQ1h0TsMcSf6CnJuGGwTx9LG/wJiex2rb/Q
Ce7hKLDAem2WocaQFD1i/f5QYV6VL4Ry102hbY3dbIADtxAkxU6G+JIhPsui
e58zcz7s7tM9wyQAt0uEu+XDz0vwHZPwrZ/BGjT6pZ95+8DDWIZmlY/U4Ief
lJEOVB8vPuf3cpHElB/zdevsenyi5x6wT0VQDhcvCIJU/8a3tPx1HIjPu60O
RFuw1Bv84o3kDzhYLFTFTBeAEMPLkAF30N0ZNjZX+j1O5yYVqWu954RH+PgR
d2gemgMWBURs04FNt1bJvqMBQIPcWYyA4+QFZSpL7R8bDmt4RbHT1QHvX/qG
g5D3i2md5HMgFCqln3PJvwWBVLYaa9EJ/AS1EV6e50m57k62J3U9tN1pRko5
1+19mvrcPRnXFymi9Yu7zFqoGqJ030tboYb3V31B/w0XvoOAOVLOdApeY6Mk
C2WOMbvGnXZ8q79SJ14lAPANkehBbOM9WM6MmCK9hIgCiIoFTKd2q7opQzGc
iZyG2j290q9YRIleRLvNHaJoJLhVEKUas7E+q8zU7TN9dCW007nl5pJw0D/f
LpyWYjG213YfVYK1Ck1HC3YTL0ZlfT58uTL/aoYGDpSc/G350lROieFB6EEk
wwQOY13KbyBRuwd2SoTvMvDRB8d2Vfl7/UreMN+wqLiu8CznCuugPIonIjUj
dA4xeuUL86pvBx+sjZYFvQqR7yjCS7aNsMPlauqLLNSB2442IcOc9juImC5f
nyiJEm7P9qVz3+wzxqqjgkSbUD0mXJBY2bdN+pWnFgl9tLGgojzySe6NFaAh
EY6Zcm7Y84hwpiX9hgxeIGQtC1Dog0R8ogVJ5K2N9hCJzrJI341QrWKhjFwI
ZwE1M5yCd3OxPiX39eZ3uxr+WxbppWXfU63AEvxPR8+zSj3xN04PrqRvevY5
y1KCToFzK3Xl9ByU76fcak99zOnMnUkEdkGWaT75URj/LYtSkL/DHdBoxvpu
gNSD6TXbqSOgBNLQhXoXV+2R7+GqMDdbcXMD8Mx/6YAUBWvpfc8jZm0DCyd1
hKrFu6ahj0WRVQtnfVZgEaPWwvQrLurYGO4qSg4w4z8P5ZtbQZXJMTrjquS1
sM/P1cJ2eYMl9Vm4rNMqv0FBmp83qfMk//mYUSN7dtGTjWdsDT0aRR3uXN/L
YIZadpjowQePfNDUwkXSRpzPf1LDJlUdRjclB41yH0ftF5TB74l3of39FBCg
9JYlym8s+jyd85GVfHUt8Cn3R4X3R7nONGoXAVy4PLLwve2dLTJbl3ytaCU+
YTOwPBbWsnhr6lNwjoptytud29uRr/vxfkh+a+NggPsXX139cDXtxI+/F+ct
FDmQqmDwoAUIwn9Hba2Kd/zRJywLVrrcencQAnR2mXT51WwDXNEYcqM08SVf
LKK7nW9Wqt/59iYMhflufWnAoHQwj4tzcATjUvxlnFIr7xTR1wkMHNWhoSjZ
xiUw5tZ/ShITQr82dfPx48cFPv5OdewkfgekWleq1OHN31S7qzDs/B40BE/C
8OJ7OMSUruQb/L8twfSHNz/A4tdgunb4gL4wAQ+fgeWSv4C4qgJhi/8Dw20C
DJ5VAAA=

-->

</rfc>
