<?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.17 (Ruby 3.3.1) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cds-rats-intel-corim-profile-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="Intel profile">Intel Profile for CoRIM</title>
    <seriesInfo name="Internet-Draft" value="draft-cds-rats-intel-corim-profile-02"/>
    <author initials="J." surname="Beaney" fullname="James D. Beaney">
      <organization>Intel Corporation</organization>
      <address>
        <email>james.d.beaney@intel.com</email>
      </address>
    </author>
    <author initials="A." surname="Draper" fullname="Andrew Draper">
      <organization>Intel Corporation</organization>
      <address>
        <email>andrew.draper@intel.com</email>
      </address>
    </author>
    <author initials="V." surname="Scarlata" fullname="Vincent R. Scarlata">
      <organization>Intel Corporation</organization>
      <address>
        <email>vincent.r.scarlata@intel.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <date year="2024" month="June" day="26"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <keyword>profile</keyword>
    <keyword>corim</keyword>
    <abstract>
      <?line 125?>

<t>This document describes extensions to CoRIM that support Intel-specific Attester implementations and corresponding Endorsements and Reference Values.
Multiple Evidence formats are anticipated, but all anticipated Evidence can be mapped to Reference Values expressions based on CoRIM and the CoRIM extensions found in this profile.
The Evidence to Reference Values mappings are either documented by industry specifications or by this profile.
Reference Value Providers may use this profile to author mainifests containing Reference Values and Endorsements.
Verifiers will recognize this profile by it's profile identifier and implement support for the extentions defined or may identify a suitable Verifier, or will refuse to process inputs.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://nedmsmith.github.io/draft-cds-rats-intel-corim-profile/draft-cds-rats-intel-corim-profile.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-cds-rats-intel-corim-profile/"/>.
      </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/nedmsmith/draft-cds-rats-intel-corim-profile"/>.</t>
    </note>
  </front>
  <middle>
    <?line 133?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>This profile describes extensions and restrictions placed on Reference Values, Endorsements, and Evidence
that support attestation capabilities of Intel products containing Intel(R) SGX(TM) or Intel(R) TDX(TM) technology, or Intel(R) products that contain
DICE <xref target="DICE.engine"/> root of trust, DICE layers <xref target="DICE.layer"/>, or modules that implement SPDM <xref target="DMTF.SPDM"/>.</t>
      <t>CoRIM <xref target="DICE.CoRIM"/> and <xref target="I-D.ietf-rats-corim"/> define a baseline schema for Reference Values and Endorsements that form the foundation for the extensions defined in this profile.
CoRIM is also the foundation for Evidence definitions as specified by <xref target="DICE.Attest"/>, <xref target="TCG.concise-evidence"/>, and <xref target="DMTF.SPDM"/> such that Evidence must be mapped to Reference Values defined by <xref target="DICE.CoRIM"/> and <xref target="I-D.ietf-rats-corim"/>.
Additionally, this profile defines Reference Values extensions that express reference state that is super set or range of values.
Evidence may be a value that is a subset or within the range specified by Reference Values extensions.
This profile defines extensions to CoRIM that support matching based on set membership, masked values, and numeric ranges.</t>
      <t>The baseline CoRIM, as defined by <xref target="DICE.CoRIM"/> is a subset of this profile.
Intel products that implement exclusively to the baseline CoRIM may not rely upon this profile.
However, the defined extensions may be generally useful such that implementation of the Intel profile need not imply the
Attester, Verifier, Relying Party, Reference Value Provider, or Endorser role implementations must be Intel products.</t>
      <t>This profile extends CoMID <tt>measurement-values-map</tt>, as defined by <xref target="DICE.CoRIM"/> (see also <xref target="I-D.ietf-rats-corim"/>), with measurement types that are unique to Intel products.
Some measurement types are specific to Reference Values where multiple reference states may be included in reference manifests.
Intel profile extensions use a CBOR tagged value that defines a comparison operator and operands that instruct Verifiers regarding subset, range, and masked values matching semantics.
For example, a numeric operator 'greater-than' instructs the Verifier to match a numeric Evidence value if it is greater than a numeric range operand.</t>
      <t>This profile follows the Verifier behavior defined by <xref target="DICE.CoRIM"/> and extends Verifier behavior to include operator-operand matching.
If no operator is specified by Reference Values statements, the Verifier defaults to baseline <xref target="DICE.CoRIM"/> matching semantics.
If Evidence matches Reference Values and Endorsements apply, Endorsed Values may be added to the accetped claims set.
When all Evidence and Endorsements are processed, the Verifier's set of accepted claims is available for Attestation Results computations.
This profile doesn't define Attestation Results.
Rather, an Attestation Results profile, such as <xref target="I-D.kdyxy-rats-tdx-eat-profile"/> may be referenced instead.</t>
      <t>This profile is compatible with multiple Evidence formats, as defined by <xref target="DICE.Attest"/>, <xref target="TCG.concise-evidence"/>, and <xref target="DMTF.SPDM"/>.
It describes considerations when mapping Evidence formats to CoRIM <xref target="DICE.CoRIM"/> that a Verifier may use when performig appraisals.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The reader is assumed to be familiar with the terms defined in Section 4 of <xref target="RFC9334"/> and <xref target="I-D.ietf-rats-endorsements"/>.</t>
    </section>
    <section anchor="sec-background">
      <name>Background</name>
      <t>Complex platforms may contain a variety of hardware components, several of which may contain a hardware root of trust.
Each root of trust may anchor one or more layers <xref target="DICE.layer"/> resulting in multiple instances of attestation Evidence.
Evidence may be integrity protected by digital signatures, such as certificates <xref target="DICE.Attest"/>, tokens <xref target="RFC8392"/> or by a secure transport <xref target="DMTF.SPDM"/>.
For example, a system bus may allow dynamically configured peripheral devices that have attestation capabilities.
Confidential computing environments, such as SGX, may extend an initial boundary to include a peripheral, or a peer enclave, that together forms a network of trustworthy nodes that a remote
attestation Verifier may need to appraise.
Multiple Evidence blocks may be combined into a composite Evidence block <xref target="I-D.ietf-rats-msg-wrap"/> that is more easily conveyed.
Complex platforms may have one or more lead Attester endpoints that communicate with a remote Verifier to convey composite Evidence.
The composition of the complex platform is partially represented in the composite Evidence.</t>
      <t>However, composite Evidence may not fully describe platform composition.
A complex platform may consist of multiple subsystems, such as network adapters, storage controllers, memory controllers, special purpose processors, etc.
The various sub-subsystem components vendors may create hardware bills of material (HBOM) that describe sub-system composition.
A complex platform vendor may assemble various sub-system components whose composition is described by a platform HBOM.
Although CoRIM may be used to create HBOMs, use of this profile for HBOM creation is unanticipated.</t>
      <t>Nevertheless, a complex system may contain multiple identical instances of sub-sytem components that produce identical Evidence blocks.
Additionally, dynamic insertion or removal of a component may result in composite Evidence blocks that reflect this dynamism.</t>
    </section>
    <section anchor="sec-profile-identifier">
      <name>Profile Identifier</name>
      <t>This profile applies to Reference Values from a CoRIM manifest that a Verifier uses to process Evidence.</t>
      <t>The profile identifier structure is defined by CoRIM as:</t>
      <sourcecode type="cddl"><![CDATA[
$profile-type-choice /= uri 
$profile-type-choice /= tagged-oid-type
]]></sourcecode>
      <t>The profile identifier for this profile is the OID:</t>
      <t><tt>{joint-iso-itu-t(2) country(16) us(840) organization(1) intel(113741) (1) intel-comid(16) profile(1)}</tt></t>
      <t><tt>2.16.840.1.113741.1.16.1</tt></t>
    </section>
    <section anchor="sec-comid-extensions">
      <name>CoMID Extensions</name>
      <t>This profile extends the baseline CoMID for Reference Values with an expression that informs Verifiers about non-exact-match matching semantics that include: ranges, sets, and masks.
It extends <tt>measurement-values-map</tt> which is used by Evidence, Reference Values, and Endorsed Values.</t>
      <section anchor="sec-expressions">
        <name>Expressions</name>
        <t>Expressions are used to specify richer Reference Values measurements that expect non-exact matching semantics.
The Reference Value expression instructs the Verifier regarding matching parameters,
such as greater-than or less-than, ranges, sets, etc. Typically, the Evidence value is one operand of an expression
and the Reference Value contains the operator and additional operands.</t>
        <t>The operator and remaining operands are contained in an array.
Expression arrays have an operator followed by zero or more operands.
The operator definition identifies the additional operands and their data types.
A Verifier forms an expression using Evidence as the first operand, obtains the operator from the first entry in
the expression array, and any remaining array entries are operands.</t>
        <t>This document describes operations using <em>infix</em> notation where the first operand, <em>operand_1</em>, is obtained from Evidence,
followed by the operator, followed by any remaining operands: <em>operand_2</em>, <em>operand_3</em>, etc...</t>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>From Evidence: <tt>operand_1</tt>, from Reference Values: <tt>[ operator, operand_2, operand_3, ... ]</tt>.</t>
          </li>
        </ul>
        <t>Expression records are CBOR tagged to indicate the following CBOR is to be evaluated as an expression.
Expression statements found in Reference Values informs the Verifier that Evidence is needed to complete
the expression equation. Appraisal processing <bcp14>MUST</bcp14> evaluate the expression.</t>
        <t>This profile anticipates use of the CBOR tag <tt>#6.60010</tt> to identify expression arrays. See <xref target="sec-iana-considerations"/></t>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t><tt>#6.60010([ operator, operand_2, operand_3, ... ])</tt>.</t>
          </li>
        </ul>
        <section anchor="sec-expression-operators">
          <name>Expression Operators</name>
          <t>There are several classes of operators as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Numeric</strong>: The <tt>numeric</tt> operand can be an integer, unsigned integer, or floading point value.</t>
            </li>
            <li>
              <t><strong>Set</strong>: The <tt>set</tt> operand can be an set (array) of any primitive value or a set of arrays containing any primitive value.
The position of the items in a set is unordered, while the position of items in an array within a set
is ordered.</t>
            </li>
            <li>
              <t><strong>Date-Time</strong>: The date-time operators compare two date-time values,
while the <tt>epoch</tt> operators determine if a date-time value
is within a range defined by an epoch and a grece period relative to the epoch.</t>
            </li>
            <li>
              <t><strong>Mask</strong>: The <tt>mask</tt> operator compares two bit fields where a bit-field is compared to
a second bit-field using a bit-field-mask that selects the bits to be compared.
The bit-field may contain a sequence of bytes of any length.
The bit-field-mask should be the same length as the bit-field.</t>
            </li>
          </ol>
          <section anchor="sec-equivalance-operator">
            <name>Equivalence Operator</name>
            <t>By default, <em>exact</em> match rules are assumed. Consequently, no operator artifact is needed when
