<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-fv-rats-ear-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title abbrev="EAR">EAT Attestation Results</title>
    <seriesInfo name="Internet-Draft" value="draft-fv-rats-ear-04"/>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <author initials="E." surname="Voit" fullname="Eric Voit">
      <organization>Cisco</organization>
      <address>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Trofimov" fullname="Sergei Trofimov">
      <organization>Arm Limited</organization>
      <address>
        <email>sergei.trofimov@arm.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <date year="2024" month="November" day="19"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>EAT</keyword>
    <keyword>attestation result</keyword>
    <keyword>attestation verifier</keyword>
    <keyword>AR4SI</keyword>
    <abstract>
      <?line 72?>

<t>This document defines the EAT Attestation Result (EAR) message format.</t>
      <t>EAR is used by a verifier to encode the result of the appraisal over an
attester's evidence.
It embeds an AR4SI's "trustworthiness vector" to present a normalized view of
the evaluation results, thus easing the task of defining and computing
authorization policies by relying parties.
Alongside the trustworthiness vector, EAR provides contextual information bound
to the appraisal process.
This allows a relying party (or an auditor) to reconstruct the frame of
reference in which the trustworthiness vector was originally computed.
EAR supports simple devices with one attester as well as composite devices that
are made of multiple attesters, allowing the state of each attester to be
separately examined.
EAR can also accommodate registered and unregistered extensions.
It can be serialized and protected using either CWT or JWT.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://thomas-fossati.github.io/draft-ear/draft-fv-rats-ear.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-fv-rats-ear/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Remote ATtestation ProcedureS Working Group mailing list (<eref target="mailto:rats@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/rats/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/thomas-fossati/draft-ear"/>.</t>
    </note>
  </front>
  <middle>
    <?line 91?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines the EAT <xref target="I-D.ietf-rats-eat"/> Attestation Result (EAR) message format.</t>
      <t>EAR is used by a verifier to encode the result of the appraisal over an
attester's evidence.
It embeds an AR4SI's "trustworthiness vector" <xref target="I-D.ietf-rats-ar4si"/> to present a
normalized view of the evaluation results, thus easing the task of defining and
computing authorization policies by relying parties.
Alongside the trustworthiness vector, EAR provides contextual information bound
to the appraisal process.
This allows a relying party (or an auditor) to reconstruct the frame of
reference in which the trustworthiness vector was originally computed.
EAR supports simple devices with one attester as well as composite devices that
are made of multiple attesters (see <xref section="3.3" sectionFormat="of" target="RFC9334"/>) allowing the
state of each attester to be separately examined.
EAR can also accommodate registered and unregistered extensions.
It can be serialized and protected using either CWT <xref target="RFC8392"/> or JWT <xref target="RFC7519"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
      <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="sec-ear">
      <name>EAT Attestation Result</name>
      <t>EAR is an EAT token which can be serialized as JWT <xref target="RFC7519"/> or CWT <xref target="RFC8392"/>.</t>
      <t>The EAR claims-set is as follows:</t>
      <figure anchor="fig-cddl-ear">
        <name>EAR (CDDL Definition)</name>
        <sourcecode type="cddl"><![CDATA[
EAR = {
  eat.profile => "tag:github.com,2023:veraison/ear"
  iat => int
  ear.verifier-id => ar4si.verifier-id
  ? ear.raw-evidence => ear-bytes
  eat.submods => { + text => EAR-appraisal }
  ? eat.nonce => eat.nonce-type
  * $$ear-extension
}
]]></sourcecode>
      </figure>
      <t>Where:</t>
      <dl>
        <dt><tt>eat.profile</tt> (mandatory)</dt>
        <dd>
          <t>The EAT profile (<xref section="6" sectionFormat="of" target="I-D.ietf-rats-eat"/>) associated with the EAR claims-set
and encodings defined by this document.
It <bcp14>MUST</bcp14> be the following tag URI (<xref target="RFC4151"/>)
<tt>tag:github.com,2023:veraison/ear</tt>.</t>
        </dd>
        <dt><tt>iat</tt> (mandatory)</dt>
        <dd>
          <t>"Issued At" claim -- the time at which the EAR is issued.
See <xref section="4.1.6" sectionFormat="of" target="RFC7519"/> and <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-rats-eat"/> for the
EAT-specific encoding restrictions (i.e., disallowing the floating point
representation).</t>
        </dd>
        <dt><tt>ear.verifier-id</tt> (mandatory)</dt>
        <dd>
          <t>Identifying information about the appraising verifier.
See <xref target="sec-verifier-id"/> for further details on its structure and serialization.</t>
        </dd>
        <dt><tt>ear.raw-evidence</tt> (optional)</dt>
        <dd>
          <t>The unabridged evidence submitted for appraisal, including any signed
container/envelope.
This field may be consumed by other Verifiers in multi-stage verification
scenarios or by auditors.
There are privacy considerations associated with this claim.  See
<xref target="sec-priv-cons"/>.</t>
        </dd>
        <dt><tt>eat.submods</tt> (mandatory)</dt>
        <dd>
          <t>A submodule map (<xref section="4.2.18" sectionFormat="of" target="I-D.ietf-rats-eat"/>) holding one <tt>EAR-appraisal</tt> for
each separately appraised attester.
The map <bcp14>MUST</bcp14> contain at least one entry.
For each appraised attester the verifier chooses a unique label.
For example, when evidence is in EAT format, the label could be constructed
from the associated EAT profile.
A verifier <bcp14>SHOULD</bcp14> publicly and permanently document its labelling scheme for
each supported evidence type, unless EAR payloads are produced and consumed
entirely within a private deployment.
See <xref target="sec-ear-appraisal"/> for the details about the contents of an
<tt>EAR-appraisal</tt>.</t>
        </dd>
        <dt><tt>eat.nonce</tt> (optional)</dt>
        <dd>
          <t>A user supplied nonce that is echoed by the verifier to provide freshness.
The nonce is a sequence of bytes between 8 and 64 bytes long. When serialized
as JWT, the nonce <bcp14>MUST</bcp14> be base64 encoded, resulting in a string between 12 and
88 bytes long.
See <xref section="4.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
        </dd>
        <dt><tt>$$ear-extension</tt> (optional)</dt>
        <dd>
          <t>Any registered or unregistered extension.
