<?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.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-corim-04" category="std" consensus="true" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="CoRIM">Concise Reference Integrity Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-04"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>arm</organization>
      <address>
        <email>Thomas.Fossati@arm.com</email>
      </address>
    </author>
    <author initials="Y." surname="Deshpande" fullname="Yogesh Deshpande">
      <organization>arm</organization>
      <address>
        <email>yogesh.deshpande@arm.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel</organization>
      <address>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <date year="2024" month="March" day="04"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>RIM, RATS, attestation, verifier, supply chain</keyword>
    <abstract>
      <?line 128?>

<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>
  <middle>
    <?line 141?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In order to conduct Evidence appraisal, a Verifier requires not only fresh Evidence from an Attester, but also trusted Endorsements (e.g., test results or certification data) and Reference Values (e.g., the version or digest of a firmware component) associated with the Attester.
Such Endorsements and Reference Values are obtained from the relevant supply chain actors, such as manufacturers, distributors, or device owners.
In a complex supply chain, it is likely that multiple actors will produce these values at different points in time.
Besides, one supply chain actor will only provide the subset of characteristics that they know about the Attester.
Attesters vary from one vendor to another, and for a given vendor from one product to another.
Not only Attesters can evolve and therefore new measurement types need to be expressed, but an Endorser may also want to provide new security relevant attributes about an Attester at a future point in time.</t>
      <t>This document specifies Concise Reference Integrity Manifests (CoRIM) a CBOR <xref target="STD94"/> based data model addressing the above challenges by using an extensible format common to all supply chain actors and Verifiers.
CoRIM enables Verifiers to reconcile a complex and scattered supply chain into a single homogeneous view.</t>
      <section anchor="terminology-and-requirements-language">
        <name>Terminology and Requirements Language</name>
        <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
        <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>.</t>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
        </t>
      </section>
      <section anchor="cddl-typographical-conventions">
        <name>CDDL Typographical Conventions</name>
        <t>The CDDL definitions in this document follow the naming conventions illustrated
in <xref target="tbl-typography"/>.</t>
        <table anchor="tbl-typography">
          <name>Type Traits &amp; Typographical Conventions</name>
          <thead>
            <tr>
              <th align="left">Type trait</th>
              <th align="left">Example</th>
              <th align="left">Typographical convention</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">extensible type choice</td>
              <td align="left">
                <tt>int / text / ...</tt></td>
              <td align="left">
                <tt>$</tt>NAME<tt>-type-choice</tt></td>
            </tr>
            <tr>
              <td align="left">closed type choice</td>
              <td align="left">
                <tt>int / text</tt></td>
              <td align="left">NAME<tt>-type-choice</tt></td>
            </tr>
            <tr>
              <td align="left">group choice</td>
              <td align="left">
                <tt>( 1 =&gt; int // 2 =&gt; text )</tt></td>
              <td align="left">
                <tt>$$</tt>NAME<tt>-group-choice</tt></td>
            </tr>
            <tr>
              <td align="left">group</td>
              <td align="left">
                <tt>( 1 =&gt; int, 2 =&gt; text )</tt></td>
              <td align="left">NAME<tt>-group</tt></td>
            </tr>
            <tr>
              <td align="left">type</td>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">NAME<tt>-type</tt></td>
            </tr>
            <tr>
              <td align="left">tagged type</td>
              <td align="left">
                <tt>#6.123(int)</tt></td>
              <td align="left">
                <tt>tagged-</tt>NAME<tt>-type</tt></td>
            </tr>
            <tr>
              <td align="left">map</td>
              <td align="left">
                <tt>{ 1 =&gt; int, 2 =&gt; text }</tt></td>
              <td align="left">NAME-<tt>map</tt></td>
            </tr>
            <tr>
              <td align="left">flags</td>
              <td align="left">
                <tt>&amp;( a: 1, b: 2 )</tt></td>
              <td align="left">NAME-<tt>flags</tt></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="common-types">
        <name>Common Types</name>
        <t>The following CDDL types are used in both CoRIM and CoMID.</t>
        <section anchor="non-empty">
          <name>Non-Empty</name>
          <t>The <tt>non-empty</tt> generic type is used to express that a map with only optional
members MUST at least include one of the members.</t>
          <sourcecode type="cddl"><![CDATA[
non-empty<M> = (M) .and ({ + any => any })
]]></sourcecode>
        </section>
        <section anchor="sec-common-entity">
          <name>Entity</name>
          <t>The <tt>entity-map</tt> is a generic type describing an organization responsible for
the contents of a manifest. It is instantiated by supplying two parameters:</t>
          <ul spacing="normal">
            <li>
              <t>A <tt>role-type-choice</tt>, i.e., a selection of roles that entities of the
instantiated type can claim</t>
            </li>
            <li>
              <t>An <tt>extension-socket</tt>, i.e., a CDDL socket that can be used to extend
the attributes associated with entities of the instantiated type</t>
            </li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
entity-map<role-type-choice, extension-socket> = {
  &(entity-name: 0) => $entity-name-type-choice
  ? &(reg-id: 1) => uri
  &(role: 2) => [ + role-type-choice ]
  * extension-socket
}

$entity-name-type-choice /= text
]]></sourcecode>
          <t>The following describes each member of the <tt>entity-map</tt>.</t>
          <ul spacing="normal">
            <li>
              <t><tt>entity-name</tt> (index 0): The name of entity which is responsible for the
action(s) as defined by the role. <tt>$entity-name-type-choice</tt> can only be
text.  Other specifications can extend the <tt>$entity-name-type-choice</tt> (see
<xref target="sec-iana-comid"/>).</t>
            </li>
            <li>
              <t><tt>reg-id</tt> (index 1): A URI associated with the organization that owns the
entity name</t>
            </li>
            <li>
              <t><tt>role</tt> (index 2): A type choice defining the roles that the entity is
claiming.  The role is supplied as a parameter at the time the <tt>entity-map</tt>
generic is instantiated.</t>
            </li>
            <li>
              <t><tt>extension-socket</tt>: A CDDL socket used to add new information structures to
the <tt>entity-map</tt>.</t>
            </li>
          </ul>
          <t>Examples of how the <tt>entity-map</tt> generic is instantiated can be found in
<xref target="sec-corim-entity"/> and <xref target="sec-comid-entity"/>.</t>
        </section>
        <section anchor="sec-common-validity">
          <name>Validity</name>
          <t>A <tt>validity-map</tt> represents the time interval during which the signer
warrants that it will maintain information about the status of the signed
object (e.g., a manifest).</t>
          <t>In a <tt>validity-map</tt>, both ends of the interval are encoded as epoch-based
date/time as per <xref section="3.4.2" sectionFormat="of" target="STD94"/>.</t>
          <sourcecode type="cddl"><![CDATA[
validity-map = {
  ? &(not-before: 0) => time
  &(not-after: 1) => time
}
]]></sourcecode>
          <ul spacing="normal">
            <li>
              <t><tt>not-before</tt> (index 0): the date on which the signed manifest validity period
begins</t>
            </li>
            <li>
              <t><tt>not-after</tt> (index 1): the date on which the signed manifest validity period