Evidence values are identical to Reference Values.</t>
          </section>
        </section>
        <section anchor="sec-numeric-expressions">
          <name>Numeric Expressions</name>
          <t>Numeric operators apply to values that are integers, unsigned integers or floating point numbers.
There are four numeric operators:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>greater-than</strong> (gt),</t>
            </li>
            <li>
              <t><strong>greater-than-or-equal</strong> (ge),</t>
            </li>
            <li>
              <t><strong>less-than</strong> (lt),</t>
            </li>
            <li>
              <t><strong>less-than-or-equal</strong> (le).</t>
            </li>
          </ol>
          <t>The equals operator is not defined because an exact match rule is the default rule when an Evidence value is identical to a Reference Value.</t>
          <t>The numeric operator data type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
gt = 1
ge = 2
lt = 3
le = 4
numeric-type = integer / unsigned / float
numeric-operator = gt / ge / lt / le
numeric-expression = [ numeric-operator, numeric-type ]
tagged-numeric-expression = #6.60010(numeric-expression)
]]></sourcecode>
          <t>A numeric expression is an array containing a numeric operator and a numeric operand.
The operand contains a numeric Reference Value that is matched with a numeric Evidence value.</t>
          <t>Evidence and Reference Values <bcp14>MUST</bcp14> be the same numeric type. For example, if a Reference Value numeric type is
<tt>integer</tt>, then the Evidence numeric value must also be <tt>integer</tt>.</t>
          <t>This profile defines four macro numeric expressions, one for each numeric operator:</t>
          <ul spacing="normal">
            <li>
              <t><tt>tagged-numeric-gt</tt>,</t>
            </li>
            <li>
              <t><tt>tagged-numeric-ge</tt>,</t>
            </li>
            <li>
              <t><tt>tagged-numeric-lt</tt>,</t>
            </li>
            <li>
              <t><tt>tagged-numeric-le</tt>.</t>
            </li>
          </ul>
          <t>In each case, the numeric operator is used to evaluate a Reference Value operand against an Evidence value operand
that is obtained from Evidence.</t>
          <t>If the expression is read using <em>infix</em> notation, the first operand is Evidence, followed by the operator,
followed by the Reference Value operand.</t>
          <t>Example:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_numeric</tt>&gt; &lt;<tt>le</tt>&gt; &lt;<tt>reference_numeric</tt>&gt;</t>
            </li>
          </ul>
          <t>The numeric expression definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-numeric-gt = #6.60010( [
    greater-than: gt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-ge = #6.60010( [
    greater-than: ge .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-lt = #6.60010( [
    greater-than: lt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-le = #6.60010( [
    greater-than: le .within numeric-operator,
    reference-value: numeric-type ] )
]]></sourcecode>
        </section>
        <section anchor="sec-set-expressions">
          <name>Set Expressions</name>
          <t>Set operators allow Reference Values, that are expressed as a set, to be compared with Evidence that
is expressed as either a primitive value or a set.</t>
          <t>Set expression statements have two forms:</t>
          <ol spacing="normal" type="1"><li>
              <t>A binary relation between a primitive object 'O' and a set 'S', and</t>
            </li>
            <li>
              <t>A binary relation between two sets, an Evidence set 'S1' and a Reference Values set 'S2'.</t>
            </li>
          </ol>
          <t>The first form, relation between an object and a set, has two operators:</t>
          <ul spacing="normal">
            <li>
              <t><strong>member</strong> and</t>
            </li>
            <li>
              <t><strong>not-member</strong>.</t>
            </li>
          </ul>
          <t>The Evidence object 'O' is evaluated with the Reference Values set 'S'.</t>
          <t>The <tt>op.member</tt> and <tt>op.not-member</tt> operators expect a Reverence Value set as <em>operand_2</em> and a primitive Evidence
value as <em>operand_1</em>. Evaluation tests whether <em>operand_1</em> is a member of the set <em>operand_2</em>.</t>
          <t>Example:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence-value</tt>&gt; &lt;<tt>set-operator</tt>&gt; &lt;<tt>reference-set</tt>&gt;</t>
            </li>
          </ul>
          <t>The set data type definitions are defined as follows:</t>
          <sourcecode type="cddl"><![CDATA[
member = 6
not-member = 7

set-type = [ * any ]
set-operator = member / not-member
set-expression = [ set-operator, set-type ]
tagged-set-expression = #6.60010( set-expression )
]]></sourcecode>
          <t>A set expression array contins a set operator followed by a set of Reference Values.
The set is defined by <tt>set-type</tt>.</t>
          <t>The set expression type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-exp-member = #6.60010([
    member .within set-operator, set-type ])
    
tagged-exp-not-member = #6.60010([
    not-member .within set-operator, set-type ])
]]></sourcecode>
          <t>Examples:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_object</tt>&gt; &lt;<tt>member</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
            <li>
              <t>&lt;<tt>evidence_object</tt>&gt; &lt;<tt>not-member</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
          </ul>
          <t>The Evidence object <bcp14>MUST NOT</bcp14> be nil.</t>
          <t>The Reference Values set may be the empty set.</t>
          <t>The second form, a relation between two sets, has three operators:</t>
          <ul spacing="normal">
            <li>
              <t><strong>subset</strong>,</t>
            </li>
            <li>
              <t><strong>superset</strong>,</t>
            </li>
            <li>
              <t><strong>disjoint</strong>.</t>
            </li>
          </ul>
          <t>The fist set, S1 is Evidence and set, S2 is the Reference Values set.</t>
          <t>The <tt>subset</tt>, <tt>superset</tt>, and <tt>disjoint</tt> operators test whether an Evidence set value
satisfies a set operation, given a Reverence Value set.</t>
          <t>Examples:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>subset</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
            <li>
              <t>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>superset</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
            <li>
              <t>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>disjoint</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
          </ul>
          <t>The Reference Values and Evidence sets may be the empty set.</t>
          <t>The set of sets data type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
subset = 8
superset = 9
disjoint = 10
set-of-set-type = [ * [ + any ]]
set-of-set-operator = subset / superset / disjoint
set-of-set-expression = [ set-of-set-operator, set-of-set-type ]
tagged-set-of-set-expression = #6.60010(set-of-set-expression)
]]></sourcecode>
          <t>For <tt>subset</tt>, every member in the Evidence set 'S1', <bcp14>MUST</bcp14> map to a member in the Reference Values set 'S2'.
The Evidence set, 'S1', <bcp14>MAY</bcp14> be a proper subset of 'S2'. For example, if every member in set 'S1' maps to every member
in set 'S2' then matching is successful. A successful result produces the set 'S1'.</t>
          <t>For <tt>superset</tt>, every member in the Reference Values set 'S2', <bcp14>MUST</bcp14> map to a member in the Evidence set 'S1'.
A successful result produces the set 'S1'.</t>
          <t>For <tt>disjoint</tt>, every member in the Evidence set 'S1' <bcp14>MUST NOT</bcp14> map to any member in the Reference Values
set 'S2'. A successful result produces the empty set.</t>
          <t>The set of sets expression definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-exp-subset = #6.60010([
    subset .within set-of-set-operator, set-of-set-type ])

tagged-exp-superset = #6.60010([
    superset .within set-of-set-operator, set-of-set-type ])
    
tagged-exp-disjoint = #6.60010([
    disjoint .within set-of-set-operator, set-of-set-type ])
]]></sourcecode>
        </section>
        <section anchor="sec-time-expressions">
          <name>Time Expressions</name>
          <section anchor="sec-date-time-expressions">
            <name>Date-Time Expressions</name>
            <t>Date-time can be expressed in both string <tt>tdate</tt> or numeric <tt>time</tt> formats.
There are four operators that are defined for date-time expressions:</t>
            <ol spacing="normal" type="1"><li>
                <t><strong>lt</strong> determines if a date-time Evidence value is less than a Reference Values date-time.</t>
              </li>
              <li>
                <t><strong>le</strong> determines if a date-time Evidence value is less than or equal to a Reference Values date-time.</t>
              </li>
              <li>
                <t><strong>gt</strong> determines if a data-time Evidence value is greater than a Reference Values date-time.</t>
              </li>
              <li>
                <t><strong>ge</strong> determines if a data-time Evidence value is greater than or equal to a Reference Values date-time.</t>
              </li>
            </ol>
            <t>The date-time operators are in fact numeric. Expressions involving string date-time values must be converted to numeric format before the numeric comparison
operator can be applied.</t>
            <t>The numeric date-time data type definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
time-operator = numeric-operator
time-expression = [ time-operator, time ] ;#6.1(number)
tagged-time-expression = #6.60010( time-expression )
]]></sourcecode>
            <t>The string date-time data type definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tdate-operator = numeric-operator ; converts tdate to numeric
tdate-expression = [ tdate-operator, tdate ] ;#6.0(string)
tagged-tdate-expression = #6.60010( tdate-expression )
]]></sourcecode>
            <t>The date-time expressions for evaluating time consist of a CBOR tagged record containing a time operator followed by a date-time value.</t>
            <t>The <tt>gt</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is greater-than to the Reference Value,
then the Evidence value is accepted.</t>
            <t>The <tt>ge</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is greater-than-or-equal to the Reference Value,
then the Evidence value is accepted.</t>
            <t>The <tt>lt</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is less-than to the Reference Value,
then the Evidence value is accepted.</t>
            <t>The <tt>le</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is less-than-or-equal to the Reference Value,
then the Evidence value is accepted.</t>
            <t>In <em>infix</em> notation, a date-time value reported as Evidence in <em>operand_1</em>.
The Reference Value expression contains a time comparison operator and <em>operand_2</em> contains a reference date-time.</t>
            <t>Example:</t>
            <ul spacing="normal">
              <li>
                <t>&lt;<tt>evidence_date_time</tt>&gt; &lt;<tt>gt</tt>&gt; &lt;<tt>reference_date_time</tt>&gt;</t>
              </li>
            </ul>
            <t>The numeric date-time expression definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tagged-exp-time-gt = #6.60010([ 
    gt .within time-operator,
    time ])

tagged-exp-time-ge = #6.60010([ 
    ge .within time-operator,
    time ])

tagged-exp-time-lt = #6.60010([
    lt .within time-operator,
    time ])

tagged-exp-time-le = #6.60010([
    le .within time-operator,
    time ])
]]></sourcecode>
            <t>The string date-time expression definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tagged-exp-tdate-gt = #6.60010([ 
    gt .within tdate-operator,
    tdate ])

tagged-exp-tdate-ge = #6.60010([ 
    ge .within tdate-operator,
    tdate ])

tagged-exp-tdate-lt = #6.60010([
    lt .within tdate-operator,
    tdate ])

