<?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.6.35 (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-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="Intel profile">Intel Profile for CoRIM</title>
    <seriesInfo name="Internet-Draft" value="draft-cds-rats-intel-corim-profile-00"/>
    <author initials="S." surname="Cen" fullname="Shanwei Cen">
      <organization>Intel Corporation</organization>
      <address>
        <email>shanwei.cen@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="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <date year="2023" month="June" day="23"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <keyword>profile</keyword>
    <keyword>corim</keyword>
    <abstract>
      <?line 118?>

<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 127?>

<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>From Evidence: <tt>operand_1</tt>, from Reference Values: <tt>[ operator, operand_2, operand_3, ... ]</tt>.</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>
            <tt>#6.60010([ operator, operand_2, operand_3, ... ])</tt>.</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>
              <strong>Numeric</strong>: The <tt>numeric</tt> operand can be an integer, unsigned integer, or floading point value.</li>
            <li>
              <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.</li>
            <li>
              <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.</li>
            <li>
              <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.</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>
              <strong>greater-than</strong> (gt),</li>
            <li>
              <strong>greater-than-or-equal</strong> (ge),</li>
            <li>
              <strong>less-than</strong> (lt), and</li>
            <li>
              <strong>less-than-or-equal</strong> (le).</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>
              <tt>tagged-numeric-gt</tt>,</li>
            <li>
              <tt>tagged-numeric-ge</tt>,</li>
            <li>
              <tt>tagged-numeric-lt</tt>, and</li>
            <li>
              <tt>tagged-numeric-le</tt>.</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>&lt;<tt>evidence_numeric</tt>&gt; &lt;<tt>le</tt>&gt; &lt;<tt>reference_numeric</tt>&gt;</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>A binary relation between a primitive object 'O' and a set 'S', and</li>
            <li>A binary relation between two sets, an Evidence set 'S1' and a Reference Values set 'S2'.</li>
          </ol>
          <t>The first form, relation between an object and a set, has two operators:</t>
          <ul spacing="normal">
            <li>
              <strong>member</strong> and</li>
            <li>
              <strong>not-member</strong>.</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>&lt;<tt>evidence-value</tt>&gt; &lt;<tt>set-operator</tt>&gt; &lt;<tt>reference-set</tt>&gt;</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>&lt;<tt>evidence_object</tt>&gt; &lt;<tt>member</tt>&gt; &lt;<tt>reference_set</tt>&gt;</li>
            <li>&lt;<tt>evidence_object</tt>&gt; &lt;<tt>not-member</tt>&gt; &lt;<tt>reference_set</tt>&gt;</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>
              <strong>subset</strong>,</li>
            <li>
              <strong>superset</strong>, and</li>
            <li>
              <strong>disjoint</strong>.</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>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>subset</tt>&gt; &lt;<tt>reference_set</tt>&gt;</li>
            <li>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>superset</tt>&gt; &lt;<tt>reference_set</tt>&gt;</li>
            <li>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>disjoint</tt>&gt; &lt;<tt>reference_set</tt>&gt;</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>
                <strong>lt</strong> determines if a date-time Evidence value is less than a Reference Values date-time.</li>
              <li>
                <strong>le</strong> determines if a date-time Evidence value is less than or equal to a Reference Values date-time.</li>
              <li>
                <strong>gt</strong> determines if a data-time Evidence value is greater than a Reference Values date-time.</li>
              <li>
                <strong>ge</strong> determines if a data-time Evidence value is greater than or equal to a Reference Values date-time.</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>&lt;<tt>evidence_date_time</tt>&gt; &lt;<tt>gt</tt>&gt; &lt;<tt>reference_date_time</tt>&gt;</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>&lt;<tt>evidence_timestamp</tt>&gt; &lt;<tt>epoch-operator</tt>&gt; &lt;<tt>grace_period</tt>&gt; &lt;<tt>current_time</tt>&gt;</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>&lt;<tt>evidence_value</tt>&gt; &lt;<tt>mask-eq</tt>&gt; &lt;<tt>reference_value</tt>&gt; &lt;<tt>mask</tt>&gt;</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 /= ([ + tstr  ])
$tee-advisory-ids-type /= tagged-exp-disjoint
]]></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-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.mrenclave: -83) => $tee-digest-type
)
$$measurement-values-map-extension //= (
  &(tee.mrsigner: -84) => $tee-digest-type
)
$tee-digest-type /= hash-entry .within set-type
$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-fmspc-type">
          <name>The tee-fmspc-type Measurement Extension</name>
          <t>The <tt>tee.fmspc</tt> extension enables the Attester to report the (TBD:fmspc-description) Evidence value
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-fmspc-type</tt> is a 6 byte word.</t>
          <t>The <tt>$tee-fmspc-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.fmspc: -75) => $tee-fmspc-type
)
$tee-fmspc-type /= bstr .size 6
]]></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
]]></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
]]></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-ppid-type">
          <name>The tee-ppid-type Measurement Extension</name>
          <t>The <tt>tee.ppid</tt> extension enables the Attester to report the (TDB:ppid-description) as Evidence
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-ppid-type</tt> is an unsigned integer.</t>
          <t>The <tt>$tee-ppid-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.ppid: -78) => $tee-ppid-type
)
$tee-ppid-type /= uint
]]></sourcecode>
        </section>
        <section anchor="sec-tee-sgx-type">
          <name>The tee-sgx-type Measurement Extension</name>
          <t>The <tt>tee.sgx-type</tt> extension enables the Attester to report the (TDB:sgx-type-description) as Evidence
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-sgx-type</tt> is an unsigned integer.</t>
          <t>The <tt>$tee-sgx-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.sgx-type: -76) => $tee-sgx-type
)
$tee-sgx-type /= uint
]]></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.pcesvn</tt> extension enables the Attester to report the SVN for the supplied TCB
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
)

