<?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.4 (Ruby 3.2.2) -->
<?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-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="Intel profile">Intel Profile for CoRIM</title>
    <seriesInfo name="Internet-Draft" value="draft-cds-rats-intel-corim-profile-01"/>
    <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="2023" month="December" day="20"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <keyword>profile</keyword>
    <keyword>corim</keyword>
    <abstract>
      <?line 122?>

<t>This document describes extensions to the CoRIM schema that support Intel specific Attester implementations.
Multiple Evidence formats are compatible with base CoRIM, but extensions to evidence formats may be required to
fully support the CoMID schema extensions defined in this profile.
The concise evidence definition uses the CoMID schema such that extensions to CoMID are inherited by concise evidence.
Reference Value Providers may use this profile to author mainifests containing Reference Values and Endorsements.
RATS Verifiers recognize this profile by it's profile identifier and implement support for the extentions defined.</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 131?>

<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 including Intel(R) SGX(TM), and products that contain
a DICE <xref target="DICE.engine"/> root of trust, DICE layers <xref target="DICE.layer"/>, or modules that implement SPDM <xref target="DMTF.SPDM"/> endpoints.</t>
      <t>The CoMID schema <xref target="DICE.CoRIM"/> and data model <xref target="I-D.ietf-rats-corim"/> is a baseline for Reference Values that expects Evidence is matched
using values that are identical. This profile anticipates Reference Values that are a set or range of values where an Evidence
value is within the reference set or range. This document describes schema and data model extensions for matching based on
membership in a set, masked values, and numeric ranges.</t>
      <t>The baseline CoRIM schema defines a spartan set of measurement values that are etended by this profile to better support Intel(r) products.
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 must be Intel products.</t>
      <t>This profile extends CoMID schema <tt>measurement-values-map</tt>, as defined by <xref target="I-D.ietf-rats-corim"/>, with measurements that may be unique to
Intel products or are not defined anywhere else. Some measurement definitions are specific to Reference Values such that multiple
Reference Values may be specified and an operator instructs Verifiers regarding the matching algorithm to apply. For example,
a numeric operator 'greater-than' instructs the Verifier to match a numeric Evidence value if it is greater than
one or more numeric Reference Values.</t>
      <t>This profile follows the Verifier behavior defined by <xref target="I-D.ietf-rats-corim"/> and extends Verifier behavior to include non-exact matching as
indicated by a supplied operator.
If no operator is specified by Reference Value statements, the Verifier defaults to exact matching.
If Evidence matches Reference Values and Endorsements apply, endorsed values are added to the the accetped measurements.
When all Evidence and Endorsements are processed, the Verifier's set of accepted measurements is used to produce Attestation Results.</t>
      <t>This profile is compatible with multiple Evidence formats, as defined by <xref target="DICE.Attest"/> and
SPDM <xref target="DMTF.SPDM"/>. It describes considerations when mapping Evidence formats to CoRIM that a Verifier may use when doing matching.</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"/>.</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.
The root of trust may anchor one or more layers <xref target="DICE.layer"/> resulting in multiple instances of attestation Evidence.
Evidence may be protected by an wrapping structure, such as a certificate <xref target="DICE.Attest"/> or a secure transport over a
bus interface <xref target="DMTF.SPDM"/> may provide integrity protection. 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.</t>
      <t>Such a complex platform may rely one or more endpoints that communicate with a remote Verifier to convey a structure that
is a conglomeration of Evidence instances. A complex platform may consist of multiple instances of a subsystem, such as multiple
network adapters, storage controllers, or processors. Even though they may be identical copies, each instance should have its
own Evidence instance. Insertion and removal of a configurable component may affect the composition  of Evidence.</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-schema-extensions">
      <name>CoMID Schema Extensions</name>
      <t>The baseline CoMID schema for Reference Values is extended with an attribute that informs a Verifier as to which matching
semantics to apply, whether they are equivalance, range, or set membership semantics.</t>
      <t>This profile extends <tt>measurement-values-map</tt> with additional measurements that are 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), and</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>, and</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>, and</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-verifier-profile"/></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 the CoMID schema. The concise evidence format is native to CoMID <xref target="I-D.ietf-rats-corim"/>.