tagged-exp-tdate-le = #6.60010([
    le .within tdate-operator,
    tdate ])
]]></sourcecode>
          </section>
          <section anchor="sec-epoch-expressions">
            <name>Epoch Expressions</name>
            <t>An epoch expression defines a timing window that can be used to determine recentness of a time stampped message.
By default, the Verifier's current time implicitly defines an epoch.
A grace period defines the epoch window differential, in seconds, that a timestamp must fall within to be valid.</t>
            <t>Epochs don't have to rely on current time. <xref target="I-D.birkholz-rats-epoch-markers"/> defines several.</t>
            <t>The epoch data type definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
epoch-operator = numeric-operator
epoch-seconds-type = int
epoch-expression = [ 
    epoch-operator,
    grace-period: epoch-seconds-type,
    ? $tagged-epoch-id
]
tagged-epoch-expression = #6.60010( epoch-expression )
$tagged-epoch-id /= tdate
$epoch-timestamp-type /= $tagged-epoch-id
]]></sourcecode>
            <t>An epoch expression array contains an <tt>epoch-operator</tt> followed by a grace period in seconds that is optionally followed
by a <tt>$tagged-epoch-id</tt>. Epoch operators can be: <tt>gt</tt>, <tt>ge</tt>, <tt>lt</tt>, or <tt>le</tt>. The operator defines the position of
the grace window relative to the epoch and <tt>epoch-grace-seconds</tt> defines the size of the window in seconds.
If the default epoch type is not used, <tt>$tagged-epoch-id</tt> defines the alternate epoch scheme.</t>
            <t>The <tt>$epoch-timestamp-type</tt> defines the timestamp type for the epoch scheme. By default, the timestamp is <tt>tdate</tt>.</t>
            <t>The <tt>tagged-epoch-expression</tt> is an <tt>epoch-expression</tt> preceded by a CBOR tag for an expression array that has
the value <tt>#6.60010</tt>.</t>
            <t>The epoch expression definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tagged-exp-epoch-gt = #6.60010([
    gt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-ge = #6.60010([
    ge .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-lt = #6.60010([
    lt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-le = #6.60010([
    le .within epoch-operator
    grace-period: epoch-seconds-type ])
]]></sourcecode>
            <t>A variety of epoch expressions can be defined that convenently constrain epoch definition.
The <tt>tagged-exp-epoch-gt</tt> expression defines an epoch window that is greater than the current date and time
by the supplied grace period.</t>
            <t>In <em>infix</em> notation, the timestamp value is within an epoch window that is defined by the current time,
plus the grace period, and where the <tt>epoch-operator</tt> defines the shape of the epoch window.</t>
            <t>Example epoch expression:</t>
            <ul spacing="normal">
              <li>
                <t>&lt;<tt>evidence_timestamp</tt>&gt; &lt;<tt>epoch-operator</tt>&gt; &lt;<tt>grace_period</tt>&gt; &lt;<tt>current_time</tt>&gt;</t>
              </li>
            </ul>
            <t>The Verifier adds <tt>grace_period</tt> to <tt>current_time</tt> to obtain the epoch window then applies the operator to
determine if the <tt>evidence_timestamp</tt> is within the window.</t>
          </section>
        </section>
        <section anchor="sec-mask-expression">
          <name>Mask Expression</name>
          <t>Reference Values expressed as an array of bits or bytes that uses a mask can indicate to a Verifier which
bits or bytes of Evidence to ignore.</t>
          <t>Reference Value and mask arrays <bcp14>MUST</bcp14> be the same length for the mask to be applied correctly.
Normally, Evidence would not supply a mask, while Endorsed Values would.
The <tt>mask-eq</tt> operator indicates that an Evidence value of type <tt>mask-type</tt> is compared with
a Reference Value of type <tt>mask-type</tt>, and that a mask of type <tt>mask-type</tt> is applied to both
values before comparing values. If the operator is <tt>mask-eq</tt>, then a binary equivalence comparison is applied.</t>
          <t>The Verifier <bcp14>MUST</bcp14> ensure the lengths of values and mask are equivalent. If the mask is shorter
than the values, the mask is padded with zeros (0) until it is the same length as the largest value.
If the Evidence or Reference Value length is shorter than the mask, the value is padded with
zeros (0) to the length of the mask.</t>
          <t>The masked data type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
mask-eq = 1
mask-operator = mask-eq
mask-type = bstr
mask-expression = [ mask-operator, value: mask-type, mask: mask-type ]
tagged-mask-expression = #6.60010( mask-expression )
]]></sourcecode>
          <t>If the Evidence bit field is a different length from the Reference Value and mask,
the shorter length bit field is padded with zeros to accommodate the larger bit field.</t>
          <t>The <tt>tagged-exp-mask-eq</tt> expression defines a tagged expression that applies the mask equivalence  operator to an Evidence value and a Reference Value using the supplied mask.</t>
          <t>In <em>infix</em> notation, the Evidence value is <em>operand_1</em>, followed by the mask operator, followed by a
Reference Value, <em>operand_2</em>, followed by the mask, <em>operand_3</em>.</t>
          <t>Example:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_value</tt>&gt; &lt;<tt>mask-eq</tt>&gt; &lt;<tt>reference_value</tt>&gt; &lt;<tt>mask</tt>&gt;</t>
            </li>
          </ul>
          <t>If each bit in Evidence has a corresponding matching bit in the Reference Value, then the Evidence
value is accepted.</t>
          <t>The masked data expression definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-exp-mask-eq = #6.60010([
    mask-eq .within mask-operator, 
    value: mask-type, mask: mask-type ] )
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-measurement-extensions">
        <name>Measurement Extensions</name>
        <t>This profile extends the CoMID <tt>measurement-values-map</tt> with additional code point definitions,
that accommodate Intel SGX and similar architectures.
Measurement extensions don't change Verifier behavior. An extension enables the Verifier to validate the profile compliance of the input evidence and reference values, as it defines the acceptable data types in evidence and the expression operator that is explicitly
supplied with the Reference Values, see <xref target="sec-expression-operators"/>.</t>
        <t>In cases where Evidence does not exactly match Reference Values, the operator definition determines the
expected data types of the operands.
Expected Verifier behavior is defined in <xref target="sec-intel-appraisal-algorithm"/></t>
        <section anchor="sec-tee-advisory-ids-type">
          <name>The tee-advisory-ids-type Measurement Extension</name>
          <t>The <tt>tee.advisory-ids</tt> extension allows the Attester to report known security advisories and a
Reference Values Provider (RVP) to assert updated security advisories.</t>
          <t>The <tt>$tee-advisory-ids-type</tt> is used to specify a set of security advisories, where each is identified by a string identifier.
Evidence may report a set of advisories the Attester believes are relevant. The set of advisories are constrained
by the <tt>set-of-set-type</tt> structure.</t>
          <t>A Reference Values expression record is defined for this extension that applies the disjoint set operation
to determine if there are advisories outstanding. If no advisories are outstanding, then the empty set signifies
successful matching.</t>
          <t>The <tt>$tee-advisory-ids-type</tt> is a list of advisories when used as Endorsements or Evidence and a disjoint set
of advisories when used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.advisory-ids: -89) => $tee-advisory-ids-type
)
$tee-advisory-ids-type /= set-type
$tee-advisory-ids-type /= tagged-exp-not-member
]]></sourcecode>
        </section>
        <section anchor="sec-tee-attributes-type">
          <name>The tee-attributes-type Measurement Extension</name>
          <t>The <tt>tee.attributes</tt> extension enables the Attester to report TEE attributes and an RVP to assert a reference
TEE attributes and mask.</t>
          <t>The <tt>$tee-attributes-type</tt> is used to specify TEE attributes in 8 or 16 byte words. If Evidence uses an 8 byte
mask, then the Reference Values expression also uses an 8 byte value and mask.</t>
          <t>The <tt>$tee-attributes-type</tt> is a singleton value omitting the mask value when used as Endorsement or Evidence
and a tuple containing the reference and mask when used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.attributes: -82) => $tee-attributes-type
)
$tee-attributes-type /= mask-type
$tee-attributes-type /= tagged-exp-mask-eq
]]></sourcecode>
        </section>
        <section anchor="sec-tee-cryptokey-type">
          <name>The tee-cryptokey-type Measurement Extension</name>
          <t>The <tt>tee.cryptokeys</tt> extension identifies cryptographic keys associated with a Target Environment.
If multiple <tt>$crypto-key-type-choice</tt> measurements are supplied, array position disambiguates each entry.
Appraisal compares values indexed by array position.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.cryptokeys: -91) => [ + $tee-cryptokey-type ]
)
$tee-cryptokey-type /= $crypto-key-type-choice
]]></sourcecode>
        </section>
        <section anchor="sec-tee-date-type">
          <name>The tee-date-type Measurement Extension</name>
          <t>The <tt>tee.tcbdate</tt> extension enables the Attester or Endorser to report the TEE date attribute
and a RVP to assert a valid TEE matching operation.</t>
          <t>The <tt>$tee-date-type</tt> is a date-time string when used for Evidence or Endorsement.
When used for a Reference Value, either a <tt>tagged-tdate-expression</tt> or a <tt>tagged-epoch-expression</tt> describes
the TCB validity.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.tcbdate: -72) => $tee-date-type
)
$tee-date-type /= tdate
$tee-date-type /= tagged-exp-tdate-ge
$tee-date-type /= tagged-exp-epoch-ge
]]></sourcecode>
          <t><tt>tdate</tt> strings must be converted to numeric <tt>time</tt> before the <tt>tdate-operator</tt>, which is a numeric operator,
can be applied.</t>
        </section>
        <section anchor="sec-tee-digest-type">
          <name>The tee-digest-type Measurement Extension</name>
          <t>The <tt>tee.mrenclave</tt> and <tt>tee.mrsigner</tt> extensions enable the Attester to report digests for the SGX enclave,
a.k.a., Target Environment, and the signer, a.k.a., Attesting Environment, of the enclave digest.</t>
          <t>The <tt>$tee-digest-type</tt> is a record that contains the hash algorithm identifier and the digest value when used
as Evidence.
When used as Reference Values, a set of digests can be asserted. The Evidence digest record must be a member
of the Reference Values set.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.mrtee: -83) => $tee-digest-type
)
$$measurement-values-map-extension //= (
  &(tee.mrsigner: -84) => $tee-digest-type
)
$tee-digest-type /= digest
$tee-digest-type /= [ + digest ]
$tee-digest-type /= tagged-exp-member
]]></sourcecode>
        </section>
        <section anchor="sec-tee-epoch-type">
          <name>The tee-epoch-type Measurement Extension</name>
          <t>The <tt>tee.epoch</tt> extension enables the Attester to report an epoch Evidence measurement,
and a RVP to assert an epoch Reference Value.</t>
          <t>As Evidence, the <tt>$tee-epoch-type</tt> is a <tt>tdate</tt> timestamp.</t>
          <t>As a Reference Value, the <tt>$tee-epoch-type</tt> is a grace period, in seconds, that is relative to the