$$measurement-values-map-extension //= (
  &(tee.pcesvn: -74) => $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: -79) => $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 /= ([ + tstr ])
$tee-tcbstatus-type /= tagged-exp-subset
]]></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 Services Enclave (PSE) 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>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>.</li>
          <li>An SPMD alias intermediate certification chain containing a CMW extension, and an SPDM measurement manifest containing
<tt>tagged-concise-evidence</tt>.</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>Requested tag: 60010</li>
        <li>Data item: array</li>
        <li>Semantics: a CBOR encoded array</li>
        <li>Point of contact: ned.smith&amp;intel.com</li>
        <li>Description of semantics: this document</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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="9" month="March" 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 Concise Reference Integrity Manifests (CoRIM) that
   represent Endorsements and Reference Values in CBOR format.
   Composite devices or systems are represented by a collection of
   Concise Module Identifiers (CoMID) and Concise Software Identifiers
   (CoSWID) bundled in a CoRIM document.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-01"/>
        </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>arm</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <date day="15" month="June" 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ftbs-rats-msg-wrap-03"/>
        </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 similar set of
   semantics and features as 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>
        <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="13" month="March" 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-04"/>
        </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="2" month="March" 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-04"/>
        </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 1145?>

<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 /= ([ + tstr  ])
$tee-advisory-ids-type /= tagged-exp-disjoint

$$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.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.mrenclave: -83) => $tee-digest-type
)
$$measurement-values-map-extension //= (
  &(tee.mrsigner: -84) => $tee-digest-type
)
$tee-digest-type /= hash-entry .within set-type
$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.fmspc: -75) => $tee-fmspc-type
)
$tee-fmspc-type /= bstr .size 6

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

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

$$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.ppid: -78) => $tee-ppid-type
)
$tee-ppid-type /= uint

$$measurement-values-map-extension //= (
  &(tee.sgx-type: -76) => $tee-sgx-type
)
$tee-sgx-type /= uint

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

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

$$measurement-values-map-extension //= (
  &(tee.tcb-comp-svn: -79) => $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 /= ([ + tstr ])
$tee-tcbstatus-type /= tagged-exp-subset

$$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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
aV7rDXvQLU7lB8n/B9rQD1Ai0QAA

-->

</rfc>
