<?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.29 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-ear-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="EAR">EAT Attestation Results</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-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="2026" month="May" day="26"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>EAT</keyword>
    <keyword>attestation result</keyword>
    <keyword>attestation verifier</keyword>
    <keyword>AR4SI</keyword>
    <abstract>
      <?line 73?>

<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-ietf-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 92?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines the EAT <xref target="RFC9711"/> 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[
;# import rfc9711 as eat
;# import ar4si as ar4si
;# import cmw as cmw

EAR = {
  eat.profile-label => "tag:ietf.org,2026:rats/ear#04"
  ? status-label => ar4si.trustworthiness-tier
  eat.iat-claim-label => ~eat.time-int
  ? eat.exp-claim-label => ~eat.time-int
  verifier-id-label => ar4si.verifier-id
  ? raw-evidence-label => cmw-record
  eat.submods-label => { + text => EAR-appraisal }
  ? eat.nonce-label => eat.nonce-type
  ? topology-label => topology-type
  * $$ear-extension
}

cmw-record = eat.JC<cmw.json-record, cmw.cbor-record>

; EAR-specific claims
raw-evidence-label = eat.JC<"ear_raw_evidence", 1002>
verifier-id-label = eat.JC<"ear_verifier_id", 1004>
topology-label = eat.JC<"ear_device_topology", 1007>
]]></sourcecode>
      </figure>
      <t>Where:</t>
      <dl>
        <dt><tt>eat_profile</tt> (mandatory)</dt>
        <dd>
          <t>The EAT profile (<xref section="6" sectionFormat="of" target="RFC9711"/>) 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:ietf.org,2026:rats/ear#04</tt>.</t>
        </dd>
        <dt><tt>ear_status</tt> (optional)</dt>
        <dd>
          <t>The overall appraisal status for the (composite) attester represented as one of the four trustworthiness tiers (<xref section="3.2" sectionFormat="of" target="I-D.ietf-rats-ar4si"/>).
The value of this claim <bcp14>MUST</bcp14> be set to a tier of no higher trust than the tier corresponding to the worst status claim across all EAR appraisal submods.
This claim exists to help Relying Parties easily determine the overall status of the appraisal without having to inspect each submod.</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="RFC9711"/> for the EAT-specific encoding restrictions (i.e., disallowing the floating point representation).</t>
        </dd>
        <dt><tt>exp</tt> (optional)</dt>
        <dd>
          <t>"Expiration Time" claim -- the time at which the EAR expires and <bcp14>MUST NOT</bcp14> be accepted for processing.
See <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>.
Similar to <tt>iat</tt>, an EAR token <bcp14>MUST NOT</bcp14> contain an <tt>exp</tt> claim in floating-point format.
Any recipient of a token with a floating-point format <tt>exp</tt> claim <bcp14>MUST</bcp14> consider it an error.</t>
        </dd>
        <dt><tt>ear_verifier_id</tt> (mandatory)</dt>
        <dd>
          <t>Identifying information about the appraising verifier.
See <xref section="3.3" sectionFormat="of" target="I-D.ietf-rats-ar4si"/> 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, wrapped in a Record CMW (see <xref section="3.1" sectionFormat="of" target="I-D.ietf-rats-msg-wrap"/>).
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>submods</tt> (mandatory)</dt>
        <dd>
          <t>A submodule map (<xref section="4.2.18" sectionFormat="of" target="RFC9711"/>) 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="RFC9711"/>.</t>
        </dd>
        <dt><tt>ear_device_topology</tt> (optional)</dt>
        <dd>
          <t>A map that describes the device attester graph using adjacency lists.