Verifier's current date and time, and an epoch operator: <tt>gt</tt>, <tt>ge</tt>, <tt>lt</tt>, or <tt>le</tt>.
The Verifier evaluates whether the timestamp is within the grace period relative to the current date and time.
The current date and time is implicit, and is assumed to be in <tt>tdate</tt> format.</t>
          <t>The <tt>$tee-epoch-type</tt> is an <tt>$epoch-timestamp-type</tt> when used as Evidence or Endorsement
and a <tt>$tagged-epoch-expression</tt> when used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.epoch: -90) => $tee-epoch-type
)
$tee-epoch-type /= $epoch-timestamp-type
$tee-epoch-type /= tagged-exp-epoch-gt
]]></sourcecode>
        </section>
        <section anchor="sec-tee-instance-id-type">
          <name>The tee-instance-id-type Measurement Extension</name>
          <t>The <tt>tee.instance-id</tt> extension enables the Attester to report the (TBD:instance-id-description) Evidence value
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-instance-id-type</tt> is an unsigned integer.</t>
          <t>The <tt>$tee-instance-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.instance-id: -77) => $tee-instance-id-type
)
$tee-instance-id-type /= uint
$tee-instance-id-type /= bstr
]]></sourcecode>
        </section>
        <section anchor="sec-tee-isvprodid-type">
          <name>The tee-isvprodid-type Measurement Extension</name>
          <t>The <tt>tee.isvprodid</tt> extension enables the Attester to report the ISV product identifier Evidence value
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-isvprodid-type</tt> is an unsigned integer.</t>
          <t>The <tt>$tee-isvprodid-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.isvprodid: -85) => $tee-isvprodid-type
)
$tee-isvprodid-type /= uint
$tee-isvprodid-type /= bstr
]]></sourcecode>
        </section>
        <section anchor="sec-tee-miscselect-type">
          <name>The tee-miscselect-type Measurement Extension</name>
          <t>The <tt>tee.miscselect</tt> extension enables the Attester to report the (TBD:miscselect-description) Evidence value
and the RVP to assert a Reference Value and mask.</t>
          <t>The <tt>$tee-miscselect-type</tt> is a 4 byte value and mask.</t>
          <t>The <tt>$tee-miscselect-type</tt> is a singleton <tt>mask-type</tt> value when used as Endorsement or Evidence
and a <tt>tagged-mask-expression</tt> when used a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.miscselect: -81) => $tee-miscselect-type
)
$tee-miscselect-type /= mask-type
$tee-miscselect-type /= tagged-exp-mask-eq
]]></sourcecode>
        </section>
        <section anchor="sec-tee-model-type">
          <name>The tee-model-type Measurement Extension</name>
          <t>The <tt>tee.model</tt> extension enables the Attester to report the TEE model string as Evidence
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-model-type</tt> is a string.</t>
          <t>The <tt>$tee-model-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.model: -71) => $tee-model-type
)
$tee-model-type /= tstr
]]></sourcecode>
        </section>
        <section anchor="sec-tee-pceid-type">
          <name>The tee-pceid-type Measurement Extension</name>
          <t>The <tt>tee.pceid</tt> extension enables the Attester to report the (TBD:pceid-description) as Evidence
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-pceid-type</tt> is a string.</t>
          <t>The <tt>$tee-pceid-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.pceid: -80) => $tee-pceid-type
)
$tee-pceid-type /= tstr
]]></sourcecode>
        </section>
        <section anchor="sec-tee-svn-type">
          <name>The tee-svn-type Measurement Extension</name>
          <t>The <tt>tee.isvsvn</tt> extension enables the Attester to report the SVN for the independent software vendor supplied
component as Evidence and the RVP to assert a Reference Value that is greater-than-or-equal to the reported SVN.</t>
          <t>The <tt>$tee-svn-type</tt> is either an unsigned integer when reported as Evidence, or a tagged numeric expression
that contains an SVN and a numeric greater-than-or-equal operator. The Verifier ensures the Evidence value is
greater-that-or-equal to the Reference Value.</t>
          <t>The <tt>$tee-svn-type</tt> is a numeric when used as Endorsement or Evidence and a <tt>tagged-numeric-expression</tt> when
used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.isvsvn: -73) => $tee-svn-type
)
$tee-svn-type /= numeric-type
$tee-svn-type /= tagged-numeric-ge
]]></sourcecode>
        </section>
        <section anchor="sec-tee-tcb-comp-svn-type">
          <name>The tee-tcb-comp-svn-type Measurement Extension</name>
          <t>The <tt>tee.tcb-comp-svn</tt> extension enables the Attester to report an array of SVN values for the TCB when asserted
as Evidence and an array of <tt>tagged-numeric-ge</tt> entries when asserted as a Reference Value.</t>
          <t>The <tt>$tee-tcb-comp-svn-type</tt> is an array containing 16 SVN values when reported as Evidence and an array of 16
expression records each containing the numeric <tt>ge</tt> operator and a reference SVN value.
The Verifier evaluates each SVN in the Evidence array with the corresponding reference expression,
by array position.
If all Evidence values match their respective expressions, evaluation is successful.
The array of SVN Evidence is accepted.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.tcb-comp-svn: -125) => $tee-tcb-comp-svn-type
)
$tee-tcb-comp-svn-type /= 
  [ 16*16 svn-type .within numeric-type ]
$tee-tcb-comp-svn-type /= 
  [ 16*16 tagged-numeric-ge ]
]]></sourcecode>
        </section>
        <section anchor="sec-tee-tcb-eval-num-type">
          <name>The tee-tcb-eval-num-type Measurement Extension</name>
          <t>The <tt>tee.tcb-eval-num</tt> extension enables the Attester to report a (TBD:tcb-eval-num-description)
as Evidence and the RVP to assert a Reference Value expression that compares the (TBD:tcb-eval-num-description) Evidence
to the Reference Value (TBD:tcb-eval-num-description) using the greater-than-or-equal operator.</t>
          <t>The <tt>$tee-tcb-eval-num-type</tt> is an unsigned integer when reported as Evidence and a tagged numeric expression when
asserted as Reference Values.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee-tcb-eval-num: -86) => $tee-tcb-eval-num-type
)
$tee-tcb-eval-num-type /= uint .within numeric-type
$tee-tcb-eval-num-type /= tagged-numeric-ge
]]></sourcecode>
        </section>
        <section anchor="sec-tee-tcbstatus-type">
          <name>The tee-tcbstatus-type Measurement Extension</name>
          <t>The <tt>tee.tcb-status</tt> extension enables the Attester to report the status of the TEE trusted computing base (TCB) as
an array of status strings, as Evidence, and the RVP to assert an array of status arrays as Reference Values where
the Evidence array is a subset of the reference status arrays.</t>
          <t>The <tt>$tee-tcbstatus-type</tt> is a status array with a set expressions containing the <tt>subset</tt> operator when used as Evidence.
When used as a Reference Value it is an array of status arrays.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.tcbstatus: -88) => $tee-tcbstatus-type
)
$tee-tcbstatus-type /= set-type
$tee-tcbstatus-type /= tagged-exp-member
]]></sourcecode>
        </section>
        <section anchor="sec-tee-vendor-type">
          <name>The tee-vendor-type Measurement Extension</name>
          <t>The <tt>tee.vendor</tt> extension enables the Attester to report the TEE vendor name as Evidence and for the RVP to assert
the TEE vendor name.</t>
          <t>The <tt>$tee-vendor-type</tt> is a string containing the vendor name as a string. The vendor string in Evidence must
exactly match the vendor string in Reference Values.</t>
          <t>The <tt>$tee-vendor-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.vendor: -70) => $tee-vendor-type
)
$tee-vendor-type /= tstr
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-intel-evidence-profile">
      <name>Intel Evidence Profile</name>
      <t>Evidence may be integrity protected in various ways including: certificates <xref target="RFC5280"/>, SPDM transcript <xref target="DMTF.SPDM"/>, and CBOR web token (CWT) <xref target="RFC8392"/>.
Evidence contained in a certificate may be encoded using <tt>DiceTcbInfo</tt> and <tt>DiceTcbInfoSeq</tt> <xref target="DICE.Attest"/>. Evidence contained in an SPDM payload may
be encoded using the SPDM <tt>Measurement Block</tt> <xref target="DMTF.SPDM"/>. Evidence may be formatted as <tt>concise-evidence</tt> <xref target="TCG.concise-evidence"/> and
included in an alias certificate or an SPDM Measurement Manifest.</t>
      <t>The <tt>DiceTcbInfo</tt> and SPDM Evidence formats can be translated to CoMID.
The concise evidence format is native to CoMID.
This profile documents evidence mapping from <tt>DiceTcbInfo</tt> and SPDM <tt>Measurement Block</tt> to CoMID, as defined by <xref target="DICE.CoRIM"/>.</t>
      <t>The CoMID extensions defined by this profile, see <xref target="sec-measurement-extensions"/>, are applied to <tt>concise-evidence</tt> so that
Verifiers that support this profile can consistently apply a common schema across Evidence, Reference Values, and Endorsements.</t>
      <section anchor="sec-evidence-hierarchy">
        <name>Evidence Hierarchy</name>
        <t>Evidence hierarchy refers to SGX layering where the SGX Platform Certification Enclave (PCE) collects measurements of the
Quoting Enclave (QE) and the Quoting Enclaves collect measurments of their respective ISV enclaves (ISVE).
A hierarchy of Evidence consisting of one PCE Evidence, one QE Evidence and one ISVE Evidence.</t>
        <t>A complex device may have multiple roots of trust, such as <xref target="DICE.engine"/>, each contributing an evidence hierarchy that results in
several Evidence "chains", that together, constitute a complete Evidence hierarchy for the Attester device.</t>
        <t>The Evidence hierarchy should form a spanning tree that contains all Attester Evidence. All Attesting Environments
within the device produce the spanning tree. CoRIM manifests contain Reference Values for the spanning tree so that
Verifiers do not assume the spanning tree is defined by Evidence.
Note that a failure or comporomise within the Attester device could result in a portion of the spanning tree being omitted.</t>
        <t>Example spanning tree:</t>
        <ul spacing="normal">
          <li>
            <t>A DICE certificate chain with a DiceTcbInfo extension, a DiceTcbInfoSeq extension, and a <tt>ConceptualMessageWrapper</tt> (CMW)
<xref target="I-D.ietf-rats-msg-wrap"/> extension containing a CBOR-encoded <tt>tagged-concise-evidence</tt>.</t>
          </li>
          <li>
            <t>An SPMD alias intermediate certification chain containing a CMW extension, and an SPDM measurement manifest containing
<tt>tagged-concise-evidence</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-concise-evidence">
        <name>Concise Evidence</name>
        <t>Concise evidence is a CDDL representation of Evidence that is derived from CoMID and CoSWID <xref target="RFC9393"/>.