ends</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-common-uuid">
          <name>UUID</name>
          <t>Used to tag a byte string as a binary UUID defined in <xref section="4.1.2." sectionFormat="of" target="RFC4122"/>.</t>
          <sourcecode type="cddl"><![CDATA[
uuid-type = bytes .size 16
tagged-uuid-type = #6.37(uuid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-ueid">
          <name>UEID</name>
          <t>Used to tag a byte string as Universal Entity ID Claim (UUID) defined in
<xref section="4.2.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
          <sourcecode type="cddl"><![CDATA[
ueid-type = bytes .size 33
tagged-ueid-type = #6.550(ueid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-oid">
          <name>OID</name>
          <t>Used to tag a byte string as the BER encoding <xref target="X.690"/> of an absolute object
identifier <xref target="RFC9090"/>.</t>
          <sourcecode type="cddl"><![CDATA[
oid-type = bytes
tagged-oid-type = #6.111(oid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-tagged-int">
          <name>Tagged Integer Type</name>
          <t>Used as a class identifier for the environment.  It is expected that the
integer value is vendor specific rather than globally meaningful.  Therefore,
the sibling <tt>vendor</tt> field in the <tt>class-map</tt> MUST be populated to define the
namespace under which the value must be understood.</t>
          <sourcecode type="cddl"><![CDATA[
tagged-int-type = #6.551(int)
]]></sourcecode>
        </section>
        <section anchor="sec-common-hash-entry">
          <name>Digest</name>
          <t>A digest represents the value of a hashing operation together with the hash
algorithm used.  The type of the digest algorithm identifier can be either
<tt>int</tt> or <tt>text</tt>.  When carried as an integer value, it is interpreted according
to the "Named Information Hash Algorithm Registry" <xref target="IANA.named-information"/>.
When it is carried as <tt>text</tt>, there are no requirements with regards to its
format.  In general, the <tt>int</tt> encoding is RECOMMENDED.  The <tt>text</tt> encoding
should only be used when the <tt>digest</tt> type conveys reference value
measurements that are matched verbatim with Evidence that uses the same
convention - e.g., <xref section="4.4.1.5" sectionFormat="of" target="I-D.tschofenig-rats-psa-token"/>).</t>
          <sourcecode type="cddl"><![CDATA[
digest = [
  alg: (int / text),
  val: bytes
]
]]></sourcecode>
        </section>
        <section anchor="sec-common-tagged-bytes">
          <name>Tagged Bytes Type</name>
          <t>An opaque, variable-length byte string.
It can be used in different contexts: as an instance, class or group identifier in an <tt>environment-map</tt>; as a raw value measurement in a <tt>measurement-values-map</tt>.
Its semantics are defined by the context in which it is found, and by the overarching CoRIM profile.
When used as an identifier the responsible allocator entity SHOULD ensure uniqueness within the context that it is used.</t>
          <sourcecode type="cddl"><![CDATA[
tagged-bytes = #6.560(bytes)
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-corim">
      <name>Concise Reference Integrity Manifest (CoRIM)</name>
      <t>A CoRIM is a collection of tags and related metadata as described below.</t>
      <t>Tags can be of different types:</t>
      <ul spacing="normal">
        <li>
          <t>Concise Module ID (CoMID) tags (<xref target="sec-comid"/>) contain metadata and claims about the hardware and firmware modules.</t>
        </li>
        <li>
          <t>Concise Software ID (CoSWID) tags <xref target="I-D.ietf-sacm-coswid"/> describe software components.</t>
        </li>
        <li>
          <t>Concise Bill of Material (CoBOM) tags (<xref target="sec-cobom"/>) contain the list of CoMID and CoSWID tags that the Verifier should consider as "active" at a certain point in time.</t>
        </li>
      </ul>
      <t>The set of tags is extensible so that future specifications can add new kinds of information.
For example, Concise Trust Anchor Stores (CoTS) <xref target="I-D.ietf-rats-concise-ta-stores"/> is currently being defined as a standard CoRIM extension.</t>
      <t>Each CoRIM contains a unique identifier to distinguish a CoRIM from other CoRIMs.
<cref anchor="tracked-at">Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/73</t>
      <t>CoRIM can also carry the following optional metadata:</t>
      <ul spacing="normal">
        <li>
          <t>A locator, which allows discovery of possibly related RIMs</t>
        </li>
        <li>
          <t>A profile identifier, which is used to interpret the information contained in the enclosed tags. A profile allows the base CoRIM schema to be customised to fit a specific Attester.  For example, see <xref target="I-D.fdb-rats-psa-endorsements"/>.</t>
        </li>
        <li>
          <t>A validity period, which indicates the time period for which the CoRIM contents are valid.</t>
        </li>
        <li>
          <t>Information about the supply chain entities responsible for the contents of the CoRIM and their associated roles.</t>
        </li>
      </ul>
      <t>A CoRIM can be signed (<xref target="sec-corim-signed"/>) using COSE Sign1 to provide end-to-end security to the CoRIM contents.
When CoRIM is signed, the protected header carries further identifying information about the CoRIM signer.
Alternatively, CoRIM can be encoded as a CBOR-tagged payload (<xref target="sec-corim-map"/>) and transported over a secure channel.</t>
      <t>The following CDDL describes the top-level CoRIM.</t>
      <sourcecode type="cddl"><![CDATA[
corim = tagged-concise-rim-type-choice

$concise-rim-type-choice /= tagged-corim-map
$concise-rim-type-choice /= tagged-signed-corim
]]></sourcecode>
      <section anchor="sec-corim-map">
        <name>CoRIM Map</name>
        <t>The CDDL specification for the <tt>corim-map</tt> is as follows and this rule and its
constraints must be followed when creating or validating a CoRIM map.</t>
        <sourcecode type="cddl"><![CDATA[
corim-map = {
  &(id: 0) => $corim-id-type-choice
  &(tags: 1) => [ + $concise-tag-type-choice ]
  ? &(dependent-rims: 2) => [ + corim-locator-map ]
  ? &(profile: 3) => $profile-type-choice
  ? &(rim-validity: 4) => validity-map
  ? &(entities: 5) => [ + corim-entity-map ]
  * $$corim-map-extension
}
]]></sourcecode>
        <t>The following describes each child item of this map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>id</tt> (index 0): A globally unique identifier to identify a CoRIM. Described
in <xref target="sec-corim-id"/></t>
          </li>
          <li>
            <t><tt>tags</tt> (index 1):  An array of one or more CoMID or CoSWID tags.  Described
in <xref target="sec-corim-tags"/></t>
          </li>
          <li>
            <t><tt>dependent-rims</tt> (index 2): One or more services supplying additional,
possibly dependent, manifests or related files. Described in
<xref target="sec-corim-locator-map"/></t>
          </li>
          <li>
            <t><tt>profile</tt> (index 3): An optional profile identifier for the tags contained in
this CoRIM.  The profile MUST be understood by the CoRIM processor.  Failure
to recognize the profile identifier MUST result in the rejection of the
entire CoRIM.  If missing, the profile defaults to DICE.
Described in <xref target="sec-corim-profile-types"/></t>
          </li>
          <li>
            <t><tt>rim-validity</tt> (index 4): Specifies the validity period of the CoRIM.
Described in <xref target="sec-common-validity"/></t>
          </li>
          <li>
            <t><tt>entities</tt> (index 5): A list of entities involved in a CoRIM life-cycle.
Described in <xref target="sec-corim-entity"/></t>
          </li>
          <li>
            <t><tt>$$corim-map-extension</tt>: This CDDL socket is used to add new information
structures to the <tt>corim-map</tt>.  See <xref target="sec-iana-corim"/>.</t>
          </li>
        </ul>
        <sourcecode type="cddl"><![CDATA[
tagged-corim-map = #6.501(corim-map)
]]></sourcecode>
        <section anchor="sec-corim-id">
          <name>Identity</name>
          <t>A CoRIM Identifier uniquely identifies a CoRIM instance. The base schema allows UUID and text
identifiers. Other types of identifiers could be defined as needed.</t>
          <sourcecode type="cddl"><![CDATA[
$corim-id-type-choice /= tstr
$corim-id-type-choice /= uuid-type
]]></sourcecode>
        </section>
        <section anchor="sec-corim-tags">
          <name>Tags</name>
          <t>A <tt>$concise-tag-type-choice</tt> is a tagged CBOR payload that carries either a
CoMID (<xref target="sec-comid"/>), a CoSWID <xref target="I-D.ietf-sacm-coswid"/>, or a CoBOM <xref target="sec-cobom"/>.</t>
          <sourcecode type="cddl"><![CDATA[
$concise-tag-type-choice /= tagged-concise-swid-tag
$concise-tag-type-choice /= tagged-concise-mid-tag
$concise-tag-type-choice /= tagged-concise-bom-tag
]]></sourcecode>
        </section>
        <section anchor="sec-corim-locator-map">
          <name>Locator Map</name>
          <t>The locator map contains pointers to repositories where dependent manifests,
certificates, or other relevant information can be retrieved by the Verifier.</t>
          <sourcecode type="cddl"><![CDATA[
corim-locator-map = {
  &(href: 0) => uri
  ? &(thumbprint: 1) => digest
}
]]></sourcecode>
          <t>The following describes each child element of this type.</t>
          <ul spacing="normal">
            <li>
              <t><tt>href</tt> (index 0): URI identifying the additional resource that can be fetched</t>
            </li>
            <li>
              <t><tt>thumbprint</tt> (index 1): expected digest of the resource referenced by <tt>href</tt>.
See <xref target="sec-common-hash-entry"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-corim-profile-types">
          <name>Profile Types</name>
          <t>Profiling is the mechanism that allows the base CoRIM schema to be customised to fit a specific Attester.</t>
          <t>A profile defines which of the optional parts of a CoRIM are required, which are prohibited, and which extension points are exercised and how.
A profile MUST NOT alter the syntax or semantics of a standard CoRIM type.
A profile MAY constrain the values of a given CoRIM type to a subset of the values.
A profile MAY extend the set of a given CoRIM type using the defined extension points (see <xref target="sec-extensibility"/>).
Exercised extension points should preserve the intent of the original semantics.</t>
          <t>CoRIM profiles SHOULD be specified in a publicly available document.</t>
          <t>A CoRIM profile can use one of the base CoRIM media types defined in <xref target="sec-mt-corim-signed"/> and
<xref target="sec-mt-corim-unsigned"/> with the <tt>profile</tt> parameter set to the appropriate value.
Alternatively, it MAY define and register its own media type.</t>
          <t>A profile identifier is either an OID <xref target="RFC9090"/> or a URL <xref target="STD66"/>.</t>
          <t>The profile identifier uniquely identifies a documented profile.  Any changes
to the profile, even the slightest deviation, is considered a different profile
that MUST have a different identifier.</t>
          <sourcecode type="cddl"><![CDATA[
$profile-type-choice /= uri 
$profile-type-choice /= tagged-oid-type
]]></sourcecode>
        </section>
        <section anchor="sec-corim-entity">
          <name>Entities</name>
          <t>The CoRIM Entity is an instantiation of the Entity generic
(<xref target="sec-common-entity"/>) using a <tt>$corim-role-type-choice</tt>.</t>
          <t>The only role defined in this specification for a CoRIM Entity is
<tt>manifest-creator</tt>.</t>
          <t>The <tt>$$corim-entity-map-extension</tt> extension socket is empty in this
specification.</t>
          <sourcecode type="cddl"><![CDATA[
corim-entity-map =
  entity-map<$corim-role-type-choice, $$corim-entity-map-extension>

$corim-role-type-choice /= &(manifest-creator: 1)
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-corim-signed">
        <name>Signed CoRIM</name>
        <sourcecode type="cddl"><![CDATA[
signed-corim = #6.18(COSE-Sign1-corim)
]]></sourcecode>
        <t>Signing a CoRIM follows the procedures defined in CBOR Object Signing and
Encryption <xref target="STD96"/>. A CoRIM tag MUST be wrapped in a COSE_Sign1 structure.
The CoRIM MUST be signed by the CoRIM creator.</t>
        <t>The following CDDL specification defines a restrictive subset of COSE header
parameters that MUST be used in the protected header alongside additional
information about the CoRIM encoded in a <tt>corim-meta-map</tt> (<xref target="sec-corim-meta"/>).</t>
        <sourcecode type="cddl"><![CDATA[
COSE-Sign1-corim = [
  protected: bstr .cbor protected-corim-header-map
  unprotected: unprotected-corim-header-map
  payload: bstr .cbor tagged-corim-map
  signature: bstr
]
]]></sourcecode>
        <t>The following describes each child element of this type.</t>
        <ul spacing="normal">
          <li>
            <t><tt>protected</tt>: A CBOR Encoded protected header which is protected by the COSE
signature. Contains information as given by Protected Header Map below.</t>
          </li>
          <li>
            <t><tt>unprotected</tt>: A COSE header that is not protected by COSE signature.</t>
          </li>
          <li>
            <t><tt>payload</tt>: A CBOR encoded tagged CoRIM.</t>
          </li>
          <li>
            <t><tt>signature</tt>: A COSE signature block which is the signature over the protected
and payload components of the signed CoRIM.</t>
          </li>
        </ul>
        <section anchor="protected-header-map">
          <name>Protected Header Map</name>
          <sourcecode type="cddl"><![CDATA[
protected-corim-header-map = {
  &(alg-id: 1) => int
  &(content-type: 3) => "application/corim-unsigned+cbor"
  &(issuer-key-id: 4) => bstr
  &(corim-meta: 8) => bstr .cbor corim-meta-map
  * cose-label => cose-value
}
]]></sourcecode>
          <t>The following describes each child item of this map.</t>
          <ul spacing="normal">
            <li>
              <t><tt>alg-id</tt> (index 1): An integer that identifies a signature algorithm.</t>
            </li>
            <li>
              <t><tt>content-type</tt> (index 3): A string that represents the "MIME Content type"
carried in the CoRIM payload.</t>
            </li>
            <li>
              <t><tt>issuer-key-id</tt> (index 4): A bit string which is a key identity pertaining to
the CoRIM Issuer.</t>
            </li>
            <li>
              <t><tt>corim-meta</tt> (index 8): A map that contains metadata associated with a
signed CoRIM. Described in <xref target="sec-corim-meta"/>.</t>
            </li>
          </ul>
          <t>Additional data can be included in the COSE header map as per <xref section="3" sectionFormat="of" target="STD96"/>.</t>
        </section>
        <section anchor="sec-corim-meta">
          <name>Meta Map</name>
          <t>The CoRIM meta map identifies the entity or entities that create and sign the
CoRIM. This ensures the consumer is able to identify credentials used to
authenticate its signer.</t>
          <sourcecode type="cddl"><![CDATA[
corim-meta-map = {
  &(signer: 0) => corim-signer-map
  ? &(signature-validity: 1) => validity-map
}
]]></sourcecode>
          <t>The following describes each child item of this group.</t>
          <ul spacing="normal">
            <li>
              <t><tt>signer</tt> (index 0): Information about the entity that signs the CoRIM.
Described in <xref target="sec-corim-signer"/></t>
            </li>
            <li>
              <t><tt>signature-validity</tt> (index 1): Validity period for the CoRIM. Described in
<xref target="sec-common-validity"/></t>
            </li>
          </ul>
          <section anchor="sec-corim-signer">
            <name>Signer Map</name>
            <sourcecode type="cddl"><![CDATA[
corim-signer-map = {
  &(signer-name: 0) => $entity-name-type-choice
  ? &(signer-uri: 1) => uri
  * $$corim-signer-map-extension
}
]]></sourcecode>
            <ul spacing="normal">
              <li>
                <t><tt>signer-name</tt> (index 0): Name of the organization that performs the signer
role</t>
              </li>
              <li>
                <t><tt>signer-uri</tt> (index 1): A URI identifying the same organization</t>
              </li>
              <li>
                <t><tt>$$corim-signer-map-extension</tt>: Extension point for future expansion of the
Signer map.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="sec-corim-unprotected-header">
          <name>Unprotected CoRIM Header Map</name>
          <sourcecode type="cddl"><![CDATA[
unprotected-corim-header-map = {
  * cose-label => cose-value
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-comid">
      <name>Concise Module Identifier (CoMID)</name>
      <t>A CoMID tag contains information about hardware, firmware, or module composition.</t>
      <t>Each CoMID has a unique ID that is used to unambigously identify CoMID instances when cross referencing CoMID tags, for example in typed link relations, or in a CoBOM tag.</t>
      <t>A CoMID defines several types of Claims, using "triples" semantics.</t>
      <t>At a high level, a triple is a statement that links a subject to an object via a predicate.
CoMID triples typically encode assertions made by the CoRIM author about Attesting or Target Environments and their security features, for example measurements, cryptographic key material, etc.</t>
      <t>The set of triples is extensible.
The following triples are currently defined:</t>
      <ul spacing="normal">
        <li>
          <t>Reference Values triples: containing Reference Values that are expected to match Evidence for a given Target Environment (<xref target="sec-comid-triple-refval"/>).</t>
        </li>
        <li>
          <t>Endorsed Values triples: containing "Endorsed Values", i.e., features about an Environment that do not appear in Evidence. Specific examples include testing or certification data pertaining to a module (<xref target="sec-comid-triple-endval"/>).</t>
        </li>
        <li>
          <t>Device Identity triples: containing cryptographic credentials - for example, an IDevID - uniquely identifying a device (<xref target="sec-comid-triple-identity"/>).</t>
        </li>
        <li>
          <t>Attestation Key triples: containing cryptographic keys that are used to verify the integrity protection on the Evidence received from the Attester (<xref target="sec-comid-triple-attest-key"/>).</t>
        </li>
        <li>
          <t>Domain dependency triples: describing trust relationships between domains, i.e., collection of related environments and their measurements (<xref target="sec-comid-triple-domain-dependency"/>).</t>
        </li>
        <li>
          <t>Domain membership triples: describing topological relationships between (sub-)modules. For example, in a composite Attester comprising multiple sub-Attesters (sub-modules), this triple can be used to define the topological relationship between lead- and sub- Attester environments (<xref target="sec-comid-triple-domain-membership"/>).</t>
        </li>
        <li>
          <t>CoMID-CoSWID linking triples: associating a Target Environment with existing CoSWID tags (<xref target="sec-comid-triple-coswid"/>).</t>
        </li>
      </ul>
      <section anchor="structure">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-mid-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoMID
tag:</t>
        <sourcecode type="cddl"><![CDATA[
concise-mid-tag = {
  ? &(language: 0) => text
  &(tag-identity: 1) => tag-identity-map
  ? &(entities: 2) => [ + comid-entity-map ]
  ? &(linked-tags: 3) => [ + linked-tag-map ]
  &(triples: 4) => triples-map
  * $$concise-mid-tag-extension
}
]]></sourcecode>
        <t>The following describes each member of the <tt>concise-mid-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>lang</tt> (index 0): A textual language tag that conforms with IANA "Language
Subtag Registry" <xref target="IANA.language-subtag-registry"/>. The context of the specified language
applies to all sibling and descendant textual values, unless a descendant
object has defined a different language tag. Thus, a new context is
established when a descendant object redefines a new language tag.  All
textual values within a given context MUST be considered expressed in the
specified language.</t>
          </li>
          <li>
            <t><tt>tag-identity</tt> (index 1): A <tt>tag-identity-map</tt> containing unique
identification information for the CoMID. Described in <xref target="sec-comid-tag-id"/>.</t>
          </li>
          <li>
            <t><tt>entities</tt> (index 2): Provides information about one or more organizations
responsible for producing the CoMID tag. Described in <xref target="sec-comid-entity"/>.</t>
          </li>
          <li>
            <t><tt>linked-tags</tt> (index 3): A list of one or more <tt>linked-tag-map</tt> (described in
<xref target="sec-comid-linked-tag"/>), providing typed relationships between this and
other CoMIDs.</t>
          </li>
          <li>
            <t><tt>triples</tt> (index 4): One or more triples providing information specific to
the described module, e.g.: reference or endorsed values, cryptographic
material, or structural relationship between the described module and other
modules.  Described in (<xref target="sec-comid-triples"/>).</t>
          </li>
        </ul>
        <section anchor="sec-comid-tag-id">
          <name>Tag Identity</name>
          <sourcecode type="cddl"><![CDATA[
tag-identity-map = {
  &(tag-id: 0) => $tag-id-type-choice
  ? &(tag-version: 1) => tag-version-type
}
]]></sourcecode>
          <t>The following describes each member of the <tt>tag-identity-map</tt>.</t>
          <ul spacing="normal">
            <li>
              <t><tt>tag-id</tt> (index 0): A universally unique identifier for the CoMID. Described
in <xref target="sec-tag-id"/>.</t>
            </li>
            <li>
              <t><tt>tag-version</tt> (index 1): Optional versioning information for the <tt>tag-id</tt> .
Described in <xref target="sec-tag-version"/>.</t>
            </li>
          </ul>
          <section anchor="sec-tag-id">
            <name>Tag ID</name>
            <sourcecode type="cddl"><![CDATA[
$tag-id-type-choice /= tstr
$tag-id-type-choice /= uuid-type
]]></sourcecode>
            <t>A Tag ID is either a 16-byte binary string, or a textual identifier, uniquely
referencing the CoMID. The tag identifier MUST be globally unique. Failure to
ensure global uniqueness can create ambiguity in tag use since the tag-id
serves as the global key for matching, lookups and linking. If represented as a
16-byte binary string, the identifier MUST be a valid universally unique
identifier as defined by <xref target="RFC4122"/>. There are no strict guidelines on how the
identifier is structured, but examples include a 16-byte GUID (e.g., class 4
UUID) <xref target="RFC4122"/>, or a URI <xref target="STD66"/>.</t>
          </section>
          <section anchor="sec-tag-version">
            <name>Tag Version</name>
            <sourcecode type="cddl"><![CDATA[
tag-version-type = uint .default 0
]]></sourcecode>
            <t>Tag Version is an integer value that indicates the specific release revision of
the tag.  Typically, the initial value of this field is set to 0 and the value
is increased for subsequent tags produced for the same module release.  This
value allows a CoMID tag producer to correct an incorrect tag previously
released without indicating a change to the underlying module the tag
represents. For example, the tag version could be changed to add new metadata,
to correct a broken link, to add a missing reference value, etc. When producing
a revised tag, the new tag-version value MUST be greater than the old
tag-version value.</t>
          </section>
        </section>
        <section anchor="sec-comid-entity">
          <name>Entities</name>
          <sourcecode type="cddl"><![CDATA[
comid-entity-map =
  entity-map<$comid-role-type-choice, $$comid-entity-map-extension>
]]></sourcecode>
          <t>The CoMID Entity is an instantiation of the Entity generic
(<xref target="sec-common-entity"/>) using a <tt>$comid-role-type-choice</tt>.</t>
          <t>The <tt>$$comid-entity-map-extension</tt> extension socket is empty in this
specification.</t>
          <sourcecode type="cddl"><![CDATA[
$comid-role-type-choice /= &(tag-creator: 0)
$comid-role-type-choice /= &(creator: 1)
$comid-role-type-choice /= &(maintainer: 2)
]]></sourcecode>
          <t>The roles defined for a CoMID entity are:</t>
          <ul spacing="normal">
            <li>
              <t><tt>tag-creator</tt> (value 0): creator of the CoMID tag.</t>
            </li>
            <li>
              <t><tt>creator</tt> (value 1): original maker of the module described by the CoMID tag.</t>
            </li>
            <li>
              <t><tt>maintainer</tt> (value 2): an entity making changes to the module described by
the CoMID tag.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-comid-linked-tag">
          <name>Linked Tag</name>
          <t>The linked tag map represents a typed relationship between the embedding CoMID
tag (the source) and another CoMID tag (the target).</t>
          <sourcecode type="cddl"><![CDATA[
linked-tag-map = {
  &(linked-tag-id: 0) => $tag-id-type-choice
  &(tag-rel: 1) => $tag-rel-type-choice
}
]]></sourcecode>
          <t>The following describes each member of the <tt>tag-identity-map</tt>.</t>
          <ul spacing="normal">
            <li>
              <t><tt>linked-tag-id</tt> (index 0): Unique identifier for the target tag.  For the
definition see <xref target="sec-tag-id"/>.</t>
            </li>
            <li>
              <t><tt>tag-rel</tt> (index 1): the kind of relation linking the source tag to the
target identified by <tt>linked-tag-id</tt>.</t>
            </li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
$tag-rel-type-choice /= &(supplements: 0)
$tag-rel-type-choice /= &(replaces: 1)
]]></sourcecode>
          <t>The relations defined in this specification are:</t>
          <ul spacing="normal">
            <li>
              <t><tt>supplements</tt> (value 0): the source tag provides additional information about
the module described in the target tag.</t>
            </li>
            <li>
              <t><tt>replaces</tt> (value 1): the source tag corrects erroneous information
contained in the target tag.  The information in the target MUST be
disregarded.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-comid-triples">
          <name>Triples</name>
          <t>The <tt>triples-map</tt> contains all the CoMID triples broken down per category.  Not
all category need to be present but at least one category MUST be present and
contain at least one entry.</t>
          <sourcecode type="cddl"><![CDATA[
triples-map = non-empty<{
  ? &(reference-triples: 0) =>
    [ + reference-triple-record ]
  ? &(endorsed-triples: 1) =>
    [ + endorsed-triple-record ]
  ? &(identity-triples: 2) =>
    [ + identity-triple-record ]
  ? &(attest-key-triples: 3) =>
    [ + attest-key-triple-record ]
  ? &(dependency-triples: 4) =>
    [ + domain-dependency-triple-record ]
  ? &(membership-triples: 5) =>
    [ + domain-membership-triple-record ]
  ? &(coswid-triples: 6) =>
    [ + coswid-triple-record ]
  ? &(conditional-endorsement-series-triples: 8) =>
    [ + conditional-endorsement-series-triple-record ]
  ? &(conditional-endorsement-triples: 9) =>
    [ + conditional-endorsement-triple-record ]
  ? &(mec-endorsement-triples: 10) =>
    [ + mec-endorsement-triple-record ]
  * $$triples-map-extension
}>
]]></sourcecode>
          <t>The following describes each member of the <tt>triples-map</tt>:</t>
          <ul spacing="normal">
            <li>
              <t><tt>reference-triples</tt> (index 0): Triples containing reference values. Described
in <xref target="sec-comid-triple-refval"/>.</t>
            </li>
            <li>
              <t><tt>endorsed-triples</tt> (index 1): Triples containing endorsed values. Described
in <xref target="sec-comid-triple-endval"/>.</t>
            </li>
            <li>
              <t><tt>identity-triples</tt> (index 2): Triples containing identity credentials.
Described in <xref target="sec-comid-triple-identity"/>.</t>
            </li>
            <li>
              <t><tt>attest-key-triples</tt> (index 3): Triples containing verification keys
associated with attesting environments. Described in
<xref target="sec-comid-triple-attest-key"/>.</t>
            </li>
            <li>
              <t><tt>dependency-triples</tt> (index 4): Triples describing trust relationships
between domains.  Described in <xref target="sec-comid-triple-domain-dependency"/>.</t>
            </li>
            <li>
              <t><tt>membership-triples</tt> (index 5): Triples describing topological relationships
between (sub-)modules.  Described in <xref target="sec-comid-triple-domain-membership"/>.</t>
            </li>
            <li>
              <t><tt>coswid-triples</tt> (index 6): Triples associating modules with existing CoSWID
tags. Described in <xref target="sec-comid-triple-coswid"/>.</t>
            </li>
            <li>
              <t><tt>conditional-endorsement-series-triples</tt> (index 8) Triples describing a series of
conditional Endorsements based on the acceptance of a stateful environment. Described
in <xref target="sec-comid-triple-cond-series"/>.</t>
            </li>
            <li>
              <t><tt>conditional-endorsement-triples</tt> (index 9) Triples describing conditional
Endorsement based on the acceptance of a stateful environment. Described
in <xref target="sec-comid-triple-cond-end"/>.</t>
            </li>
            <li>
              <t><tt>mec-endorsement-triple-record</tt> (index 10) Triples describing a series of
Endorsement that are applicable based on the acceptance of a series of
stateful environment records. Described in
<xref target="sec-comid-triple-mec-endorsement"/>.</t>
            </li>
          </ul>
          <section anchor="common-types-1">
            <name>Common Types</name>
            <section anchor="environment">
              <name>Environment</name>
              <t>An <tt>environment-map</tt> may be used to represent a whole Attester, an Attesting
Environment, or a Target Environment.  The exact semantic depends on the
context (triple) in which the environment is used.</t>
              <t>An environment is named after a class, instance or group identifier (or a
combination thereof).</t>
              <sourcecode type="cddl"><![CDATA[
environment-map = non-empty<{
  ? &(class: 0) => class-map
  ? &(instance: 1) => $instance-id-type-choice
  ? &(group: 2) => $group-id-type-choice
}>
]]></sourcecode>
              <t>The following describes each member of the <tt>environment-map</tt>:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>class</tt> (index 0): Contains "class" attributes associated with the module.
Described in <xref target="sec-comid-class"/>.</t>
                </li>
                <li>
                  <t><tt>instance</tt> (index 1): Contains a unique identifier of a module's instance.
See <xref target="sec-comid-instance"/>.</t>
                </li>
                <li>
                  <t><tt>group</tt> (index 2): identifier for a group of instances, e.g., if an
anonymization scheme is used.</t>
                </li>
              </ul>
            </section>
            <section anchor="sec-comid-class">
              <name>Class</name>
              <t>The Class name consists of class attributes that distinguish the class of
environment from other classes. The class attributes include class-id, vendor,
model, layer, and index. The CoMID author determines which attributes are
needed.</t>
              <sourcecode type="cddl"><![CDATA[
class-map = non-empty<{
  ? &(class-id: 0) => $class-id-type-choice
  ? &(vendor: 1) => tstr
  ? &(model: 2) => tstr
  ? &(layer: 3) => uint
  ? &(index: 4) => uint
}>

$class-id-type-choice /= tagged-oid-type
$class-id-type-choice /= tagged-uuid-type
$class-id-type-choice /= tagged-int-type
$class-id-type-choice /= tagged-bytes
]]></sourcecode>
              <t>The following describes each member of the <tt>class-map</tt>:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>class-id</tt> (index 0): Identifies the environment via a well-known identifier.
Typically, <tt>class-id</tt> is an object identifier (OID) variable-length opaque byte string (<xref target="sec-common-tagged-bytes"/>) or universally unique
identifier (UUID). Use of this attribute is preferred.</t>
                </li>
                <li>
                  <t><tt>vendor</tt> (index 1): Identifies the entity responsible for choosing values for
the other class attributes that do not already have naming authority.</t>
                </li>
                <li>
                  <t><tt>model</tt> (index 2): Describes a product, generation, and family.  If
populated, vendor MUST also be populated.</t>
                </li>
                <li>
                  <t><tt>layer</tt> (index 3): Is used to capture where in a sequence the environment
exists. For example, the order in which bootstrap code is executed may have
security relevance.</t>
                </li>
                <li>
                  <t><tt>index</tt> (index 4): Is used when there are clones (i.e., multiple instances)
of the same class of environment.  Each clone is given a different index
value to disambiguate it from the other clones. For example, given a chassis
with several network interface controllers (NIC), each NIC can be given a
different index value.</t>
                </li>
              </ul>
            </section>
            <section anchor="sec-comid-instance">
              <name>Instance</name>
              <t>An instance carries a unique identifier that is reliably bound to a Target Environment
that is an instance of the Attester.</t>
              <t>The types defined for an instance identifier are CBOR tagged expressions of
UEID, UUID, variable-length opaque byte string (<xref target="sec-common-tagged-bytes"/>), or cryptographic key identifier.</t>
              <sourcecode type="cddl"><![CDATA[
$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type
$instance-id-type-choice /= $crypto-key-type-choice
$instance-id-type-choice /= tagged-bytes
]]></sourcecode>
            </section>
            <section anchor="group">
              <name> Group</name>
              <t>A group carries a unique identifier that is reliably bound to a group of
Attesters, for example when a number of Attester are hidden in the same
anonymity set.</t>
              <t>The types defined for a group identified are UUID and variable-length opaque byte string (<xref target="sec-common-tagged-bytes"/>).</t>
              <sourcecode type="cddl"><![CDATA[
$group-id-type-choice /= tagged-uuid-type
$group-id-type-choice /= tagged-bytes
]]></sourcecode>
            </section>
            <section anchor="measurements">
              <name>Measurements</name>
              <t>Measurements can be of a variety of things including software, firmware,
configuration files, read-only memory, fuses, IO ring configuration, partial
reconfiguration regions, etc. Measurements comprise raw values, digests, or
status information.</t>
              <t>An environment has one or more measurable elements. Each element can have a
dedicated measurement or multiple elements could be combined into a single
measurement. Measurements can have class, instance or group scope.  This is
typically determined by the triple's environment.</t>
              <t>Class measurements apply generally to all the Attesters in the given class.
Instance measurements apply to a specific Attester instance.  Environments
identified by a class identifier have measurements that are common to the
class. Environments identified by an instance identifier have measurements that
are specific to that instance.</t>
              <t>The supply chain entity that is responsible for providing the the measurements (i.e. Reference Values or Endorsed Values)
is by default the CoRIM signer. If a different entity is authorized to provide measurement values,
the <tt>authorized-by</tt> statement can be supplied in the <tt>measurement-map</tt>.</t>
              <sourcecode type="cddl"><![CDATA[
measurement-map = {
  ? &(mkey: 0) => $measured-element-type-choice
  &(mval: 1) => measurement-values-map
  ? &(authorized-by: 2) => [ + $crypto-key-type-choice ]
}
]]></sourcecode>
              <t>The following describes each member of the <tt>measurement-map</tt>:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>mkey</tt> (index 0): An optional unique identifier of the measured
(sub-)environment.  See <xref target="sec-comid-mkey"/>.</t>
                </li>
                <li>
                  <t><tt>mval</tt> (index 1): The measurements associated with the (sub-)environment.
Described in <xref target="sec-comid-mval"/>.</t>
                </li>
                <li>
                  <t><tt>authorized-by</tt> (index 2): The cryptographic identity of the individual or organization that is
 the designated authority for this measurement. For example, producer of the measurement or a delegated supplier.</t>
                </li>
              </ul>
              <section anchor="sec-comid-mkey">
                <name>Measurement Keys</name>
                <t>The types defined for a measurement identifier are OID, UUID or uint.</t>
                <sourcecode type="cddl"><![CDATA[
$measured-element-type-choice /= tagged-oid-type
$measured-element-type-choice /= tagged-uuid-type
$measured-element-type-choice /= uint
]]></sourcecode>
              </section>
              <section anchor="sec-comid-mval">
                <name>Measurement Values</name>
                <t>A <tt>measurement-values-map</tt> contains measurements associated with a certain
environment. Depending on the context (triple) in which they are found,
elements in a <tt>measurement-values-map</tt> can represent class or instance
measurements. Note that some of the elements have instance scope only.</t>
                <t>Measurement values may support use cases beyond Verifier appraisal.
Typically, a Relying Party determines if additional processing is desirable
and whether the processing is applied by the Verifier or the Relying Party.</t>
                <sourcecode type="cddl"><![CDATA[
measurement-values-map = non-empty<{
  ? &(version: 0) => version-map
  ? &(svn: 1) => svn-type-choice
  ? &(digests: 2) => [ + digest ]
  ? &(flags: 3) => flags-map
  ? (
      &(raw-value: 4) => $raw-value-type-choice,
      ? &(raw-value-mask: 5) => raw-value-mask-type
    )
  ? &(mac-addr: 6) => mac-addr-type-choice
  ? &(ip-addr: 7) =>  ip-addr-type-choice
  ? &(serial-number: 8) => text
  ? &(ueid: 9) => ueid-type
  ? &(uuid: 10) => uuid-type
  ? &(name: 11) => text
  ? &(cryptokeys: 13) => [ + $crypto-key-type-choice ]
  ? &(integrity-registers: 14) => integrity-registers
  * $$measurement-values-map-extension
}>
]]></sourcecode>
                <t>The following describes each member of the <tt>measurement-values-map</tt>.</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>version</tt> (index 0): Typically changes whenever the measured environment is
updated. Described in <xref target="sec-comid-version"/>.</t>
                  </li>
                  <li>
                    <t><tt>svn</tt> (index 1): The security version number typically changes only when a
security relevant change is made to the measured environment.  Described in
<xref target="sec-comid-svn"/>.</t>
                  </li>
                  <li>
                    <t><tt>digests</tt> (index 2): Contains the digest(s) of the measured environment
together with the respective hash algorithm used in the process.  See
<xref target="sec-common-hash-entry"/>.</t>
                  </li>
                  <li>
                    <t><tt>flags</tt> (index 3): Describes security relevant operational modes. For
example, whether the environment is in a debug mode, recovery mode, not fully
configured, not secure, not replay protected or not integrity protected. The
<tt>flags</tt> field indicates which operational modes are currently associated with
measured environment.  Described in <xref target="sec-comid-flags"/>.</t>
                  </li>
                  <li>
                    <t><tt>raw-value</tt> (index 4): Contains the actual (not hashed) value of the element.
An optional <tt>raw-value-mask</tt> (index 5) indicates which bits in the
<tt>raw-value</tt> field are relevant for verification. A mask of all ones ("1")
means all bits in the <tt>raw-value</tt> field are relevant. Multiple values could
be combined to create a single <tt>raw-value</tt> attribute. The vendor determines
how to pack multiple values into a single <tt>raw-value</tt> structure. The same
packing format is used when collecting Evidence so that Reference Values and
collected values are bit-wise comparable. The vendor determines the encoding
of <tt>raw-value</tt> and the corresponding <tt>raw-value-mask</tt>.</t>
                  </li>
                  <li>
                    <t><tt>mac-addr</tt> (index 6): A EUI-48 or EUI-64 MAC address associated with the
measured environment.  Described in <xref target="sec-comid-address-types"/>.</t>
                  </li>
                  <li>
                    <t><tt>ip-addr</tt> (index 7): An IPv4 or IPv6 address associated with the measured
environment.  Described in <xref target="sec-comid-address-types"/>.</t>
                  </li>
                  <li>
                    <t><tt>serial-number</tt> (index 8): A text string representing the product serial
number.</t>
                  </li>
                  <li>
                    <t><tt>ueid</tt> (index 9): UEID associated with the measured environment.  See
<xref target="sec-common-ueid"/>.</t>
                  </li>
                  <li>
                    <t><tt>uuid</tt> (index 10): UUID associated with the measured environment.  See
<xref target="sec-common-uuid"/>.</t>
                  </li>
                  <li>
                    <t><tt>name</tt> (index 11): a name associated with the measured environment.</t>
                  </li>
                  <li>
                    <t><tt>cryptokeys</tt> (index 13): identifies cryptographic keys that are protected by the Target Environment
See <xref target="sec-crypto-keys"/> for the supported formats.
An Attesting Environment determines that keys are protected as part of Claims collection.
Appraisal verifies that, for each value in <tt>cryptokeys</tt>, there is a matching Reference Value entry.
Matching is described in <xref target="sec-cryptokeys-matching"/>.</t>
                  </li>
                  <li>
                    <t><tt>integrity-registers</tt> (index 14): A group of one or more named measurements associated with the environment.  Described in <xref target="sec-comid-integrity-registers"/>.</t>
                  </li>
                </ul>
              </section>
              <section anchor="sec-comid-version">
                <name>Version</name>
                <t>A <tt>version-map</tt> contains details about the versioning of a measured
environment.</t>
                <sourcecode type="cddl"><![CDATA[
version-map = {
  &(version: 0) => text
  ? &(version-scheme: 1) => $version-scheme
}
]]></sourcecode>
                <t>The following describes each member of the <tt>version-map</tt>:</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>version</tt> (index 0): the version string</t>
                  </li>
                  <li>
                    <t><tt>version-scheme</tt> (index 1): an optional indicator of the versioning
convention used in the <tt>version</tt> attribute.  Defined in <xref section="4.1" sectionFormat="of" target="I-D.ietf-sacm-coswid"/>.  The CDDL is copied below for convenience.</t>
                  </li>
                </ul>
                <sourcecode type="cddl"><![CDATA[
$version-scheme /= &(multipartnumeric: 1)
$version-scheme /= &(multipartnumeric-suffix: 2)
$version-scheme /= &(alphanumeric: 3)
$version-scheme /= &(decimal: 4)
$version-scheme /= &(semver: 16384)
$version-scheme /= int / text
]]></sourcecode>
              </section>
              <section anchor="sec-comid-svn">
                <name>Security Version Number</name>
                <t>The following details the security version number (<tt>svn</tt>) and the minimum security version number (<tt>min-svn</tt>) statements.
A security version number is used to track changes to an object (e.g., a secure enclave, a boot loader executable, a configuration file, etc.) that are security relevant.
Rollback of a security relevant change is considered to be an attack vector, as such, security version numbers can't be decremented.
If a security relevant flaw is discovered in the Target Environment and subsequently fiexed, the <tt>svn</tt> value is typically incremented.</t>
                <t>There may be several revisions to a Target Environment that are in use at the same time.
If there are multiple revisions with different <tt>svn</tt> values, the revision with a lower <tt>svn</tt> value may
or may not be in a security critical condition. The Endorser may provide a minimum security version number
using <tt>min-svn</tt> to specify the lowest <tt>svn</tt> value that is acceptable.
<tt>svn</tt> values that are equal to or greater than <tt>min-svn</tt> do not signal a security critical condition.
<tt>svn</tt> values that are below <tt>min-svn</tt> are in a security critical condition that is unsafe for normal use.</t>
                <t>The <tt>svn-type-choice</tt> measurement consists of a <tt>tagged-svn</tt> or <tt>tagged-min-svn</tt> value.
The <tt>tagged-svn</tt> and <tt>tagged-min-svn</tt> tags are CBOR tags with the values <tt>#6.552</tt> and <tt>#6.553</tt> respectively.</t>
                <sourcecode type="cddl"><![CDATA[
svn-type = uint
svn = svn-type
min-svn = svn-type
tagged-svn = #6.552(svn)
tagged-min-svn = #6.553(min-svn)
svn-type-choice = tagged-svn / tagged-min-svn
]]></sourcecode>
              </section>
              <section anchor="sec-comid-flags">
                <name>Flags</name>
                <t>The <tt>flags-map</tt> measurement describes a number of boolean operational modes.
If a <tt>flags-map</tt> value is not specified, then the operational mode is unknown.</t>
                <sourcecode type="cddl"><![CDATA[
flags-map = {
  ? &(is-configured: 0) => bool
  ? &(is-secure: 1) => bool
  ? &(is-recovery: 2) => bool
  ? &(is-debug: 3) => bool
  ? &(is-replay-protected: 4) => bool
  ? &(is-integrity-protected: 5) => bool
  ? &(is-runtime-meas: 6) => bool
  ? &(is-immutable: 7) => bool
  ? &(is-tcb: 8) => bool
  ? &(is-confidentiality-protected: 9) => bool
  * $$flags-map-extension
}
]]></sourcecode>
                <t>The following describes each member of the <tt>flags-map</tt>:</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>is-configured</tt> (index 0): If the flag is true, the measured environment is fully configured for normal operation.</t>
                  </li>
                  <li>
                    <t><tt>is-secure</tt> (index 1): If the flag is true, the measured environment's configurable
security settings are fully enabled.</t>
                  </li>
                  <li>
                    <t><tt>is-recovery</tt> (index 2): If the flag is true, the measured environment is in recovery
mode.</t>
                  </li>
                  <li>
                    <t><tt>is-debug</tt> (index 3): If the flag is true, the measured environment is in a debug enabled
mode.</t>
                  </li>
                  <li>
                    <t><tt>is-replay-protected</tt> (index 4): If the flag is true, the measured environment is
protected from replay by a previous image that differs from the current image.</t>
                  </li>
                  <li>
                    <t><tt>is-integrity-protected</tt> (index 5): If the flag is true, the measured environment is
protected from unauthorized update.</t>
                  </li>
                  <li>
                    <t><tt>is-runtime-meas</tt> (index 6): If the flag is true, the measured environment is measured
after being loaded into memory.</t>
                  </li>
                  <li>
                    <t><tt>is-immutable</tt> (index 7): If the flag is true, the measured environment is immutable.</t>
                  </li>
                  <li>
                    <t><tt>is-tcb</tt> (index 8): If the flag is true, the measured environment is a trusted
computing base.</t>
                  </li>
                  <li>
                    <t><tt>is-confidentiality-protected</tt> (index 9): If the flag is true, the measured environment
is confidentiality protected. For example, if the measured environment consists of memory,
the sensitive values in memory are encrypted.</t>
                  </li>
                </ul>
              </section>
              <section anchor="sec-comid-raw-value-types">
                <name>Raw Values Types</name>
                <t>Raw value measurements are typically vendor defined values that are checked by Verifiers
for consistency only, since the security relevance is opaque to Verifiers.</t>
                <t>There are two parts to a <tt>raw-value-group</tt>, a measurement and an optional mask.
The default raw value measurement is of type <tt>tagged-bytes</tt> (<xref target="sec-common-tagged-bytes"/>).
Additional raw value types can be defined, but must be CBOR tagged so that parsers can distinguish
between the various semantics of type values.</t>
                <t>The mask is applied by the Verifier as part of appraisal.
Only the raw value bits with corresponding TRUE mask bits are compared during appraisal.</t>
                <t>When a new raw value type is defined, the convention for applying the mask is also defined.
Typically, a CoRIM profile is used to define new raw values and mask semantics.</t>
                <sourcecode type="cddl"><![CDATA[
$raw-value-type-choice /= tagged-bytes

raw-value-mask-type = bytes
]]></sourcecode>
              </section>
              <section anchor="sec-comid-address-types">
                <name>Address Types</name>
                <t>The types or associating addressing information to a measured environment are:</t>
                <sourcecode type="cddl"><![CDATA[
ip-addr-type-choice = ip4-addr-type / ip6-addr-type
ip4-addr-type = bytes .size 4
ip6-addr-type = bytes .size 16

mac-addr-type-choice = eui48-addr-type / eui64-addr-type
eui48-addr-type = bytes .size 6
eui64-addr-type = bytes .size 8
]]></sourcecode>
              </section>
            </section>
            <section anchor="sec-crypto-keys">
              <name>Crypto Keys</name>
              <t>A cryptographic key can be one of the following formats:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>tagged-pkix-base64-key-type</tt>: PEM encoded SubjectPublicKeyInfo.
Defined in <xref section="13" sectionFormat="of" target="RFC7468"/>.</t>
                </li>
                <li>
                  <t><tt>tagged-pkix-base64-cert-type</tt>: PEM encoded X.509 public key certificate.
Defined in <xref section="5" sectionFormat="of" target="RFC7468"/>.</t>
                </li>
                <li>
                  <t><tt>tagged-pkix-base64-cert-path-type</tt>: X.509 certificate chain created by the
concatenation of as many PEM encoded X.509 certificates as needed.  The
certificates MUST be concatenated in order so that each directly certifies
the one preceding.</t>
                </li>
                <li>
                  <t><tt>tagged-cose-key-type</tt>: CBOR encoded COSE_Key or COSE_KeySet.
Defined in <xref section="7" sectionFormat="of" target="STD96"/></t>
                </li>
              </ul>
              <t>A cryptographic key digest can be one of the following formats:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>tagged-thumbprint-type</tt>: a <tt>digest</tt> of a raw public key. The digest value may
be used to find the public key if contained in a lookup table.</t>
                </li>
                <li>
                  <t><tt>tagged-cert-thumbprint-type</tt>: a <tt>digest</tt> of a certificate.
The digest value may be used to find the certificate if contained in a lookup table.</t>
                </li>
                <li>
                  <t><tt>tagged-cert-path-thumbprint-type</tt>: a <tt>digest</tt> of a certification path.
The digest value may be used to find the certificate path if contained in a lookup table.</t>
                </li>
              </ul>
              <t>In a split Verifier scenario, a first Verifier may verify the signature of a cryptographic key
then compute a digest of the key that is forwarded to a second Verifier. The second Verifier
completes the signature verification by performing certificate path validation, revocation
checks, and trust anchor checks.</t>
              <sourcecode type="cddl"><![CDATA[
$crypto-key-type-choice /= tagged-pkix-base64-key-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-path-type
$crypto-key-type-choice /= tagged-cose-key-type
$crypto-key-type-choice /= tagged-thumbprint-type
$crypto-key-type-choice /= tagged-cert-thumbprint-type
$crypto-key-type-choice /= tagged-cert-path-thumbprint-type

tagged-pkix-base64-key-type = #6.554(tstr)
tagged-pkix-base64-cert-type = #6.555(tstr)
tagged-pkix-base64-cert-path-type = #6.556(tstr)
tagged-thumbprint-type = #6.557(digest)
tagged-cose-key-type = #6.558(COSE_KeySet / COSE_Key)
tagged-cert-thumbprint-type = #6.559(digest)
tagged-cert-path-thumbprint-type = #6.561(digest)
]]></sourcecode>
            </section>
            <section anchor="sec-comid-integrity-registers">
              <name>Integrity Registers</name>
              <t>An Integrity Registers map groups together one or more measured "objects".
Each measured object has a unique identifier and one or more associated digests.
Identifiers are either unsigned integers or text strings and their type matters, e.g., unsigned integer 5 is distinct from the text string "5".</t>
              <sourcecode type="cddl"><![CDATA[
integrity-register-id-type-choice = uint / text

integrity-registers = {
  + integrity-register-id-type-choice => [ + digest ]
}
]]></sourcecode>
              <t>All the measured objects in an Integrity Registers map are explicitly named and the order in which they appear in the map is irrelevant.
Any digests associated with a measured object represent an acceptable state for the object.
Therefore, if multiple digests are provided, the acceptable state is their cross-product.
For example, given the following Integrity Registers:</t>
              <sourcecode type="cbor-diag"><![CDATA[
{
  0: [ [ 0, h'00' ] ],
  1: [ [ 0, h'11' ], [ 1, h'12' ] ]
}
]]></sourcecode>
              <t>then both</t>
              <sourcecode type="cbor-diag"><![CDATA[
{
  0: [ 0, h'00' ],
  1: [ 0, h'11' ]
}
]]></sourcecode>
              <t>and</t>
              <sourcecode type="cbor-diag"><![CDATA[
{
  0: [ 0, h'00' ],
  1: [ 1, h'12' ]
}
]]></sourcecode>
              <t>are acceptable states.</t>
              <t>Integrity Registers can be used to model the PCRs in a TPM or vTPM, in which case the identifier is the register index, or other kinds of vendor-specific measured objects.</t>
            </section>
            <section anchor="sec-comid-domain-type">
              <name>Domain Types</name>
              <t>A domain is a context for bundling a collection of related environments and
their measurements.</t>
              <t>Three types are defined: uint and text for local scope, UUID for global scope.</t>
              <sourcecode type="cddl"><![CDATA[
$domain-type-choice /= uint
$domain-type-choice /= text
$domain-type-choice /= tagged-uuid-type
$domain-type-choice /= tagged-oid-type
]]></sourcecode>
            </section>
          </section>
          <section anchor="sec-comid-triple-refval">
            <name>Reference Values Triple</name>
            <t>A Reference Values triple relates reference measurements to a Target
Environment. For Reference Value Claims, the subject identifies a Target
Environment, the object contains measurements, and the predicate asserts that
these are the expected (i.e., reference) measurements for the Target
Environment.</t>
            <sourcecode type="cddl"><![CDATA[
reference-triple-record = [
  environment-map
  measurement-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-endval">
            <name>Endorsed Values Triple</name>
            <t>An Endorsed Values triple declares additional measurements that are valid when
a Target Environment has been verified against reference measurements. For
Endorsed Value Claims, the subject is either a Target or Attesting Environment,
the object contains measurements, and the predicate defines semantics for how
the object relates to the subject.</t>
            <sourcecode type="cddl"><![CDATA[
endorsed-triple-record = [
  environment-map
  measurement-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-identity">
            <name>Device Identity Triple</name>
            <t>A Device Identity triple relates one or more cryptographic keys to a device.
The subject of an Identity triple uses an instance or class identifier to refer
to a device, and a cryptographic key is the object. The predicate asserts that
the identity is authenticated by the key. A common application for this triple
is device identity.</t>
            <sourcecode type="cddl"><![CDATA[
identity-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-attest-key">
            <name>Attestation Keys Triple</name>
            <t>An Attestation Keys triple relates one or more cryptographic keys to an
Attesting Environment. The Attestation Key triple subject is an Attesting
Environment whose object is a cryptographic key. The predicate asserts that the
Attesting Environment signs Evidence that can be verified using the key.</t>
            <sourcecode type="cddl"><![CDATA[
attest-key-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-dependency">
            <name>Domain Dependency Triple</name>
            <t>A Domain Dependency triple defines trust dependencies between measurement
sources.  The subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has
a predicate relationship to the object containing one or more dependent
domains.  Dependency means the subject domain’s trustworthiness properties rely
on the object domain(s) trustworthiness having been established before the
trustworthiness properties of the subject domain exists.</t>
            <sourcecode type="cddl"><![CDATA[
domain-dependency-triple-record = [
  $domain-type-choice
  [ + $domain-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-membership">
            <name>Domain Membership Triple</name>
            <t>A Domain Membership triple assigns domain membership to environments.  The
subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has a predicate
relationship to the object containing one or more environments.  Endorsed
environments (<xref target="sec-comid-triple-endval"/>) membership is conditional upon
successful matching of Reference Values (<xref target="sec-comid-triple-refval"/>) to
Evidence.</t>
            <sourcecode type="cddl"><![CDATA[
domain-membership-triple-record = [
  $domain-type-choice
  [ + environment-map ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-coswid">
            <name>CoMID-CoSWID Linking Triple</name>
            <t>A CoSWID triple relates reference measurements contained in one or more CoSWIDs
to a Target Environment. The subject identifies a Target Environment, the
object one or more unique tag identifiers of existing CoSWIDs, and the
predicate asserts that these contain the expected (i.e., reference)
measurements for the Target Environment.</t>
            <sourcecode type="cddl"><![CDATA[
coswid-triple-record = [
  environment-map
  [ + concise-swid-tag-id ]
]

concise-swid-tag-id = text / bstr .size 16
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-series">
            <name>Conditional Endorsement Series Triple</name>
            <t>A Conditional Endorsement Series triple uses a stateful environment, (i.e., <tt>stateful-environment-record</tt>),
that identifies a Target Environment based on an <tt>environment-map</tt> plus the <tt>measurement-map</tt> measurements
that have matching Evidence.</t>
            <t>The stateful Target Environment is a triple subject that MUST be satisfied before the series triple object is
matched.</t>
            <sourcecode type="cddl"><![CDATA[
; an environment with a set of measurements that must match evidence
stateful-environment-record = [
  environment-map,
  measurement-map
]
]]></sourcecode>
            <t>The series object is an array of <tt>conditional-series-record</tt> that has both Reference and Endorsed Values.
Each <tt>conditional-series-record</tt> record is evaluated in the order it appears in the series array.
The Endorsed Values are accepted if the series condition in a <tt>conditional-series-record</tt> matches the ACS.
The first <tt>conditional-series-record</tt> that successfully matches an ACS Entry terminates the matching and the corresponding Endorsed Values are accepted.
If none of the series conditions match an ACS Entry, the triple is not matched,
and no Endorsed values are accepted.</t>
            <t>The <tt>authorized-by</tt> value in <tt>measurement-map</tt> in the stateful environment, if present,
applies to all measurements in the triple, including <tt>conditional-series-record</tt> records.</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-series-triple-record = [
  stateful-environment-record
  ; order matters: the first matching record wins and halts matching
  [ + conditional-series-record ]
]
]]></sourcecode>
            <sourcecode type="cddl"><![CDATA[
conditional-series-record = [
  ; reference values to be matched against evidence
  refv: measurement-values-map
  ; endorsed values that apply in case revf matches
  endv: measurement-values-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-end">
            <name>Conditional Endorsement Triple</name>
            <t>A Conditional Endorsement triple uses a stateful environment, (i.e., <tt>stateful-environment-record</tt>),
that identifies a Target Environment based on an <tt>environment-map</tt> plus the <tt>measurement-map</tt> measurements
that have matching Evidence.</t>
            <t>The stateful Target Environment is a triple subject that MUST be satisfied before the Endorsed Values in the triple object are accepted.</t>
            <sourcecode type="cddl"><![CDATA[
; an environment with a set of measurements that must match evidence
stateful-environment-record = [
  environment-map,
  measurement-map
]
]]></sourcecode>
            <t>The <tt>authorized-by</tt> value in <tt>measurement-map</tt> in the stateful environment, if present,
applies to all measurements in the triple, including those in <tt>measurement-values-map</tt>.</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-triple-record = [
  stateful-environment-record,
  ; endorsed values
  measurement-values-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-mec-endorsement">
            <name>Multi-Environment Conditional (MEC) Endorsement Triple</name>
            <t>The semantics of the Multi-Environment Conditional (MEC) Endorsement Triple is as follows:</t>
            <ul empty="true">
              <li>
                <t>"IF accepted state matches all <tt>conds</tt> values, THEN every  entry in the <tt>endorsements</tt> is added to the accepted state"</t>
              </li>
            </ul>
            <sourcecode type="cddl"><![CDATA[
mec-endorsement-triple-record = [
  conds: [ + stateful-environment-record ]
  endorsements: [ + endorsed-triple-record ]
]
]]></sourcecode>
            <t>A <tt>mec-endorsement-triple-record</tt> has the following parameters:</t>
            <ul spacing="normal">
              <li>
                <t><tt>conds</tt>: all target environments, along with a specific state, that need to match <tt>state-triples</tt> entries in the ACS for the endorsement(s) to apply</t>
              </li>
              <li>
                <t><tt>endorsements</tt>: endorsements that are added to the ACS <tt>state-triples</tt> if all <tt>conds</tt> match.</t>
              </li>
            </ul>
            <t>The order in which MEC Endorsement triples are evaluated is important: different sorting may produce different end-results in the computed ACS.</t>
            <t>Therefore, the set of applicable MEC Endorsement triple MUST be topologically sorted based on the criterion that a MEC Endorsement triple is evaluated before another if its Target Environment and Endorsement pair is found in any of the stateful environments of the second triple.</t>
            <t>Notes:</t>
            <ul spacing="normal">
              <li>
                <t>In order to give the expected result, the condition must describe the expected context completely.</t>
              </li>
              <li>
                <t>The scope of a single MEC triple encompasses an arbitrary amount of environments across all layers in an Attester.</t>
              </li>
            </ul>
            <t>There are scope-related questions that need to be answered.  (<cref anchor="tracked-at_1">Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/176)</t>
          </section>
        </section>
      </section>
      <section anchor="sec-extensibility">
        <name>Extensibility</name>
        <t>The base CORIM schema is described using CDDL <xref target="RFC8610"/> that can be extended
only at specific allowed points known as "extension points"</t>
        <t>The following types of extensions are supported in CoRIM</t>
        <section anchor="map-extensions">
          <name>Map Extensions</name>
          <t>Map Extensions provides extensibility support to CoRIM Map structures.
CDDL map extensibility enables a CoRIM profile to extend the base CoRIM definition.
CDDL map extension points have the form <tt>($$NAME-extension)</tt> where "NAME" is the name of the map
and '$$' signifies map extensibility. Typically, map extension requires a convention
for code point naming that avoids code-point reuse.
Well-known code points may be in a registry, such as CoSWID <xref target="IANA.coswid"/>.
Additionally, a range of code points may be reserved for vendor-specific use such as negative integers.</t>
        </section>
        <section anchor="data-type-extensions">
          <name>Data Type Extensions</name>
          <t>Data type extensibility has the form <tt>($NAME-type-choice)</tt> where "NAME" is the type name
and '$' signifies type extensibility.</t>
          <t>Schema extensions (Map or Data Type) should be documented to facilitate interoperability. CoRIM profiles are best used to document vendor or industry defined extensions.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-cobom">
      <name>CoBOM</name>
      <t>A Concise Bill of Material (CoBOM) object represents the signal for the
Verifier to activate the listed tags. Verifier policy determines whether CoBOMs are required.</t>
      <t>When CoBOMs are required, each tag MUST be activated by a CoBOM before being processed.
All the tags listed in the CoBOM MUST be activated atomically. If any tag activated by a CoBOM is not available to the Verifier, the entire CoBOM is rejected.</t>
      <t>The number of CoBOMs required in a given supply chain ecosystem is dependent on
Verifier Owner's Appraisal Policy for Evidence. Corresponding policies are often driven by the complexity and nature of the use case.</t>
      <t>If a Verifier Owner has a policy that does not require CoBOM, tags within a CoRIM received by a Verifier
are activated immediately and treated valid for appraisal.</t>
      <t>There may be cases when Verifier receives CoRIMs from multiple
Reference Value providers and Endorsers. In such cases, a supplier (or other authorities, such as integrators)
may be designated to issue a single CoBOM to activate all the tags submitted to the Verifier
in these CoRIMs.</t>
      <t>In a more complex case, there may be multiple authorities that issue CoBOMs at different points in time.
An Appraisal Policy for Evidence may dictate how multiple CoBOMs are to be processed within the Verifier.</t>
      <section anchor="structure-1">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-bom-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoBOM
tag:</t>
        <sourcecode type="cddl"><![CDATA[
concise-bom-tag = {
  &(tag-identity: 0) => tag-identity-map
  &(tags-list: 1) => [ + tag-identity-map ],
  &(bom-validity: 2) => validity-map
  * $$concise-bom-tag-extension
}
]]></sourcecode>
        <t>The following describes each member of the <tt>concise-bom-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>tag-identity</tt> (index 0): A <tt>tag-identity-map</tt> containing unique
identification information for the CoBOM. Described in <xref target="sec-comid-tag-id"/>.</t>
          </li>
          <li>
            <t><tt>tags-list</tt> (index 1): A list of one or more <tt>tag-identity-maps</tt> identifying
the CoMID and CoSWID tags that constitute the "bill of material", i.e.,
a complete set of verification-related information.  The <tt>tags-list</tt> behaves
like a signaling mechanism from the supply chain (e.g., a product vendor) to
a Verifier that activates the tags in <tt>tags-list</tt> for use in the Evidence
appraisal process. The activation is atomic: all tags listed in <tt>tags-list</tt>
MUST be activated or no tags are activated.</t>
          </li>
          <li>
            <t><tt>bom-validity</tt> (index 2): Specifies the validity period of the CoBOM.
Described in <xref target="sec-common-validity"/></t>
          </li>
          <li>
            <t><tt>$$concise-bom-tag-extension</tt>: This CDDL socket is used to add new
information structures to the <tt>concise-bom-tag</tt>.  See <xref target="sec-iana-cobom"/>.
The <tt>$$concise-bom-tag-extension</tt> extension socket is empty in this
specification.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="corim-based-appraisal-of-evidence">
      <name>CoRIM-based Appraisal of Evidence</name>
      <t>The verification procedure is divided into three separate phases:</t>
      <ul spacing="normal">
        <li>
          <t>Appraisal Context initialisation</t>
        </li>
        <li>
          <t>Evidence collection</t>
        </li>
        <li>
          <t>Accepted Claims Set Augmentation</t>
        </li>
      </ul>
      <t>At a few well-defined points in the procedure, the Verifier behaviour will
depend on the specific CoRIM profile.
Each CoRIM profile MUST provide a description of the expected Verifier behavior
for each of those well-defined points.</t>
      <t>Note that what follows describes a simplified and standard algorithm.
Verifiers claiming compliance with this specification MUST exhibit the same
externally visible behavior as described here,
they are not required to use the same internal data structures.
For example, it is expected that the resources used during the initialisation
phase can be amortised across multiple appraisals.</t>
      <section anchor="verifier-abstraction">
        <name>Verifier Abstraction</name>
        <t>This document assumes Verifier implementations may differ.
To facilitate description of normative Verifier behavior,
this document uses abstract representation of Verifier internals.</t>
        <ul spacing="normal">
          <li>
            <t>Claim: A piece of information, in the form of a key-value pair.</t>
          </li>
          <li>
            <t>Environment Measurement Tuple (EMT): A structure containing a set of environment
Claims that describe a Target Environment and a set of measurement Claims that
describe attributes of the Target Environment.</t>
          </li>
          <li>
            <t>reference state: Claims that describe various alternative states of a Target Environment.
Reference Values Claims typically describe various possible states due to versioning,
manufactruing practices, or supplier configuration options.</t>
          </li>
          <li>
            <t>actual state: Claims that describe a Target Environment instance at a given point in time.
Endorsed Values and Evidence typically are Claims about actual state.</t>
          </li>
          <li>
            <t>Group: A set of Evidence, Reference Values, Endorsed Values and Appraisal Policies
which are processed together.
An Attester may be composed of multiple components, where each component may
represent a scope of appraisal.</t>
          </li>
          <li>
            <t>Authority: The entity asserting that a claim is true.
Typically, a Claim is asserted using a cryptographic key to digitally sign the Claim. A cryptographic key can be a proxy for a human or organizational entity.</t>
          </li>
          <li>
            <t>Accepted Claims Set (ACS): A structure that holds EMT Claims that have been vetted
following the appraisal process. The ACS describes the actual state of an Attester that has been vetted by Appraisal Policy. The ACS also keeps track of a Claim's authority.</t>
          </li>
          <li>
            <t>Appraisal Policy: A description of the conditions that, if met, allow acceptance
of Claims. Typically, the entity asserting a Claim should have knowledge, expertise,
or context that gives credibility to the assertion. Appraisal Policy resolves which
entities are credible and under what conditions.</t>
          </li>
        </ul>
      </section>
      <section anchor="appraisal-context-initialisation">
        <name>Appraisal Context initialisation</name>
        <t>The goal of the initialisation phase is to load the CoRIM Appraisal Context
with objects such as tags (CoMID, CoSWID, etc.) from CoRIM files,
cryptographic validation key material (e.g., raw public keys, root certificates,
intermediate CA certificate chains), etc. that will be used in the subsequent
Evidence Appraisal phase.</t>
        <section anchor="corim-selection">
          <name>CoRIM Selection</name>
          <t>All available CoRIMs are collected.
A Verifier may be pre-configured with a large number of CoRIMs describing many
types of device.
All CoRIMs are loaded at this stage, later stages will select the CoRIMs
appropriate to the Evidence Appraisal step.</t>
          <t>CoRIMs that are not within their validity period, or that cannot be associated
with an authenticated and authorised source MUST be discarded.</t>
          <t>CoRIM that are secured by a cryptographic mechanism such as a signature which
does not pass validation MUST be discarded.</t>
          <t>Other selection criteria MAY be applied.</t>
          <t>For example, if the Evidence format is known in advance, CoRIMs using a
profile that is not understood by a Verifier can be readily discarded.</t>
          <t>The selection process MUST yield at least one usable tag.</t>
        </section>
        <section anchor="cobom-extraction">
          <name>CoBOM Extraction</name>
          <t>This section is not applicable if the Verifier policy does not require CoBOMs.</t>
          <t>All the available Concise Bill Of Material (CoBOMs) tags are then collected
from the selected CoRIMs.</t>
          <t>CoBOMs which are not within their validity period, or which reference tags
not available to the verifier, are discarded.</t>
          <t>The Verifier processes all CoBOMs that are valid at the point in time of Evidence Appraisal, and activates all tags referenced therein.</t>
          <t>A Verifier may decide to discard some of the available and valid CoBOMs depending on any locally configured authorization policies.
(Such policies model the trust relationships between the Verifier Owner and the relevant suppliers, and are out of scope of the present document.)</t>
          <t>For example, a composite device (<xref section="3.3" sectionFormat="of" target="RFC9334"/>) is likely to be fully described by multiple CoRIMs, each signed by a different supplier.
In such case, the Verifier Owner may instruct the Verifier to discard tags activated by supplier CoBOMs that are not activated by the trusted integrator.</t>
          <t>After the Verifier has processed all CoBOMs it MUST discard any tags which have
not been activated by a CoBOM.</t>
        </section>
        <section anchor="tags-identification-and-validation">
          <name>Tags Identification and Validation</name>
          <t>The Verifier chooses tags -- including Concise Module ID Tags (CoMID, <xref target="sec-comid"/>),
Concise Software ID Tags (CoSWID, <xref target="I-D.ietf-sacm-coswid"/>),
and/or Concise Trust Anchor Stores (CoTS, <xref target="I-D.ietf-rats-concise-ta-stores"/>) --
from the selected CoRIMs.</t>
          <t>The Verifier MUST discard all tags which are not syntactically and semantically
valid.
In particular, any cross-referenced triples (e.g., CoMID-CoSWID linking triples)
MUST be successfully resolved.</t>
        </section>
        <section anchor="appraisal-context-construction">
          <name>Appraisal Context Construction</name>
          <t>All of the validated and potentially useful tags are loaded into the Appraisal Context.</t>
          <t>This concludes the initialisation phase.</t>
        </section>
      </section>
      <section anchor="evidence-collection">
        <name>Evidence Collection</name>
        <t>In the Evidence collection phase the Verifier communicates with attesters to
collect Evidence.</t>
        <t>The first part of the Evidence collection phase does not perform any
cryptographic validation.
This allows Verifiers to use untrusted code for their initial Evidence collection.</t>
        <t>The results of the evidence collection are protocol specific data and transcripts
which are used as input to appraisal by the Verifier.</t>
        <section anchor="sec-crypto-validate-evidence">
          <name>Cryptographic validation of Evidence</name>
          <t>If the authenticity of Evidence is secured by a cryptographic mechanism such as
a signature, the first step in the Evidence Appraisal is to perform
cryptographic validation of the Evidence.</t>
          <t>The exact cryptographic signature validation mechanics depend on the specific
Evidence collection protocol.</t>
          <t>For example:
In DICE, a proof of liveness is performed on the final key in the certificate
chain.
If this passes then a suitable certification path anchored on a trusted root
certificate is looked up -- e.g., based on linking information obtained from
the DeviceID certificate (see Section 9.2.1 of <xref target="DICE.Layer"/>) --
in the Appraisal Context.  If found, then usual X.509 certificate validation
is performed.
In PSA, the verification public key is looked up in the appraisal context using
the <tt>ueid</tt> claim found in the PSA claims-set (see <xref section="4.2.1" sectionFormat="of" target="I-D.tschofenig-rats-psa-token"/>).
If found, COSE Sign1 verification is performed accordingly.</t>
          <t>Independent of the specific integrity protection method used, the integrity of
Evidence MUST be successfully verified.</t>
          <ul empty="true">
            <li>
              <t>A CoRIM profile MUST describe:</t>
              <ul spacing="normal">
                <li>
                  <t>How cryptographic verification key material is represented (e.g., using Attestation Keys triples, or CoTS tags)</t>
                </li>
                <li>
                  <t>How key material is associated with the Attesting Environment</t>
                </li>
                <li>
                  <t>How the Attesting Environment is identified in Evidence</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="the-accepted-claims-set">
          <name>The Accepted Claims Set</name>
          <t>At the end of the Evidence collection process Evidence has been converted into
a format suitable for appraisal. To this end, this document describes an
<tt>accepted-claims-set</tt> format and the algorithms used to compare it against
CoMID Reference Values.</t>
          <sourcecode type="cddl"><![CDATA[
accepted-claims-set = {
  &(state-triples: 0) => [ + endorsed-triple-record ]
  ? &(identity-triples: 1) => [ + identity-triple-record ]
  ? &(coswid-triples: 2) => [ + ev-coswid-triple-record ]
  * $$accepted-claims-set-extension
}
]]></sourcecode>
          <t>Verifiers are not required to use this as their internal state, for the
purposes of this document a sample Verifier is discussed which uses this format.</t>
          <t>The Accepted Claims Set (ACS) contains the actual state of Target Environments (TEs).
The <tt>state-triples</tt> field contains Evidence (from Attesters) and Endorsements
(e.g. from <tt>endorsed-triple-record</tt>).</t>
          <t>CoMID Reference Values will be matched against the Accepted Claims Set, as per
the appraisal policy of the Verifier.
This document describes an example evidence structure which can be easily
matched against these Reference Values.</t>
          <t>Each entry within <tt>state-triples</tt> uses the syntax of <tt>endorsed-triple-record</tt>.
When an <tt>endorsed-triple-record</tt> appears within <tt>state-triples</tt> it
indicates that the authority named by <tt>measurement-map</tt>/<tt>authorized-by</tt>
asserts that the actual state of one or more Claims within the
Target Environment, as identified by <tt>environment-map</tt>, have the
measurement values in <tt>measurement-map</tt>/<tt>mval</tt>.</t>
          <t>In <tt>authorized-by</tt>, authority is represented by cryptographic keys. Authority
is asserted by digitally signing a Claim using the key. Hence, Claims are
added to the ACS under the authority of a key.</t>
          <t>Each Claim is encoded as an Environment Measurement Tuple (a contraction
of <tt>environment-map</tt>, <tt>measurement-map</tt> tuple). The <tt>environment-map</tt> and a
key within <tt>measurement-values-map</tt> encode the name of the Claim.
The value matching that key within <tt>measurement-values-map</tt> is the actual
state of the Claim.</t>
          <t>This specification does not assign special meanings to any Claim name,
it only specifies rules for determining when two Claim names are the same.</t>
          <t>If two Claims have the same <tt>environment-map</tt> encoding then this does not
trigger special encoding in the Verifier. The Verifier follows instructions
in the CoRIM file which tell it how claims are related.</t>
          <t>If Evidence or Endorsements from different sources has the same <tt>environment-map</tt>
and <tt>authorized-by</tt> then the <tt>measurement-values-map</tt>s are merged.</t>
          <t>The ACS must maintain the authority information for each EMT. There can be
multiple entries in <tt>state-triples</tt> which have the same <tt>environment-map</tt>
and a different <tt>authorized-by</tt> field (see <xref target="sec-authorized-by"/>).</t>
          <t>If the merged measurement-value-map contains duplicate codepoints and the
measurement values are equivalent, then duplicate claims SHOULD be omitted.
Equivalence typically means values MUST be binary identical.</t>
          <t>If the merged measurement-value-map contains duplicate codepoints and the
measurement values are not equivalent then the verifier SHALL report
an error and stop validation processing.</t>
          <section anchor="sec-acs-initialization">
            <name>Accepted Claims Set Initialization</name>
            <t>The Accepted Claims Set is initialized by copying Evidence claims describing
authenticated Attester's Target Environments into the Verifier's Accepted Claims Set.</t>
            <t>Evidence formats may require format translation before being added to the Accepted Claims Set.
If format translation is required, a CoRIM profile, see <xref target="sec-corim-profile-types"/>, defines an Evidence translation function.</t>
            <t><xref target="sec-dice-spdm"/> provides information on how DICE and SPDM Evidence is reformatted into CoMID schema compliant expressions before being added to the Accepted Claims Set.</t>
          </section>
          <section anchor="sec-authorized-by">
            <name>The authorized-by field in Accepted Claims Set</name>
            <t>The <tt>authorized-by</tt> field in an Accepted Claims Set entry indicates the entity
whose authority backs the claim.</t>
            <t>An entity is authoritative when it makes Claims that are inside its area of
competence. The Verifier keeps track of the authorities that assert Claims so
that it can filter out claims from entities that do not satisfy appraisal
policies.</t>
            <t>When adding an Evidence Claim to the Accepted Claims Set, the
Verifier SHALL set the <tt>authorized-by</tt> field in that Claim to the trusted
authority keys at the head of each key chain which signed that Evidence. This
key is often the subject of a self-signed certificate.
The Verifier has already verified the certificate chain (see <xref target="sec-crypto-validate-evidence"/>).</t>
            <t>If multiple authorities approve the same Claim, for example if multiple key chains
are available, then the <tt>authorized-by</tt> field SHALL be set to include the trusted
authority keys used by each of those authorities.</t>
            <t>When adding Endorsement Claims to the Accepted Claims Set that resulted
from CoRIM processing (see <xref target="sec-add-to-acs"/>) the Verifier SHALL set the
<tt>authorized-by</tt> field in that Evidence to the trusted authority key that is
at the head of the key chain that signed the CoRIM.</t>
            <t>When searching the Accepted Claims Set for an entry which matches a Reference
Value containing an <tt>authorized-by</tt> field, the Verifier SHALL ignore ACS
entries if none of the keys present in the Reference Value <tt>authorized-by</tt> field
are also present in the ACS <tt>authorized-by</tt> field.</t>
            <t>The Verifier SHOULD set the <tt>authorized-by</tt> field in Accepted Claims Set entries
to a format which contains only a key, for example the <tt>tagged-cose-key-type</tt>
format. Using a common format makes it easier to compare the field.</t>
          </section>
        </section>
      </section>
      <section anchor="accepted-claims-set-augmentation-using-comid-triples">
        <name>Accepted Claims Set augmentation using CoMID triples</name>
        <t>In the Accepted Claims Set augmentation phase, a CoRIM Appraisal Context and an Evidence Appraisal Policy are used by the Verifier to find CoMID triples which match the Accepted Claims Set (ACS).
Triples that specify an ACS matching condition will augment the ACS with Endorsements if the condition is met.</t>
        <t>Each triple is processed independently of other triples.
However, the ACS state may change as a result of processing a triple.
If a triple condition does not match, then the Verifier continues to process other triples.</t>
        <section anchor="ordering-of-triple-processing">
          <name>Ordering of triple processing</name>
          <t>Triples interface with the ACS by either adding new ACS entries or by matching existing ACS entries before updating the ACS.
Most triples use an <tt>environment-map</tt> field to select the AES entries to match or modify.
This field may be contained in an explicit matching condition, such as <tt>stateful-environment-record</tt>.</t>
          <t>The order of triples processing is important.
Processing a triple may result in ACS modifications that affect matching behavior of other triples.</t>
          <t>The Verifier MUST ensure that a triple including a matching condition is processed after any other triple that modifies or adds an ACS entry with an <tt>environment-map</tt> that is in the matching condition.</t>
          <t>This can be acheived by sorting the triples before processing, by repeating processing of some triples after ACS modifications or by other algorithms.</t>
        </section>
        <section anchor="processing-reference-values-triple">
          <name>Processing Reference Values Triple</name>
          <t>Reference Value Providers (RVP) publish Reference Values triples that are matched against ACS entries.
Reference Values may describe multiple acceptable states for Attesters; hence "matching" determines that Evidence (contained in the ACS) satisfies an appropriate subset of the available Reference Values.
If the appropriate subset matches, the authority of the RVP is added to the appropriate ACS entries.</t>
          <t>The Verifier compares each <tt>reference-triple-record</tt> against ACS entries as described in <xref target="sec-match-one-se"/>, where the <tt>reference-triple-record</tt> takes the place of a <tt>stateful-environment-record</tt>.
If all fields of the <tt>reference-triple-record</tt> match the ACS, then the Verifier MUST add the RVP authority to each matching ACS field.</t>
          <t>If any <tt>reference-triple-record</tt> in the Reference Value triple does not match the ACS then the entire triple is ignored.</t>
        </section>
        <section anchor="processing-endorsed-value-triple">
          <name>Processing Endorsed Value Triple</name>
        </section>
        <section anchor="processing-triples-representing-conditional-endorsements">
          <name>Processing triples representing Conditional Endorsements</name>
          <t>An Endorser may use CoMID tags to publish Conditional Endorsements, which are added to the Accepted Claims Set only if specified conditions are satisfied.
This section describes the process performed by the Verifier to determine which Conditional Endorsements from the candidate CoMIDs should be added to the ACS.</t>
          <t>The verifier checks whether Conditional Endorsements are applicable by comparing Accepted Claims Set entries against expected values provided in <tt>stateful-environment-record</tt> object which are part of the triple.</t>
          <section anchor="processing-conditional-endorsement-triple">
            <name>Processing Conditional Endorsement Triple</name>
            <t>For each Conditional Endorsement Triple the Verifier compares the <tt>stateful-environment-record</tt> field in the triple against the ACS (see <xref target="sec-match-one-se"/>).</t>
            <t>If the stateful environment matches, then the Verifier MUST add an Endorsement entry to the ACS (see <xref target="sec-add-to-acs"/>).
The Endorsement consists of the <tt>measurement-values-map</tt> field in the triple, plus the authority of the entity that signed the Conditional Endorsement Triple.</t>
          </section>
          <section anchor="processing-multi-environment-conditional-mec-endorsement-triple">
            <name>Processing Multi-Environment Conditional (MEC) Endorsement Triple</name>
            <t>For each MEC Endorsement Triple the Verifier compares each of the <tt>stateful-environment-record</tt> fields from the <tt>cond</tt> field in the triple against the ACS (see <xref target="sec-match-one-se"/>).</t>
            <t>If every stateful environment matches a corresponding ACS entry, then the Verifier MUST add an Endorsement entry to the ACS (see <xref target="sec-add-to-acs"/>) for each <tt>endorsed-triple-record</tt> in the <tt>endorsements</tt> field.
Each Endorsement from the <tt>endorsed-triple-record</tt> includes the authority which signed the MEC Endorsement Triple.</t>
          </section>
          <section anchor="processing-conditional-endorsement-series-triple">
            <name>Processing Conditional Endorsement Series Triple</name>
            <t>For each Conditional Endorsement Series Triple the Verifier iterates over the <tt>conditional-series-record</tt>s within the triple, stopping if it finds a match.</t>
            <t>For each iteration, the Verifier creates a temporary <tt>stateful-environment-record</tt> by merging the <tt>stateful-environment-record</tt> in the triple with the <tt>refv</tt> field in the <tt>conditional-series-record</tt>. It compares this temporary record against the ACS (see <xref target="sec-match-one-se"/>).</t>
            <t>If one of the temporary records matches then the Verifier MUST add the <tt>endv</tt> Endorsement entry to the ACS.
This Endorsement includes the authority which signed the Conditional Endorsement Series Triple.</t>
          </section>
          <section anchor="sec-match-one-se">
            <name>Matching a stateful environment against the Accepted Claims Set</name>
            <t>This section describes how a stateful environment is matched against an Accepted Claims Set entry.
If any part of the processing indicates that the stateful environment does not match then the remaining steps in this section are skipped for that stateful environment.</t>
            <t>The Verifier initializes a temporary "candidate entries" variable with all entries in the Accepted Claims Set (ACS) where the stateful enviromnment <tt>environment-map</tt> is a subset of the ACS <tt>environment-map</tt>.</t>
            <t>A stateful environment <tt>environment-map</tt> is a subset of an ACS entry <tt>environment-map</tt> if each field (for example <tt>class</tt>, <tt>instance</tt> etc.) which is present in the stateful environment <tt>environment-map</tt> is also present in the ACS entry, and the CBOR encoded field values in the stateful environment and ACS entry are binary identical.
If a field is not present in the stateful environment <tt>environment-map</tt> then the presence of, and value of, the corresponding ACS entry field does not affect whether the <tt>environment-map</tt>s are subsets.</t>
            <t>Before performing the binary comparison, a Verifier SHOULD convert <tt>environment-map</tt> fields into a form which meets CBOR Core Deterministic Encoding Requirements <xref target="STD94"/>.</t>
            <t>If the stateful environment contains an <tt>authorized-by</tt> field then the Verifier SHALL remove all candidate entries whose <tt>authorized-by</tt> field does not contain one of the keys listed in the stateful environment <tt>authorized-by</tt> field (see <xref target="sec-authorized-by"/> for more details).</t>
            <t>If there are no candidate entries then the triple containing the stateful environment does not match.</t>
            <t>The stateful environment entry is compared against each of the candidate entries.</t>
            <t>For each of the candidate entries, the Verifier SHALL iterate over the codepoints which are present in the <tt>measurement-values-map</tt> field within the stateful environment <tt>measurement-map</tt>.
Each of the codepoints present in the stateful environment is compared against the candidate entry.</t>
            <t>If any codepoint present in the stateful environment <tt>measurement-values-map</tt> does not match the same codepoint within the candidate entry <tt>measurement-values-map</tt> then the stateful environment does not match.</t>
            <t>If all checks above have been performed successfully then the stateful environment matches.
If none of the candidate entries match the stateful environment entry then the stateful environment does not match.</t>
          </section>
          <section anchor="sec-match-one-codepoint">
            <name>Matching a single <tt>measurement-values-map</tt> codepoint</name>
            <t>The algorithm used to match the <tt>measurement-values-map</tt> codepoints is described in this section.
The comparison performed depends on the value of the codepoint being compared and whether the <tt>measurement-values-map</tt> value associated with that codepoint is tagged.</t>
            <t>If the stateful environment <tt>measurement-values-map</tt> value is tagged with a CBOR tag <xref target="STD94"/> then the Verifier MUST use the comparison algorithm associated with that tag.</t>
            <t>If the value is not tagged then the Verifier MUST use the comparison algorithm associated with the <tt>measurement-values-map</tt> codepoint for the entry.</t>
            <t>This specification defines the matching algorithm for some codepoints and CBOR tagged values, which are described in sub-sections below.</t>
            <t>A CoRIM profile may define additional tags and their matching algorithms.</t>
            <t>If the Verifier does not recognize the stateful environment CBOR tag value then the stateful environment does not match.</t>
            <t>If the stateful environment is not tagged and the measurement-value-map key is a value with handling described in  the sub-sections below, then the algorithm appropriate to that key is used to match the entries.</t>
            <t>If the stateful environment is not tagged, and the <tt>measurement-values-map</tt> key is not a value described below, then the entries are compared using binary comparison of their CBOR encoded values.
If the values are not binary identical then the stateful environment does not match.</t>
            <t>Note that while specifications may extend the matching semantics using CBOR tags, there is no way to extend the matching semantics of codepoints.
Any new codepoints requiring non-default comparison must add a CBOR tag to the Reference Value describing the desired behaviour.</t>
            <section anchor="comparison-for-svn-entries">
              <name>Comparison for svn entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 1 is an SVN, which must
have type UINT.</t>
              <t>If the Reference value for <tt>measurement-values-map</tt> key 1 is an untagged UINT or
a UINT tagged with #6.552 then an equality comparison is performed. If the value
of the SVN in Accepted Claims Set is not equal to the value in the Reference
Value then the Reference Value does not match.</t>
              <t>If the Reference value for <tt>measurement-values-map</tt> key 1 is a UINT tagged with
#6.553 then a minimum comparison is performed. If the value of the SVN in
Accepted Claims Set less than the value in the Reference Value then the
Reference Value does not match.</t>
            </section>
            <section anchor="sec-cmp-digests">
              <name>Comparison for digests entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 2,
or a value tagged with
#6.TBD is a digest entry.
It contains one or more digests, each measuring the
same object. A Reference Value may contain multiple digests, each with a
different algorithm acceptable to the Reference Value provider. If the
digest in Evidence contains a single value with an algorithm and value
matching one of the algorithms and values in the Reference Value then it
matches.</t>
              <t>To prevent downgrade attacks, if there are multiple algorithms which are in
both the Evidence and Reference Value then the digests calculated using all
shared algorithms must match.</t>
              <t>If the CBOR encoding of the <tt>digests</tt> entry in the Reference Value or the
Accepted Claim Set value with the same key is incorrect (for example if fields
are missing or the wrong type) then the Reference Value does not match.</t>
              <t>The Verifier MUST iterate over the Reference Value <tt>digests</tt> array, locating
hash algorithm identifiers that are present in the Reference Value and
in the Accepted Claims Set entry.</t>
              <t>If the hash algorithm identifier which is present in the Reference Value
differs from the hash algorithm identifier in the Accepted Claims Set entry then the Reference Value does not match.</t>
              <t>If a hash algorithm identifier is present in both the Reference Value and
the Accepted Claims Set, but the value of the hash is not binary identical
between the Reference Value and the Accepted Claims Set entry then the
Reference Value does not match.</t>
            </section>
            <section anchor="comparison-for-raw-value-entries">
              <name>Comparison for raw-value entries</name>
              <ul empty="true">
                <li>
                  <t>I think this comparison method only works if the entry is at key 4 (because
there needs to be a mask at key 5). Should we have a Reference Value of this
which stores <tt>[expect-raw-value raw-value-mask]</tt> in an array?</t>
                </li>
              </ul>
            </section>
            <section anchor="sec-cryptokeys-matching">
              <name>Comparison for cryptokeys entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 12 is an array of <tt>$crypto-key-type-choice</tt> entries. <tt>$crypto-key-type-choice</tt> entries are CBOR tagged values.
The array contains one or more entries in sequence.</t>
              <t>The CBOR tag of the first entry of the Reference Value <tt>cryptokeys</tt> array is compared with
the CBOR tag of the first entry of the Accepted Claims Set <tt>cryptokeys</tt> value.
If the CBOR tags match, then the bytes following the CBOR tag from the Reference Value entry
are compared with the bytes following the CBOR tag from the Accepted Claims Set entry.
If the byte strings match, and there is another array entry,
then the next entry from the Reference Values array is likewise
compared with the next entry of the Accepted Claims Set array.
If all entries of the Reference Values array match a corresponding entry in the Accepted Claims Set array, then the <tt>cryptokeys</tt> Reference Value matches.
Otherwise, <tt>cryptokeys</tt> does not match.</t>
            </section>
            <section anchor="sec-cmp-integrity-registers">
              <name>Comparison for Integrity Registers</name>
              <t>For each Integrity Register entry in the Reference Value, the Verifier will use the associated identifier (i.e., <tt>integrity-register-id-type-choice</tt>) to look up the matching Integrity Register entry in Evidence.
If no entry is found, the Reference Value does not match.
Instead, if an entry is found, the digest comparison proceeds as defined in <xref target="sec-cmp-digests"/> after equivalence has been found according to <xref target="sec-comid-integrity-registers"/>.
Note that it is not required for all the entries in Evidence to be used during matching: the Reference Value could consist of a subset of the device's register space. In TPM parlance, a TPM "quote" may report all PCRs in Evidence, while a Reference Value could describe a subset of PCRs.</t>
            </section>
            <section anchor="handling-of-new-tags">
              <name>Handling of new tags</name>
              <t>A profile may specify handling for new CBOR tagged Reference Values. The
profile must specify how to compare the CBOR tagged Reference Value against
the Accepted Claims Set.</t>
              <t>Note that the verifier may compare Reference Values in any order, so the
comparison should not be stateful.</t>
            </section>
          </section>
        </section>
        <section anchor="sec-add-to-acs">
          <name>Adding CoMID Endorsed Values to the Accepted Claims Set</name>
        </section>
      </section>
      <section anchor="sec-dice-spdm">
        <name>Adding DICE/SPDM Evidence to the Accepted Claims Set</name>
        <t>This section defines how Evidence from DICE <xref target="DICE.AA"/> and/or SPDM <xref target="SPDM"/> is transformed into a
format where it can be added to an accepted claims set.
A Verifier supporting DICE/SPDM format Evidence should implement this section.</t>
        <section anchor="transforming-spdm-evidence-to-a-format-usable-for-matching">
          <name>Transforming SPDM Evidence to a format usable for matching</name>
          <t>The TCG DICE Concise Evidence Binding for SPDM specification <xref target="CE.SPDM"/> describes the process by which
measurements in an SPDM Measurement Block are converted to Evidence suitable for
matching using the rules below.
The SPDM measurements are converted to <tt>concise-evidence</tt> which has a format that is similar
to CoRIM <tt>triples-map</tt> (their semantics follows the matching rules described above).</t>
        </section>
        <section anchor="transforming-dice-evidence-to-a-format-usable-for-matching">
          <name>Transforming DICE Evidence to a format usable for matching</name>
          <t>DICE Evidence appears in certificates in the TcbInfo or MultiTcbInfo extension.
Each TcbInfo, and each entry in the MultiTcbInfo, is converted to an
<tt>endorsed-triple-record</tt> using the rules in this section.
In a MultiTcbInfo each entry in the sequence is treated as independent and
translated into a separate Evidence object.</t>
          <t>The Verifier SHALL translate each field in the TcbInfo into a field in the
created endorsed-triple-record</t>
          <ul spacing="normal">
            <li>
              <t>The TcbInfo <tt>type</tt> field SHALL be copied to the field named <tt>environment-map / class / class-id</tt> and tagged with tag #6.111</t>
            </li>
            <li>
              <t>The TcbInfo <tt>vendor</tt> field SHALL be copied to the field named <tt>environment-map / class / vendor</tt></t>
            </li>
            <li>
              <t>The TcbInfo <tt>model</tt> field SHALL be copied to the field named <tt>environment-map / class / model</tt></t>
            </li>
            <li>
              <t>The TcbInfo <tt>layer</tt> field SHALL be copied to the field named <tt>environment-map / class / layer</tt></t>
            </li>
            <li>
              <t>The TcbInfo <tt>index</tt> field SHALL be copied to the field named <tt>environment-map / class / index</tt></t>
            </li>
            <li>
              <t>The TcbInfo <tt>version</tt> field SHALL be translated to the field named <tt>measurement-map / mval / version / version</tt></t>
            </li>
            <li>
              <t>The TcbInfo <tt>svn</tt> field SHALL be copied to the field named <tt>measurement-map / mval / svn</tt></t>
            </li>
            <li>
              <t>The TcbInfo <tt>fwids</tt> field SHALL be translated to the field named <tt>measurement-map / mval / digests</tt>
              </t>
              <ul spacing="normal">
                <li>
                  <t>Each digest within fwids is translated to a CoMID digest object, with an appropriate algorithm identifier</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The TcbInfo <tt>flags</tt> field SHALL be translated to the field named <tt>measurement-map / mval / flags</tt>
              </t>
              <ul spacing="normal">
                <li>
                  <t>Each flag is translated independently</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The TcbInfo <tt>vendorInfo</tt> SHALL shall be copied to the field named <tt>measurement-map / mval / raw-value</tt></t>
            </li>
          </ul>
          <t>If there are multiple <tt>endorsed-triple-record</tt>s with the same <tt>environment-map</tt>
then they MUST be merged into a single entry.
If the <tt>measurement-values-map</tt> fields in Evidence triples have conflicting
values then the Verifier MUST fail validation.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol
defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>. The description of
implementations in this section is intended to assist the IETF in its decision
processes in progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalogue of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to
assign due consideration to documents that have the benefit of running code,
which may serve as Evidence of valuable experimentation and feedback that have
made the implemented protocols more mature.  It is up to the individual working
groups to use this information as they see fit".</t>
      <section anchor="veraison">
        <name>Veraison</name>
        <ul spacing="normal">
          <li>
            <t>Organization responsible for the implementation: Veraison Project, Linux
Foundation</t>
          </li>
          <li>
            <t>Implementation's web page:
<eref target="https://github.com/veraison/corim/blob/main/README.md">https://github.com/veraison/corim/README.md</eref></t>
          </li>
          <li>
            <t>Brief general description: The <tt>corim/corim</tt> and <tt>corim/comid</tt> packages
provide a golang API for low-level manipulation of Concise Reference
Integrity Manifest (CoRIM) and Concise Module Identifier (CoMID) tags
respectively.  The <tt>corim/cocli</tt> package uses the API above (as well as the
API from the <tt>veraison/swid</tt> package) to provide a user command line
interface for working with CoRIM, CoMID and CoSWID. Specifically, it allows
creating, signing, verifying, displaying, uploading, and more. See
<eref target="https://github.com/veraison/corim/blob/main/cocli/README.md">https://github.com/cocli/README.md</eref> for
further details.</t>
          </li>
          <li>
            <t>Implementation's level of maturity: alpha.</t>
          </li>
          <li>
            <t>Coverage: the whole protocol is implemented, including PSA-specific
extensions <xref target="I-D.fdb-rats-psa-endorsements"/>.</t>
          </li>
          <li>
            <t>Version compatibility: Version -02 of the draft</t>
          </li>
          <li>
            <t>Licensing: Apache 2.0
<eref target="https://github.com/veraison/corim/blob/main/LICENSE">https://github.com/veraison/corim/blob/main/LICENSE</eref></t>
          </li>
          <li>
            <t>Implementation experience: n/a</t>
          </li>
          <li>
            <t>Contact information:
<eref target="https://veraison.zulipchat.com">https://veraison.zulipchat.com</eref></t>
          </li>
          <li>
            <t>Last updated:
<eref target="https://github.com/veraison/corim/commits/main">https://github.com/veraison/corim/commits/main</eref></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-sec">
      <name>Security and Privacy Considerations</name>
      <t><cref anchor="issue">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/11</t>
    </section>
    <section anchor="sec-iana-cons">
      <name>IANA Considerations</name>
      <section anchor="new-cose-header-parameters">
        <name>New COSE Header Parameters</name>
        <t><cref anchor="issue_1">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/12</t>
      </section>
      <section anchor="sec-iana-cbor-tags">
        <name>New CBOR Tags</name>
        <t>IANA is requested to allocate the following tags in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably with the specific CBOR tag value requested:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">500</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-concise-rim-type-choice, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">501</td>
              <td align="left">
                <tt>map</tt></td>
              <td align="left">A tagged-corim-map, see <xref target="sec-corim-map"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">502</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-signed-corim, see <xref target="sec-corim-signed"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">503-504</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">505</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-swid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">506</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-mid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">507</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">508</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-bom-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">509-549</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">550</td>
              <td align="left">
                <tt>bytes .size 33</tt></td>
              <td align="left">tagged-ueid-type, see <xref target="sec-common-ueid"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">551</td>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">tagged-int-type, see <xref target="sec-common-tagged-int"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">552</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">553</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-min-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">554</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">555</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">556</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-path-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">557</td>
              <td align="left">
                <tt>[int/text, bytes]</tt></td>
              <td align="left">tagged-thumbprint-type, see <xref target="sec-common-hash-entry"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">558</td>
              <td align="left">
                <tt>COSE_Key/ COSE_KeySet</tt></td>
              <td align="left">tagged-cose-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">559</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-thumbprint-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">560</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">tagged-bytes, see <xref target="sec-common-tagged-bytes"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">561</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-path-thumbprint-type, see  <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">562-599</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
        <t>Tags designated as "Earmarked for CoRIM" can be reassigned by IANA based on advice from the designated expert for the CBOR Tags registry.</t>
      </section>
      <section anchor="sec-iana-corim">
        <name>New CoRIM Registries</name>
        <t><cref anchor="issue_2">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/14</t>
      </section>
      <section anchor="sec-iana-comid">
        <name>New CoMID Registries</name>
        <t><cref anchor="issue_3">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/15</t>
      </section>
      <section anchor="sec-iana-cobom">
        <name>New CoBOM Registries</name>
        <t><cref anchor="issue_4">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/45</t>
      </section>
      <section anchor="sec-iana-media-types">
        <name>New Media Types</name>
        <t>IANA is requested to add the following media types to the "Media Types"
registry <xref target="IANA.media-types"/>.</t>
        <table align="left" anchor="tbl-media-type">
          <name>New Media Types</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Template</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">corim-signed+cbor</td>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-signed"/></td>
            </tr>
            <tr>
              <td align="left">corim-unsigned+cbor</td>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-unsigned"/></td>
            </tr>
          </tbody>
        </table>
        <section anchor="sec-mt-corim-signed">
          <name>corim-signed+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-signed+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer COSE Sign1 wrapped CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F6 D2</tt>, <tt>D9 01 F4 D9 01 F6 D2</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-mt-corim-unsigned">
          <name>corim-unsigned+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-unsigned+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer unprotected CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F5</tt>, <tt>D9 01 F4 D9 01 F5</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="coap-content-formats-registration">
        <name>CoAP Content-Formats Registration</name>
        <t>IANA is requested to register the two following Content-Format numbers in the
"CoAP Content-Formats" sub-registry, within the "Constrained RESTful
Environments (CoRE) Parameters" Registry <xref target="IANA.core-parameters"/>:</t>
        <table align="left">
          <name>New Content-Formats</name>
          <thead>
            <tr>
              <th align="left">Content-Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD1</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9090">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR), defined in RFC 8949, is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.</t>
              <t>This document defines CBOR tags for object identifiers (OIDs) and is the reference document for the IANA registration of the CBOR tags so defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9090"/>
          <seriesInfo name="DOI" value="10.17487/RFC9090"/>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="STD66">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </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="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="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
         </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="15" month="January" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine the type
   and degree of trust placed in the entity.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-25"/>
        </reference>
        <reference anchor="I-D.ietf-rats-concise-ta-stores">
          <front>
            <title>Concise TA Stores (CoTS)</title>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software</organization>
            </author>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</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>
            <date day="5" month="December" year="2023"/>
            <abstract>
              <t>   Trust anchor (TA) stores may be used for several purposes in the
   Remote Attestation Procedures (RATS) architecture including verifying
   endorsements, reference values, digital letters of approval,
   attestations, or public key certificates.  This document describes a
   Concise Reference Integrity Manifest (CoRIM) extension that may be
   used to convey optionally constrained trust anchor stores containing
   optionally constrained trust anchors in support of these purposes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-concise-ta-stores-02"/>
        </reference>
        <reference anchor="IANA.language-subtag-registry" target="https://www.iana.org/assignments/language-subtag-registry">
          <front>
            <title>Language Subtag Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology — ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="ITU-T" value="Recommendation X.690"/>
        </reference>
        <reference anchor="IANA.named-information" target="https://www.iana.org/assignments/named-information">
          <front>
            <title>Named Information</title>
            <author>
              <organization>IANA</organization>
            </author>
          </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>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="I-D.fdb-rats-psa-endorsements">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Verifier Endorsements</title>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   PSA Endorsements include reference values, cryptographic key material
   and certification status information that a Verifier needs in order
   to appraise attestation Evidence produced by a PSA device.  This memo
   defines such PSA Endorsements as a profile of the CoRIM data model.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-fdb-rats-psa-endorsements-04"/>
        </reference>
        <reference anchor="I-D.tschofenig-rats-psa-token">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>HP Labs</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="21" month="February" year="2024"/>
            <abstract>
              <t>   The Arm Platform Security Architecture (PSA) is a family of hardware
   and firmware security specifications, as well as open-source
   reference implementations, to help device makers and chip
   manufacturers build best-practice security into products.  Devices
   that are PSA compliant can produce attestation tokens as described in
   this memo, which are the basis for many different protocols,
   including secure provisioning and network access control.  This
   document specifies the PSA attestation token structure and semantics.

   The PSA attestation token is a profile of the Entity Attestation
   Token (EAT).  This specification describes what claims are used in an
   attestation token generated by PSA compliant systems, how these
   claims get serialized to the wire, and how they are cryptographically
   protected.

   This informational document is published as an independent submission
   to improve interoperability with ARM's architecture.  It is not a
   standard nor a product of the IETF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-22"/>
        </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</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.19" value=""/>
        </reference>
        <reference anchor="IANA.coswid" target="https://www.iana.org/assignments/coswid">
          <front>
            <title>Concise Software Identifier (CoSWID)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="SPDM" target="https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.3.0.pdf">
          <front>
            <title>Security Protocol and Data Model (SPDM)</title>
            <author>
              <organization>Distributed Management Task Force</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
          <seriesInfo name="Version 1.3.0" value=""/>
        </reference>
        <reference anchor="CE.SPDM" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-DICE-Concise-Evidence-Binding-for-SPDM-Version-1.0-Revision-53_1August2023.pdf">
          <front>
            <title>TCG DICE Concise Evidence Binding for SPDM</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2023" month="June"/>
          </front>
          <seriesInfo name="Version 1.00, Revision 0.53, public review" value=""/>
        </reference>
        <reference anchor="DICE.AA" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-17_1August2023.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
          <seriesInfo name="Version 1.1, Revision 0.17, public review" value=""/>
        </reference>
      </references>
    </references>
    <?line 2427?>

<section anchor="full-corim-cddl">
      <name>Full CoRIM CDDL</name>
      <sourcecode type="cddl"><![CDATA[
corim = tagged-concise-rim-type-choice

$concise-rim-type-choice /= tagged-corim-map
$concise-rim-type-choice /= tagged-signed-corim

concise-bom-tag = {
  &(tag-identity: 0) => tag-identity-map
  &(tags-list: 1) => [ + tag-identity-map ],
  &(bom-validity: 2) => validity-map
  * $$concise-bom-tag-extension
}

$concise-tag-type-choice /= tagged-concise-swid-tag
$concise-tag-type-choice /= tagged-concise-mid-tag
$concise-tag-type-choice /= tagged-concise-bom-tag

corim-entity-map =
  entity-map<$corim-role-type-choice, $$corim-entity-map-extension>

$corim-id-type-choice /= tstr
$corim-id-type-choice /= uuid-type

corim-locator-map = {
  &(href: 0) => uri
  ? &(thumbprint: 1) => digest
}

corim-map = {
  &(id: 0) => $corim-id-type-choice
  &(tags: 1) => [ + $concise-tag-type-choice ]
  ? &(dependent-rims: 2) => [ + corim-locator-map ]
  ? &(profile: 3) => $profile-type-choice
  ? &(rim-validity: 4) => validity-map
  ? &(entities: 5) => [ + corim-entity-map ]
  * $$corim-map-extension
}

corim-meta-map = {
  &(signer: 0) => corim-signer-map
  ? &(signature-validity: 1) => validity-map
}

$corim-role-type-choice /= &(manifest-creator: 1)

corim-signer-map = {
  &(signer-name: 0) => $entity-name-type-choice
  ? &(signer-uri: 1) => uri
  * $$corim-signer-map-extension
}

COSE-Sign1-corim = [
  protected: bstr .cbor protected-corim-header-map
  unprotected: unprotected-corim-header-map
  payload: bstr .cbor tagged-corim-map
  signature: bstr
]

$profile-type-choice /= uri 
$profile-type-choice /= tagged-oid-type

protected-corim-header-map = {
  &(alg-id: 1) => int
  &(content-type: 3) => "application/corim-unsigned+cbor"
  &(issuer-key-id: 4) => bstr
  &(corim-meta: 8) => bstr .cbor corim-meta-map
  * cose-label => cose-value
}

signed-corim = #6.18(COSE-Sign1-corim)

tagged-corim-map = #6.501(corim-map)


tagged-concise-rim-type-choice = #6.500($concise-rim-type-choice)

tagged-signed-corim = #6.502(signed-corim)

tagged-concise-swid-tag = #6.505(bytes .cbor concise-swid-tag)

tagged-concise-mid-tag = #6.506(bytes .cbor concise-mid-tag)

tagged-concise-bom-tag = #6.508(bytes .cbor concise-bom-tag)

unprotected-corim-header-map = {
  * cose-label => cose-value
}

validity-map = {
  ? &(not-before: 0) => time
  &(not-after: 1) => time
}

concise-mid-tag = {
  ? &(language: 0) => text
  &(tag-identity: 1) => tag-identity-map
  ? &(entities: 2) => [ + comid-entity-map ]
  ? &(linked-tags: 3) => [ + linked-tag-map ]
  &(triples: 4) => triples-map
  * $$concise-mid-tag-extension
}

accepted-claims-set = {
  &(state-triples: 0) => [ + endorsed-triple-record ]
  ? &(identity-triples: 1) => [ + identity-triple-record ]
  ? &(coswid-triples: 2) => [ + ev-coswid-triple-record ]
  * $$accepted-claims-set-extension
}

attest-key-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]

$class-id-type-choice /= tagged-oid-type
$class-id-type-choice /= tagged-uuid-type
$class-id-type-choice /= tagged-int-type
$class-id-type-choice /= tagged-bytes

class-map = non-empty<{
  ? &(class-id: 0) => $class-id-type-choice
  ? &(vendor: 1) => tstr
  ? &(model: 2) => tstr
  ? &(layer: 3) => uint
  ? &(index: 4) => uint
}>

comid-entity-map =
  entity-map<$comid-role-type-choice, $$comid-entity-map-extension>

$comid-role-type-choice /= &(tag-creator: 0)
$comid-role-type-choice /= &(creator: 1)
$comid-role-type-choice /= &(maintainer: 2)

conditional-endorsement-series-triple-record = [
  stateful-environment-record
  ; order matters: the first matching record wins and halts matching
  [ + conditional-series-record ]
]

conditional-endorsement-triple-record = [
  stateful-environment-record,
  ; endorsed values
  measurement-values-map
]

conditional-series-record = [
  ; reference values to be matched against evidence
  refv: measurement-values-map
  ; endorsed values that apply in case revf matches
  endv: measurement-values-map
]

COSE_KeySet = [ + COSE_Key ]

COSE_Key = {
    1 => tstr / int
    ? 2 => bstr 
    ? 3 => tstr / int 
    ? 4 => [+ (tstr / int) ]
    ? 5 => bstr
    * cose-label => cose-value
}

cose-label = int / tstr
cose-value = any

coswid-triple-record = [
  environment-map
  [ + concise-swid-tag-id ]
]

concise-swid-tag-id = text / bstr .size 16

$crypto-key-type-choice /= tagged-pkix-base64-key-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-path-type
$crypto-key-type-choice /= tagged-cose-key-type
$crypto-key-type-choice /= tagged-thumbprint-type
$crypto-key-type-choice /= tagged-cert-thumbprint-type
$crypto-key-type-choice /= tagged-cert-path-thumbprint-type

tagged-pkix-base64-key-type = #6.554(tstr)
tagged-pkix-base64-cert-type = #6.555(tstr)
tagged-pkix-base64-cert-path-type = #6.556(tstr)
tagged-thumbprint-type = #6.557(digest)
tagged-cose-key-type = #6.558(COSE_KeySet / COSE_Key)
tagged-cert-thumbprint-type = #6.559(digest)
tagged-cert-path-thumbprint-type = #6.561(digest)

domain-dependency-triple-record = [
  $domain-type-choice
  [ + $domain-type-choice ]
]

domain-membership-triple-record = [
  $domain-type-choice
  [ + environment-map ]
]

mec-endorsement-triple-record = [
  conds: [ + stateful-environment-record ]
  endorsements: [ + endorsed-triple-record ]
]

$domain-type-choice /= uint
$domain-type-choice /= text
$domain-type-choice /= tagged-uuid-type
$domain-type-choice /= tagged-oid-type

endorsed-triple-record = [
  environment-map
  measurement-map
]

entity-map<role-type-choice, extension-socket> = {
  &(entity-name: 0) => $entity-name-type-choice
  ? &(reg-id: 1) => uri
  &(role: 2) => [ + role-type-choice ]
  * extension-socket
}

$entity-name-type-choice /= text

environment-map = non-empty<{
  ? &(class: 0) => class-map
  ? &(instance: 1) => $instance-id-type-choice
  ? &(group: 2) => $group-id-type-choice
}>

flags-map = {
  ? &(is-configured: 0) => bool
  ? &(is-secure: 1) => bool
  ? &(is-recovery: 2) => bool
  ? &(is-debug: 3) => bool
  ? &(is-replay-protected: 4) => bool
  ? &(is-integrity-protected: 5) => bool
  ? &(is-runtime-meas: 6) => bool
  ? &(is-immutable: 7) => bool
  ? &(is-tcb: 8) => bool
  ? &(is-confidentiality-protected: 9) => bool
  * $$flags-map-extension
}

$group-id-type-choice /= tagged-uuid-type
$group-id-type-choice /= tagged-bytes

identity-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]

$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type
$instance-id-type-choice /= $crypto-key-type-choice
$instance-id-type-choice /= tagged-bytes

ip-addr-type-choice = ip4-addr-type / ip6-addr-type
ip4-addr-type = bytes .size 4
ip6-addr-type = bytes .size 16

linked-tag-map = {
  &(linked-tag-id: 0) => $tag-id-type-choice
  &(tag-rel: 1) => $tag-rel-type-choice
}

mac-addr-type-choice = eui48-addr-type / eui64-addr-type
eui48-addr-type = bytes .size 6
eui64-addr-type = bytes .size 8

$measured-element-type-choice /= tagged-oid-type
$measured-element-type-choice /= tagged-uuid-type
$measured-element-type-choice /= uint

measurement-map = {
  ? &(mkey: 0) => $measured-element-type-choice
  &(mval: 1) => measurement-values-map
  ? &(authorized-by: 2) => [ + $crypto-key-type-choice ]
}

measurement-values-map = non-empty<{
  ? &(version: 0) => version-map
  ? &(svn: 1) => svn-type-choice
  ? &(digests: 2) => [ + digest ]
  ? &(flags: 3) => flags-map
  ? (
      &(raw-value: 4) => $raw-value-type-choice,
      ? &(raw-value-mask: 5) => raw-value-mask-type
    )
  ? &(mac-addr: 6) => mac-addr-type-choice
  ? &(ip-addr: 7) =>  ip-addr-type-choice
  ? &(serial-number: 8) => text
  ? &(ueid: 9) => ueid-type
  ? &(uuid: 10) => uuid-type
  ? &(name: 11) => text
  ? &(cryptokeys: 13) => [ + $crypto-key-type-choice ]
  ? &(integrity-registers: 14) => integrity-registers
  * $$measurement-values-map-extension
}>

non-empty<M> = (M) .and ({ + any => any })

oid-type = bytes
tagged-oid-type = #6.111(oid-type)

$raw-value-type-choice /= tagged-bytes

raw-value-mask-type = bytes

reference-triple-record = [
  environment-map
  measurement-map
]

stateful-environment-record = [
  environment-map,
  measurement-map
]

svn-type = uint
svn = svn-type
min-svn = svn-type
tagged-svn = #6.552(svn)
tagged-min-svn = #6.553(min-svn)
svn-type-choice = tagged-svn / tagged-min-svn

$tag-id-type-choice /= tstr
$tag-id-type-choice /= uuid-type

tag-identity-map = {
  &(tag-id: 0) => $tag-id-type-choice
  ? &(tag-version: 1) => tag-version-type
}

$tag-rel-type-choice /= &(supplements: 0)
$tag-rel-type-choice /= &(replaces: 1)

tag-version-type = uint .default 0

tagged-int-type = #6.551(int)

tagged-bytes = #6.560(bytes)

triples-map = non-empty<{
  ? &(reference-triples: 0) =>
    [ + reference-triple-record ]
  ? &(endorsed-triples: 1) =>
    [ + endorsed-triple-record ]
  ? &(identity-triples: 2) =>
    [ + identity-triple-record ]
  ? &(attest-key-triples: 3) =>
    [ + attest-key-triple-record ]
  ? &(dependency-triples: 4) =>
    [ + domain-dependency-triple-record ]
  ? &(membership-triples: 5) =>
    [ + domain-membership-triple-record ]
  ? &(coswid-triples: 6) =>
    [ + coswid-triple-record ]
  ? &(conditional-endorsement-series-triples: 8) =>
    [ + conditional-endorsement-series-triple-record ]
  ? &(conditional-endorsement-triples: 9) =>
    [ + conditional-endorsement-triple-record ]
  ? &(mec-endorsement-triples: 10) =>
    [ + mec-endorsement-triple-record ]
  * $$triples-map-extension
}>

ueid-type = bytes .size 33
tagged-ueid-type = #6.550(ueid-type)

uuid-type = bytes .size 16
tagged-uuid-type = #6.37(uuid-type)

version-map = {
  &(version: 0) => text
  ? &(version-scheme: 1) => $version-scheme
}

digest = [
  alg: (int / text),
  val: bytes
]

integrity-register-id-type-choice = uint / text

integrity-registers = {
  + integrity-register-id-type-choice => [ + digest ]
}

concise-swid-tag = {
  tag-id => text / bstr .size 16,
  tag-version => integer,
  ? corpus => bool,
  ? patch => bool,
  ? supplemental => bool,
  software-name => text,
  ? software-version => text,
  ? version-scheme => $version-scheme,
  ? media => text,
  ? software-meta => one-or-more<software-meta-entry>,
  entity => one-or-more<entity-entry>,
  ? link => one-or-more<link-entry>,
  ? payload-or-evidence,
  * $$coswid-extension,
  global-attributes,
}

payload-or-evidence //= ( payload => payload-entry )
payload-or-evidence //= ( evidence => evidence-entry )

any-uri = uri
label = text / int

$version-scheme /= multipartnumeric
$version-scheme /= multipartnumeric-suffix
$version-scheme /= alphanumeric
$version-scheme /= decimal
$version-scheme /= semver
$version-scheme /= int / text

any-attribute = (
  label => one-or-more<text> / one-or-more<int>
)

one-or-more<T> = T / [ 2* T ]

global-attributes = (
  ? lang => text,
  * any-attribute,
)

hash-entry = [
  hash-alg-id: int,
  hash-value: bytes,
]

entity-entry = {
  entity-name => text,
  ? reg-id => any-uri,
  role => one-or-more<$role>,
  ? thumbprint => hash-entry,
  * $$entity-extension,
  global-attributes,
}

$role /= tag-creator
$role /= software-creator
$role /= aggregator
$role /= distributor
$role /= licensor
$role /= maintainer
$role /= int / text

link-entry = {
  ? artifact => text,
  href => any-uri,
  ? media => text,
  ? ownership => $ownership,
  rel => $rel,
  ? media-type => text,
  ? use => $use,
  * $$link-extension,
  global-attributes,
}

$ownership /= shared
$ownership /= private
$ownership /= abandon
$ownership /= int / text

$rel /= ancestor
$rel /= component
$rel /= feature
$rel /= installationmedia
$rel /= packageinstaller
$rel /= parent
$rel /= patches
$rel /= requires
$rel /= see-also
$rel /= supersedes
$rel /= supplemental
$rel /= -256..64436 / text

$use /= optional
$use /= required
$use /= recommended
$use /= int / text

software-meta-entry = {
  ? activation-status => text,
  ? channel-type => text,
  ? colloquial-version => text,
  ? description => text,
  ? edition => text,
  ? entitlement-data-required => bool,
  ? entitlement-key => text,
  ? generator =>  text / bstr .size 16,
  ? persistent-id => text,
  ? product => text,
  ? product-family => text,
  ? revision => text,
  ? summary => text,
  ? unspsc-code => text,
  ? unspsc-version => text,
  * $$software-meta-extension,
  global-attributes,
}

path-elements-group = ( ? directory => one-or-more<directory-entry>,
                        ? file => one-or-more<file-entry>,
                      )

resource-collection = (
  path-elements-group,
  ? process => one-or-more<process-entry>,
  ? resource => one-or-more<resource-entry>,
  * $$resource-collection-extension,
)

file-entry = {
  filesystem-item,
  ? size => uint,
  ? file-version => text,
  ? hash => hash-entry,
  * $$file-extension,
  global-attributes,
}

directory-entry = {
  filesystem-item,
  ? path-elements => { path-elements-group },
  * $$directory-extension,
  global-attributes,
}

process-entry = {
  process-name => text,
  ? pid => integer,
  * $$process-extension,
  global-attributes,
}

resource-entry = {
  type => text,
  * $$resource-extension,
  global-attributes,
}

filesystem-item = (
  ? key => bool,
  ? location => text,
  fs-name => text,
  ? root => text,
)

payload-entry = {
  resource-collection,
  * $$payload-extension,
  global-attributes,
}

evidence-entry = {
  resource-collection,
  ? date => integer-time,
  ? device-id => text,
  ? location => text,
  * $$evidence-extension,
  global-attributes,
}

integer-time = #6.1(int)

tag-id = 0
software-name = 1
entity = 2
evidence = 3
link = 4
software-meta = 5
payload = 6
hash = 7
corpus = 8
patch = 9
media = 10
supplemental = 11
tag-version = 12
software-version = 13
version-scheme = 14
lang = 15
directory = 16
file = 17
process = 18
resource = 19
size = 20
file-version = 21
key = 22
location = 23
fs-name = 24
root = 25
path-elements = 26
process-name = 27
pid = 28
type = 29
entity-name = 31
reg-id = 32
role = 33
thumbprint = 34
date = 35
device-id = 36
artifact = 37
href = 38
ownership = 39
rel = 40
media-type = 41
use = 42
activation-status = 43
channel-type = 44
colloquial-version = 45
description = 46
edition = 47
entitlement-data-required = 48
entitlement-key = 49
generator = 50
persistent-id = 51
product = 52
product-family = 53
revision = 54
summary = 55
unspsc-code = 56
unspsc-version = 57

multipartnumeric = 1
multipartnumeric-suffix = 2
alphanumeric = 3
decimal = 4
semver = 16384

tag-creator=1
software-creator=2
aggregator=3
distributor=4
licensor=5
maintainer=6

abandon=1
private=2
shared=3

ancestor=1
component=2
feature=3
installationmedia=4
packageinstaller=5
parent=6
patches=7
requires=8
see-also=9
supersedes=10

optional=1
required=2
recommended=3

]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t><contact fullname="Carl Wallace"/> for review and comments on this document.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="C." surname="Bormann" fullname="Carsten Bormann">
        <organization>Universität Bremen TZI</organization>
        <address>
          <postal>
            <street>Postfach 330440</street>
            <city>Bremen</city>
            <code>D-28359</code>
            <country>Germany</country>
          </postal>
          <phone>+49-421-218-63921</phone>
          <email>cabo@tzi.org</email>
        </address>
      </contact>
      <t>Carsten Bormann contributed to the CDDL specifications and the IANA considerations.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y923Ycx7Ug+J5fkQ1pSYBcVSTAi0jYkg2CkIVpgeQQkN0e
Lx0jqyoLyMOqynJmFkCYYq/+iH6Zt36YL+n5k/6S2deIHZGZBYDScZ9Z62gt
m6jMyIgdETt27PseDofJ1X76KEmaopnn++lhuZwUdZ6+zWd5lS8neXq8bPKL
qmhu0pNsWczyukmy8bjKr7Dx2+OTZFpOltkCvp1W2awZFnkzG1ZZUw8nZVUs
hvOswW8m8M9FWd3sp3UzTSblss6X9breT5tqnSf1erwo6rool83NCro6Pjr7
LkmKVUXv62bv4cPnD/eSrMqz/XTrNJ+sEaKt5Lqs3l1U5XoFT9/mi7LJ04Mz
HC9roK/0TVVO8um6yk+3knf5DbSe7qcA8yB9e3B2OkizxrUdpFd5VcyKvBqk
9Xq1mt+kk8usWCYJNFhO/5bNy2Uu0K6K/SRNm3Kyn97kNfxZl1VT5bPa/b5Z
2J/Qcpqvmsv99GmSZOvmsqz2k2FaLKHF96P0RVG9uyzn/4CWvJDf58t39mlZ
Xeyn31XZenlZwrakp8dn8DRfZMV8P72ExqOxNP4Drv4IVrfJJo0OcTZKvyvr
GqbpRji7LBdZbR7DELC7/6Cl2E+zauEH4LYjafsHeAcDLLTzv4zSl3l9uYI1
yl33fykv4FnwYsMAN9R6NNXW8RCvRunpomguXfev8ql7QmuDODr3HS7z6ajG
938o8IXt68+j9E22dD39OS/kN/Xz/Tq7hidn+eRyWc7Li4K2T3q9LubzIluM
AEZo9IdLakt9Izo3VTFeN7ixaSpjHcLWltUiW2L/OuJhVtVNvgze0Ng/LgvA
wLpo/t//p0lfVPkCGp39X8fUoAbsypv99E1ZN7Nscpk+evTw8eOH9G4CB2Ff
PuAH5RTGeTnce/boyXN5sgb4oNUfcxz0hh6uLgmhf/P4+fDx3u5wb/fZ8Omj
53u79FKmPMnG5R+afxQjgFB6konSLn5Lz9J4Tr4V7FNTps1lnh6+fPlDWq/y
CRyxCSFBncJe07vjg1cH+E1dTPOK342SZImdNbAmuKJvvzt8vLu3t5+u18WU
f3/9+Omz/XT1rng/bPL3DT989nT3IYA9nc7593MgG/B7XFbDspjiZp6evXz+
dJ8AH8Kbss7p72/2ufmTPWnz2LeBr02bZ88fP+c2T30/QI5Mk0fPnz2Fn8fD
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
ykecHrhU+YkLBjKHaf8HEvO0lcnFAQA=

-->

</rfc>