An EAR extension <bcp14>MUST</bcp14> be a map.
See <xref target="sec-extensions"/> for further details.</t>
        </dd>
      </dl>
      <section anchor="sec-verifier-id">
        <name>Verifier Software Identification</name>
        <t><xref section="2.2.2" sectionFormat="of" target="I-D.ietf-rats-ar4si"/> defines an information model for identifying the
software that runs the verifier.  The <tt>ar4si.verifier-id</tt> claim provides its
serialization as follows:</t>
        <figure anchor="fig-cddl-verifier-id">
          <name>Verifier Software Identification Claim (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
ar4si.verifier-id = {
  build => text
  developer => text
}
]]></sourcecode>
        </figure>
        <t>Where:</t>
        <dl>
          <dt><tt>build</tt> (mandatory)</dt>
          <dd>
            <t>A text string that uniquely identifies the software build running the verifier.</t>
          </dd>
          <dt><tt>developer</tt> (mandatory)</dt>
          <dd>
            <t>A text string that uniquely identifies the organizational unit responsible
for this <tt>build</tt>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="sec-ear-appraisal">
        <name>EAR Appraisal Claims</name>
        <figure anchor="fig-cddl-ear-appraisal">
          <name>EAR Appraisal Claims (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
EAR-appraisal = {
  ear.status => $ar4si.trust-tier
  ? ear.trustworthiness-vector => ar4si.trustworthiness-vector
  ? ear.appraisal-policy-id => text
  * $$ear-appraisal-extension
}
]]></sourcecode>
        </figure>
        <dl newline="true">
          <dt><tt>ear.status</tt> (mandatory)</dt>
          <dd>
            <t>The overall appraisal status for this attester represented as one of the four
trustworthiness tiers (<xref target="sec-trusttiers"/>).
The value of this claim <bcp14>MUST</bcp14> be set to a tier of no higher trust than the tier
corresponding to the worst trustworthiness claim across the entire
trustworthiness vector.</t>
          </dd>
          <dt><tt>ear.trustworthiness-vector</tt> (optional)</dt>
          <dd>
            <t>The AR4SI trustworthiness vector providing the breakdown of the appraisal for
this attester.
See <xref target="sec-tvector"/> for the details.
This claim <bcp14>MUST</bcp14> be present unless the party requesting Evidence appraisal
explicitly asks for it to be dropped, e.g., via an API parameter or similar
arrangement.  Such consumer would therefore rely entirely on the semantics of
the <tt>ear.status</tt> claim.  This behaviour is <bcp14>NOT RECOMMENDED</bcp14> because of the
resulting loss of quality of the appraisal result.</t>
          </dd>
          <dt><tt>ear.appraisal-policy-id</tt> (optional)</dt>
          <dd>
            <t>An unique identifier of the appraisal policy used to evaluate the attestation
result.</t>
          </dd>
          <dt><tt>$$ear-appraisal-extension</tt> (optional)</dt>
          <dd>
            <t>Any registered or unregistered extension.
An EAR appraisal extension <bcp14>MUST</bcp14> be a map.
See <xref target="sec-extensions"/> for further details.</t>
          </dd>
        </dl>
        <section anchor="sec-tvector">
          <name>Trustworthiness Vector</name>
          <t>The <tt>ar4si-trustworthiness-vector</tt> claim is an embodiment of the AR4SI
trustworthiness vector (<xref section="2.3.5" sectionFormat="of" target="I-D.ietf-rats-ar4si"/>) and it is defined as
follows:</t>
          <figure anchor="fig-cddl-tvec">
            <name>Trustworthiness Vector (CDDL Definition)</name>
            <sourcecode type="cddl"><![CDATA[
ar4si.trustworthiness-vector = non-empty<{
  ? instance-identity => $ar4si.trustworthiness-claim
  ? configuration => $ar4si.trustworthiness-claim
  ? executables => $ar4si.trustworthiness-claim
  ? file-system => $ar4si.trustworthiness-claim
  ? hardware => $ar4si.trustworthiness-claim
  ? runtime-opaque => $ar4si.trustworthiness-claim
  ? storage-opaque => $ar4si.trustworthiness-claim
  ? sourced-data => $ar4si.trustworthiness-claim
}>

$ar4si.trustworthiness-claim = -128..127
]]></sourcecode>
          </figure>
          <t>It contains an entry for each one of the eight AR4SI appraisals that have been
conducted on the submitted evidence (<xref section="2.3.4" sectionFormat="of" target="I-D.ietf-rats-ar4si"/>).
The value of each entry is chosen in the -128..127 range according to the rules
described in Sections <xref target="I-D.ietf-rats-ar4si" section="2.3.3" sectionFormat="bare"/> and <xref target="I-D.ietf-rats-ar4si" section="2.3.4" sectionFormat="bare"/> of <xref target="I-D.ietf-rats-ar4si"/>.
All categories are optional.
A missing entry means that the verifier makes no claim about this specific
appraisal facet because the category is not applicable to the submitted
evidence.
As required by the <tt>non-empty</tt> macro, at least one entry <bcp14>MUST</bcp14> be present in the
vector.</t>
        </section>
        <section anchor="sec-trusttiers">
          <name>Trust Tiers</name>
          <t>The trust tier type represents one of the equivalency classes in which the