Attesters are represented by their corresponding labels in the <tt>submods</tt> claim.
Each map key represents an attester in the graph, and the associated map value is an array of labels representing the list of sub-attesters for that attester.
If the claim is present, the map <bcp14>MUST</bcp14> contain at least one element.</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-ear-appraisal">
        <name>EAR Appraisal Claims</name>
        <figure anchor="fig-cddl-ear-appraisal">
          <name>EAR Appraisal Claims (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
;# import ar4si as ar4si
;# import rfc9711 as eat

EAR-appraisal = {
  ? eat.profile-label => eat.general-uri / eat.general-oid
  status-label => ar4si.trustworthiness-tier
  ? trustworthiness-vector-label => ar4si.trustworthiness-vector
  ? appraisal-policy-ids-label => [ + text ]
  ? eat.nonce-label => eat.nonce-type
  ? attester-claims-label => claims-map-type
  ? verifier-claims-label => claims-map-type
  * $$ear-appraisal-extension
}

status-label = eat.JC<"ear_status", 1000>
trustworthiness-vector-label = eat.JC<"ear_trustworthiness_vector", 1001>
appraisal-policy-ids-label = eat.JC<"ear_appraisal_policy_ids", 1003>
attester-claims-label = eat.JC<"ear_attester_claims", 1005>
verifier-claims-label = eat.JC<"ear_verifier_claims", 1006>
]]></sourcecode>
        </figure>
        <dl newline="true">
          <dt><tt>eat_profile</tt> (optional)</dt>
          <dd>
            <t>The EAT profile (<xref section="6" sectionFormat="of" target="RFC9711"/>) associated with the <tt>EAR-appraisal</tt> claims-set.
Note that if multiple <tt>EAR-appraisal</tt> submods exist within the same <tt>EAR</tt> token, they may all have different values for this claim.
If the <tt>EAR-appraisal</tt> contains extensions, this claim <bcp14>SHOULD</bcp14> be present unless the profile can be implied by other means (e.g., via the application context or outer protocol elements).</t>
          </dd>
          <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 section="3.2" sectionFormat="of" target="I-D.ietf-rats-ar4si"/>).
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 section="3.1" sectionFormat="of" target="I-D.ietf-rats-ar4si"/> 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_ids</tt> (optional)</dt>
          <dd>
            <t>A list of one or more unique identifiers for appraisal policies used to evaluate the attestation results.
The order of the identifiers in the list represents the order in which the policies are applied, with those appearing earlier being applied first.
The list <bcp14>MUST NOT</bcp14> be empty.</t>
          </dd>
          <dt><tt>eat_nonce</tt> (optional)</dt>
          <dd>
            <t>The nonce extracted from Evidence corresponding to this appraisal record.