Evidence describes the actual state of the Attester.
<tt>tagged-concise-evidence</tt> uses a CBOR tag to identify <tt>concise-evidence</tt> <xref target="TCG.concise-evidence"/>.
This profile is compatible with <tt>tagged-concise-evicence</tt>.
CoRIM extensions, defined by this profile, are used by <tt>tagged-concise-evidence</tt> by extending <tt>measurement-values-map</tt>.</t>
        <t>The <tt>concise-evidence</tt> structure is defined as follows:</t>
        <sourcecode type="cddl"><![CDATA[
tagged-concise-evidence = #6.571(concise-evidence-map)
concise-evidence = concise-evidence-map
concise-evidence-map = {
  &(ce.ev-triples: 0) => ev-triples-map
  ? &(ce.evidence-id: 1) => $evidence-id-type-choice
  * $$concise-evidence-map-extension
}
$evidence-id-type-choice /= tagged-uuid-type
; additional evidence identifier types may be added here

ev-triples-map = non-empty< {
  ? &(ce.evidence-triples: 0) => [ + reference-triple-record ]
  ? &(ce.identity-triples: 1) => [ + identity-triple-record ]
  ? &(ce.dependency-triples: 2) => [ + domain-dependency-triple-record ]
  ? &(ce.domain-membership-triples: 3) => [ + domain-membership-triple-record ]
  ? &(ce.coswid-triples: 4) => [ + ev-coswid-triple-record ]
  ? &(ce.attest-key-triples: 5) => [ + attest-key-triple-record ]
  * $$ev-triples-map-extension
} > 

ev-coswid-triple-record = [ 
  environment-map, 
  [ + ev-coswid-evidence-map ]
]

ev-coswid-evidence-map = { 
  ? &(ce.coswid-tag-id: 0) => concise-swid-tag-id
    &(ce.coswid-evidence: 1) => evidence-entry
  ? &(ce.authorized-by: 2) => [ + $crypto-key-type-choice ] ; see comid schema
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="sec-intel-appraisal-algorithm">
      <name>Intel Appraisal Algorithm</name>
      <t>The Intel profile anticipates appraisal algorithms will be based on the appraisal algorithm defined in <xref target="I-D.ietf-rats-corim"/>.
This profile extends the appraisal algorithm to recognize profile extensions that form equations.
An Evidence measurement forms one of the operands: (evidence operand).
A Reference Value forms the operator and remaining operands: [(expression operator), (reference value operand), ...].
For example, if a numeric reference value is 14, and the expressions operator is <tt>gt</tt> the Reference Value might contain the Claim: <tt>#6.60010([ 1, 14])</tt>.
Evidence might contain the measurement: '15'.
In infix construction, the equation would be: (<tt>15</tt>) (<tt>gt</tt>) (<tt>14</tt>).
The Verifier evaluates whether <tt>15</tt> is greater-than <tt>14</tt>.</t>
      <section anchor="sec-complex-expressions">
        <name>Complex Expressions</name>
        <t>Complex expressions can be used to assess whether the Target Environment is in a particular state before certain Endorsement claims can be asserted.
For example, if an SGX enclave has an <tt>svn</tt> value that is less than the prescribed minimum svn, the enclave status may be
considered "OutOfDate" or may have a known security advisory. The CoMID <tt>conditional-endorsement-triples</tt> or
<tt>conditional-endorsement-series-triples</tt> describe complex Endorsement expressions.</t>
        <t>This profile uses these triples with the reference measurement values extensions described in <xref target="sec-measurement-extensions"/>.</t>
      </section>
    </section>
    <section anchor="sec-intel-reporting-attestation-results">
      <name>Reporting Attestation Results</name>
      <t>Attestation verification can be performed by a pipeline consisting of multiple stages where each input manifest demarks a stage.
The final stage prepares Attestation Results according to Relying Party specifications.
This profile does not define an attestation results format.
The Relying Party should specify suitable Attestation Results formats such as <xref target="I-D.ietf-rats-ar4si"/> or <xref target="I-D.kdyxy-rats-tdx-eat-profile"/>.</t>
      <t>The precise Attestation Results format used, if negotiated by Verifier and Relying Party, should reference this profile to acknowledge
that the Relying Party and Verifier both support the extensions defined in this document.</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>The security of this profile depends on the security considerations of the various normative references.</t>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <t>This document uses the IANA CBOR tag registry. See <xref target="IANA.CBOR"/></t>
      <t>The following CBOR tag has been assigned:</t>
      <ul spacing="normal">
        <li>
          <t>CBOR tag: 60010</t>
        </li>
        <li>
          <t>Data item: array</t>
        </li>
        <li>
          <t>Semantics: a CBOR encoded array</t>
        </li>
        <li>
          <t>Point of contact: ned.smith&amp;intel.com</t>
        </li>
        <li>
          <t>Description of semantics: this document</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-rats-corim">
          <front>
            <title>Concise Reference Integrity Manifest</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>arm</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>arm</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether to engage in secure interactions with it.  Evidence about
   trustworthiness can be rather complex and it is deemed unrealistic
   that every Relying Party is capable of the appraisal of Evidence.
   Therefore that burden is typically offloaded to a Verifier.  In order
   to conduct Evidence appraisal, a Verifier requires not only fresh
   Evidence from an Attester, but also trusted Endorsements and
   Reference Values from Endorsers and Reference Value Providers, such
   as manufacturers, distributors, or device owners.  This document
   specifies the information elements for representing Endorsements and
   Reference Values in CBOR format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-04"/>
        </reference>
        <reference anchor="DICE.CoRIM" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-Endorsement-Architecture-for-Devices-V1-R38_pub.pdf">
          <front>
            <title>DICE Endorsement Architecture for Devices</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2022" month="November"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.38" value=""/>
        </reference>
        <reference anchor="DICE.Attest" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-18_pub.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="Version 1.1, Revision 18" value=""/>
        </reference>
        <reference anchor="DICE.layer" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Layering-Architecture-r19_pub.pdf">
          <front>
            <title>DICE Layering Architecture</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.19" value=""/>
        </reference>
        <reference anchor="TCG.concise-evidence" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-DICE-Concise-Evidence-Binding-for-SPDM-Version-1.0-Revision-54_pub.pdf">
          <front>
            <title>TCG DICE Concise Evidence Binding for SPDM</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.54" value=""/>
        </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>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <date day="13" month="June" year="2024"/>
            <abstract>
              <t>   This document defines the RATS conceptual message wrapper (CMW)
   format, a type of encapsulation format that can be used for any RATS
   messages, such as Evidence, Attestation Results, Endorsements, and
   Reference Values.  Additionally, the document describes a collection
   type that enables the aggregation of one or more CMWs into a single
   message.

   This document also defines corresponding CBOR tag, JSON Web Tokens
   (JWT) and CBOR Web Tokens (CWT) claims, as well as an X.509
   extension.  These allow embedding the wrapped conceptual messages
   into CBOR-based protocols, web APIs, and PKIX protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-05"/>
        </reference>
        <reference anchor="RFC9393">
          <front>
            <title>Concise Software Identification Tags</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay"/>
            <author fullname="C. Schmidt" initials="C." surname="Schmidt"/>
            <author fullname="D. Waltermire" initials="D." surname="Waltermire"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles. SWID tag representations can be too large for devices with network and storage constraints. This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags. CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9393"/>
          <seriesInfo name="DOI" value="10.17487/RFC9393"/>
        </reference>
        <reference anchor="IANA.CBOR" target="https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>Internet Assigned Numbers Authority (IANA)</organization>
            </author>
            <date year="2013" month="September"/>
          </front>
        </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>
      </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="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="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="I-D.birkholz-rats-epoch-markers">
          <front>
            <title>Epoch Markers</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="24" month="April" year="2024"/>
            <abstract>
              <t>   This document defines Epoch Markers as a way to establish a notion of
   freshness among actors in a distributed system.  Epoch Markers are
   similar to "time ticks" and are produced and distributed by a
   dedicated system, the Epoch Bell.  Systems that receive Epoch Markers
   do not have to track freshness using their own understanding of time
   (e.g., via a local real-time clock).  Instead, the reception of a
   certain Epoch Marker establishes a new epoch that is shared between
   all recipients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-epoch-markers-07"/>
        </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="4" month="March" 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-06"/>
        </reference>
        <reference anchor="DMTF.SPDM" target="https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.2.1.pdf">
          <front>
            <title>Security Protocol and Data Mmodel (SPDM) Specification</title>
            <author>
              <organization>Distributed Managability Task Force (DMTF)</organization>
            </author>
            <date year="2022" month="May"/>
          </front>
          <seriesInfo name="Version 1.2.1" value=""/>
        </reference>
        <reference anchor="DICE.engine" target="https://trustedcomputinggroup.org/wp-content/uploads/Hardware-Requirements-for-Device-Identifier-Composition-Engine-r78_For-Publication.pdf">
          <front>
            <title>Requirements for a Device Identifier Composition Engine</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2018" month="March"/>
          </front>
          <seriesInfo name="Family &quot;2.0&quot;, Level 00 Revision 78" value=""/>
        </reference>
        <reference anchor="I-D.kdyxy-rats-tdx-eat-profile">
          <front>
            <title>EAT profile for Intel® Trust Domain Extensions (TDX) attestation result</title>
            <author fullname="Greg Kostal" initials="G." surname="Kostal">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Sindhuri Dittakavi" initials="S." surname="Dittakavi">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Raghuram Yeluri" initials="R." surname="Yeluri">
              <organization>Intel</organization>
            </author>
            <author fullname="Haidong Xia" initials="H." surname="Xia">
              <organization>Intel</organization>
            </author>
            <author fullname="Jerry Yu" initials="J." surname="Yu">
              <organization>Intel</organization>
            </author>
            <date day="23" month="April" year="2024"/>
            <abstract>
              <t>   Intel® Trust Domain Extensions (TDX) introduce architectural elements
   designed for the deployment of hardware-isolated virtual machines
   (VMs) known as trust domains (TDs).  TDX is designed to provide a
   secure and isolated environment for running sensitive workloads or
   applications.  This Entity Attestation Token (EAT) profile outlines
   claims for an Intel TDX attestation result which facilitate the
   establishment of trust between a relying party and the environment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kdyxy-rats-tdx-eat-profile-01"/>
        </reference>
        <reference anchor="I-D.ietf-rats-endorsements">
          <front>
            <title>RATS Endorsements</title>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
         </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="12" month="June" year="2024"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture, a
   Verifier accepts Evidence and, using Appraisal Policy typically with
   additional input from Endorsements and Reference Values, generates
   Attestation Results in formats needed by a Relying Parties.  This
   document explains the purpose and role of Endorsements and discusses
   some considerations in the choice of message format for Endorsements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-01"/>
        </reference>
      </references>
    </references>
    <?line 1119?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors wish to thank Shanwei Cen for valuable contributions.</t>
    </section>
    <section anchor="full-intel-profile-cddl">
      <name>Full Intel Profile CDDL</name>
      <sourcecode type="cddl"><![CDATA[
tagged-numeric-gt = #6.60010( [
    greater-than: gt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-ge = #6.60010( [
    greater-than: ge .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-lt = #6.60010( [
    greater-than: lt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-le = #6.60010( [
    greater-than: le .within numeric-operator,
    reference-value: numeric-type ] )

gt = 1
ge = 2
lt = 3
le = 4
numeric-type = integer / unsigned / float
numeric-operator = gt / ge / lt / le
numeric-expression = [ numeric-operator, numeric-type ]
tagged-numeric-expression = #6.60010(numeric-expression)

member = 6
not-member = 7

set-type = [ * any ]
set-operator = member / not-member
set-expression = [ set-operator, set-type ]
tagged-set-expression = #6.60010( set-expression )

tagged-exp-member = #6.60010([
    member .within set-operator, set-type ])
    
tagged-exp-not-member = #6.60010([
    not-member .within set-operator, set-type ])