<tt>$ar4si-trustworthiness-claim</tt> space is partitioned.
See <xref section="2.3.2" sectionFormat="of" target="I-D.ietf-rats-ar4si"/> for the details.
The allowed values for the type are as follows:</t>
          <figure anchor="fig-cddl-ttiers">
            <name>Trustworthiness Tiers (CDDL Definition)</name>
            <sourcecode type="cddl"><![CDATA[
$ar4si.trust-tier /= ar4si.trust-tier-none
$ar4si.trust-tier /= ar4si.trust-tier-affirming
$ar4si.trust-tier /= ar4si.trust-tier-warning
$ar4si.trust-tier /= ar4si.trust-tier-contraindicated
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="json-serialisation">
        <name>JSON Serialisation</name>
        <t>To serialize the EAR claims-set in JSON format, the following substitutions are
applied to the encoding-agnostic CDDL definitions in <xref target="sec-ear"/>,
<xref target="sec-tvector"/> and <xref target="sec-trusttiers"/>:</t>
        <sourcecode type="cddl"><![CDATA[
; $ar4si.trust-tier choice
ar4si.trust-tier-none = "none"
ar4si.trust-tier-affirming = "affirming"
ar4si.trust-tier-warning = "warning"
ar4si.trust-tier-contraindicated = "contraindicated"

; EAR JWT claims
ear.status = "ear.status"
ear.trustworthiness-vector = "ear.trustworthiness-vector"
ear.raw-evidence = "ear.raw-evidence"
ear.appraisal-policy-id = "ear.appraisal-policy-id"
ear.verifier-id = "ear.verifier-id"
; EAT JWT claims
eat.profile = "eat_profile"
eat.nonce = "eat_nonce"
eat.submods = "submods"
; JWT claims
iat = "iat"

; ar4si.trustworthiness-vector
instance-identity = "instance-identity"
configuration = "configuration"
executables = "executables"
file-system = "file-system"
hardware = "hardware"
runtime-opaque = "runtime-opaque"
storage-opaque = "storage-opaque"
sourced-data = "sourced-data"

; JSON types mapping
ear-bytes = text .regexp "[A-Za-z0-9_=-]+"
ear-label = text

; ar4si.verifier-id labels
developer = "developer"
build = "build"

; EAT
eat.nonce-type = base64-url-text .size (12..88)
]]></sourcecode>
        <section anchor="examples">
          <name>Examples</name>
          <t>The example in <xref target="fig-ex-json-1"/> shows an EAR claims-set corresponding to a
"contraindicated" appraisal, meaning the verifier has found some problems with
the attester's state reported in the submitted evidence.
Specifically, the identified issue is related to unauthorized code or
configuration loaded in runtime memory (i.e., value 96 in the executables
category).
The appraisal is for a device with one attester labelled "PSA".  Note that in
case there is only one attester, the labelling can be freely chosen because
there is no ambiguity.</t>
          <figure anchor="fig-ex-json-1">
            <name>JSON claims-set: contraindicated appraisal</name>
            <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PSA": {
      "ear.status": "contraindicated",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d"
    }
  }
}
]]></sourcecode>
          </figure>
          <t>The breakdown of the trustworthiness vector is as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Instance Identity (affirming): recognized and not compromised</t>
            </li>
            <li>
              <t>Configuration (warning): known vulnerabilities</t>
            </li>
            <li>
              <t>Executables (contraindicated): contraindicated run-time</t>
            </li>
            <li>
              <t>File System (none): no claim being made</t>
            </li>
            <li>
              <t>Hardware (affirming): genuine</t>
            </li>
            <li>
              <t>Runtime Opaque (none): no claim being made</t>
            </li>
            <li>
              <t>Storage Opaque (none): no claim being made</t>
            </li>
            <li>
              <t>Sourced Data (none): no claim being made</t>
            </li>
          </ul>
          <t>The example in <xref target="fig-ex-json-2"/> contains the appraisal for a composite device