Note that this is entirely distinct from the nonce in <xref target="sec-ear"/>.
It reflects evidence freshness rather than attestation results freshness.
Specifically, it reflects the freshness of the evidence whose attestation results are contained in this appraisal record.
This is useful when the relying party is the challenger in the remote attestation protocol and needs to verify that the nonce in the supplied evidence matches, without having to parse the evidence format.
See also <xref section="4.1" sectionFormat="of" target="RFC9711"/>.</t>
          </dd>
          <dt><tt>ear_attester_claims</tt> (optional)</dt>
          <dd>
            <t>A map containing claims with Attester authority, i.e., claims extracted from the appraised Evidence.</t>
          </dd>
          <dt><tt>ear_verifier_claims</tt> (optional)</dt>
          <dd>
            <t>A map containing claims with Verifier authority, i.e., claims added by the Verifier during appraisal and derived from evaluating the Appraisal Policy for Evidence.</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>
      <section anchor="json-serialisation">
        <name>JSON Serialisation</name>
        <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:ietf.org,2026:rats/ear#04",
  "iat": 1666529184,
  "ear_verifier_id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear_raw_evidence": [
    "application/vnd.evidence",
    "NzQ3MjY5NzM2NTYzNzQK"
  ],
  "submods": {
    "PSA": {
      "ear_status": "contraindicated",
      "ear_trustworthiness_vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear_appraisal_policy_ids":
        [ "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:ietf.org,2026:rats/ear#04",
  "iat": 1666529300,
  "ear_verifier_id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear_raw_evidence": [
    "application/vnd.evidence",
    "NzQ3MjY5NzM2NTYzNzQKNzQ3MjY5NzM2NTYzNzQK"
  ],
  "submods": {
    "CCA Platform": {
      "ear_status": "affirming",
      "ear_trustworthiness_vector": {
        "instance-identity": 2,
        "executables": 2,
        "hardware": 2
      },
      "ear_appraisal_policy_ids":
        [ "https://veraison.example/policy/1/60a0068d" ]
    },
    "CCA Realm": {
      "ear_status": "affirming",
      "ear_trustworthiness_vector": {
        "instance-identity": 2
      },
      "ear_appraisal_policy_ids":
        [ "https://veraison.example/policy/1/60a0068d" ]
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="cbor-serialisation">
        <name>CBOR Serialisation</name>
        <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:ietf.org,2026:rats/ear#04",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: [
    "application/vnd.evidence",
    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[
;# import rfc9711 as eat
;# import rfc9393

$$ear-appraisal-extension //= (
  ear.teep-claims-label => ear-teep-claims
)

ear-teep-claims = non-empty<{
  ? eat.nonce-label => eat.nonce-type
  ? eat.ueid-label => eat.ueid-type
  ? eat.oemid-label => eat.oemid-pen / eat.oemid-ieee / eat.oemid-random
  ? eat.hardware-model-label => eat.hardware-model-type
  ? eat.hardware-version-label => eat.hardware-version-type
  ? eat.manifests-label => eat.manifests-type
}>

ear.teep-claims-label = eat.JC<"ear_teep_claims", 65000>
]]></sourcecode>
        </figure>
        <section anchor="json-serialization-example">
          <name>JSON Serialization Example</name>
          <sourcecode type="cddl"><![CDATA[
{
  "eat_profile": "tag:ietf.org,2026:rats/ear#04",
  "iat": 1666529184,
  "ear_verifier_id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear_raw_evidence": [
    "application/vnd.evidence",
    "NzQ3MjY5NzM2NTYzNzQK"
  ],
  "submods": {
    "PSA": {
      "ear_status": "contraindicated",
      "ear_trustworthiness_vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear_appraisal_policy_ids":
        [ "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-example">
          <name>CBOR Serialization Example</name>
          <sourcecode type="cddl"><![CDATA[
{
  265: "tag:ietf.org,2026:rats/ear#04",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: [
    "application/vnd.evidence",
    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 a private, application-specific
extension:</t>
        <dl newline="true">
          <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 Extension (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
;# import rfc9711 as eat

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

ear-veraison-key-attestation = {
  "akpub" => eat.binary-data
}

ear.veraison.key-attestation-label = eat.JC<"ear_veraison_key_attestation", -70002>
]]></sourcecode>
        </figure>
        <section anchor="json-serialization-examples">
          <name>JSON Serialization Examples</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:ietf.org,2026:rats/ear#04",
  "iat": 1666529184,
  "ear_verifier_id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear_raw_evidence": [
    "application/vnd.evidence",
    "NzQ3MjY5NzM2NTYzNzQK"
  ],
  "submods": {
    "PSA_IOT": {
      "ear_status": "contraindicated",
      "ear_trustworthiness_vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear_appraisal_policy_ids":
        [ "https://veraison.example/policy/1/60a0068d" ],
      "ear_attester_claims": {
        "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_verifier_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>
          <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:ietf.org,2026:rats/ear#04",
  "iat": 1666529184,
  "ear_verifier_id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear_raw_evidence": [
    "application/vnd.evidence",
    "NzQ3MjY5NzM2NTYzNzQK"
  ],
  "submods": {
    "PARSEC_TPM": {
      "ear_status": "affirming",
      "ear_trustworthiness_vector": {
        "instance-identity": 2,
        "executables": 2,
        "hardware": 2
      },
      "ear_appraisal_policy_ids":
        [ "https://veraison.example/policy/1/60a0068d" ],
      "ear_veraison_key_attestation": {
        "akpub":
          "MFkwEwYHKoZIzj0CAQYIKoZIz___"
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="cbor-serialization-example-1">
          <name>CBOR Serialization Example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  265: "tag:ietf.org,2026:rats/ear#04",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: [
    "application/vnd.evidence",
    h'6C696665626F61746D616E'
  ],
  266: {
    "PSA_IOT": {
      1000: 0,
      1001: {
        0: 2,
        1: 2,
        2: 2,
        4: 2
      },
      1003: [ "https://veraison.example/policy/1/60a0068d" ],
      1005: {
        "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"
      },
      1006: {
        "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="RFC9782"/> 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:ietf.org,2026:rats/ear#04"
]]></artwork>
      <t>A CWT serialization would instead use:</t>
      <artwork><![CDATA[
application/eat-cwt; eat_profile="tag:ietf.org,2026:rats/ear#04"
]]></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="RFC9711"/>
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 (suggested)</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="trustworthiness-vector">
          <name>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 (suggested)</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-ear-appraisal"/> 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 as CMW</t>
            </li>
            <li>
              <t>JWT Claim Name: ear_raw_evidence</t>
            </li>
            <li>
              <t>Claim Key: 1002 (suggested)</t>
            </li>
            <li>
              <t>Claim Value Type(s): array</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_ids</t>
            </li>
            <li>
              <t>Claim Description: EAR Appraisal Policy Identifiers</t>
            </li>
            <li>
              <t>JWT Claim Name: ear_appraisal_policy_ids</t>
            </li>
            <li>
              <t>Claim Key: 1003 (suggested)</t>
            </li>
            <li>
              <t>Claim Value Type(s): array</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="verifier-software-identifier">
          <name>Verifier Software Identifier</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear_verifier_id</t>
            </li>
            <li>
              <t>Claim Description: AR4SI Verifier Software Identifier</t>
            </li>
            <li>
              <t>JWT Claim Name: ear_verifier_id</t>
            </li>
            <li>
              <t>Claim Key: 1004 (suggested)</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-ear"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="attester-claims">
          <name>Attester Claims</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear_attester_claims</t>
            </li>
            <li>
              <t>Claim Description: Attester Claims</t>
            </li>
            <li>
              <t>JWT Claim Name: ear_attester_claims</t>
            </li>
            <li>
              <t>Claim Key: 1005 (suggested)</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-ear-appraisal"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="verifier-claims">
          <name>Verifier Claims</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear_verifier_claims</t>
            </li>
            <li>
              <t>Claim Description: Verifier Claims</t>
            </li>
            <li>
              <t>JWT Claim Name: ear_verifier_claims</t>
            </li>
            <li>
              <t>Claim Key: 1006 (suggested)</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-ear-appraisal"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="device-topology">
          <name>Device Topology</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear_device_topology</t>
            </li>
            <li>
              <t>Claim Description: Device Attesters Arrangement</t>
            </li>
            <li>
              <t>JWT Claim Name: ear_device_topology</t>
            </li>
            <li>
              <t>Claim Key: 1007 (suggested)</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-ear"/> 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="18" month="May" year="2026"/>
            <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.

   This document also defines two serialisations of the proposed
   information model, utilising CBOR and JSON.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-10"/>
        </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="I-D.ietf-teep-protocol">
          <front>
            <title>Trusted Execution Environment Provisioning (TEEP) Protocol</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </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">
              <organization>Openchip &amp; Software Technologies, S.L.</organization>
            </author>
            <date day="26" month="February" year="2026"/>
            <abstract>
              <t>   This document specifies the Trusted Execution Environment
   Provisioning (TEEP) Protocol, which enables secure lifecycle
   management of Trusted Components in devices with a Trusted Execution
   Environment (TEE).  The protocol defines message exchanges between a
   Trusted Application Manager (TAM) and a TEEP Agent to query device
   state, convey attestation evidence, and install, update, or delete
   Trusted Components.  Messages are encoded in CBOR and secured using
   COSE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teep-protocol-26"/>
        </reference>
        <reference anchor="RFC9782">
          <front>
            <title>Entity Attestation Token (EAT) Media Types</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>The payloads used in Remote ATtestation procedureS (RATS) may require an associated media type for their conveyance, for example, when the payloads are used in RESTful APIs.</t>
              <t>This memo defines media types to be used for Entity Attestation Tokens (EATs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9782"/>
          <seriesInfo name="DOI" value="10.17487/RFC9782"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="11" month="December" year="2025"/>
            <abstract>
              <t>   The Conceptual Messages introduced by the RATS architecture (RFC
   9334) are protocol-agnostic data units that are conveyed between RATS
   roles during remote attestation procedures.  Conceptual Messages
   describe the meaning and function of such data units within RATS data
   flows without specifying a wire format, encoding, transport
   mechanism, or processing details.  The initial set of Conceptual
   Messages is defined in Section 8 of RFC 9334 and includes Evidence,
   Attestation Results, Endorsements, Reference Values, and Appraisal
   Policies.

   This document introduces the Conceptual Message Wrapper (CMW) that
   provides a common structure to encapsulate these messages.  It
   defines a dedicated CBOR tag, corresponding JSON Web Token (JWT) and
   CBOR Web Token (CWT) claims, and an X.509 extension.

   This allows CMWs to be used in CBOR-based protocols, web APIs using
   JWTs and CWTs, and PKIX artifacts like X.509 certificates.
   Additionally, the draft defines a media type and a CoAP content
   format to transport CMWs over protocols like HTTP, MIME, and CoAP.

   The goal is to improve the interoperability and flexibility of remote
   attestation protocols.  Introducing a shared message format such as
   CMW enables consistent support for different attestation message
   types, evolving message serialization formats without breaking
   compatibility, and avoiding the need to redefine how messages are
   handled within each protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-23"/>
        </reference>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9334" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9334.xml">
          <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 1014?>

<section anchor="collated-cddl">
      <name>Collated CDDL</name>
      <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

;;; *** undefined: $$ear-extension
;;; *** undefined: $$ear-appraisal-extension
EAR = {
  eat.profile-label => "tag:ietf.org,2026:rats/ear#04",
  ? status-label => ar4si.trustworthiness-tier,
  eat.iat-claim-label => ~eat.time-int,
  ? eat.exp-claim-label => ~eat.time-int,
  verifier-id-label => ar4si.verifier-id,
  ? raw-evidence-label => cmw-record,
  eat.submods-label => {+ text => EAR-appraisal},
  ? eat.nonce-label => eat.nonce-type,
  ? topology-label => topology-type,
  * $$ear-extension,
}
cmw-record = eat.JC<cmw.json-record, cmw.cbor-record>
raw-evidence-label = eat.JC<"ear_raw_evidence", 1002>
verifier-id-label = eat.JC<"ear_verifier_id", 1004>
topology-label = eat.JC<"ear_device_topology", 1007>
EAR-appraisal = {
  ? eat.profile-label => eat.general-uri / eat.general-oid,
  status-label => ar4si.trustworthiness-tier,
  ? trustworthiness-vector-label => ar4si.trustworthiness-vector,
  ? appraisal-policy-ids-label => [+ text],
  ? eat.nonce-label => eat.nonce-type,
  ? attester-claims-label => claims-map-type,
  ? verifier-claims-label => claims-map-type,
  * $$ear-appraisal-extension,
}
status-label = eat.JC<"ear_status", 1000>
trustworthiness-vector-label = eat.JC<"ear_trustworthiness_vector", \
                                                                1001>
appraisal-policy-ids-label = eat.JC<"ear_appraisal_policy_ids", 1003>
attester-claims-label = eat.JC<"ear_attester_claims", 1005>
verifier-claims-label = eat.JC<"ear_verifier_claims", 1006>
claims-map-type = eat.JC<claims-map-type-json, claims-map-type-cbor>
claims-map-type-json = {+ text => any}
claims-map-type-cbor = {+ (text / int) => any}
topology-type = {+ text => [+ text]}
eat.JC<J, C> = eat.JSON-ONLY<J> / eat.CBOR-ONLY<C>
eat.JSON-ONLY<J> = J .feature "json"
eat.CBOR-ONLY<C> = C .feature "cbor"
eat.profile-label = eat.JC<"eat_profile", 265>
eat.iat-claim-label = eat.JC<"iat", 6>
eat.time-int = #6.1(int)
eat.exp-claim-label = eat.JC<"exp", 4>
eat.submods-label = eat.JC<"submods", 266>
eat.nonce-label = eat.JC<"eat_nonce", 10>
eat.nonce-type = eat.JC<tstr .size (8 .. 88), bstr .size (8 .. 64)>
eat.general-uri = eat.JC<text, ~uri>
eat.general-oid = eat.JC<eat.json-oid, ~eat.oid>
eat.json-oid = tstr .regexp "([0-2])((\\.0)|(\\.[1-9][0-9]*))*"
eat.oid = #6.111(bstr)
ar4si.trustworthiness-tier /= ar4si.trustworthiness-tier-none-label \
/ ar4si.trustworthiness-tier-affirming-label / ar4si.trustworthiness\
-tier-warning-label / ar4si.trustworthiness-tier-contraindicated-\
                                                                label
ar4si.verifier-id = {
  ar4si.developer-label => text,
  ar4si.build-label => text,
}
ar4si.trustworthiness-vector = ar4si.non-empty<{
    ? ar4si.instance-identity-label => ar4si.trustworthiness-claim,
    ? ar4si.configuration-label => ar4si.trustworthiness-claim,
    ? ar4si.executables-label => ar4si.trustworthiness-claim,
    ? ar4si.file-system-label => ar4si.trustworthiness-claim,
    ? ar4si.hardware-label => ar4si.trustworthiness-claim,
    ? ar4si.runtime-opaque-label => ar4si.trustworthiness-claim,
    ? ar4si.storage-opaque-label => ar4si.trustworthiness-claim,
    ? ar4si.sourced-data-label => ar4si.trustworthiness-claim,
}>
ar4si.non-empty<M> = M .within ({+ any => any})
ar4si.trustworthiness-tier-none-label = ar4si.JC<"none", 0>
ar4si.trustworthiness-tier-affirming-label = ar4si.JC<"affirming", 2>
ar4si.trustworthiness-tier-warning-label = ar4si.JC<"warning", 32>
ar4si.trustworthiness-tier-contraindicated-label = ar4si.JC<"\
                                                contraindicated", 96>
ar4si.developer-label = ar4si.JC<"developer", 0>
ar4si.build-label = ar4si.JC<"build", 1>
ar4si.instance-identity-label = ar4si.JC<"instance-identity", 0>
ar4si.trustworthiness-claim = -128 .. 127
ar4si.configuration-label = ar4si.JC<"configuration", 1>
ar4si.executables-label = ar4si.JC<"executables", 2>
ar4si.file-system-label = ar4si.JC<"file-system", 3>
ar4si.hardware-label = ar4si.JC<"hardware", 4>
ar4si.runtime-opaque-label = ar4si.JC<"runtime-opaque", 5>
ar4si.storage-opaque-label = ar4si.JC<"storage-opaque", 6>
ar4si.sourced-data-label = ar4si.JC<"sourced-data", 7>
ar4si.JC<J, C> = ar4si.JSON-ONLY<J> / ar4si.CBOR-ONLY<C>
ar4si.JSON-ONLY<J> = J .feature "json"
ar4si.CBOR-ONLY<C> = C .feature "cbor"
cmw.json-record = [
  type: cmw.media-type,
  value: cmw.base64url-string,
  ? ind: uint .bits cmw.cm-type,
]
cmw.cbor-record = [
  type: cmw.coap-content-format-type / cmw.media-type,
  value: bytes,
  ? ind: uint .bits cmw.cm-type,
]
cmw.media-type = text .abnf ("Content-Type" .cat cmw.Content-Type-\
                                                                ABNF)
cmw.base64url-string = text .regexp "[A-Za-z0-9_-]+"
cmw.cm-type = &(
  reference-values: 0,
  endorsements: 1,
  evidence: 2,
  attestation-results: 3,
  appraisal-policy: 4,
)
cmw.coap-content-format-type = uint .size 2
cmw.Content-Type-ABNF = '

Content-Type   = Media-Type-Name *( *SP ";" *SP parameter )
parameter      = token "=" ( token / quoted-string )

token          = 1*tchar
tchar          = "!" / "#" / "$" / "%" / "&" / "\'" / "*"
               / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
               / DIGIT / ALPHA
quoted-string  = %x22 *( qdtext / quoted-pair ) %x22
qdtext         = SP / %x21 / %x23-5B / %x5D-7E
quoted-pair    = "\\" ( SP / VCHAR )

Media-Type-Name = type-name "/" subtype-name

type-name = restricted-name
subtype-name = restricted-name

restricted-name = restricted-name-first *126restricted-name-chars
restricted-name-first  = ALPHA / DIGIT
restricted-name-chars  = ALPHA / DIGIT / "!" / "#" /
                         "$" / "&" / "-" / "^" / "_"
restricted-name-chars =/ "." ; Characters before first dot always
                             ; specify a facet name
restricted-name-chars =/ "+" ; Characters after last plus always
                             ; specify a structured syntax suffix

DIGIT     =  %x30-39           ; 0 - 9
POS-DIGIT =  %x31-39           ; 1 - 9
ALPHA     =  %x41-5A / %x61-7A ; A - Z / a - z
SP        =  %x20
VCHAR     =  %x21-7E           ; printable ASCII (no SP)
'
]]></artwork>
    </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 document can be found at
<eref target="https://github.com/thomas-fossati/draft-ear/issues"/>.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks to
Dave Thaler,
Dhawal Kumar,
Ding Ma,
Greg Kostal,
Jerry Yu,
Raghuram Yeluri,
Simon Frost,
Tobin Feldman-Fitzthum,
Yogesh Deshpande
for helpful comments and discussions that have shaped this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
R6N+UWu/3t4bNDg/qNy98YOKV53sNK7tpndwNBkuB503u2e109pB9+ezXX87
etN4u2e6nVq02vbe2b3J5dGw/9Eo6GKLvpmnOThwsmxOkmweD8Hp3T5yl51T
kCoyiTjouxXcUgKC0pzvN8SYCztbeR/v8NM4PL/bf1M7Gfa8/TeT9yenqyvD
yk3H2nvdqLxz+u65s2cOIrPv3a7ntUHNt14dH5S2ll9F0Zlz2y+5pwFvnl6P
bqLICu9L1aC71o3eHNyu77xfSRsftMQf6X1BqjwtTFcRGsaPVsB7L8XFmRQ6
znZgc/aDDdAcKYCcIja4UmTFdiGuFPhxiepqafBRbYljtVBvEPdAh0lQbXzt
ibolma6lNiMjPxItGvhDMyz1/BBDSJYoxh1dxpZEuxReypoWCpmgvfTJKGZ8
2RDpO7i9WeiZbsgLIIIc4nEJ3p9zQ0HT2xhc1AEJEd1UtgfmBKSIN2OQGuEJ
t6lDs2jsgTTO3viwG7tF4zXHmwsuxkWjbfYHY9Cf2AV3x4FTNE4dDGfYDaBk
0ej4Xdgyd7lrD02vtOtE9zCZYdG48Ps8HKDT3mAEGy03eiTquKPe2KXYUIrS
pmvTMTdIGCZhYBQIBdLsCDUoHYhl4/8DNkxJ54GrAAA=

-->

</rfc>