subset = 8
superset = 9
disjoint = 10
set-of-set-type = [ * [ + any ]]
set-of-set-operator = subset / superset / disjoint
set-of-set-expression = [ set-of-set-operator, set-of-set-type ]
tagged-set-of-set-expression = #6.60010(set-of-set-expression)

tagged-exp-subset = #6.60010([
    subset .within set-of-set-operator, set-of-set-type ])

tagged-exp-superset = #6.60010([
    superset .within set-of-set-operator, set-of-set-type ])
    
tagged-exp-disjoint = #6.60010([
    disjoint .within set-of-set-operator, set-of-set-type ])

mask-eq = 1
mask-operator = mask-eq
mask-type = bstr
mask-expression = [ mask-operator, value: mask-type, mask: mask-type ]
tagged-mask-expression = #6.60010( mask-expression )

tagged-exp-mask-eq = #6.60010([
    mask-eq .within mask-operator, 
    value: mask-type, mask: mask-type ] )

tagged-exp-tdate-gt = #6.60010([ 
    gt .within tdate-operator,
    tdate ])

tagged-exp-tdate-ge = #6.60010([ 
    ge .within tdate-operator,
    tdate ])

tagged-exp-tdate-lt = #6.60010([
    lt .within tdate-operator,
    tdate ])

tagged-exp-tdate-le = #6.60010([
    le .within tdate-operator,
    tdate ])

tdate-operator = numeric-operator ; converts tdate to numeric
tdate-expression = [ tdate-operator, tdate ] ;#6.0(string)
tagged-tdate-expression = #6.60010( tdate-expression )

tagged-exp-time-gt = #6.60010([ 
    gt .within time-operator,
    time ])

tagged-exp-time-ge = #6.60010([ 
    ge .within time-operator,
    time ])

tagged-exp-time-lt = #6.60010([
    lt .within time-operator,
    time ])

tagged-exp-time-le = #6.60010([
    le .within time-operator,
    time ])

time-operator = numeric-operator
time-expression = [ time-operator, time ] ;#6.1(number)
tagged-time-expression = #6.60010( time-expression )

tagged-exp-epoch-gt = #6.60010([
    gt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-ge = #6.60010([
    ge .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-lt = #6.60010([
    lt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-le = #6.60010([
    le .within epoch-operator
    grace-period: epoch-seconds-type ])

epoch-operator = numeric-operator
epoch-seconds-type = int
epoch-expression = [ 
    epoch-operator,
    grace-period: epoch-seconds-type,
    ? $tagged-epoch-id
]
tagged-epoch-expression = #6.60010( epoch-expression )
$tagged-epoch-id /= tdate
$epoch-timestamp-type /= $tagged-epoch-id

$$measurement-values-map-extension //= (
  &(tee.advisory-ids: -89) => $tee-advisory-ids-type
)
$tee-advisory-ids-type /= set-type
$tee-advisory-ids-type /= tagged-exp-not-member

$$measurement-values-map-extension //= (
  &(tee.attributes: -82) => $tee-attributes-type
)
$tee-attributes-type /= mask-type
$tee-attributes-type /= tagged-exp-mask-eq

$$measurement-values-map-extension //= (
  &(tee.cryptokeys: -91) => [ + $tee-cryptokey-type ]
)
$tee-cryptokey-type /= $crypto-key-type-choice

$$measurement-values-map-extension //= (
  &(tee.tcbdate: -72) => $tee-date-type
)
$tee-date-type /= tdate
$tee-date-type /= tagged-exp-tdate-ge
$tee-date-type /= tagged-exp-epoch-ge

$$measurement-values-map-extension //= (
  &(tee.mrtee: -83) => $tee-digest-type
)
$$measurement-values-map-extension //= (
  &(tee.mrsigner: -84) => $tee-digest-type
)
$tee-digest-type /= digest
$tee-digest-type /= [ + digest ]
$tee-digest-type /= tagged-exp-member

$$measurement-values-map-extension //= (
  &(tee.epoch: -90) => $tee-epoch-type
)
$tee-epoch-type /= $epoch-timestamp-type
$tee-epoch-type /= tagged-exp-epoch-gt

$$measurement-values-map-extension //= (
  &(tee.instance-id: -77) => $tee-instance-id-type
)
$tee-instance-id-type /= uint
$tee-instance-id-type /= bstr

$$measurement-values-map-extension //= (
  &(tee.isvprodid: -85) => $tee-isvprodid-type
)
$tee-isvprodid-type /= uint
$tee-isvprodid-type /= bstr

$$measurement-values-map-extension //= (
  &(tee.miscselect: -81) => $tee-miscselect-type
)
$tee-miscselect-type /= mask-type
$tee-miscselect-type /= tagged-exp-mask-eq

$$measurement-values-map-extension //= (
  &(tee.model: -71) => $tee-model-type
)
$tee-model-type /= tstr

$$measurement-values-map-extension //= (
  &(tee.pceid: -80) => $tee-pceid-type
)
$tee-pceid-type /= tstr

$$measurement-values-map-extension //= (
  &(tee.isvsvn: -73) => $tee-svn-type
)
$tee-svn-type /= numeric-type
$tee-svn-type /= tagged-numeric-ge

$$measurement-values-map-extension //= (
  &(tee.tcb-comp-svn: -125) => $tee-tcb-comp-svn-type
)
$tee-tcb-comp-svn-type /= 
  [ 16*16 svn-type .within numeric-type ]
$tee-tcb-comp-svn-type /= 
  [ 16*16 tagged-numeric-ge ]

$$measurement-values-map-extension //= (
  &(tee-tcb-eval-num: -86) => $tee-tcb-eval-num-type
)
$tee-tcb-eval-num-type /= uint .within numeric-type
$tee-tcb-eval-num-type /= tagged-numeric-ge

$$measurement-values-map-extension //= (
  &(tee.tcbstatus: -88) => $tee-tcbstatus-type
)
$tee-tcbstatus-type /= set-type
$tee-tcbstatus-type /= tagged-exp-member