This profile documents evidence mapping from <tt>DiceTcbInfo</tt> and SPDM <tt>Measurement Block</tt> to the CoMID schema, as defined by <xref target="I-D.ietf-rats-corim"/>.</t>
      <t>The CoMID schema 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.ftbs-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 an evidence schema that extends CoMID and CoSWID <xref target="I-D.ietf-sacm-coswid"/> schemas.
Nevertheless, evidence describes the actual state of the Attester. <tt>tagged-concise-evidence</tt> is a CBOR tag for a
concise evidence <xref target="TCG.concise-evidence"/>. This profile is compatible with <tt>tagged-concise-evicence</tt>.
CoRIM schema extensions defined by this profile are inherited by <tt>tagged-concise-evidence</tt> through <tt>measurement-values-map</tt> extensions.</t>
        <t>The concise evidence schema 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-verifier-profile">
      <name>Intel Verifier Profile</name>
      <t>The verifier algorithm in this document describes the actions of a simplified Verifier that may lack performance optimizations. A verifier implementation that appears outwardly identical to the Verifier described here is treated as meeting this profile.</t>
      <t>The Intel verifier profile builds on the verifier defined in Section 5 of <xref target="I-D.ietf-rats-corim"/>. This profile extends the verifier to recognize
the expressions operator extensions defined by this profile. For example, if a reference numeric value of 15, the expressions
operator representation is a CBOR tagged array containing the operator, <tt>gt</tt>, which is CBOR encoded as <tt>1</tt>,
followed by the reference value <tt>15</tt>, which is a <tt>numeric-type</tt>.
The reference value might be: <tt>#6.60010([ 1, 15])</tt>, while the evidence value is simply a <tt>numeric-type</tt>, such as '14'.
The verifier compares <tt>14</tt> to <tt>15</tt>, evaluating whether <tt>14</tt> is greater-than <tt>15</tt>.</t>
      <section anchor="sec-complex-expressions">
        <name>Complex Expressions</name>
        <t>Complex expressions assess whether the Target Environment is in a particular actual state before asserting additional claims.
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 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 expects the Relying Party will, in some fashion, negotiate
the expected results format. The Attestation Results format may expect a summary result such as <xref target="I-D.ietf-rats-ar4si"/> only, or may expect the <tt>accepted-claims</tt>
in its entirety.</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 schema extensions defined in this document.</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</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 document requests reservation of the following CBOR tag:</t>
      <ul spacing="normal">
        <li>
          <t>Requested 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="23" month="October" year="2023"/>
            <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-03"/>
        </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-r23-final.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2021" month="March"/>
          </front>
          <seriesInfo name="Version 1.00, Revision 0.23" 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">
          <front>
            <title>TCG DICE Concise Evidence Binding for SPDM</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2023" month="June"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.53" value=""/>
        </reference>
        <reference anchor="I-D.ftbs-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper</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="7" month="November" year="2023"/>
            <abstract>
              <t>   This document defines two encapsulation formats for RATS conceptual
   messages (i.e., evidence, attestation results, endorsements and
   reference values.)

   The first format uses a CBOR or JSON array with two mandatory
   members, one for the type, another for the value, and a third
   optional member complementing the type field that says which kind of
   conceptual message(s) are carried in the value.  The other format
   wraps the value in a CBOR byte string and prepends a CBOR tag to
   convey the type information.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ftbs-rats-msg-wrap-05"/>
        </reference>
        <reference anchor="I-D.ietf-sacm-coswid">
          <front>
            <title>Concise Software Identification Tags</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <author fullname="Charles Schmidt" initials="C." surname="Schmidt">
              <organization>The MITRE Corporation</organization>
            </author>
            <author fullname="David Waltermire" initials="D." surname="Waltermire">
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date day="24" month="February" 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="Internet-Draft" value="draft-ietf-sacm-coswid-24"/>
        </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="23" month="October" year="2023"/>
            <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-06"/>
        </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>Arm Limited</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="30" month="August" year="2023"/>
            <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-05"/>
        </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>
      </references>
    </references>
    <?line 1110?>

<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>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
kPw/ML9+8bTMAAA=

-->

</rfc>