with two attesters named "CCA Platform" and "CCA Realm" respectively.
Both attesters have either "affirming" or (implicit) "none" values in their
associated trustworthiness vectors.
Note that the "none" values can refer to either an AR4SI category that is
unapplicable for the specific attester (ideally, the applicability should be
specified by the evidence format itself), or to the genuine lack of information
at the attester site regarding the specific category.  For example, the
reference values for the "CCA Realm" executables (i.e., the confidential
computing workload) may not be known to the CCA platform verifier.
In such cases, it is up to the downstream entity (typically, the relying party)
to complete the partial appraisal.</t>
          <figure anchor="fig-ex-json-2">
            <name>JSON claims-set: simple affirming appraisal</name>
            <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529300,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQKNzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "CCA Platform": {
      "ear.status": "affirming",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 2,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d"
    },
    "CCA Realm": {
      "ear.status": "affirming",
      "ear.trustworthiness-vector": {
        "instance-identity": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d"
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="cbor-serialisation">
        <name>CBOR Serialisation</name>
        <sourcecode type="cddl"><![CDATA[
; $ar4si.trust-tier code-points
ar4si.trust-tier-none = 0
ar4si.trust-tier-affirming = 2
ar4si.trust-tier-warning = 32
ar4si.trust-tier-contraindicated = 96

; EAR CWT claims
ear.status = 1000
ear.trustworthiness-vector = 1001
ear.raw-evidence = 1002
ear.appraisal-policy-id = 1003
ear.verifier-id = 1004
; EAT CWT claims
eat.profile = 265
eat.nonce = 10
eat.submods= 266
; CWT claims
iat = 6

; ar4si.trustworthiness-vector keys
instance-identity = 0
configuration = 1
executables = 2
file-system = 3
hardware = 4
runtime-opaque = 5
storage-opaque = 6
sourced-data = 7

; CBOR type mappings
ear-bytes = bytes
ear-label = int / text

; ar4si.verifier-id keys
developer = 0
build = 1

; EAT
eat.nonce-type = bytes .size (8..64)
]]></sourcecode>
        <section anchor="examples-1">
          <name>Examples</name>
          <t>The example in <xref target="fig-ex-cbor-1"/> is semantically equivalent to that in
<xref target="fig-ex-json-1"/>.  It shows the same "contraindicated" appraisal using the
more compact CBOR serialization of the EAR claims-set.</t>
          <figure anchor="fig-ex-cbor-1">
            <name>CBOR claims-set: contraindicated appraisal</name>
            <sourcecode type="cbor-diag"><![CDATA[
{
  265: "tag:github.com,2023:veraison/ear",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: h'6C696665626F61746D616E',
  266: {
    "PSA": {
      1000: 96,
      1001: {
        0: 2,
        2: 96,
        4: 2
      },
      1003: "https://veraison.example/policy/1/60a0068d"
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="sec-extensions">
      <name>EAR Extensions</name>
      <t>EAR provides core semantics for describing the result of appraising attestation
evidence.
However, a given application may offer extra functionality to its relying
parties, or tailor the attestation result to the needs of the application (e.g.,
TEEP <xref target="I-D.ietf-teep-protocol"/>).
To accommodate such cases, both <tt>EAR</tt> and <tt>EAR-appraisal</tt> claims-sets can be
extended by plugging new claims into the <tt>$$ear-extension</tt> (or
<tt>$$ear-appraisal-extension</tt>, respectively) CDDL socket.</t>
      <t>The rules that govern extensibility of EAR are those defined in <xref target="RFC8392"/> and
<xref target="RFC7519"/> for CWTs and JWTs respectively.</t>
      <t>An extension <bcp14>MUST NOT</bcp14> change the semantics of the <tt>EAR</tt> and <tt>EAR-appraisal</tt>
claims-sets.</t>
      <t>A receiver <bcp14>MUST</bcp14> ignore any unknown claim.</t>
      <section anchor="unregistered-claims">
        <name>Unregistered claims</name>
        <t>An application-specific extension will normally mint its claim from the "private
space" - using integer values less than -65536 for CWT, and Public or
Private Claim Names as defined in Sections <xref target="RFC7519" section="4.2" sectionFormat="bare"/> and <xref target="RFC7519" section="4.3" sectionFormat="bare"/> of <xref target="RFC7519"/> when
serializing to JWT.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that JWT EARs use Collision-Resistant Public Claim Names
(<xref section="2" sectionFormat="of" target="RFC7519"/>) rather than Private Claim Names.</t>
      </section>
      <section anchor="sec-registered-claims">
        <name>Registered claims</name>
        <t>If an extension will be used across multiple applications, or is intended to be
used across multiple environments, the associated extension claims
<bcp14>SHOULD</bcp14> be registered in one, or both, the CWT and JWT claim registries.</t>
        <t>In general, if the registration policy requires an accompanying specification
document (as it is the case for "specification required" and "standards
action"), such document <bcp14>SHOULD</bcp14> explicitly say that the extension is expected to
be used in EAR claims-sets identified by this profile.</t>
        <t>An up-to-date view of the registered claims can be obtained via the
<xref target="IANA.cwt"/> and <xref target="IANA.jwt"/> registries.</t>
      </section>
      <section anchor="choosing-between-registered-and-unregistered-claims">
        <name>Choosing between registered and unregistered claims</name>
        <t>If an extension supports functionality of a specific application (e.g.
Project Veraison Services), its claims <bcp14>MAY</bcp14> be registered.</t>
        <t>If an extension supports a protocol that may be applicable across multiple
applications or environments (e.g., TEEP), its claims <bcp14>SHOULD</bcp14> be registered.</t>
        <t>Since, in general, there is no guarantee that an application will be confined
within an environment, it is <bcp14>RECOMMENDED</bcp14> that extension claims that have
meaning outside the application's context are always registered.</t>
        <t>It is also possible that claims that start out as application-specific acquire
a more stable meaning over time. In such cases, it is <bcp14>RECOMMENDED</bcp14> that new
equivalent claims are created in the "public space" and are registered as
described in <xref target="sec-registered-claims"/>. The original "private space" claims
<bcp14>SHOULD</bcp14> then be deprecated by the application.</t>
      </section>
      <section anchor="sec-extensions-teep">
        <name>TEEP Extension</name>
        <t>The TEEP protocol <xref target="I-D.ietf-teep-protocol"/> specifies the required claims that an attestation
result must carry for a TAM (Trusted Application Manager) to make decisions on
how to remediate a TEE (Trusted Execution Environment) that is out of
compliance, or update a TEE that is requesting an authorized change.</t>
        <t>The list is provided in <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-teep-protocol"/>.</t>
        <t>EAR defines a TEEP application extension for the purpose of conveying such claims.</t>
        <figure anchor="fig-cddl-teep">
          <name>TEEP Extension (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
$$ear-appraisal-extension //= (
  ear.teep-claims => ear-teep-claims
)

ear-teep-claims = non-empty<{
  ? eat.nonce => eat.nonce-type
  ? eat.ueid => eat.ueid-type
  ? eat.oemid => eat.oemid-type
  ? eat.hardware-model => eat.hardware-model-type
  ? eat.hardware-version => eat.hardware-version-type
  ? eat.manifests => eat.manifests-type
}>
]]></sourcecode>
        </figure>
        <section anchor="json-serialization">
          <name>JSON Serialization</name>
          <sourcecode type="cddl"><![CDATA[
ear.teep-claims = "ear.teep-claims"

eat.ueid = "ueid"
eat.oemid = "oemid"
eat.hardware-model = "hwmodel"
eat.hardware-version = "hwversion"
eat.manifests = "manifests"

; cddl(1)-unsupported: .size (12..44)
eat.ueid-type = base64-url-text

eat.oemid-type = oemid-pen / oemid-ieee / oemid-random

; cddl(1)-unsupported: .size (4..44)
eat.hardware-model-type = base64-url-text

eat.hardware-version-type = [
  version:  tstr,
  ? scheme:  $version-scheme
]

eat.manifests-type = [ + manifest-format ]

manifest-format = [
  content-type:   coap-content-format,
  content-format: base64-url-text / text
]

coap-content-format = uint .le 65535

oemid-pen = int
; cddl(1)-unsupported: .size 4
oemid-ieee = base64-url-text
; cddl(1)-unsupported: .size 24
oemid-random = base64-url-text
]]></sourcecode>
          <t>Example:</t>
          <sourcecode type="cddl"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PSA": {
      "ear.status": "contraindicated",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d",
      "ear.teep-claims": {
        "eat_nonce": "80FH7byS7VjfARIq0_KLqu6B9j-F79QtV6p",
        "ueid": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh",
        "oemid": "Av8B",
        "hwmodel": "fJYq",
        "hwversion": ["1.2.5", 16384]
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="cbor-serialization">
          <name>CBOR Serialization</name>
          <sourcecode type="cddl"><![CDATA[
ear.teep-claims = 65000

eat.ueid = 256
eat.oemid = 258
eat.hardware-model = 259
eat.hardware-version = 260
eat.manifests = 273 ; XXX provisional

eat.ueid-type = bytes .size (7..33)
eat.oemid-type = oemid-pen / oemid-ieee / oemid-random
eat.hardware-model-type = bytes .size (1..32)

eat.hardware-version-type = [
  version: text
  ? scheme: $version-scheme
]

eat.manifests-type = [ + manifest-format ]

manifest-format = [
  content-type: coap-content-format
  content-format: bytes .cbor untagged-coswid
]

coap-content-format = uint .le 65535
untagged-coswid = bytes ; XXX should import coswid

oemid-pen = int
oemid-ieee = bytes .size 3
oemid-random = bytes .size 16
]]></sourcecode>
          <t>Example:</t>
          <sourcecode type="cddl"><![CDATA[
{
  265: "tag:github.com,2023:veraison/ear",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: h'6C696665626F61746D616E',
  266: {
    "PSA": {
      1000: 0,
      1001: {
        0: 2,
        1: 2,
        2: 2,
        4: 2
      },
      1003: "https://veraison.example/policy/1/60a0068d",
      65000: {
        10: h'948f8860d13a463e',
        256: h'0198f50a4ff6c05861c8860d13a638ea',
        258: 64242,
        259: h'ee80f5a66c1fb9742999a8fdab930893',
        260: ["1.2.5", 16384]
      }
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-extensions-veraison">
        <name>Project Veraison Extensions</name>
        <t>The Project Veraison verifier defines three private, application-specific
extensions:</t>
        <dl newline="true">
          <dt><tt>ear.veraison.annotated-evidence</tt></dt>
          <dd>
            <t>JSON representation of the evidence claims-set, including any annotations
provided by the Project Veraison verifier.
There are privacy considerations associated with this claim.  See
<xref target="sec-priv-cons"/>.</t>
          </dd>
          <dt><tt>ear.veraison.policy-claims</tt></dt>
          <dd>
            <t>any extra claims added by the policy engine in the Project Veraison verifier.</t>
          </dd>
          <dt><tt>ear.veraison.key-attestation</tt></dt>
          <dd>
            <t>contains the public key part of a successfully verified attested key.
The key is a DER encoded ASN.1 SubjectPublicKeyInfo structure (<xref section="4.1.2.7" sectionFormat="of" target="RFC5280"/>).</t>
          </dd>
        </dl>
        <figure anchor="fig-cddl-veraison">
          <name>Project Veraison Extensions (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
$$ear-appraisal-extension //= (
  ear.veraison.annotated-evidence => ear-veraison-annotated-evidence
)

ear-veraison-annotated-evidence = {
  + ear-label => any
}

$$ear-appraisal-extension //= (
  ear.veraison.policy-claims => ear-veraison-policy-claims
)

ear-veraison-policy-claims = {
  + ear-label => any
}

$$ear-appraisal-extension //= (
  ear.veraison.key-attestation => ear-veraison-key-attestation
)

ear-veraison-key-attestation = {
   ear.veraison.attested-key-public => ear-bytes
}
]]></sourcecode>
        </figure>
        <section anchor="json-serialization-1">
          <name>JSON Serialization</name>
          <sourcecode type="cddl"><![CDATA[
ear.veraison.annotated-evidence = "ear.veraison.annotated-evidence"
ear.veraison.policy-claims = "ear.veraison.policy-claims"
ear.veraison.key-attestation = "ear.veraison.key-attestation"

ear.veraison.attested-key-public = "akpub"
]]></sourcecode>
          <t>Example:</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PSA_IOT": {
      "ear.status": "contraindicated",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d",
      "ear.veraison.annotated-evidence": {
        "eat-profile": "http://arm.com/psa/2.0.0",
        "psa-client-id": 1,
        "psa-security-lifecycle": 12288,
        "psa-implementation-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-software-components": [
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          },
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          }
        ],
        "psa-nonce":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-instance-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh",
        "psa-certification-reference": "1234567890123-12345"
      },
      "ear.veraison.policy-claims": {
        "psa-certified": {
          "certificate-number": "1234567890123-12345",
          "date-of-issue": "23/06/2022",
          "test-lab": "Riscure",
          "certification-holder": "ACME Inc.",
          "certified-product": "RoadRunner",
          "hardware-version": "Gizmo v1.0.2",
          "software-version": "TrustedFirmware-M v1.0.6",
          "certification-type": "PSA Certified Level 1 v2.1",
          "developer-type": "PSA Certified – Device"
        }
      }
    }
  }
}
]]></sourcecode>
          <t>Key attestation example:</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PARSEC_TPM": {
      "ear.status": "affirming",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 2,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d",
      "ear.veraison.key-attestation": {
        "akpub":
          "MFkwEwYHKoZIzj0CAQYIKoZIz___"
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="cbor-serialization-1">
          <name>CBOR Serialization</name>
          <sourcecode type="cddl"><![CDATA[
ear.veraison.annotated-evidence = -70000
ear.veraison.policy-claims = -70001
ear.veraison.key-attestation = -70002

ear.veraison.attested-key-public = 0
]]></sourcecode>
          <t>Example:</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
  265: "tag:github.com,2023:veraison/ear",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: h'6C696665626F61746D616E',
  266: {
    "PSA_IOT": {
      1000: 0,
      1001: {
        0: 2,
        1: 2,
        2: 2,
        4: 2
      },
      1003: "https://veraison.example/policy/1/60a0068d",
      -70000: {
        "eat-profile": "http://arm.com/psa/2.0.0",
        "psa-client-id": 1,
        "psa-security-lifecycle": 12288,
        "psa-implementation-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-software-components": [
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          },
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          }
        ],
        "psa-nonce":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-instance-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh",
        "psa-certification-reference": "1234567890123-12345"
      },
      -70001: {
        "psa-certified": {
          "certificate-number": "1234567890123-12345",
          "date-of-issue": "23/06/2022",
          "test-lab": "Riscure",
          "certification-holder": "ACME Inc.",
          "certified-product": "RoadRunner",
          "hardware-version": "Gizmo v1.0.2",
          "software-version": "TrustedFirmware-M v1.0.6",
          "certification-type": "PSA Certified Level 1 v2.1",
          "developer-type": "PSA Certified – Device"
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="media-types">
      <name>Media Types</name>
      <t>Media types for EAR are automatically derived from the base EAT media type
<xref target="I-D.ietf-rats-eat-media-type"/> using the profile string defined in <xref target="sec-ear"/>.</t>
      <t>For example, a JWT serialization would use:</t>
      <artwork><![CDATA[
application/eat-jwt; eat_profile="tag:github.com,2023:veraison/ear"
]]></artwork>
      <t>A CWT serialization would instead use:</t>
      <artwork><![CDATA[
application/eat-cwt; eat_profile="tag:github.com,2023:veraison/ear"
]]></artwork>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol
defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to assist the
IETF in its decision processes in progressing drafts to RFCs.
Please note that the listing of any individual implementation here does not
imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a catalog of
available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to
assign due consideration to documents that have the benefit of running code,
which may serve as evidence of valuable experimentation and feedback that have
made the implemented protocols more mature.
It is up to the individual working groups to use this information as they see
fit".</t>
      <section anchor="project-veraison">
        <name>Project Veraison</name>
        <t>The organization responsible for this implementation is Project Veraison, a
Linux Foundation project hosted at the Confidential Computing Consortium.</t>
        <t>The organization currently provides two separate implementations: one in Golang
another in C17.</t>
        <t>The developers can be contacted on the Zulip channel:
<eref target="https://veraison.zulipchat.com/#narrow/stream/357929-EAR/"/>.</t>
        <section anchor="githubcomveraisonear">
          <name><tt>github.com/veraison/ear</tt></name>
          <t>The software, hosted at <eref target="https://github.com/veraison/ear"/>, provides a Golang
package that allows encoding, decoding, signing and verification of EAR
payloads together with a CLI (<tt>arc</tt>) to create, verify and visualize EARs on
the command line.
The maturity level is currently alpha, and only the JWT serialization is
implemented.
The license is Apache 2.0.
The package is used by the Project Veraison verifier to produce attestation
results.</t>
        </section>
        <section anchor="githubcomveraisonc-ear">
          <name><tt>github.com/veraison/c-ear</tt></name>
          <t>The software, hosted at <eref target="https://github.com/veraison/c-ear"/>, provides a C17
library that allows verification and partial decoding of EAR payloads.
The maturity level is currently pre-alpha, and only the JWT serialization is
implemented.
The license is Apache 2.0.
The library targets relying party applications that need to verify attestation
results.</t>
        </section>
        <section anchor="githubcomveraisonrust-ear">
          <name><tt>github.com/veraison/rust-ear</tt></name>
          <t>The software, hosted at <eref target="https://github.com/veraison/rust-ear"/>, provides a
Rust (2021 edition) library that allows verification and partial decoding of
EAR payloads. The maturity level is currently pre-alpha, with limitted
algorithm support.  Both JWT and COSE serializations are implemented.  The
license is Apache 2.0.  The library targets verifiers that need to produce
attestation results as well as relying party applications that need to verify
and consume attestation results.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="sec-priv-cons">
      <name>Privacy Considerations</name>
      <t>EAR is designed to expose as little identifying information as possible about
the attester.
However, certain EAR claims have direct privacy implications.
Implementations should therefore allow applying privacy-preserving techniques
to those claims, for example allowing their redaction, anonymisation or
outright removal.
Specifically:</t>
      <ul spacing="normal">
        <li>
          <t>It <bcp14>SHOULD</bcp14> be possible to disable inclusion of the optional <tt>ear.raw-evidence</tt>
claim</t>
        </li>
        <li>
          <t>It <bcp14>SHOULD</bcp14> be possible to disable inclusion of the optional
<tt>ear.veraison.annotated-evidence</tt> claim</t>
        </li>
        <li>
          <t>It <bcp14>SHOULD</bcp14> be possible to allow redaction, anonymisation or removal of
specific claims from the <tt>ear.veraison.annotated-evidence</tt> object</t>
        </li>
      </ul>
      <t>EAR is an EAT, therefore the privacy considerations in <xref section="8" sectionFormat="of" target="I-D.ietf-rats-eat"/>
apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="sec-iana-ear-claims">
        <name> New EAT Claims</name>
        <t>This specification adds the following values to the "JSON Web Token Claims"
registry <xref target="IANA.jwt"/> and the "CBOR Web Token Claims" registry <xref target="IANA.cwt"/>.</t>
        <t>Each entry below is an addition to both registries.</t>
        <t>The "Claim Description", "Change Controller" and "Specification Documents" are
common and equivalent for the JWT and CWT registries.
The "Claim Key" and "Claim Value Types(s)" are for the CWT registry only.
The "Claim Name" is as defined for the CWT registry, not the JWT registry.
The "JWT Claim Name" is equivalent to the "Claim Name" in the JWT registry.</t>
        <section anchor="ear-status">
          <name>EAR Status</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.status</t>
            </li>
            <li>
              <t>Claim Description: EAR Status</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.status</t>
            </li>
            <li>
              <t>Claim Key: 1000</t>
            </li>
            <li>
              <t>Claim Value Type(s): unsigned integer (0, 2, 32, 96)</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear-appraisal"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-trustworthiness-vector">
          <name>EAR Trustworthiness Vector</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.trustworthiness-vector</t>
            </li>
            <li>
              <t>Claim Description: EAR Trustworthiness Vector</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.trustworthiness-vector</t>
            </li>
            <li>
              <t>Claim Key: 1001</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-tvector"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-raw-evidence">
          <name>EAR Raw Evidence</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.raw-evidence</t>
            </li>
            <li>
              <t>Claim Description: EAR Raw Evidence</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.raw-evidence</t>
            </li>
            <li>
              <t>Claim Key: 1002</t>
            </li>
            <li>
              <t>Claim Value Type(s): bytes</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-appraisal-policy-identifier">
          <name>EAR Appraisal Policy Identifier</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.appraisal-policy-id</t>
            </li>
            <li>
              <t>Claim Description: EAR Appraisal Policy Identifier</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.appraisal-policy-id</t>
            </li>
            <li>
              <t>Claim Key: 1003</t>
            </li>
            <li>
              <t>Claim Value Type(s): text</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear-appraisal"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-verifier-software-identifier">
          <name>EAR Verifier Software Identifier</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.verifier-id</t>
            </li>
            <li>
              <t>Claim Description: EAR Verifier Software Identifier</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.verifier-id</t>
            </li>
            <li>
              <t>Claim Key: 1004</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-verifier-id"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-teep-claims">
          <name>EAR TEEP Claims</name>
          <t>TODO</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="I-D.ietf-rats-ar4si">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="2" month="September" year="2024"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-07"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Mediatek USA</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="6" month="September" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, 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.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-31"/>
        </reference>
        <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="5" month="November" year="2024"/>
            <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-20"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat-media-type">
          <front>
            <title>EAT Media Types</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="3" month="November" year="2024"/>
            <abstract>
              <t>   Payloads used in Remote Attestation Procedures may require an
   associated media type for their conveyance, for example when used in
   RESTful APIs.

   This memo defines media types to be used for Entity Attestation
   Tokens (EAT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-media-type-12"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
      </references>
      <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="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC4151">
          <front>
            <title>The 'tag' URI Scheme</title>
            <author fullname="T. Kindberg" initials="T." surname="Kindberg"/>
            <author fullname="S. Hawke" initials="S." surname="Hawke"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document describes the "tag" Uniform Resource Identifier (URI) scheme. Tag URIs (also known as "tags") are designed to be unique across space and time while being tractable to humans. They are distinct from most other URIs in that they have no authoritative resolution mechanism. A tag may be used purely as an entity identifier. Furthermore, using tags has some advantages over the common practice of using "http" URIs as identifiers for non-HTTP-accessible resources. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4151"/>
          <seriesInfo name="DOI" value="10.17487/RFC4151"/>
        </reference>
        <reference anchor="IANA.cwt" target="https://www.iana.org/assignments/cwt">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.jwt" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
    </references>
    <?line 1169?>

<section anchor="common-cddl-types">
      <name>Common CDDL Types</name>
      <dl newline="true">
        <dt><tt>non-empty</tt></dt>
        <dd>
          <t>A CDDL generic that can be used to ensure the presence of at least one item
in an object with only optional fields.</t>
        </dd>
      </dl>
      <sourcecode type="cddl"><![CDATA[
non-empty<M> = (M) .within ({ + any => any })
]]></sourcecode>
      <dl newline="true">
        <dt><tt>base64-url-text</tt></dt>
        <dd>
          <t>Base64 encoding using the URL- and filename-safe character set defined in
<xref section="5" sectionFormat="of" target="RFC4648"/>, with all trailing '=' characters omitted (as
permitted by Section 3.2) and without the inclusion of any line breaks,
whitespace, or other additional characters.</t>
        </dd>
      </dl>
      <sourcecode type="cddl"><![CDATA[
base64-url-text = tstr .regexp "[A-Za-z0-9_-]+"
]]></sourcecode>
    </section>
    <section anchor="open-policy-agent-example">
      <name>Open Policy Agent Example</name>
      <t>Open Policy Agent <eref target="https://www.openpolicyagent.org">OPA</eref> is a popular and
flexible policy engine that is used in a variety of contexts, from cloud to
IoT.  OPA policies are written using a purpose-built, declarative programming
language called
<eref target="https://www.openpolicyagent.org/docs/latest/policy-language/">Rego</eref>.  Rego has
been designed to handle JSON claim-sets and their JWT envelopes as first class
objects, which makes it an excellent fit for dealing with JWT EARs.</t>
      <t>The following example illustrates an OPA policy that a Relying Party would use
to make decisions based on a JWT EAR received from a trusted verifier.</t>
      <sourcecode type="rego"><![CDATA[
package ear

ear_appraisal = {
    "verified": signature_verified,
    "appraisal-status": status,
    "trustworthiness-vector": trust_vector,
} {
    # verify EAR signature is correct and from one of the known and
    # trusted verifiers
    signature_verified := io.jwt.verify_es256(
        input.ear_token,
        json.marshal(input.trusted_verifiers)
    )

    # extract the EAR claims-set
    [_, payload, _] := io.jwt.decode(input.ear_token)

    # access the attester-specific appraisal record
    app_rec := payload.submods.PARSEC_TPM
    status := app_rec["ear.status"] == "affirming"

    # extract the trustworhiness vector for further inspection
    trust_vector := app_rec["ear.trustworthiness-vector"]
}

# add further conditions on the trust_vector here
# ...
]]></sourcecode>
      <t>The result of the policy appraisal is the following JSON object:</t>
      <sourcecode type="json"><![CDATA[
{
    "ear_appraisal": {
        "appraisal-status": true,
        "trustworthiness-vector": {
            "executables": 2,
            "hardware": 2,
            "instance-identity": 2
        },
        "verified": true
    }
}
]]></sourcecode>
      <t>For completeness, the trusted verifier public key and the EAR JWT used in the
example are provided below.</t>
      <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================
{
    "ear_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJlYXIucmF3L\
WV2aWRlbmNlIjoiTnpRM01qWTVOek0yTlRZek56UUsiLCJlYXIudmVyaWZpZXItaWQiO\
nsiYnVpbGQiOiJ2dHMgMC4wLjEiLCJkZXZlbG9wZXIiOiJodHRwczovL3ZlcmFpc29uL\
XByb2plY3Qub3JnIn0sImVhdF9wcm9maWxlIjoidGFnOmdpdGh1Yi5jb20sMjAyMzp2Z\
XJhaXNvbi9lYXIiLCJpYXQiOjEuNjY2NTI5MTg0ZSswOSwianRpIjoiNTViOGIzZmFkO\
GRkMWQ4ZWFjNGU0OGYxMTdmZTUwOGIxMWY4NDRkOWYwMTg5YmZlZDliODc1MTVhNjc1N\
DI2NCIsIm5iZiI6MTY3NzI0Nzg3OSwic3VibW9kcyI6eyJQQVJTRUNfVFBNIjp7ImVhc\
i5hcHByYWlzYWwtcG9saWN5LWlkIjoiaHR0cHM6Ly92ZXJhaXNvbi5leGFtcGxlL3Bvb\
GljeS8xLzYwYTAwNjhkIiwiZWFyLnN0YXR1cyI6ImFmZmlybWluZyIsImVhci50cnVzd\
HdvcnRoaW5lc3MtdmVjdG9yIjp7ImV4ZWN1dGFibGVzIjoyLCJoYXJkd2FyZSI6Miwia\
W5zdGFuY2UtaWRlbnRpdHkiOjJ9LCJlYXIudmVyYWlzb24ua2V5LWF0dGVzdGF0aW9uI\
jp7ImFrcHViIjoiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFY2pTc\
DhfTVdNM2d5OFR1Z1dPMVRwUVNqX3ZJa3NMcEMtZzhsNVMzbHBHYjdQV1dHb0NBakVQO\
F9BNTlWWndMWGd3b1p6TjBXeHVCUGpwYVdpV3NmQ1EifX19fQ.3Ym-f1LEgamxePUM7h\
6Y2RJDGh9eeL0xKor0n1wE9jdAnLNwm3rTKFV2S2LbqVFoDtK9QGalT2t5RnUdfwZNmg\
",
    "trusted_verifiers": {
        "keys": [
            {
                "alg": "ES256",
                "crv": "P-256",
                "kty": "EC",
                "x": "usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8",
                "y": "IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4"
            }
        ]
    }
}
]]></artwork>
    </section>
    <section anchor="open-issues">
      <name>Open Issues</name>
      <t><cref>Note to RFC Editor: please remove before publication.</cref></t>
      <t>The list of currently open issues for this documents can be found at
<eref target="https://github.com/thomas-fossati/draft-ear/issues"/>.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t><cref>Note to RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-fv-rats-ear-00">
        <name>draft-fv-rats-ear-00</name>
        <t>Initial release.</t>
      </section>
      <section anchor="draft-fv-rats-ear-01">
        <name>draft-fv-rats-ear-01</name>
        <ul spacing="normal">
          <li>
            <t>privacy considerations</t>
          </li>
          <li>
            <t>OPA policy example</t>
          </li>
          <li>
            <t>add rust-ear crate to the implementation status section</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-fv-rats-ear-02">
        <name>draft-fv-rats-ear-02</name>
        <ul spacing="normal">
          <li>
            <t>align JWT and CWT representations of eat_nonce</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks to
Dave Thaler,
Greg Kostal,
Simon Frost,
Yogesh Deshpande
for helpful comments and discussions that have shaped this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
vIaafsIjSE+Qeyet4vVo6noitfuRaZj2I5+wSqUieXQ/k+HROAmXuRgja+UT
e5HMQu6rE1VYavFk1lQuvHF1zeAuphEr8w3Bn7KTdQGemQiRgk+PpVzOhEyZ
TACBVCEZKhwDwx10knEEtJxi2lh+5rE/7d7QVyZpsYT74olPTt5aro5RojND
ci7refY/TLd40GFPf3wqRfsilElx8Vp13CxnO8/adZar9NycIFpJGJQili8n
gyPHPXdfHr596NbO3G7U9Xvbzl631b2bvbvce9muQCHv+l137kwPGyc/WleX
dX7V8wbTM697G7h9f9Y7rdZ+vupfnou76rLv9W7E3Xbr7dvIPdmTNYfTyyW/
upndvOvG/OqNe/6jBbb4tX85Gxy9wc7rw+PT8elec3Fye4C17m7e3XiDo/YC
auD3YHjcWzgPwf1J48YDOGZOvT0HWN69WA7qM++68WY+aLz0u3416k4vJ8PD
9sKZtqf86hPBODw69M+nw9nwaFK7drdvB/VqdHq7uzx9mNVvoJWXE/7u7H7g
thFa7H92/Q7guj2Yn91e18/63e3T/rh6cxEtzi8WLvd7M2z1rH/pnh91H26m
h3cwoqPe3enVm+bN1eHt2dHb6vnR9afT/nB603+7gFKfTq+um2f7vbvzq+sF
tLZ9Pb3xbvY993zfqZ32Lydnt07t7Edrv1s/24NJmG67N263ddq/bpw9dKtn
D+MG9u00Lt3BVfvOWXZbMC9v3ly+7Pfeno0uD1+cdW9nz3D0zo+Wuz1xjl8s
r6+8h+urRewctSN+dbZ9cuXdIeT8uFd1jk9bJ8t2/SYZ/bYnjg6h7CfvpPHi
fgAj8m7Fxc6nk4frxXV/d3F2O7nrugsXRrg88c+q1+96NYSjOz2c3ky95eDK
m98suzQDjrtddfzLh+GP1vHw3vF7Ab/a9pzGaQy0cDs8ai8VtICvsxrMjzs4
unwA2JaA/eD63cu7Yf1weXMBGIAeOVDd9gOUml/X38ZEfTAHw+M7mKOXbZPK
cMSDenPO65cw2sPqEFqFelV+1Z53f7Soz8PQOb50iXbf3oTD6mXj6u3kZFCb
vRTTYPGmeti7euslz72Dw951tde7qR4eXtdnfcDu/mTUvxyendaH2+eHvdpN
bfj69LK3eHt59vO7xs1L3jg7dQ5O45uHSXR2efowOH5xfH07fHNZGx4Pqmcv
+N3lG6CXw/aLs753deUPT6+Ohg3or9W/ffFOHF/uvT2aLa4vh7PLxtn0Te3A
Hb2rtUdvKo3rqT2qnRyM+fSTeP329NnkR6t1Xe+93D+atIU4qX56FYRVv7Y4
aN8Od/2Ts8W0EfZfHV7WL+ong58vD4P9+FX7zRH3+vV4u+e/HY4WN2fT8Y9W
yVRbTGGe5eCYNjsXJ5uPLZWc3hsjdzm4AK0iFxxK353wnkLi7DXf74gxlw72
ij5+wk/z6OrT8av66+nIP361ePf6Yrs5rd71naOX7epbd+xduUd8EvOxf79T
1AY1331xfmLvNV7E8aV7P7a9i1DsXtzO7uLYiR7sWjh4NohfndzvHLxrljJN
GMGoWbmgTJ4uBlCClf0nJxSjH+TdJBTGxA5AOAdg2M9kMBPtHmD0Crn4pbiQ
2fL+tEV1jQxvaLYk+4ZoN8jrs4yrydPgGH27FF3nxWOreFsUTMYpj+xREOF+
xhYFXKG7ZUs2TLEOibeBHbuYrH35txnVkycyvsse3dtgFkTk5cEsMV08VExq
G7VVWVe0hk6d4v0Q+GAYGEq4wktUk/QGMHMo4ERH5mQjY5T2pwLa1kFQRwjA
CBr7OQ+/mUwhklfMqsRAiM9dB7V2MAfHNFXW546M0BXD56UR9yJRAp3uFM12
zLV7RxFR+7hz2AeVW4DJcAR2DHsVAJBe2bpw0WlzGMJj2boOxiKaoBtrMgNw
hDUijc+bjeYehWsQbSCgQwzajaJ0Z5b2JkGpn6EhadJSxfr/oYCdqgSdAAA=

-->

</rfc>