$$measurement-values-map-extension //= (
  &(tee.vendor: -70) => $tee-vendor-type
)
$tee-vendor-type /= tstr

]]></sourcecode>
      <sourcecode type="cddl"><![CDATA[
tagged-concise-evidence = #6.571(concise-evidence-map)
concise-evidence = concise-evidence-map
concise-evidence-map = {
  &(ce.ev-triples: 0) => ev-triples-map
  ? &(ce.evidence-id: 1) => $evidence-id-type-choice
  * $$concise-evidence-map-extension
}
$evidence-id-type-choice /= tagged-uuid-type
; additional evidence identifier types may be added here

ev-triples-map = non-empty< {
  ? &(ce.evidence-triples: 0) => [ + reference-triple-record ]
  ? &(ce.identity-triples: 1) => [ + identity-triple-record ]
  ? &(ce.dependency-triples: 2) => [ + domain-dependency-triple-record ]
  ? &(ce.domain-membership-triples: 3) => [ + domain-membership-triple-record ]
  ? &(ce.coswid-triples: 4) => [ + ev-coswid-triple-record ]
  ? &(ce.attest-key-triples: 5) => [ + attest-key-triple-record ]
  * $$ev-triples-map-extension
} > 

ev-coswid-triple-record = [ 
  environment-map, 
  [ + ev-coswid-evidence-map ]
]

ev-coswid-evidence-map = { 
  ? &(ce.coswid-tag-id: 0) => concise-swid-tag-id
    &(ce.coswid-evidence: 1) => evidence-entry
  ? &(ce.authorized-by: 2) => [ + $crypto-key-type-choice ] ; see comid schema
}
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963Ibx5Xw/3mK/mTXiuQCoEDJtsREzlKkbCtlXSIydlIu
lTEAGuBEgxl4ZkAacSnPss+yT7bn1tcZkKAuKWs/+YdF9PT19Ln36dP9fj9p
sibXh+pJ0ehcvajKWZZrNSsrdVy+fPI0ScfjSl8cqltcYckVbiWTtNHzslof
qqyYlUkyLSdFuoCOplU6a/qTad2v0qbuZ9isPymrbNGXxv07B0m9Gi+yus7K
olkvcfjHZ98o9ZlK87qEwbJiqpca/lc0t3ow9tEj+AfmdOvJy7NvbiXFajHW
1WEyhUkcJpOyqHVRr+pD1VQrncBs7yZppVPo6FRPVlXWrG8ll2X1el6VqyWU
vtSLstHq6KzRdZM2MAtc+URPV5U+vZW81muoPT1MVF+lja2DP2UJ+CetKbnQ
xQrmoNSWfSvFC771I8wnK+bqW2yH5Ys0y6EcofZfmW5mg7KaY3laTc6h/Lxp
lvXh/j5Ww6LsQg9MtX0s2B9X5WWt97GDfWw4z5rz1RiaFnq6qBfwa//6zcGG
eYpz98a0HQy4z0FWbtHVFlUG580iv5UkAKli+nOalwWAZq3rZJkhTKsZwK1u
1rmUAvDKifdnRhhiCuqyaio9q+3v9SL42VTZxFaelIsFtLVfG/1r08+zuulD
s3GZw4d+ufef8AUwe5Eul7BXXDdJV815CdjXB9SHan8eqEc6LfQa6s5Wec5k
8Gf4f61OvG+wT2mR/ZNQwtDbcVkty0qwS2lGgX9g08F0MKaW/0VgG8B8zYBH
A3VSpUtdBQMeFdNKX7ovWw+XUsPBlBq2R/thoE4naQU4kQbj/ZAVEwCgehl8
33rUC24+qAa1tG4P/Qy6RqwLxn2mp7Z069EAgQeEwN4gSVFWC6h3QeT7pH9C
5MSoSkh6KCSu1MmT48cD4odYVak+sLlsovvmO6APc1GsqB4X07KqNaKXOkJK
bfSkAeonrnqiL6BlTY0MIin6DxZzqM6qVd3ACo/LxXLVWP6gds6Ov92lirWu
Ml0j04U90BWyUDUc3Ompl9Az/bozuHufqhJ7VM/KC43sUh3cOTjgyabVXAMl
GPJueNCJGZNYGfGVyyWsESBWNPurZV6m03ofJtL3Vtj3V9iHFfZlhf0fhv2X
d+//vAR2sZzODBSPiJ+GYGQe24LjkWO9ARzfN+yGHuyGPuT+nBartFoj4O69
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
Y7bKUX1zv0wYh4SL1FYZwHEGFmyWtLsAtxESVwOwBW88brzhzCzBbbmljmGb
SRXXrSax+3o94K6i17c1PFF+WtqNZKeUB3LzWnLaTcKuLS9odS5fbtp9LP09
DhMNYb/cdAhrwOHhR4cFh6cUkQlHbnN7YNLRxh5vRA1P7LGHnCI5Iw1mPC7B
OsAbr0Bnowb7GKF9ZtwNI2w4MnH5LeeyJxqN7Wi0uxn7UmVob0rW/5yDOHdn
NHV8SNN26KJn2dzEad+SNA0Htn/91v0jI0M3dafnuGus+Ya1pJvGii4WbTPE
huVsN8QNVrTpII7PJBSdngh+DAI8zIqLMr+gSBtGqPi4zl7ao9jXqmHHoME1
RjL4PCsliMF8cdfNEneYJkeiFEg3jbz5buCbqhlEQJ5mELtokojCSA8IGvXo
p3ql/gDcYrjD5zLWUdRu7syx+Nuui6BrAfTG66KmVyxM/cHsCtDAlAIG7NZI
63jVQZc9acXrBmWGZuzW3e7BW3j80Vt5Jw9hn7f4CgAuzN5c4HF4hZFDP8Jz
igC3IyM2QltjK8zBFvDmaE9zWw3CICk/e8TVlCe+a3fvPOo2i0LL5Pg56rKX
tI8gbHtzvc2uSf++1mTPDN/H4vLfwYbZ09D3sqDfwW61j3ffcWVPio5DmfaK
Ko23btjX5qKkisB9eF1Yp3fQKByj+xqz78D02rir1L643HC4g1V+Ju0Jjel5
bFN7nzeJrnfRuEmUhGc9Pyk+jHDaaii2JP3ToqVic1+6qy/9Vn3lHap0/nbT
Cs9bpKutZrVZtL4T3KmbawEfSk6eF0vPaI3c3XWwv1l314H/hr1dswNX9WbM
oM/UY4q16ggSpwxwoUFzZEKz4o3SQti4nZdZMS0v5T4Wq4rmINqFhWFQV9EU
qPaT0kDbXzdAz3i9fAHl6RxI3A89im6NT1ZVRfkbsCWmqMgmWUNXp2Q+hYkO
OwI5l7oYMlPBxo+ZGU+zGfEIvNXVY68Jelft8RwNRXNkbXqG13UNsOmMDvhl
RqfO2C0GEuP9cz5OKzlLCLJCb+IDvBwX5NqzKXpqEyZpgndoqjdVPrnvq7Rq
riFL9eJlkhgBSPMkLAo77clJK4C4zyA26QP9TrnWn9TnBo2pRjZNrJOuYzyn
p7Y+7iZxT3QPBvE7+ZyL7HbxquBza3A+denA6iC+hpBpFK56FGmuAYo53LHh
M+XSXJiyDRNqOIonNRoITXqBmERGh6QI90h17JGORVGtqJsMVDuAX1DcixKl
IGaeqKB8Zzwle+F5OrytsphR0HGNqcrkEFC6c+u2Co2JGOOeJWqHws5WlAui
vfxgkDTHrJvItLgDSlZl7YLOjQ47cDRLY9s0VX5vKmYzrhHMVXwzZswN2DqS
wKxR+8MSmd3UIIqN66bcjkUb6eQSck27xRqYCwEPmMG7iEvZ3g6B5EnLEOW3
ovNYVMk4HaLKE6PvbZxrBOz7G+dq0fuW48gZsJc6IN5nwwqsr8+kmbvQBYXc
kineVKmZhIcYgxB/PRwYdcrzIpSOhpEFvi1EUSPPSLWgy0BAPYlEZmH+L/QS
Bfxxk+kRkp61WEyo+IYJeYfa/nSwo16yzFfMB/zx+ZzR3dhpsfaAzZ2nS8vn
/Ak4A6S1TbFFYhdFpkg0GhkpOLufeXZUIKsI7BR7XyWd4q3BoA0y8LARlnCs
XlvTIfPQXoT1JUdTJkHsPoOnvQ5vXxz/l8BsDMT374ewPonh6h5bBG1yU/JQ
e9GH+SFGw2MoPaWDaEyYNl3CTek2JdGEu0lU+nd16QplErYvZ4Fdns2LkvKr
xOarua1prnK0Ylcl0t7IFL4GUHq+Uc7UOgG6HCTP0MdKdw3t4JcUu4+ykMhk
LesxdzzijExUXaiYofmLd8XBAMAcCLQDOWcsArktS0r/tgNuZ9IRIdpu1pM7
f6QU06o39G3AgEApoXfxRYufWXwAYDJICkMlOoMfw2pXKvG9qYkg0949Bs+b
4EYdRFTDd7KKeiVUz7tXuxSK/oZr139j50XfMsrKUwGNJJYFmqSFfqUlZ86i
GDC8dFmrnTu7agXWRS4Zzjbc2Mgxj3JtryfFjqH2NWbT3s3MMWfGJ6dJhBNL
3MREAZSuSrdgAaNkiLup/SG7R4H69LcfZcXfEoszUIaJlJOIVZDhETTuKYnP
tE05f6RX4A7/2705syL+JjI4hrm9McQBcNZQtBzA3EndxELII2d3R1oFvbbR
BRnZBBOalFNziZBQo3INY50UI7AMY+g20dktH19390UB4a9PXL5w6GArnZGZ
EvIdaACCTBslf9tVGVydjWO+me90X5KNWXkvvB/b1VVwa3azb9EFMRpAh87F
8DtKbsAlCtXHTfM9wucpp3P0U3m7LKlcucu3277mkGzyWvs0+y62giPiOKxP
Phi9NyJSqrMFpbq4aqWeeqk5W+kf/EQJ2yWBuDr7qFxmcZfaJ+VUy60uD0o9
vvzgUyOn8Tz99m8c9pYt8MUsekfLPByCade9tfh5kcktNDmni4+tbJMDhf4I
UxsEFuY/bKfRJFeT4Qtm5XRbOUvlDiF+oZTdyqCvpBcwCGXEFiBA1oRmNyES
ZV50l/oRI4OemvC6h+MTopnDN/HKJZYLbIyJxmgNc3258wbxG2YeeOXFXNx0
pyWlZqcCXVwDTYqvrnUF2nfnOfBO96FKwnHWvryrDURdtoDHplI7Y2gWJKGT
O9mUDsXmR+yn+RxfDTlfvHkjESlo/mjdT6cXoMpU635mbMNOojABK10t3hjB
oPXA/zjyMCt1uVJtOi1yU1KOtdcFZh6szbsd0kkmWlKLw9Y2gbDaefnDC9In
8HI39LRaTikavqMv68fpXMTIv8NkspGkLjSq1V1P0IL4rb2GaBKwpua8weXC
ibLaydLdFW636ABKYw2ofCFXVSud64sUtUQvbssHF6fuYKOcnX5kVEWxSSOX
JGiAToArXlYwp+oektmcPm57W4LdhkwFwbFJ4JZni0/ijLxFlKuG3jjBRLeK
E91GS/RqeCLKhrVRPkDKI5J4kXAuee61eJCq3EQYuIHpBupKDMYg46yfRJ41
FH/5yRXddF1XdcmZPu+WJE4aqf39h2oHJN9/7MTEd6j69x/sqodfq+51JujT
7qR/6NLgyRVVOsPmvYA3w14aeTxnW+YS1g9Yi/002iCyOjjL2ePHyjWUDC0K
mIbHM7wT36SjvmeXCM6Ec+zkHFE/wJfvI5oMvyS3ACehJeS2iMM+BqyHNRJr
S20IXvU9uXjLNGzuqctbTR+4EFBGrhvoTgz4RdY0Rq0m9ZfLN1GBTwQJE0Gz
WubaD8fBrpxCYA3gD0kRdq1IDwcePYRAsNQQoev+Q6c6bqzRVl7bdDCp1ktM
ObrejgzC6j4V2C8BFXiZk7jCvEqX59kEMx5TIttykrlbYqk6o+eTYP9sHlGy
/W0ev9Hn3E3fTEHSv43CRFyUX0WUrZ540OwREPDAdDHO5ivyE5GYpPxJg8Rl
sbGhLRcmY85U/yoSNOjtnbDAwQyw4MGQsADvCnzesTOvDCpE5Xig1w2T9mZz
jME2+2xr+lvcTMYcoHsNl/PfTnAcD6sg92EPucFWIcmY8ZFiT9WtNWiFdcA0
7ESFXbgwCtFzHBEHb6q4OTKS/RhUaxF7z90mHW2IKBzxvdLNR2M2kRa5Qc6O
H/EqQXt7JySSXQEM+srjIxYuBm3c3rsT4nZ5O/Tj6lrmYItxzQRwM+ivCbeV
0G4v3HYUBmuMei73XzuxQy9pReAGqJ6h+3BLZHd1fXRf4P5jxmG5j8pllDij
GvmmLBPBJknPvdfWQY7msnTcS9LB60E66HXwvZ41LnlE+C11eQx+9Myrbg5n
uGsZNqQVt06hFtGh/WeamJbP0xrYsbHN4ue2WJF2/llHZEnqZwL90RegHcka
jaFgQGR2lLgA5tE5C4IBeUSZs8Etcy0mkfVvuG339vS1gKkgdd2/61GXgyTS
18275D3FXu9t7DVGY+iCf3Z+QrkhEHrVWaF1QbUtHySQYBuacVV9kpEUWFtr
wfY001mgbtxet2wwTdrq2JGfN6OxaO+mKlhv2JQ9yOO2HUz/ik7Co9RWnBRl
/QjCSpKOsK3gtNjkaZT12SwqVwS8hGc75s69u7XeCuPwTiuDWJ04BKZzgpIY
vOsTORok/IzX0XqnAIY1gOebFgFviuFbbIxrCRX9bnkumBOF1fjC+APq9jQY
KnR3HGm75RnK9mgNVbiutXZV7AhcaNOxyXHdl0zI11Jz3MCnae/bDSgbi3fO
Hp0c+l2zBkQxYLvRSYdLJNuidi/TcHcOLcageA0Gj+LkZd2N/BZ+3i9v798J
KbzZoab2lUONeN4GQVqbiOmvMSRx41c6NmwjQ32Blyy3RoWgeoAI5ssN0eDJ
6Q/m6TFfkXjv+x9MfLvd72zyQbbfjIQi/wtv84MZ2K0Ptyzc+Na37m1fZPWE
EzFut+9R/UARtp/ehgF4Hb8F/W88TA42Mpq8iOh717qcuts5l5MfyXFjN9Oo
++g9kD3vVfC41SCWDR2WRcs0aBajSNup1FFjG6cSPWa+JdrZqgHGYekNkY2c
BfSKulj+nnrw7tzFzdMgCQ1yZZ0Pw0poFJQh/gbbke3eui3ATetkEcuJ3lYq
uKr+NlHp2/AE7i5gB+91t9x0N+9WXOfD7BaNguToKYNuZLNb3k5s3K36othu
r0zFSHZD8Q236vSHZ9ZrgQ7QpS6m9MZ2OWvolRp5U8Z4WhP3wkkapcTZhrNH
sbXdl/zsNTyYXLCdZtW0mcZZ15b/zHy7LvPJU1MSHNTOd5iEXhLoG+ETphft
nrqx5Nif4cw1isKru8N+Eq+r5rqrjpsB4aa2jeBSoeBqp2Rl2ZV8GLuJcRQ5
m+dpMasxlGKpYP9hkJew/bWVA7JNUs1kjI+pLLenrVaLyD9uP97MCWJjfBGl
5MjBUB46ijnJsLjFkpi4/A468qraZx6CXjbtn0Ok1loNn2yl3R1+6U98I4W1
Jjv8Mmkd6MuJTHQ6Z53GuJ4ot687ubOT2OgYob6xWpzhxqWLZ/9HEJHmRnDT
7SUdZ0FPZuEbsCbtBImUhp4HwW7xOcaLIKFAz2YT4OhdL98QLSVAEP+RBi/Y
7Z2OEOxOA/0NDzwLpYUFhhLbxAN9Qpc/wbbuAUbY4jjbqBxnbdVJO5Hrq24y
RvBhte3JOGgRk7H5eBMyZtUm6NrXcFpku41MjGNUXQp/o0ptHM+pU91C47rm
Lnj1GqkW84wAsJvs8Ou4xGY5zCLIZ2MdqfHfmhaCFaDe9mVICsHifFIIEVBM
9k7cv6LNdjILs9SutoxbCavHaM6fbqgWciNz3oRmF723SRc9zEOg+OwYINjx
I1TsE5/nS2s5IuyFGthGxT9uLpdROjafo9+SDubOhoDNGRcGfQT9xijtQdDa
E666iV0Ic4fWsQgz2fOc+Or0ZEenZm2WwNcmNsLkXQUBd4aYfz/AfA8GHtr7
qNiKz2p/3+IMim2K7ZDbq+tjNhe/hftA7JkCr6PEHMmoYwFqJh0tA+TxZhhY
ojFyRCNbg5XAYswsCdz0wufxEDQJo32brgYdHPKKOX4YS5iHQfXeM4W9sQ1W
+QgQGsMSb25Xb96/ZITgyGKbaNm8TJ9s9WZzVtjHUC+RsfDThQC9w9Z7zb9+
cecBPtR8+uLkKT/HTDLTvcfMbIxuOF/qMT/orHaOfzzbta86eyG34YN2/mhm
vlCtxFsxLJBHJ9lEn03GT4pZKYEJXskpXnqJH5UeqA2jFbyIZbrGN6FwvKQ1
HjkCsNbIp8ZH+EDpyHuDWsVQ5jM+kdAjGHeS1dpuDzVtJvP+RPMb5Ik8Fmnf
9cuz8K1sxRfFaSr+TJ7KA6UGpVvgoRZ2dpJJ0IQa0P7lqYSm0D0J8/wxTdiF
+kt2OLy2b09KbX3/5Qx5N692TYEqlghKuiC1YYJd0DUjkJD0Lvia/QUjJaP3
v2nGfMnDv2HhXwl2M/SvGGy4SoIoXGn/4mLHBtYlqaSJex2UH39aLYWnekBB
aEt6NL6gncpNT7pLUnAKglThOyO1rw9c+cAnQVle9zSg/g4mgvdP1iZ/i2EH
5+aDzxBsISsCdNsMw3PomXgJHpPYJCx+YR47PrZoiWzusUTc7Lw4foyvxOb8
+lUQkMj6RvKXVSmBO9LkL9DCKD3Rx9p0JT35HYV2JB6wadNoB3493sV8L251
/l1f2QaKqJvR+y0wbd8JBiV/eRzKPizDbv2HTtwT0/xuvHun3AZrVmUpM0b9
0L28LfiLaGZtfYoG5PfhHOG4FchLyJgyFplzYh7Ps9O8NTlHt9yt6HX4Ht86
yJoVPfxiHjJUHShgBLzVD3hd8TMHroG8OkYYAQJ7mRYszjG9eOQrzHPXrYWh
OrLFUTBXnXhxGgJe8yA1aeD+WIPopWareHa87CxLDOfaJuRpSdeIOH6jo0WY
b8AhxbOykaWnapZmOV4ylnfnSuB9yE+9hUWAxveV86n3LnaqkJFk7kXAcBJj
TTiM4eDae+QmrHWYJH11pE6eAI77woSwxSjuHkd2/LMXfgDBGnxjR+kxcEW9
bMAcfsrJmn6sgLNheODO8dMfdxOU94tLkHBOKQqyQKKS0Dfy1rjuWqx2gGtA
0ff0ROQiqjDAEKYZrSXgRryycJSnP7bmLpLUY1LuqW/XOLliTsh3j0VKWuow
D1SHtYHnHsfylJTh45OT71EJh02HGaRms4N3XRjbKmB08toSCzrSscrTH+FP
hHJZX2bTQLFy79Yi7oA+i04LeuDF4JNBwMHmZZoMCzZfjf/46NVaTaQXmCQD
TYaxooR5HaNOBLhM0k4k9zZLc/taNb5nsXEd47XcCCUdcsNNUKNDdQj7rrfb
r7wyG/fB92a/+Gq4E3/BoXeTjvpdFVv1sBDq/kZ2BjAhfdEHYUIvGSg2NFwJ
dYD5t6Sm9IAHdHKY6pUFofRK7anPP+8a2+lNyZtkU3vP9l2tzNnfH/w7t44u
XIQM37gUfZpvxpNvIwlXhPnM8LFxvGX2RwJEvMAIIBgq6h6b4Y99Cat95Zrz
TJq1a+5uKETfOlqb48KJ1/7Atp+W+Hpzv1WpqyOuyv6C+jxbuv7uxv21KnX0
x6zCdXLPdgJgDT52NGaTim9amA6+sB20vvo9IAKFG+ejjvpa0b52TkByzmmn
IWDzHjvK/XkHRPEqeeV3GROMaoMknRMtMJYYZPc+0VV2v4Xp06CGHYMu1Hhg
WzXnYKz8E/B/vPbxYMPVFcziTGYKsMxsKuYB0FfgB3C3dY5soLrvCui6ZMwM
jtt3PT1t27jgdwyaBUUNSBCdmqgMs0Bp1wxvOzvzbOO9/K4+yCs1KecFJpYL
GrFVRyKRdE7z+ja+M+/7hDyRzs98o/oe3ds+VDuW40gZ2Qyxs9G9Ex4cunU9
vv7TTsct+N2e2omu2tvx6DXtV4MkfrbDnVnHLQGMw3vOS+w7W4NsOZjMq+vE
Y5HNz616w5kR8jRbHAZPgA97MAi98e1A2mrnAflQ3R5+cXuAt/Ipo4fccwZx
aZN6mJ2SXEeYxHBnNPxitAv/wFzxn+G90e614dzYppWFG5sabYwNsnYaUzHV
okSmpn5HZjVzbZSeJg/jydtXVSj4m/R1fN14ssIkEKxomRxHoKEi5PywgwlC
vn3lo40NhX9jhhOGwKLpiP0iiBtxzyfgNHFJpP9NYfuKbLFa4IlkL7gjI45z
lrCJeSkeWtx6vmqez/DliltowFjTNt2QEWDNjlrJs4H3AESu97VbsmH9eFEs
2VgJ4JDhHU5T16ix1tz2gejtXPyCKymusNganVzUlzvddnTlM4sLc4HX8yAZ
ENr8DZs8RoiBQG9ksQFbYNWakf6lmO0+b65MTXFSUs2+GPiYY9drf0EEYcwb
xhegdmRNJqfBMlvqHK/uh94N64mAruY2XwYnRqCUINbkmWrMPCsnO3OJHwBm
zibDnNCJD167VoY5USrSrOmh7nyNf74AYljLvWuZfd3yFWr/8Wnye3rdG3+H
uS5xRiwt6J1dEOZyd73KOF1J1ySN59PzwqTVvToD6xTfPgfDZQoMIm2s59w4
FjFzJ5pumzuVLKZArYWelw3f6IWNcbn66BVkb+Y9M3WHioHDkNI+Ia3lejrX
HHrVtJaP3bq0I/SSjPU+6i5XKHFvtGDESUtYe2qI+VgYAO+VfcyUv/Ynwdc3
9uk5bkvyNXhAeUliXrQFWy/sxYhlc/ZQEDjRp2fhQh5O9eTo2VH3/LK0SLvm
5q3S8gLpxtiylZ4DrSDzOiWPsPQ1Lqs3sjw27xDgthEy4LHmQCI60ScXi/l8
qEiMYtEJJo3JGg3ilU4msewUyAy1LVAXxKY2zg9b5QWlpwC4kLjFUGYYY1Av
gHf9B/EO0D0X1L8LVuBMKLbrYIuhar8PqtvkNcLxyCIV+9k4uIa0U+SP9TlH
2KXFa3UK/7/UmTqGtaLjjKTxWBIHsLuS2e5n6psVKIisVJozKfRsfHoF+f/0
K8gJ7eIwIbgeJLTSuwmNfS8Jaj+0US/7LhBmX83yMm2SeHioPcf3/6DbfYQN
/E/bSlE+wNbU4yCrjZGcPoDaX2FxH9/jsR/HE6z/Hz8k+elJvqtW8NElCf03
J0f89MzJ2z5z8tE9vvbpJaGbvCT0O3sz8NP7Cr/v9xU+vYZz9Ws4H2N6w48n
Ad3vLknax5pw61MiIxdE/hHkaPkdZwz5HWaz+HhyH/wb7+//Gy+f/w4v7/5f
v9X40d9U+xhuG/17b61wuMqnwLhPgXGfAuM+BcZ9+MC4/wXHlYRVZtIAAA==

-->

</rfc>
