<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-corim-12" category="std" consensus="true" submissionType="IETF" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="CoRIM">Concise Reference Integrity Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-12"/>
    <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>NVIDIA</organization>
      <address>
        <email>tfossati@nvidia.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>Independent</organization>
      <address>
        <email>ned.smith.ietf@outlook.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="2026" month="November" day="01"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>RIM, RATS, attestation, verifier, supply chain</keyword>
    <abstract>
      <?line 156?>

<t>Remote Attestation Procedures (RATS) enable Relying Parties to assess the trustworthiness of a remote Attester and therefore to decide whether or not 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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/ietf-rats-wg/draft-ietf-rats-corim"/>.</t>
    </note>
  </front>
  <middle>
    <?line 164?>

<section anchor="sec-intro">
      <name>Introduction</name>
      <t>The RATS Architecture <xref section="4" sectionFormat="of" target="RFC9334"/> specifies several roles, including Endorsers and Reference Value Providers.
These two roles are typically fulfilled by supply chain actors, such as manufacturers, distributors, or device owners.
Endorsers and Reference Value Providers supply Endorsements (e.g., test results or certification data) and Reference Values (e.g., digests) relating to an Attester.
This information is used by a Verifier to appraise Evidence received from an Attester which describes Attester operational state.</t>
      <t>In a complex supply chain, multiple actors will likely produce these values over several points in time.
As such, one supply chain actor might only supply a portion of the Reference Values or Endorsements that otherwise fully characterizes an Attester.
Ideally, only the supply chain actor who is the most knowledgeable entity regarding a particular component will supply Reference Values or Endorsements for that component.</t>
      <t>Attesters vary across vendors and even across products from a single vendor.
Not only can Attesters evolve, requiring new measurement types 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>In order to promote interoperability, consistency and accuracy in the representation of Endorsements and Reference Values this document specifies a data model for Endorsements and Reference Values known as Concise Reference Integrity Manifests (CoRIM).
The CoRIM data model is expressed in CDDL which is used to realize a CBOR <xref target="STD94"/> encoding suitable for cryptographic operations (e.g., hashing, signing, encryption) and transmission over computer networks.
Additionally, this document describes multiple phases of a Verifier Appraisal and provides an example of a possible use of CoRIM messages from multiple supply chain actors to represent a homogeneous representation of Attester state.
CoRIM is extensible to accommodate supply chain diversity while supporting a common representation for Endorsement and Reference Value inputs to Verifiers.
In essence, the goal of a CoRIM is to describe expected Attester state to Verifiers.</t>
      <t>This document is divided into two parts.
The core data model is described in <xref target="sec-corim"/>, <xref target="sec-comid"/> and <xref target="sec-cotl"/>.
These sections describe the primary CoRIM structures, the Concise Module Identifier (CoMID), which is used to express Endorsements and Reference Values, as well as the Concise Tag Lists (CoTL), which express the currently active sources of Endorsements and Reference Values.
<xref target="sec-reference-verifier"/> outlines the architecture of a reference Verifier.
The architecture details four phases of the appraisal process that explain how CoRIM inputs are validated, evaluated relative to Evidence, and ultimately accepted as additional expressions of Attester state data.
In addition, this document also covers how CoRIMs are used within the reference Verifier. Refer to {#sec-verifier-rec}</t>
      <section anchor="terminology-and-requirements-language">
        <name>Terminology and Requirements Language</name>
        <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>
        <t>This document uses terms and concepts defined by the RATS architecture.
Specifically the terms Attester, Reference Value Provider, Endorser, Verifier Owner, and Relying Party are taken from <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
        <t>For a complete glossary, see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
        <t>This document uses the terms <em>"actual state"</em> and <em>"reference state"</em> as defined in <xref section="2" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
        <t>In this document, the term CoRIM message and CoRIM documents are used as synonyms. A CoRIM data structure can be at rest (e.g., residing in a file system as a document) or can be in flight (e.g., conveyed as a message in a protocol exchange). The bytes composing the CoRIM data structure are the same either way.</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"/>. Terms and concepts are always referenced as proper nouns, i.e., with Capital Letters.</t>
        <section anchor="sec-glossary">
          <name>Glossary</name>
          <t>This document uses the following terms:</t>
          <dl newline="true">
            <dt>Appraisal Claims Set (ACS):</dt>
            <dd>
              <t>A structure that holds Environment-Claim Tuples that have been appraised.
The ACS contains Attester state that has been authorized by Verifier processing and Appraisal Policy.</t>
            </dd>
            <dt>Appraisal Policy:</dt>
            <dd>
              <t>A description of the conditions that, if met, allow appraisal 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.
See also "Appraisal Policy for Evidence" in <xref target="RFC9334"/>.</t>
            </dd>
            <dt>Attribute Path:</dt>
            <dd>
              <t>A sequence of one or more attribute identifiers that denotes a value within a structured data object by successive selection from a root value.
Each identifier in the sequence names the next attribute to select; the final identifier in the sequence names the value reached by the path.
An Attribute Path is said to be <strong>defined</strong> in a given value if every prefix of the path exists in that value; otherwise, the path is <strong>undefined</strong> in that value.
In this document, structured data objects are typically CBOR maps whose attributes are identified by CDDL member names (for example, <tt>instance</tt>, <tt>class</tt>, <tt>class-id</tt>).
Attribute Paths are used when comparing nested data structures during appraisal (see <xref target="sec-comparison-rules"/>).</t>
            </dd>
            <dt>Attribute Path Containment:</dt>
            <dd>
              <t>A comparison relation between two structured data objects, conventionally named the <strong>condition</strong> (C) and the <strong>entry</strong> (A), in which C is said to be <strong>contained in</strong> A when:
1. for every Attribute Path defined in C, the same Attribute Path is defined in A; and
2. for each such path, the value in A <strong>satisfies</strong> the value in C.
Attributes present in A but not in C are ignored.
Unless otherwise specified for a given attribute type, <strong>satisfies</strong> means that the two values are equal.
Type-specific satisfaction rules - including range membership and minimum bound checks - are defined in <xref target="sec-match-one-codepoint"/> and in profile extensions (see <xref target="sec-compare-profile"/>).
See <xref target="sec-compare-environment"/> and <xref target="sec-compare-mvm"/> for examples.</t>
            </dd>
            <dt>Authority:</dt>
            <dd>
              <t>The entity that asserts a Claim.
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>
            </dd>
            <dt>Claim:</dt>
            <dd>
              <t>A piece of information, in the form of a key-value pair.
See also <xref section="4.2" sectionFormat="of" target="RFC9334"/> and <xref section="2" sectionFormat="of" target="RFC7519"/>.
Within this document, Claims appear in Evidence, a Reference Value or an Endorsement.</t>
            </dd>
            <dt>Class ID:</dt>
            <dd>
              <t>An identifier for an Environment that is shared among similar Environment instances, such as those with the same hardware assembly.
See also <xref section="4.2.4" sectionFormat="of" target="RFC9711"/>.</t>
            </dd>
            <dt>Collision-Resistant Name:</dt>
            <dd>
              <t>As defined in <xref section="2" sectionFormat="of" target="RFC7519"/>:
<em>"A name in a namespace that enables names to be allocated in a manner such that they are highly unlikely to collide with other names.
Examples of collision-resistant namespaces include: Domain Names, Object Identifiers (OIDs) as defined in the ITU-T X.660 and X.670 Recommendation series, and Universally Unique IDentifiers (UUIDs) [RFC4122].
When using an administratively delegated namespace, the definer of a name needs to take reasonable precautions to ensure they are in control of the portion of the namespace they use to define the name."</em>
CoRIM identifiers that function as global keys, such as Tag IDs and Environment identifiers, are Collision-Resistant Names.</t>
            </dd>
            <dt>Composite Attester:</dt>
            <dd>
              <t>A Composite Attester is either a Composite Device (<xref section="3.3" sectionFormat="of" target="RFC9334"/>) or a Layered Attester (<xref section="3.2" sectionFormat="of" target="RFC9334"/>) or any composition involving a combination of one or more Composite Devices or Layered Attesters.</t>
            </dd>
            <dt>Domain:</dt>
            <dd>
              <t>A Domain is the hierarchical container used to describe a Composite Attester in terms of its constituent Environments and the compositional relationships among them.
Every Environment implicitly defines a Domain; therefore, any triple that creates an Environment also creates a corresponding Domain. Domains exist to organize the structural composition of the Attester, not to introduce additional semantic entities.</t>
            </dd>
            <dt>Endorsed values:</dt>
            <dd>
              <t>A set of characteristics of an Attester that do not appear in Evidence.
For example, Endorsed Values may include testing or certification data related to a hardware or firmware module.
Endorsed Values are said to be "conditional" when they apply if Attester's actual state matches certain conditions.
See also <xref section="3" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
            </dd>
            <dt>Environment:</dt>
            <dd>
              <t>A logical partition within an Attester.
The term "Target Environment" refers to the group of system security metrics that are reported through Evidence.
The term "Attesting Environment" refers to the entity that collects and cryptographically signs such security metrics.
See also <xref section="3.1" sectionFormat="of" target="RFC9334"/>.</t>
            </dd>
            <dt>Environment-Claim Tuple (ECT):</dt>
            <dd>
              <t>A structure containing a set of values that describe a Target Environment plus a set of Measurement / Claim values that describe properties of the Target Environment.
The ECT also contains Authority which identifies the entity that authored the ECT.</t>
            </dd>
            <dt>Instance ID:</dt>
            <dd>
              <t>An identifier of an Environment instance, such as the serial number of a hardware module.
See also <xref section="4.2.1" sectionFormat="of" target="RFC9711"/>.</t>
            </dd>
            <dt>Measurement:</dt>
            <dd>
              <t>A value associated with specific security characteristics of an Attester that influences the trustworthiness of that Attester.
The object of a Measurement could be the invariant part of a firmware component loaded into memory during startup, a run-time integrity check (RTIC), a file system object, or a CPU register.
A measured object is part of the Attester's Target Environment.
Expected, or "golden," Measurements are compiled as Reference Values, which are used by the Verifier to assess the trust state of the Attester.
See also <xref target="TNC.Arch"/>, and Section 9.5.5 of <xref target="TPM2.Part1"/>.</t>
            </dd>
            <dt>Range Satisfaction:</dt>
            <dd>
              <t>A value satisfaction relation in which an entry value is said to satisfy a condition value when the entry lies within the bounds expressed by the condition.
For example, an <tt>int</tt> entry satisfies an <tt>int-range</tt> condition when the entry is within the condition's inclusive bounds (see <xref target="sec-comid-int-range"/>), and an <tt>svn</tt> entry satisfies a <tt>tagged-min-svn</tt> condition when the entry is greater than or equal to the condition's minimum (see <xref target="sec-comid-svn"/>).</t>
            </dd>
            <dt>Reference Values:</dt>
            <dd>
              <t>A set of values that represent the desired or undesired state of an Attester.
Reference Values are compared against Evidence to determine whether Attester state is corroborated by a Reference Value Provider.
Reference Values with matching Evidence produce "acceptable Claims."
See also <xref section="4.2" sectionFormat="of" target="RFC9334"/>, <xref section="8.3" sectionFormat="of" target="RFC9334"/>, and <xref section="2" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
            </dd>
            <dt>Triple:</dt>
            <dd>
              <t>A term derived from the Resource Description Framework (RDF) to mean a statement expressing a relationship between a subject and an object resource.
The nature of the relationship between subject and object is expressed via a predicate.
In CoRIM, unlike RDF, the predicate of the triple is implicit and is encoded in the triple's name/codepoint.
CoRIM triples typically represent assertions made by the CoRIM author regarding Attesting or Target Environments and their security features, such as Measurements and cryptographic key material.
See also Section 3.1 of <xref target="W3C.rdf11-primer"/>.</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
    <section anchor="sec-verifier-rec">
      <name>Use of CoRIM in a Verifier</name>
      <t>The Evidence appraisal process can be thought of as a conversation about an Attester, mediated and recorded by the Verifier.
The Verifier keeps a strict record of exactly what is being claimed in the various Conceptual Message inputs and, crucially, who is making the claims (known as the "authority").
Authority determines which entity asserts which Claims about an Attester.
To achieve this, the Verifier creates an internal scratchpad of Attester state called the Appraisal Claims Set (ACS).</t>
      <t>The motivation for describing a reference CoRIM Processor is for consistent Verifier operation across the ecosystem.</t>
      <section anchor="interactions-with-acs">
        <name>Interactions with ACS</name>
        <t>Multiple parties contribute to the "conversation" about a device's trustworthiness: the device itself (the Attester), the manufacturer (the CoRIM issuer), and potentially the organization relying on the device (the Verifier Owner).</t>
        <t>The Verifier uses the ACS to determine the actual state of the Attester, as defined by the various entities providing inputs.</t>
        <t>Different RATS conceptual messages contribute to the construction of an ACS following the requirements in <xref target="tbl-cmrr"/>.</t>
        <table anchor="tbl-cmrr">
          <name>Conceptual Message Representation Requirements</name>
          <thead>
            <tr>
              <th align="left">Input Type</th>
              <th align="left">Source</th>
              <th align="left">How the Verifier Updates the ACS</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <strong>Evidence</strong></td>
              <td align="left">The Device</td>
              <td align="left">If the device proves its identity, its claims are added to the ACS and tagged with the device's authority.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Reference Values</strong></td>
              <td align="left">CoRIM</td>
              <td align="left">The Verifier checks the Reference Values in the CoRIM against the ACS. If a value matches a claim the device just made, that claim gets an extra tag noting the manufacturer agrees with it.</td>
            </tr>
            <tr>
              <td align="left">
                <strong>Endorsements</strong></td>
              <td align="left">CoRIM</td>
              <td align="left">If the device's claims meet certain expectations in the ACS, the Verifier adds new, broader claims (Endorsed Values) to the ACS, tagged with the manufacturer's authority.</td>
            </tr>
          </tbody>
        </table>
        <t><em>Note: If the Attester's Evidence is not matched and corroborated by the manufacturer's Reference Values, the manufacturer's claims do not get added to the ACS.</em></t>
      </section>
      <section anchor="consistency-of-acs">
        <name>Consistency of ACS</name>
        <t>To ensure everyone builds these systems consistently, the specification uses CDDL to define both the exact structure of the CoRIM and a theoretical data model for the ACS.
However, the exact way a Verifier's software is implemented to realize the internal representation is up to the implementor.
<xref target="sec-corim-processor"/> describes these reconciliation principles in detail.
Once the ACS is built and the conversation is consistent, the ACS is available for processing of subsequent phases.</t>
      </section>
    </section>
    <section anchor="sec-type-conv">
      <name>Typographical Conventions for CDDL</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 and 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="sec-corim">
      <name>Concise Reference Integrity Manifest (CoRIM)</name>
      <t>A CoRIM is a collection of tags and related metadata in a concise CBOR <xref target="STD94"/> encoding.
A CoRIM can be digitally signed with a COSE <xref target="STD96"/> signature.
A tag is a structured, machine-readable data format used to identify, describe, and manage modules or components of a system.</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="RFC9393"/>) are used to identify, describe and manage software components.</t>
        </li>
        <li>
          <t>Concise Tag List (CoTL) tags (<xref target="sec-cotl"/>) 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>CoRIM allows for new types of tags to be added in future specifications.
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 an identifier to distinguish a CoRIM from other CoRIMs.</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 CDDL definition to be customized to fit a specific Attester by augmenting the base CDDL data definition via the specified extension points or by constraining types defined.
A profile MUST NOT change the base CoRIM CDDL definition's semantics, which includes not changing or overloading names and numbers registered at IANA registries used by this document.
For more detail, see <xref target="sec-corim-profile-types"/>.</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 #6.501 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 = concise-rim-type-choice

concise-rim-type-choice /= tagged-unsigned-corim-map
concise-rim-type-choice /= signed-corim
]]></sourcecode>
      <t>See Sections 4 and 5 of <xref target="DICE.endorsement"/> for diagrams and additional information on CoRIM structure.</t>
      <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
}
unsigned-corim-map = corim-map
]]></sourcecode>
        <t>The following describes each child item of this map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>id</tt> (index 0): An identifier for 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, CoSWID or CoTL 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.
See <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>.
Described in <xref target="sec-iana-corim"/>.</t>
          </li>
        </ul>
        <t>A <tt>corim-map</tt> is unsigned, and its tagged form is an entrypoint for parsing a CoRIM, so it is named <tt>tagged-unsigned-corim-map</tt>.</t>
        <sourcecode type="cddl"><![CDATA[
tagged-unsigned-corim-map = #6.501(unsigned-corim-map)
]]></sourcecode>
        <section anchor="sec-corim-id">
          <name>CoRIM Identifier</name>
          <t>A CoRIM Identifier uniquely identifies a CoRIM instance within the context of a CoRIM issuer.
In other words the CoRIM identifier can be used to distinguish CoRIMs that come from the same issuer.</t>
          <t>The base CDDL definition 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="RFC9393"/>), or a CoTL (<xref target="sec-cotl"/>).</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-tl-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.
The contents of the locator map are purely advisory.
Verifiers are not required to follow these URLs or use the information retrieved from the corresponding resources.</t>
          <sourcecode type="cddl"><![CDATA[
;# import measured-component as eatmc

corim-locator-map = {
  &(href: 0) => uri / [ + uri ]
  ? &(thumbprint: 1) => eatmc.digest / [ + eatmc.digest ]
}
]]></sourcecode>
          <t>The following describes each child element of this type.</t>
          <ul spacing="normal">
            <li>
              <t><tt>href</tt> (index 0): a URI or array of alternative URIs identifying locations where the additional resource can be fetched.
Every URI in the array identifies the same resource.</t>
            </li>
            <li>
              <t><tt>thumbprint</tt> (index 1): expected digest or an array of digests of the resource identified by <tt>href</tt>. See <xref target="sec-common-hash-entry"/>.
Every digest in the array is computed over the same resource, and each uses a different hash algorithm.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-corim-profile-types">
          <name>Profile Types</name>
          <t>Profiling is the mechanism that allows the base CoRIM CDDL definition to be customized 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 CoRIM types defined in this document.</t>
          <t>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 (<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-rim-cbor"/> and <xref target="sec-mt-rim-cose"/> 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 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>
          <t>The CoRIM profile must describe at a minimum the following:  (a) how cryptographic verification key material is represented (e.g., using Attestation Keys triples, or CoTS tags), and
(b) how key material is associated with the Attesting Environment.
The CoRIM profile should also specify whether CBOR deterministic encoding is required.</t>
          <sourcecode type="cddl"><![CDATA[
$profile-type-choice /= uri 
$profile-type-choice /= tagged-oid-type
]]></sourcecode>
          <t>For an example profile definition, see <xref target="I-D.fdb-rats-psa-endorsements"/>.</t>
        </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)
$corim-role-type-choice /= &(manifest-signer: 2)
]]></sourcecode>
          <t>The <tt>corim-entity-map</tt> MUST NOT contain two entities with the <tt>manifest-signer</tt> role.</t>
        </section>
      </section>
      <section anchor="sec-corim-signed">
        <name>Signed CoRIM</name>
        <sourcecode type="cddl"><![CDATA[
signed-corim = #6.18(COSE-Sign1-corim) / #6.98(COSE-Sign-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 either in a COSE_Sign1 structure or a
COSE_Sign structure.
The COSE_Sign structure may be used when:</t>
        <ol spacing="normal" type="1"><li>
            <t>Multiple authorities need to sign the same unsigned CoRIM payload; or</t>
          </li>
          <li>
            <t>A single authority needs to sign the same unsigned CoRIM payload using different signing algorithms.</t>
          </li>
        </ol>
        <t>The CoRIM MUST be signed by the CoRIM creator.
Other authorities MAY sign the CoRIM. (See <xref target="sec-mult-sign"/> for details on multi-signature CoRIM.)</t>
        <section anchor="signing-with-single-signature">
          <name>Signing with Single signature</name>
          <t>COSE_Sign1 is used when a single signer need to produce a signature over an unsigned CoRIM (<tt>tagged-unsigned-corim-map</tt>).
When using COSE_Sign1 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"/>) or alternatively in a <tt>CWT-Claims</tt> (<xref target="RFC9597"/>).</t>
          <sourcecode type="cddl"><![CDATA[
COSE-Sign1-corim = [
  protected: bstr .cbor protected-corim-header-map
  unprotected: unprotected-corim-header-map
  payload: bstr .cbor tagged-unsigned-corim-map /
                      hash-envelope-digest /
                      nil
  signature: bstr
]

hash-envelope-digest = 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>: When the payload is signed directly, either a CBOR-encoded tagged CoRIM, or nil if it is detached.
When the payload is signed indirectly, the digest of a CBOR-encoded tagged CoRIM.</t>
            </li>
            <li>
              <t><tt>signature</tt>: A COSE signature block, as defined in <xref section="4" sectionFormat="of" target="STD96"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-header">
          <name>Header Parameters</name>
          <t>This section describes the header parameters, that need to be set when</t>
          <t>a. A single signer need to produce a signature using (COSE_Sign1) object.
OR
b. When multiple signers, each with different authority, need to sign the same unsigned CoRIM, using COSE_Sign object.
In this case each array entry of <tt>signature_structure</tt> has the header parameters that carry the details of the signature algorithm and signer information as detailed in <xref target="sec-mult-sign"/></t>
          <section anchor="protected-header-map">
            <name>Protected Header Map</name>
            <sourcecode type="cddl"><![CDATA[
; protected corim header map needs to contain at least one of
; corim-meta (8) or CWT-Claims (15)

protected-corim-header-map = protected-corim-header-map-inline /
                             protected-corim-header-map-hash-envelope

protected-corim-header-map-inline = {
  &(alg: 1) => int
  &(content-type: 3) => "application/rim+cbor"
  meta-group
  * cose-label => cose-value
}

protected-corim-header-map-hash-envelope = {
  &(alg: 1) => int,
  &(payload_hash_alg: 258) => int
  &(payload_preimage_content_type: 259) => "application/rim+cbor"
  ? &(payload_location: 260) => tstr
  meta-group
  * cose-label => cose-value
}

meta-group = ((
  corim-meta-identity,
  ? cwt-claims-identity,
) // cwt-claims-identity)

corim-meta-identity = (&(corim-meta: 8) => bstr .cbor corim-meta-map)
cwt-claims-identity = (&(CWT-Claims: 15) => cwt-claims)
]]></sourcecode>
            <t>The CoRIM protected header map uses some common COSE header parameters plus additional metadata.
Additional metadata can either be carried in a <tt>CWT_Claims</tt> (index: 15) parameter as defined by <xref target="RFC9597"/>,
or in a <tt>corim-meta</tt> map as a legacy alternative, described in <xref target="sec-corim-meta"/>.</t>
            <t>The following describes each child item of this map.</t>
            <ul spacing="normal">
              <li>
                <t><tt>alg</tt> (index 1): An integer that identifies a signature algorithm.</t>
              </li>
            </ul>
            <t>Either, when the payload is signed directly:</t>
            <ul spacing="normal">
              <li>
                <t><tt>content-type</tt> (index 3): A string that represents the "MIME Content type" carried in the CoRIM payload.</t>
              </li>
            </ul>
            <t>Or, when the payload is signed indirectly using a Hash Envelope (<xref target="RFC9995"/>):</t>
            <ul spacing="normal">
              <li>
                <t><tt>payload_hash_alg</tt> (index 258): The hash algorithm used to produce the payload.</t>
              </li>
              <li>
                <t><tt>payload_preimage_content_type</tt> (index 259): A string that represents the "MIME Content type" of the CoRIM document used as the pre-image of the payload.</t>
              </li>
              <li>
                <t><tt>payload_location</tt> (index 260): An optional identifier enabling retrieval of the original resource (preimage) identified by the payload.</t>
              </li>
            </ul>
            <t>The value of <tt>content-type</tt> or <tt>payload_preimage_content_type</tt> is exactly <tt>application/rim+cbor</tt>, without media type parameters.
In particular, the <tt>profile</tt> parameter is not used in the COSE header, because the profile is carried in the <tt>profile</tt> field of the <tt>corim-map</tt> (<xref target="sec-corim-map"/>).</t>
            <t>At least one of:</t>
            <ul spacing="normal">
              <li>
                <t><tt>CWT-Claims</tt> (index 15): A map that contains metadata associated with a signed CoRIM.
Described in <xref target="RFC9597"/>.</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>Documents MAY include both <tt>CWT-Claims</tt> and <tt>corim-meta</tt>, in which case the signer MUST ensure that their contents are semantically identical: the <tt>CWT-Claims</tt> issuer (<tt>iss</tt>) MUST have the same value as <tt>signer-name</tt> in <tt>corim-meta</tt>, and the <tt>nbf</tt> and <tt>exp</tt> values in the <tt>CWT-Claims</tt> MUST match the <tt>signature-validity</tt> in <tt>corim-meta</tt>.</t>
            <t>Additional data can be included in the COSE header map as per (<xref section="3" sectionFormat="of" target="STD96"/>).</t>
          </section>
          <section anchor="cwt-claims">
            <name>CWT Claims</name>
            <t>The CWT Claims (<xref target="RFC9597"/>) map identifies the entity that created and signed the CoRIM.
This ensures the consumer is able to identify credentials used to authenticate its signer.
To avoid any possible ambiguity with the contents of the CoRIM tags, the CWT Claims map MUST NOT contain claims that have semantic overlap with the information contained in CoRIM tags.</t>
            <t>The following describes each child item of this group.</t>
            <ul spacing="normal">
              <li>
                <t><tt>iss</tt> (index 1): Issuer or signer for the CoRIM, formerly <tt>signer-name</tt> or <tt>signer-uri</tt> in <xref target="sec-corim-signer"/>.</t>
              </li>
              <li>
                <t><tt>sub</tt> (index 2): Optional - identifies the CoRIM document, equivalent to a string representation of $corim-id-type-choice</t>
              </li>
            </ul>
            <t>Additional data can be included in the CWT Claims, as per <xref target="RFC8392"/>, such as:</t>
            <ul spacing="normal">
              <li>
                <t><tt>exp</tt> (index 4): Expiration time, formerly <tt>signature-validity</tt> in <xref target="sec-common-validity"/>.</t>
              </li>
              <li>
                <t><tt>nbf</tt> (index 5): Not before time, formerly <tt>signature-validity</tt> in <xref target="sec-common-validity"/>.</t>
              </li>
            </ul>
          </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>
          <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 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 anchor="sec-mult-sign">
          <name>Signing with Multiple Signatures</name>
          <t>When using COSE_Sign the following CDDL specification defines the overall structure.</t>
          <sourcecode type="cddl"><![CDATA[
COSE-Sign-corim = [
  protected: bstr .cbor protected-corim-header-map
  unprotected: unprotected-corim-header-map
  payload: bstr .cbor tagged-unsigned-corim-map /
                      hash-envelope-digest /
                      nil
  signature: [+ signature-structure]
]
]]></sourcecode>
          <t>The following describes each child element of this type.</t>
          <ul spacing="normal">
            <li>
              <t><tt>protected</tt>: The top level protected header parameter.
Contains the information pertaining to the signature algorithm and signer details of the authority producing the signature.
Refer to <xref target="sec-multi-sign-headers"/> for details.</t>
            </li>
            <li>
              <t><tt>unprotected</tt>: The top level unprotected header parameter.
Refer to <xref target="sec-multi-sign-headers"/> for details.</t>
            </li>
            <li>
              <t><tt>payload</tt>: When the payload is signed directly, this element contains either a CBOR-encoded tagged CoRIM, or nil if it is detached.
When the payload is signed indirectly, the digest of a CBOR-encoded tagged CoRIM.</t>
            </li>
            <li>
              <t><tt>signature</tt>: This element contains an array of signature structures, as defined in <xref target="sec-multiple-sigs"/>.</t>
            </li>
          </ul>
          <section anchor="sec-multiple-sigs">
            <name>Signature Parameters of Multi Sign CoRIM</name>
            <t>The signature parameter of a COSE_Sign object contains an array of signature structures that has Header parameters along with signature bytes.
These header parameters contain information relating to the content, as well as details about the signer performing the signature.</t>
            <sourcecode type="cddl"><![CDATA[
signature-structure = [
  protected: bstr .cbor protected-corim-header-map
  unprotected: unprotected-corim-header-map
  signature: bstr
]
]]></sourcecode>
            <t>The following describes each element of signature_structure.</t>
            <ul spacing="normal">
              <li>
                <t><tt>protected</tt>: A CBOR Encoded protected header which is protected by the COSE signature.</t>
              </li>
              <li>
                <t><tt>unprotected</tt>: A COSE header that is not protected by the COSE signatur.</t>
              </li>
              <li>
                <t><tt>signature</tt>: A COSE signature block, as defined in <xref section="4" sectionFormat="of" target="STD96"/>.</t>
              </li>
            </ul>
            <t>Refer to section <xref target="sec-multi-sign-headers"/> when setting the above parameters</t>
          </section>
          <section anchor="sec-multi-sign-headers">
            <name>Use of Header Parameters and Signatures in COSE_Sign</name>
            <t>This section provides the order in which the protected and unprotected header parameters should be set, along with an array of signature structures in a COSE_Sign object.</t>
            <ul spacing="normal">
              <li>
                <t>Single Signer, multiple signing algorithms:</t>
              </li>
            </ul>
            <ol spacing="normal" type="1"><li>
                <t>The top-level <tt>protected</tt> and <tt>unprotected</tt> header parameters, as specified in <xref target="sec-mult-sign"/>, are populated first.
These parameters identify the signature algorithm and the authority responsible for signing the CoRIM.
The corresponding signature bytes are carried in the signature element of the first entry in the signatures array.</t>
              </li>
              <li>
                <t>For each subsequent entry in the signatures array, the associated protected and unprotected header parameters identify the signing algorithm used to generate the corresponding signature.
The signature bytes are carried in the signature element of that entry.</t>
              </li>
            </ol>
            <ul spacing="normal">
              <li>
                <t>Multiple Signers</t>
              </li>
            </ul>
            <ol spacing="normal" type="1"><li>
                <t>The top-level <tt>protected</tt> and <tt>unprotected</tt> header parameters, as specified in <xref target="sec-mult-sign"/>, are populated first, using the header parameter definitions provided in <xref target="sec-header"/>.
These parameters identify the signing algorithm and the authority of the CoRIM creator i.e the entity responsible for signing the CoRIM.
The corresponding signature bytes are carried in the signature element of the first entry in the <tt>signature-structure</tt> array.</t>
              </li>
              <li>
                <t>Each subsequent entry in the <tt>signature-structure</tt> array contains the signature algorithm, signer identification information, and corresponding signature bytes associated with a distinct signing authority.
Each authority independently signs the same unsigned CoRIM payload, with header parameters as defined in <xref target="sec-header"/>.</t>
              </li>
            </ol>
          </section>
        </section>
      </section>
      <section anchor="sec-conveyed-signer">
        <name>Signer authority of securely conveyed unsigned CoRIM</name>
        <t>An unsigned (#6.501-tagged) CoRIM may be a payload in an enveloping signed document (e.g., <xref target="RFC5280"/>), or it may be conveyed unsigned within the protection scope of a secure channel.
The CoRIM signer authority is taken from the authenticated credential (e.g., OAUTH token) of the entity that originates the CoRIM.
For example, this entity could be the sending peer in a secure channel.
A CoRIM role entry expressing the origin of the unsigned CoRIM (i.e., the enveloping signed document or the origin endpoint of the secure channel) via the <tt>manifest-signer</tt> role MUST be added to <tt>corim-entity-map</tt>.
If the authority cannot be expressed directly via the existing authority types, the receiver SHOULD establish a local authority in one of the supported authority formats (e.g., if an unsigned CoRIM is received over a secure channel where authentication is token- or password-based).
If it is impossible to assert the authority of the origin, the Verifier's appraisal policy MAY assert the Verifier's authority as the CoRIM origin.</t>
        <t>It is out of scope of this document to specify a method of delegating the signer role in the case that an unsigned CoRIM is conveyed through multiple secured links with different notions of authenticity without end-to-end integrity protection.</t>
        <section anchor="corim-collections">
          <name>CoRIM collections</name>
          <t>Several CoRIMs may share the same signer (e.g., as collection payload in a different signed message) and use locally-resolvable references to each other, for example using a RATS Conceptual Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.
The Collection CMW type is similar to a profile in its way of restricting the shape of the CMW collection.
The Collection CMW type for a CoRIM collection SHALL be <tt>tag:ietf.org,2026:corim</tt>.</t>
          <t>A COSE_Sign1-signed CoRIM Collection CMW has a similar requirement to a signed CoRIM.
The signing operation MUST include either a <tt>CWT-Claims</tt> or a <tt>corim-meta</tt> and MAY contain both, in the COSE_Sign1 <tt>protected-header</tt> parameter.
These metadata containers ensure that each CoRIM in the collection has an identified signer.</t>
          <t>If using other signing envelope formats, (<xref target="sec-conveyed-signer"/>) the CoRIM signing authority MUST be specified. For example, this can be accomplished by adding the <tt>manifest-signer</tt> role to every CoRIM, or by using a protected header analogous to <tt>corim-meta</tt>.</t>
          <sourcecode type="cddl"><![CDATA[
corim-cbor-collection = {
  "__cmwc_t" => "tag:ietf.org,2026:corim",
  + cmw-label => [rim-cbor-content-format, bytes .cbor tagged-unsigned-corim-map]
}
cmw-label = text / int

; RFC Editor: replace 65000 with the CoAP Content-Format ID assigned to
; application/rim+cbor (TBD1), here and in the example, and remove this note.
rim-cbor-content-format = 65000
]]></sourcecode>
          <t>The Collection CMW MAY use any label for its CoRIMs.
If there is a hierarchical structure to the CoRIM Collection CMW, the base entry point SHOULD be labeled <tt>0</tt> in CBOR or <tt>"base"</tt> in JSON.
It is RECOMMENDED to label a CoRIM with its tag-id in string format, where <tt>uuid-type</tt> string format is specified by <xref target="RFC9562"/>.
CoRIMs distributed in a CoRIM Collection CMW MAY declare their interdependence <tt>dependent-rims</tt> with local resource indicators.
It is RECOMMENDED that a CoRIM with a <tt>uuid-type</tt> tag-id be referenced with URI <tt>urn:uuid:</tt><em>tag-id-uuid-string</em>.
It is RECOMMENDED that a CoRIM with a <tt>tstr</tt> tag-id be referenced with <tt>tag:ietf.org,2026:corim:local,</tt><em>tag-id-tstr</em>.
It is RECOMMENDED for a <tt>corim-locator-map</tt> containing local URIs to afterwards list a nonzero number of reachable URLs as remote references.</t>
          <t>The following example demonstrates these recommendations for bundling CoRIMs with a common signer but with different profiles.</t>
          <sourcecode type="cbor-diag"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

/ cbor-collection / {
  "__cmwc_t": "tag:ietf.org,2026:corim",
  "adee8cd4-4e47-461f-b341-2aba3ae4cbda":
    / cbor-cmw / [/ rim-cbor-content-format / 65000, << / tagged-\
                                           unsigned-corim-map / 501({
      / id / 0: h'adee8cd44e47461fb3412aba3ae4cbda',
      / tags / 1: [/ tagged-concise-mid-tag / 506(<<{
        / tag-identity / 1: {
          / tag-id / 0: h'315cfc0208d548ee9c89906df96e7fb8'
        },
        / triples / 4: {
          / reference-triples / 0: [[
            / ref-env / {/ class / 0: {/ class-id / 0: 560(h'c0de')}\
                                                                   },
            / ref-claims / [{
              / mval / 1: {
                / raw-value / 4:
                  560(h'\
                 6094685f8bb9b67daaf35707bd2c391f536a1df2ce5152c3cc')
              }}]]]}}>>)],
      / profile / 3: 32("tag:example.com,2025:example-profile"),
      / dependent-rims / 2: [{
        / href / 0: [
          32("urn:uuid:51a5f633-71c0-45f5-855e-43e8254c1806"),
          32("https://example.com/369a6688451240b9b74905b1dd5fae9f.\
                                                              corim")
        ]}]}) >>],
  "51a5f633-71c0-45f5-855e-43e8254c1806":
    / cbor-cmw / [/ rim-cbor-content-format / 65000, << / tagged-\
                                           unsigned-corim-map / 501({
      / id / 0: h'51a5f63371c045f5855e43e8254c1806',
      / tags / 1: [/ tagged-concise-swid-tag / 505(<<{
          / tag-id / 0: h'369a6688451240b9b74905b1dd5fae9f',
          / tag-version / 12: 2,
          / software-name / 1: "Gadget Firmware",
          / entity / 2: {
            / entity-name / 31: "ACME Firmware",
            / role / 33: / software-creator / 2
          }}>>)],
      / profile / 3: 32("tag:example.com,2025:software-profile")})>>]
}
]]></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 an ID that is used to identify CoMID instances when cross referencing CoMID tags, for example in typed link relations, or in a CoTL 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>This specification defines two classes of triples, the Mandatory To Implement (MTI) and the Optional To Implement (OTI).
The MTI triples are essential to basic appraisal processing as illustrated in <xref target="RFC9334"/> and <xref target="I-D.ietf-rats-endorsements"/>.
Every CoRIM Verifier MUST implement the MTI triples.
The OTI class of triples are generally useful across profiles.
A CoRIM Verifier SHOULD implement OTI triples.
Verifiers may be constrained in various ways that may make implementation of the OTI class infeasible or unnecessary.
For example, deployment environments may have constrained resources, limited code size, or limited scope Attesters.</t>
      <t>MTI Triples:</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>Conditional Endorsement triples: describing one or more conditions that, once matched, result in augmenting the Attester's actual state with the supplied Endorsed Values (<xref target="sec-comid-triple-cond-endors"/>).</t>
        </li>
      </ul>
      <t>OTI Triples:</t>
      <ul spacing="normal">
        <li>
          <t>Conditional Endorsement Series triples: describing conditional endorsements that are evaluated using a special matching algorithm (<xref target="sec-comid-triple-cond-endors"/>).</t>
        </li>
        <li>
          <t>Device Identity triples: containing cryptographic credentials - for example, an IDevID - 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>Trust dependency triples: describing trust relationships between domains, i.e., collection of related environments and their measurements (<xref target="sec-comid-triple-trust-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 Payload tags (<xref target="sec-comid-triple-coswid"/>).</t>
        </li>
      </ul>
      <t>CoMID triples are extensible (<xref target="sec-comid-triples"/>).
Triples added via the extensibility feature MUST be OTI class triples.
This document specifies profiles (see <xref target="sec-extensibility"/>).
OTI triples MAY be reclassified as MTI using a profile.
Conversely, profiles can choose not to <em>use</em> certain MTI triples.
Profiles MUST NOT reclassify MTI triples as OTI.</t>
      <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>language</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
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> providing typed relationships between this and
other CoMIDs.
Described in <xref target="sec-comid-linked-tag"/>.</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): An 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
referencing the CoMID. The tag identifier MUST be a Collision-Resistant Name (see <xref target="sec-glossary"/>). Failure to
ensure collision resistance 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="RFC9562"/>, and SHOULD follow the local uniqueness
guidance of <xref section="6.8" sectionFormat="of" target="RFC9562"/>. 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="RFC9562"/>, or a URI <xref target="STD66"/>, for example <tt>urn:example:widget:firmware:1.0.0</tt>.</t>
          </section>
          <section anchor="sec-tag-version">
            <name>Tag Version</name>
            <sourcecode type="cddl"><![CDATA[
tag-version-type = uint
]]></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 <tt>entity-map</tt> (<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>linked-tag-map</tt>.</t>
          <ul spacing="normal">
            <li>
              <t><tt>linked-tag-id</tt> (index 0): Identifier for the target tag.
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 categories need to be present but at least one category MUST be present and
contain at least one entry.</t>
          <t>In most cases, the supply chain entity that is responsible for providing a triple (i.e., Reference Values or Endorsed Values) is by default the CoRIM signer.
The signer of a triple is said to be its <em>authority</em>.
However, multiple authorities may be involved in signing triples.
See <xref target="STD96"/>.
Consequently, authority may differ for search criteria.
See <xref target="sec-measurements"/>.</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) =>
    [ + trust-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: 10) =>
    [ + conditional-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-trust-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 Endorsements that are applicable based on the acceptance of a condition.
Described in <xref target="sec-comid-triple-cond-series"/>.</t>
            </li>
            <li>
              <t><tt>conditional-endorsement-triples</tt> (index 10): Triples describing a series of conditional Endorsements based on the acceptance of a stateful environment.
Described in <xref target="sec-comid-triple-cond-endors"/>.</t>
            </li>
          </ul>
          <section anchor="sec-environments">
            <name>Environments</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>
            <t>An environment MUST be identified by a Collision-Resistant Name (see <xref target="sec-glossary"/>).
The combination of values within <tt>class-map</tt> MUST combine to form a Collision-Resistant Name.</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 an identifier of a module's instance.
Described in <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.
Described in <xref target="sec-comid-group"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="sec-comid-class">
            <name>Environment 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-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>Environment Instance</name>
            <t>An <tt>instance-id</tt> identifies a Target Environment instance.
The identifier is reliably bound to the Target Environment.
For example, if an X.509 certificate's subject public key is unique for each instance of a target environment, the <tt>instance-id</tt> might be created from that subject public key.
See <xref section="4.1" sectionFormat="of" target="RFC5280"/>.
Alternatively, if the certificate's subject public key is large, the <tt>instance-id</tt> might be a key identifier that is a digest of that public key.
See <xref section="4.2.1.2" sectionFormat="of" target="RFC5280"/>.
The key identifier is reliably bound to the subject public key because the identifier is a digest of the key.</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"/>), cryptographic keys, or cryptographic key identifiers.</t>
            <sourcecode type="cddl"><![CDATA[
$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type
$instance-id-type-choice /= tagged-bytes
$instance-id-type-choice /= tagged-pkix-base64-key-type
$instance-id-type-choice /= tagged-pkix-base64-cert-type
$instance-id-type-choice /= tagged-cose-key-type
$instance-id-type-choice /= tagged-key-thumbprint-type
$instance-id-type-choice /= tagged-cert-thumbprint-type
$instance-id-type-choice /= tagged-pkix-asn1der-cert-type
]]></sourcecode>
          </section>
          <section anchor="sec-comid-group">
            <name>Environment Group</name>
            <t>A group carries an identifier that is reliably bound to a group of
Attesters, for example when a number of Attesters are hidden in the same
anonymity set.</t>
            <t>The types defined for a group identifier 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="sec-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 a given class.</t>
            <t>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>An environment may have multiple measured elements.
Measured elements are distinguished from each other by measurement keys.
Measurement keys may be used to disambiguate measurements of the same type originating from different elements.</t>
            <t>Triples that have search conditions may specify authority as matching criteria by populating <tt>authorized-by</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 measurement key.
 Described in <xref target="sec-comid-mkey"/>.
 A <tt>measurement-map</tt> without an <tt>mkey</tt> is said to be anonymous.</t>
              </li>
              <li>
                <t><tt>mval</tt> (index 1): The measurements associated with the environment.
 Described in <xref target="sec-comid-mval"/>.</t>
              </li>
              <li>
                <t><tt>authorized-by</tt> (index 2): Identifies the authority, an individual or organization, under whose control an entity asserts Claims.
The authority is represented using <tt>$crypto-key-type-choice</tt> (see <xref target="sec-crypto-keys"/>), which binds the Claim to a specific cryptographic identity.
The <tt>authorized-by</tt> element participates in the matching and augmentation process defined in <xref target="sec-match-and-augment"/>, where it provides the conditions under which a Claim is applicable.</t>
              </li>
            </ul>
            <section anchor="sec-comid-mkey">
              <name>Measurement Keys</name>
              <t>A Measurement Key is an identifier for a measured element.
It can be used to identify the type of measured element (see <xref target="I-D.ydb-rats-cca-endorsements"/>), or to index an SPDM <xref target="SPDM"/> measurements block originating from a specific target environment, or to identify multiple measured element instances within the same environment.
The initial types defined are OID, UUID, uint, and tstr.</t>
              <sourcecode type="cddl"><![CDATA[
$measured-element-type-choice /= tagged-oid-type
$measured-element-type-choice /= tagged-uuid-type
$measured-element-type-choice /= uint
$measured-element-type-choice /= tstr
]]></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) => digests-type
  ? &(flags: 3) => flags-map
  ? (
      &(raw-value: 4) => $raw-value-type-choice,
      ? &(raw-value-mask-DEPRECATED: 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
  ? &(int-range: 15) => int-range-type-choice
  ? &(bool: 16) => bool-matcher
  ? &(integer: 17) => integer-matcher
  ? &(text: 18) => text-matcher
  ? &(bytes: 19) => bytes-matcher
  ? &(float: 20) => float-matcher
  * $$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.
It uses the <tt>digests-type</tt>.
Described in <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.
The vendor determines the encoding of <tt>raw-value</tt>.
When used for comparison, the <tt>tagged-masked-raw-value</tt> variant includes a mask indicating which bits in the value to compare.
Described in <xref target="sec-comid-raw-value-types"/>.</t>
                </li>
                <li>
                  <t><tt>raw-value-mask-DEPRECATED</tt> (index 5): Is an obsolete method of indicating which bits in a raw value to compare. New CoMID files should use the <tt>tagged-masked-raw-value</tt> on index 4 instead of using index 5.</t>
                </li>
                <li>
                  <t><tt>mac-addr</tt> (index 6): An EUI-48 (Extended Unique Identifier 48) or EUI-64 MAC address <xref target="IEEE-802.OandA"/> 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.
Described in <xref target="sec-common-ueid"/>.</t>
                </li>
                <li>
                  <t><tt>uuid</tt> (index 10): UUID associated with the measured environment.
Described in <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>
                <li>
                  <t><tt>int-range</tt> (index 15): An integer value or an inclusive integer range that can be compared with linear order.
Described in <xref target="sec-comid-int-range"/>.
Comparison rules are defined in <xref target="sec-match-int-range"/>.</t>
                </li>
                <li>
                  <t><tt>bool</tt> (index 16): A boolean value, compared for exact match.
Described in <xref target="sec-comid-matchers"/>.
Comparison rules are defined in <xref target="sec-match-bool"/>.</t>
                </li>
                <li>
                  <t><tt>integer</tt> (index 17): An integer value with configurable matching semantics, including range and set matching.
Described in <xref target="sec-comid-matchers"/>.
Comparison rules are defined in <xref target="sec-match-integer"/>.</t>
                </li>
                <li>
                  <t><tt>text</tt> (index 18): A text string with configurable matching semantics.
Described in <xref target="sec-comid-matchers"/>.
Comparison rules are defined in <xref target="sec-match-text"/>.</t>
                </li>
                <li>
                  <t><tt>bytes</tt> (index 19): A byte string with configurable matching semantics.
Described in <xref target="sec-comid-matchers"/>.
Comparison rules are defined in <xref target="sec-match-bytes"/>.</t>
                </li>
                <li>
                  <t><tt>float</tt> (index 20): A floating-point value with configurable matching semantics, including range and set matching.
Described in <xref target="sec-comid-matchers"/>.
Comparison rules are defined in <xref target="sec-match-float"/>.</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[
;# import rfc9393 as coswid

version-map = {
  &(version: 0) => text
  ? &(version-scheme: 1) => coswid.$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="RFC9393"/> and extended with the <tt>binary</tt> scheme described in <xref target="iana-swid-version-scheme"/>.
When the value of the <tt>version-scheme</tt> is <tt>binary</tt>, the value of the <tt>version</tt> field is encoded as base64url (<xref section="5" sectionFormat="of" target="RFC4648"/>), without padding.
The CDDL (including the new <tt>binary</tt> version scheme) 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 /= &(binary: 5)
$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 cannot be decremented.
If a security relevant flaw is discovered in the Target Environment and is subsequently fixed, 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 = svn / 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.
Note that, while the fields may not be completely independent of one another, this specification imposes no restrictions on combinations of the <tt>flags-map</tt> booleans.
However, a profile may restrict the possible <tt>flags-map</tt> booleans and their valid combinations.</t>
              <sourcecode type="cddl"><![CDATA[
flags-map = non-empty<{
  ? &(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
  ? &(is-runtime-updatable: 10) => 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 rollback to previous software images.</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>
                <li>
                  <t><tt>is-runtime-updatable</tt> (index 10): If the flag is true, the measured environment
supports being updated at run time without requiring a system reboot for the update to
take effect. This is sometimes referred to as "Live Firmware Activation" (LFA) or hitless
update or impactless updates. The flag describes a capability of the measured environment;
it does not by itself imply that an update has occurred or is pending.</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. A profile may choose
to define more specific semantic meaning to a raw value.</t>
              <t>A <tt>raw-value</tt> measurement, or an Endorsement, is a tagged value of type <tt>bytes</tt>.
This specification defines tag #6.560.
The default raw value measurement is of type <tt>tagged-bytes</tt> (<xref target="sec-common-tagged-bytes"/>).</t>
              <t>Additional value types can be added to <tt>$raw-value-type-choice</tt>. These additional values MUST be CBOR tagged <tt>bstr</tt>s.
Constraining all raw value types to be <tt>bstr</tt> lets Verifiers compare raw values without understanding their contents.</t>
              <t>A raw value intended for comparison can include a mask value, which selects the bits to compare during appraisal.
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>The <tt>raw-value-mask-DEPRECATED</tt> in <tt>measurement-values-map</tt> is deprecated, but retained for backwards compatibility.
This code point may be removed in a future revision of this specification.</t>
              <sourcecode type="cddl"><![CDATA[
$raw-value-type-choice /= tagged-bytes
$raw-value-type-choice /= tagged-masked-raw-value

raw-value-mask-type = bytes
tagged-masked-raw-value = #6.563([
  value: bytes
  mask : bytes
])
]]></sourcecode>
            </section>
            <section anchor="sec-comid-address-types">
              <name>Address Types</name>
              <t>This specification defines types for 48-bit and 64-bit MAC identifiers.
For IP addresses, it reuses the "Address Format" types defined in <xref target="RFC9164"/> with the CBOR tag removed.</t>
              <t>All the types represent a single address.</t>
              <sourcecode type="cddl"><![CDATA[
mac-addr-type-choice = eui48-addr-type / eui64-addr-type
eui48-addr-type = bytes .size 6
eui64-addr-type = bytes .size 8

;# import rfc9164 as cbor-ip

ip-addr-type-choice /= cbor-ip.ipv4-address
ip-addr-type-choice /= cbor-ip.ipv6-address
]]></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>
              <li>
                <t><tt>tagged-pkix-asn1der-cert-type</tt>: a <tt>bstr</tt> of ASN.1 DER encoded X.509 public key certificate.
Defined in <xref section="4" sectionFormat="of" target="RFC5280"/>.</t>
              </li>
            </ul>
            <t>A cryptographic key digest can be one of the following formats:</t>
            <ul spacing="normal">
              <li>
                <t><tt>tagged-key-thumbprint-type</tt>: a <tt>digest</tt> (e.g., the SHA-2 hash) of a raw public key.
For example, the digest value can be used to locate a public key contained in a lookup table.
Ultimately, the discovered keys have to be successfully byte-by-byte compared with the corresponding keys.</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>
              <li>
                <t><tt>tagged-bytes</tt>: a key identifier with no prescribed construction method.</t>
              </li>
            </ul>
            <sourcecode type="cddl"><![CDATA[
;# import measured-component as eatmc

$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-pkix-asn1der-cert-type
$crypto-key-type-choice /= tagged-key-thumbprint-type
$crypto-key-type-choice /= tagged-cert-thumbprint-type
$crypto-key-type-choice /= tagged-cert-path-thumbprint-type
$crypto-key-type-choice /= tagged-bytes
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-key-thumbprint-type = #6.557(eatmc.digest)
tagged-cose-key-type = #6.558(COSE_Key)
tagged-cert-thumbprint-type = #6.559(eatmc.digest)
tagged-cert-path-thumbprint-type = #6.561(eatmc.digest)
tagged-pkix-asn1der-cert-type = #6.562(bstr)
]]></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 an 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".
The digests use <tt>digests-type</tt> semantics (<xref target="sec-common-hash-entry"/>).</t>
            <sourcecode type="cddl"><![CDATA[
integrity-register-id-type-choice = uint / text

integrity-registers = {
  + integrity-register-id-type-choice => digests-type
}
]]></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-int-range">
            <name>Int Range</name>
            <t>An int range describes an integer value that can be compared with linear order in the target environment.
An int range is represented with either major type 0 or major type 1 ints.</t>
            <sourcecode type="cddl"><![CDATA[
int-range-type-choice = int / tagged-int-range
int-range = [min: int / negative-inf, max: int / positive-inf]
tagged-int-range = #6.564(int-range)
positive-inf = null
negative-inf = null
]]></sourcecode>
            <t>The signed integer range representation is an inclusive range.
A <tt>min</tt> or <tt>max</tt> of <tt>null</tt> means that the range is effectively unbounded in that direction.
At least one of <tt>min</tt> and <tt>max</tt> MUST be non-<tt>null</tt>; to match any value, the entry is omitted.
If both <tt>min</tt> and <tt>max</tt> are integers, <tt>min</tt> MUST be less than or equal to <tt>max</tt>.
An <tt>int-range</tt> that violates either requirement is malformed, and the tag that contains it MUST be discarded (see <xref target="sec-phase-1"/>).</t>
          </section>
          <section anchor="sec-comid-matchers">
            <name>Type Matchers</name>
            <t>The <tt>measurement-values-map</tt> entries at indices 16-20 support generic boolean, integer, text, byte-string, and floating-point measurements.
For the integer, float, text and byte-string entries, matching semantics are configurable: rather than adding a separate codepoint for each desired matching criterion, these entries use CBOR-tagged wrappers to encode the matching logic alongside the value:</t>
            <ul spacing="normal">
              <li>
                <t>Bare (untagged) value means exact match: the target value must equal the entry's value.</t>
              </li>
              <li>
                <t>CBOR tag 566 (<tt>tagged-*-set</tt>, integer, float, text and byte-string types only) means set match: the target value must equal one of the values in the array; at least two alternatives MUST be provided.</t>
              </li>
              <li>
                <t>CBOR tag 565 (<tt>tagged-integer-range</tt> and <tt>tagged-float-range</tt>, numeric types only) means range match: the target value must lie within the inclusive [min, max] interval; <tt>null</tt> means unbounded.</t>
              </li>
            </ul>
            <t>If both <tt>min</tt> and <tt>max</tt> of a <tt>tagged-integer-range</tt> or <tt>tagged-float-range</tt> are non-<tt>null</tt>, <tt>min</tt> MUST be less than or equal to <tt>max</tt>.
A <tt>tagged-integer-range</tt> or <tt>tagged-float-range</tt> that violates this requirement is malformed, and the tag that contains it MUST be discarded (see <xref target="sec-phase-1"/>).</t>
            <t>The boolean entry (index 16) supports only exact match; see <xref target="sec-match-bool"/> for why this is the case.</t>
            <t>The numeric type of a value is determined by the codepoint at which it appears: <tt>integer</tt> (index 17) holds <tt>int</tt> values and <tt>float</tt> (index 20) holds <tt>float</tt> values.
Values at different codepoints are never compared with each other, so an <tt>integer</tt> condition never matches a <tt>float</tt> ACS-ECT value, and vice versa, even when they denote the same number.
An Evidence transformation algorithm, or the CoRIM profile that defines it, MUST specify the codepoint to which each numeric value it produces is assigned.</t>
            <t>The range and set forms are meaningful only as a condition, when the <tt>measurement-values-map</tt> entry appears in a C-ECT.
<tt>measurement-values-map</tt> is also used, unmodified, for ACS-ECTs (the values asserted by Evidence, Reference Values and Endorsements); the CDDL does not by itself distinguish the two uses.
An ACS-ECT entry at codepoints 16-20 MUST use the bare, untagged form.
The range and set forms MUST NOT be used outside a condition.
The comparison rules in <xref target="sec-match-bool"/>, <xref target="sec-match-integer"/>, <xref target="sec-match-text"/>, <xref target="sec-match-bytes"/> and <xref target="sec-match-float"/> are accordingly defined only for C-ECT values of these codepoints, compared against a bare ACS-ECT value.</t>
            <sourcecode type="cddl"><![CDATA[
; Set match: target value must equal one of the listed alternatives (two or more)
tagged-integer-set = #6.566([2* int])
tagged-float-set = #6.566([2* float])
tagged-text-set = #6.566([2* text])
tagged-bytes-set = #6.566([2* bytes])

; Range match: target value must lie within the inclusive [min, max] interval
; null means unbounded.  Defined for numeric types only.
tagged-integer-range = #6.565([int / null, int / null])
tagged-float-range = #6.565([float / null, float / null])

; Composed matchers: the bare type means exact match
bool-matcher = bool
integer-matcher = int / tagged-integer-range / tagged-integer-set
float-matcher = float / tagged-float-range / tagged-float-set
text-matcher = text / tagged-text-set
bytes-matcher = bytes / tagged-bytes-set
]]></sourcecode>
            <t>Because these entries carry no inherent meaning beyond their primitive type and matching criterion, a profile using them MUST define what measured attribute each entry represents, the unit or encoding of the value, and any constraints on acceptable values beyond what the matcher already expresses.</t>
          </section>
        </section>
        <section anchor="sec-comid-triple-refval">
          <name>Reference Values Triple</name>
          <t>Reference Values Triples describe the possible intended states of an Attester.
At any given point in time, an Attester is expected to match only one of these states.</t>
          <t>A Reference Values Triple provides reference values pertaining to a Target Environment.
In a Reference Value triple, the subject identifies a Target Environment, the object contains reference measurements associated with one or more measured elements of the Environment, and the predicate asserts that these represent the expected state of the Target Environment.</t>
          <t>The Reference Values Triple has the following structure:</t>
          <figure anchor="triple-rv">
            <name>Reference Values Triple Definition</name>
            <sourcecode type="cddl"><![CDATA[
reference-triple-record = [
  ref-env: environment-map
  ref-claims: [ + measurement-map ]
]
]]></sourcecode>
          </figure>
          <t>The <tt>reference-triple-record</tt> has the following parameters:</t>
          <ul spacing="normal">
            <li>
              <t><tt>ref-env</tt>: Identifies the Target Environment</t>
            </li>
            <li>
              <t><tt>ref-claims</tt>: Contains one or more reference measurements for the Target Environment</t>
            </li>
          </ul>
          <t>CoMID triples may contain multiple <tt>reference-triple-record</tt> entries.
Each <tt>reference-triple-record</tt> describes a reference state for the Target Environment identified by <tt>ref-env</tt>.
Different reference states for a Target Environment MUST be expressed using separate <tt>reference-triple-record</tt> entries.
An exception to the above requirement is when using range types to specify the <tt>ref-claims</tt> as explained further down.</t>
          <t>Since a given <tt>reference-triple-record</tt> can describe only a single Target Environment, the reference state of a device comprising multiple different Target Environments will necessarily be spread across multiple <tt>reference-triple-record</tt>s.
In other words, <tt>reference-triple-record</tt> alone cannot, in the general case, describe the reference state for a complex device.
The CoRIM author must therefore rely on other CoMID triples (e.g., conditional endorsements) or profile-specific conventions (e.g., using CoRIM or CoMID boundaries, possibly in conjunction with CoTL) to express the entire reference state of a complex device.</t>
          <t>The <tt>ref-claims</tt> of a given <tt>reference-triple-record</tt> can contain one or more entries.
Each <tt>ref-claims</tt> entry represents the reference state of a different measured element within the expected overall state of the Target Environment.
As an encoding shortcut, some measurement key-value pairs, for example when using <tt>int-range</tt>, <tt>min-svn</tt> and <tt>integrity-registers</tt>, can be defined to encode multiple states simultaneously.</t>
          <t>To process a <tt>reference-triple-record</tt>, the <tt>ref-env</tt> and <tt>ref-claims</tt> criteria are compared with Evidence entries.
First, <tt>ref-env</tt> is used as search criteria to locate matching Evidence environments.
Then, the <tt>ref-claims</tt> from this triple are used to match against the Evidence measurements for a matched environment.
If the search criteria are satisfied, the matching entry is added to the body of Attester state, except these Claims are asserted with the Reference Value Provider's authority.
By re-asserting Evidence matched with Reference Values using the RVP's authority, the Verifier avoids confusing Reference Values (reference / possible state) with Evidence (actual state).
See <xref target="I-D.ietf-rats-endorsements"/>.
Evidence Claims that are re-asserted using RVP authority are said to be "corroborated Evidence" because the actual state in Evidence was found within the corpus of the RVP's possible state.</t>
        </section>
        <section anchor="sec-comid-triple-endval">
          <name>Endorsed Values Triple</name>
          <t>Endorsed Values Triples provide additional Endorsements - i.e., claims reflecting actual state - for an existing Target Environment.
In an Endorsed Values Triple, the subject identifies a Target Environment, the object contains Endorsement Claims for the Environment, and the predicate asserts that these represent actual state associated with the subject.</t>
          <t>The Endorsed Values Triple has the following structure:</t>
          <figure anchor="triple-ev">
            <name>Endorsed Values Triple Definition</name>
            <sourcecode type="cddl"><![CDATA[
endorsed-triple-record = [
  condition: environment-map
  endorsement: [ + measurement-map ]
]
]]></sourcecode>
          </figure>
          <t>The <tt>endorsed-triple-record</tt> has the following parameters:</t>
          <ul spacing="normal">
            <li>
              <t><tt>condition</tt>: Search criterion that locates an Evidence, corroborated Evidence, or Endorsements environment.</t>
            </li>
            <li>
              <t><tt>endorsement</tt>: Additional Endorsement Claims.</t>
            </li>
          </ul>
          <t>To process an <tt>endorsed-triple-record</tt>, its <tt>condition</tt> is compared with existing Evidence, corroborated Evidence, and Endorsements.
If the search criterion is satisfied, the endorsement is added to the Attester's actual state under the Endorser's authority.</t>
        </section>
        <section anchor="sec-comid-triple-cond-endors">
          <name>Conditional Endorsement Triple</name>
          <t>Conditional Endorsement Triples declare one or more conditions that, once matched, results in augmenting the Attester's actual state with the Endorsement Claims.
The conditions are expressed via <tt>stateful-environment-record</tt>s, which match Target Environments from Evidence in certain reference state.</t>
          <t>The Conditional Endorsement Triple has the following structure:</t>
          <figure anchor="triple-ce">
            <name>Conditional Endorsement Triple Definition</name>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-triple-record = [
  conditions: [ + stateful-environment-record ]
  endorsements: [ + endorsed-triple-record ]
]

stateful-environment-record = [
  environment: environment-map,
  claims-list: [ + measurement-map ]
]
]]></sourcecode>
          </figure>
          <t>The <tt>conditional-endorsement-triple-record</tt> has the following parameters:</t>
          <ul spacing="normal">
            <li>
              <t><tt>conditions</tt>: Search criteria that locates Evidence, corroborated Evidence, or Endorsements.</t>
            </li>
            <li>
              <t><tt>endorsements</tt>: Additional Endorsements.</t>
            </li>
          </ul>
          <t>To process a <tt>conditional-endorsement-triple-record</tt> the <tt>conditions</tt> are compared with existing Evidence, corroborated Evidence, and Endorsements.
If the search criteria are satisfied, the <tt>endorsements</tt> entries are asserted with the Endorser's authority as new Endorsements.</t>
        </section>
        <section anchor="sec-comid-triple-cond-series">
          <name>Conditional Endorsement Series Triple</name>
          <t>The Conditional Endorsement Series Triple is used when an Endorser wants to match Claims of the same type (for example <tt>version</tt>) but with differing values.  If the conditions are met, new Claims are added as Endorsements.
For example, if version 1.0 of a component has a Common Vulnerability and Exposure (CVE), but version 2.0 does not, a series condition might contain <tt>version</tt> = "1.0" and an addition <tt>cve</tt> = "CVE_PLACEHOLDER". Another series condition might contain <tt>version</tt> = "2.0" and an addition <tt>cve</tt> = "CVE_NONE".
As soon as the condition value is matched the remaining conditions can be ignored.</t>
          <t>The Conditional Endorsement Series Triple has two forms of conditions,  those that are common to all series list items and those that are specific to a particular item in the series.
The common conditions are separated out of the series list for convenience.</t>
          <t>The Conditional Endorsement Series Triple has the following structure:</t>
          <figure anchor="triple-ces">
            <name>Conditional Endorsement Series Triple Definition</name>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-series-triple-record = [
  common-condition: [
    environment: environment-map
    claims-list: [ * measurement-map ]
    ? authorized-by: [ + $crypto-key-type-choice ]
  ]
  series: [ + conditional-series-record ]
]

conditional-series-record = [
  condition: [ + measurement-map]
  addition: [ + measurement-map ]
]
]]></sourcecode>
          </figure>
          <t>The <tt>conditional-endorsement-series-triple-record</tt> has the following parameters:</t>
          <ul spacing="normal">
            <li>
              <t><tt>common-condition</tt>: Matching conditions that are common to every item in the series.
Common conditions include <tt>environment-map</tt>, (optional) <tt>claims-list</tt>, and (optional) <tt>authorized-by</tt>.</t>
            </li>
            <li>
              <t><tt>series</tt>: A list of <tt>conditional-series-record</tt> items where each item's condition uses the same type of measurements, meaning same label(code point) inside measurement-values-map, but differ in value.</t>
            </li>
          </ul>
          <t>The <tt>conditional-series-record</tt> has the following elements:</t>
          <ul spacing="normal">
            <li>
              <t><tt>condition</tt>: Match conditions where the same type of measurements appear in each series item, but with different values. Each series item is paired with an <tt>addition</tt> series item.</t>
            </li>
            <li>
              <t><tt>addition</tt>: Claims to be added when its paired <tt>condition</tt> matches.
Addition Claims are added to the ACS record matching <tt>common-condition</tt>.<tt>environment</tt>.</t>
            </li>
          </ul>
          <section anchor="matching-considerations">
            <name>Matching Considerations</name>
            <t>For consistent results, every series item condition MUST use the same measurement types; differing only in terms of measurement values.
This requirement also extends to use of <tt>mkey</tt> in <tt>measurement-map</tt>.
Series entries are ordered such that the most precise match is evaluated first and least precise match is evaluated last.
The first series condition that matches terminates series matching and the endorsement values are added to the Attester's actual state.
These restrictions ensure that evaluation order does not change the meaning of the triple during the appraisal process.</t>
            <t>Note: <tt>authorized-by</tt> in <tt>common-condition</tt> takes precedence over the <tt>authorized-by</tt> in <tt>condition</tt>.</t>
          </section>
        </section>
        <section anchor="sec-comid-triple-identity">
          <name>Device Identity Triple</name>
          <t>Device Identity Triples endorse that the listed keys were securely provisioned to the named Target Environment.
A single Target Environment (as identified by <tt>environment</tt> and <tt>mkey</tt>) may contain one or more cryptographic keys.
The existence of these keys is asserted in Evidence, Reference Values, or Endorsements.</t>
          <t>The device identity keys may have been used to authenticate the Attester device or may be held in reserve for later use.</t>
          <t>Device Identity Triples instruct a Verifier to perform key validation checks, such as revocation, certification path construction and verification, or proof of possession.
If the key is certified (i.e., a certificate is issued for the key by a certification authority), the certification path is validated according to <xref section="6" sectionFormat="of" target="RFC5280"/>.
The Verifier SHOULD verify keys contained in Device Identity triples.</t>
          <t>Additional details about how a key was provisioned or is protected may be asserted using Endorsements such as <tt>endorsed-triple-record</tt>s.</t>
          <t>Depending on key formatting, as defined by <tt>$crypto-key-type-choice</tt>, the Verifier may take different steps to locate and verify the key.</t>
          <t>If a key has usage restrictions that limit its use to device identity challenges, the Verifier SHOULD enforce key use restrictions.</t>
          <t>Each successful verification of a key in <tt>key-list</tt> SHALL produce Endorsement Claims that are added to the Attester's Claim set.
Claims are asserted with the joint authority of the Endorser (CoRIM signer) and the Verifier.
The Verifier MAY report key verification results as part of an error reporting function.</t>
          <figure anchor="triple-di">
            <name>Device Identity Triple Definition</name>
            <sourcecode type="cddl"><![CDATA[
identity-triple-record = [
  environment: environment-map
  key-list: [ + $crypto-key-type-choice ]
  ? conditions: non-empty<{
    ? &(mkey: 0) => $measured-element-type-choice,
    ? &(authorized-by: 1) => [ + $crypto-key-type-choice ] 
  }>
]
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t><tt>environment</tt>: An <tt>environment-map</tt> condition used to identify the target Evidence or Reference Value.
See <xref target="sec-environments"/>.</t>
            </li>
            <li>
              <t><tt>key-list</tt>: A list of <tt>$crypto-key-type-choice</tt> keys that identifies which keys are to be verified.
See <xref target="sec-crypto-keys"/>.</t>
            </li>
            <li>
              <t><tt>mkey</tt>: An optional <tt>$measured-element-type-choice</tt> condition used to identify the element within the target Evidence or Reference Value.
See <xref target="sec-comid-mkey"/>.</t>
            </li>
            <li>
              <t><tt>authorized-by</tt>: An optional list of <tt>$crypto-key-type-choice</tt> keys that identifies the authorities that asserted the <tt>key-list</tt> in the target Evidence or Reference Values.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-comid-triple-attest-key">
          <name>Attest Key Triple</name>
          <t>Attest Key Triples endorse that the keys were securely provisioned to the named Attesting Environment.
An Attesting Environment (as identified by <tt>environment</tt> and <tt>mkey</tt>) may contain one or more cryptographic keys.
The existence of these keys is asserted in Evidence, Reference Values, or Endorsements.</t>
          <t>The attestation keys may have been used to sign Evidence or may be held in reserve for later use.</t>
          <t>Attest Key Triples instruct a Verifier to perform key validation checks, such as revocation, certification path construction and validation, or proof of possession.
If the key is certified, the certification path is validated according to <xref section="6" sectionFormat="of" target="RFC5280"/>.
The Verifier SHOULD verify keys contained in Attest Key triples.</t>
          <t>Additional details about how a key was provisioned or is protected may be asserted using Endorsements such as <tt>endorsed-triples</tt>.</t>
          <t>Depending on key formatting, as defined by <tt>$crypto-key-type-choice</tt>, the Verifier may take different steps to locate and verify the key.
If a key has usage restrictions that limits its use to Evidence signing, the Verifier SHOULD enforce key use restrictions.
For example, see Section 5.1.5.3 in <xref target="DICE.cert"/>.</t>
          <t>Each successful verification of a key in <tt>key-list</tt> SHALL produce Endorsement Claims that are added to the Attester's Claim set.
Claims are asserted with the joint authority of the Endorser (CoRIM signer) and the Verifier.
The Verifier MAY report key verification results as part of an error reporting function.</t>
          <figure anchor="triple-ak">
            <name>Attest Key Triple Definition</name>
            <sourcecode type="cddl"><![CDATA[
attest-key-triple-record = [
  environment: environment-map
  key-list: [ + $crypto-key-type-choice ]
  ? conditions: non-empty< {
    ? &(mkey: 0) => $measured-element-type-choice,
    ? &(authorized-by: 1) => [ + $crypto-key-type-choice ]
  }>
]
]]></sourcecode>
          </figure>
          <t>See <xref target="sec-comid-triple-identity"/> for additional details.</t>
        </section>
        <section anchor="sec-comid-domains">
          <name>Triples for domain definition</name>
          <t>Domain triples assert a graphical description of Attester composition in terms of its constituent Environments and their compositional relationships.</t>
          <t>The following CDDL describes domain type.</t>
          <sourcecode type="cddl"><![CDATA[
domain-type = environment-map
]]></sourcecode>
          <t>Domain structure is defined in terms of directed acyclic graphs (DAG) describing membership and trust dependency using the following types of triples.</t>
          <section anchor="sec-comid-triple-domain-membership">
            <name>Domain Membership Triple</name>
            <t>A Domain Membership Triple (DMT) links a domain identifier to its member Environments.
The triple's subject is the domain identifier while the triple's object lists all the member Environments within the domain.</t>
            <t>The Domain Membership Triple allows an Endorser (for example, an Integrator) to issue an authoritative statement about the composition of an Attester as a collection of Environments.
This allows a topological description of an Attester to be expressed by linking a parent Environment (e.g., a lead Attester) to its child Environments (e.g., one or more sub-Attesters).</t>
            <t>If the Verifier Appraisal policy requires Domain Membership, the Domain Membership Triple is used to match an Attester's reference composition with the actual composition represented in Evidence.</t>
            <t>Representing members of a DMT as domains enables the recursive construction of an entity's topology, such as a Composite Device (see <xref section="3.3" sectionFormat="of" target="RFC9334"/>), where multiple lower-level domains can be aggregated into a higher-level domain.
The domain topology MUST be acyclic.</t>
            <figure anchor="triple-dm">
              <name>Domain Membership Triple Definition</name>
              <sourcecode type="cddl"><![CDATA[
domain-membership-triple-record = [
  domain-id: domain-type
  members: [ +  domain-type ]
]
]]></sourcecode>
            </figure>
            <t>Domain membership triples are transformed into an internal representation (see <xref target="sec-trans-domain-mem"/>) then processed as described in <xref target="sec-proc-dm"/>.</t>
          </section>
          <section anchor="sec-comid-triple-trust-dependency">
            <name>Trust Dependency Triple</name>
            <t>A Trust Dependency Triple (TDT) links a domain to a set of <em>trustee</em> domains.
A trust dependency triple is used by an Endorser to assert that a trust dependency exists between various components.
A TDT specifies which component (identified by <tt>domain-id</tt>) depends on which other components (identified by <tt>trustees</tt>) for proper operation.
A series of TDTs can be used to describe the trust dependencies of a system of components as a graph.
CoRIM uses <tt>environment-map</tt> to identify components and groupings of components (i.e., domains).</t>
            <t>Trust dependency means that an environment can only be fully trusted if one or more trustee environments have been appraised and found to be trustworthy.
A candidate environment can only be trusted if the trustee environments it depends on exist, have been appraised and are found to be trustworthy.</t>
            <t>The first four phases of appraisal (see <xref target="sec-match-and-augment"/>) might not determine whether a component is trustworthy.
Subsequent Verifier stages or Relying Party processing might be needed to finalize trustworthiness.
Therefore, the trustworthiness of trustee domains MUST be appraised before the trustworthiness of the subject domain can be finalized.
Consequently, trust dependency semantics may need to be represented in Attestation Results if Relying Parties play a role in finalizing which components are trustworthy.</t>
            <t>There are a variety of use cases where trust dependency might exist.
For example, trust in an operating system (OS) might depend on trustworthy loading of the OS loader image.
Consequently, the OS loader is a trustee domain of the OS.
Alternatively, trust in a peripheral device might depend on trustworthy operation of a peripheral device's bus controller.
The bus controller is therefore a trustee domain of the peripheral device.</t>
            <t>TDTs cannot instantiate domains.
Instead, TDT processing first verifies that a domain-id has already been accepted into the ACS before adding any trust-dependency triples.
Environments that have been accepted into the ACS are automatically considered Domains.
Consequently, TDTs may describe trust-dependency semantics for any Environment that has been accepted into the ACS.</t>
            <t>The trust dependency triple subject (<tt>domain-id</tt>) identifies the member domain (see <xref target="sec-comid-triple-domain-membership"/>) that has trustees.
The triple object <tt>trustees</tt> lists the domains that are trustees of the subject domain.
The triple predicate asserts that a trust appraisal of <tt>domain-id</tt> is not complete without appraisal of the <tt>trustees</tt>.</t>
            <figure anchor="triple-td">
              <name>Trust Dependency Triple Definition</name>
              <sourcecode type="cddl"><![CDATA[
trust-dependency-triple-record = [
  domain-id: domain-type
  trustees: [ + domain-type ]
]
]]></sourcecode>
            </figure>
            <t>All of the TDT subjects (<tt>domain-id</tt>) and objects (<tt>trustees</tt>) MUST also be domain members for the TDT expression to be processed.</t>
            <t>Trust dependency graphs are acyclic, meaning a <tt>domain-id</tt> MUST NOT appear in the <tt>trustees</tt> list or within a trustee's subtree.</t>
            <t>A terminus trustee can be thought of as a "root of trust" for a trust dependency graph.
Terminus trustees SHOULD have a corresponding Endorsement triple.
Verifiers MAY use TDTs with appraisal policies to assess the veracity of domain-to-trustee linkages.</t>
            <t>Trust dependency typically exists if any of the following are true:</t>
            <ul spacing="normal">
              <li>
                <t>A trustee performs any Attesting Environment functions relating to a Target Environment (TE), such as Claims collection, Claims signing, loading or initialization of the TE, provisioning TE secrets - including cryptographic keys or other security-relevant material.</t>
              </li>
              <li>
                <t>A trustee executes security-relevant code in response to an execution thread that originates from the <tt>domain-id</tt> environment.</t>
              </li>
              <li>
                <t>A trustee is a component embedded within another component identified by <tt>domain-id</tt>.</t>
              </li>
            </ul>
            <t>Trust dependency triples are transformed into an internal representation (see <xref target="sec-trans-trust-dep"/>) then processed as described in <xref target="sec-proc-td"/>.</t>
          </section>
        </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 tag identifiers of existing CoSWIDs, and the
predicate asserts that these contain the expected (i.e., reference)
measurements for the Target Environment.</t>
          <figure anchor="triple-ccl">
            <name>CoMID-CoSWID Linking Triple Definition</name>
            <sourcecode type="cddl"><![CDATA[
;# import rfc9393 as coswid

coswid-triple-record = [
  environment-map
  [ + coswid.tag-id ]
]
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="sec-extensibility">
        <name>Extensibility</name>
        <t>The base CoRIM document definition 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 provide extensibility support to CoRIM map structures.
CDDL map extensibility enables a CoRIM profile to extend the base CoRIM CDDL 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"/>.
Non-negative integers are reserved for IANA to assign meaning globally.</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>New data type extensions 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-cotl">
      <name>CoTL</name>
      <t>A Concise Tag List (CoTL) object represents the signal for the
Verifier to activate the listed tags. Verifier policy determines whether CoTLs are required.</t>
      <t>When CoTLs are required, each tag MUST be activated by a CoTL before being processed.
All the tags listed in the CoTL MUST be activated atomically. If any tag activated by a CoTL is not available to the Verifier, the entire CoTL is rejected.</t>
      <t>The number of CoTLs 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 CoTL, tags within a CoRIM received by a Verifier
are activated immediately and treated as valid for appraisal.</t>
      <t>There may be cases when the 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 CoTL 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 CoTLs at different points in time.
An Appraisal Policy for Evidence may dictate how multiple CoTLs are to be processed within the Verifier.</t>
      <section anchor="structure-1">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-tl-tag</tt> map is as follows, and this rule and the additional grammatical requirements specified in the text of this Section MUST be followed when creating or validating a CoTL tag:</t>
        <sourcecode type="cddl"><![CDATA[
concise-tl-tag = {
  &(tag-identity: 0) => tag-identity-map
  &(tags-list: 1) => [ + tag-identity-map ],
  &(tl-validity: 2) => validity-map
}
]]></sourcecode>
        <t>The following describes each member of the <tt>concise-tl-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <t><tt>tag-identity</tt> (index 0): A <tt>tag-identity-map</tt> containing
identification information for the CoTL.
Described in <xref target="sec-comid-tag-id"/>.</t>
          </li>
          <li>
            <t><tt>tags-list</tt> (index 1): One or more <tt>tag-identity-maps</tt> identifying
the CoMID and CoSWID tags that constitute the list, 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, and 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>tl-validity</tt> (index 2): Specifies the validity period of the CoTL.
Described in <xref target="sec-common-validity"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-common-types">
      <name>Common Types</name>
      <t>The following CDDL types may be shared by CoRIM, CoMID, and CoTL.</t>
      <section anchor="sec-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" sectionFormat="of" target="RFC9562"/>.</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 (UEID).
Defined in <xref section="4.2.1" sectionFormat="of" target="RFC9711"/>.</t>
        <sourcecode type="cddl"><![CDATA[
ueid-type = bytes .size (7..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-hash-entry">
        <name>Digest</name>
        <t>A digest represents the value of a hashing operation together with the hash algorithm used.
This specification reuses the <tt>digest</tt> type defined in <xref section="4.2" sectionFormat="of" target="I-D.ietf-rats-eat-measured-component"/>.
Only the CBOR serialization is used.</t>
        <sourcecode type="cddl"><![CDATA[
;# import measured-component as eatmc

digests-type = [ + eatmc.digest ]
]]></sourcecode>
        <t>A measurement can be obtained using different hash algorithms.
A <tt>digests-type</tt> can be used to collect multiple digest values obtained by applying different hash algorithms on the same input.
Each entry in the <tt>digests-type</tt> MUST have a unique <tt>alg</tt> value.</t>
      </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 value MUST be a Collision-Resistant Name (see <xref target="sec-glossary"/>); the responsible allocator entity is responsible for ensuring this property holds within the context in which the identifier is used.</t>
        <sourcecode type="cddl"><![CDATA[
tagged-bytes = #6.560(bytes)
]]></sourcecode>
      </section>
    </section>
    <section anchor="sec-reference-verifier">
      <name>Reference Verifier</name>
      <t>This section outlines the behavior of a "CoRIM processor" within the Evidence appraisal procedure carried out by the RATS Verifier (<xref section="7.4" sectionFormat="of" target="RFC9334"/>).</t>
      <t>In the remainder of this section, the terms
Environment,
Claim,
Environment-Claim Tuple (ECT),
Authority,
Appraisal Claims Set (ACS),
and
Appraisal Policy
are used with the meanings defined in <xref target="sec-glossary"/>.</t>
      <section anchor="sec-pseudocode-notation">
        <name>Pseudocode Notation</name>
        <t>The algorithms in pseudocode are meant for readability and not for execution.
The following pseudocode notation is used throughout this document.</t>
        <section anchor="comments">
          <name>Comments</name>
          <t>A comment begins with "//" and extends to the end of the line.</t>
          <sourcecode type="pseudocode"><![CDATA[
// this is a comment
]]></sourcecode>
        </section>
        <section anchor="types">
          <name>Types</name>
          <t>Pseudocode Type names are taken directly from the CDDL <xref target="RFC8610"/>.
There is no separate type language; type annotations on function parameters, return values, and variable bindings reuse CDDL type expressions verbatim.
A reader familiar with the CDDL schemas in this document can read the algorithms without any additional type translation.</t>
          <t>A bare name refers to a CDDL rule:</t>
          <sourcecode type="pseudocode"><![CDATA[
measurement-map
ACS
StagingArea
]]></sourcecode>
          <t>The CDDL notation "[ + T ]" denotes a non-empty array of elements of type T:</t>
          <sourcecode type="pseudocode"><![CDATA[
[ + measurement-map ]
]]></sourcecode>
          <t>An extensible CDDL socket type is prefixed with "$":</t>
          <sourcecode type="pseudocode"><![CDATA[
$crypto-key-type-choice
$profile-type-choice
]]></sourcecode>
          <t>The CDDL "/" operator separates the alternatives of a union type:</t>
          <sourcecode type="pseudocode"><![CDATA[
attest-key-triple-record / identity-triple-record
]]></sourcecode>
        </section>
        <section anchor="variables">
          <name>Variables</name>
          <t>A variable is introduced and assigned a value using the ":=" operator:</t>
          <sourcecode type="pseudocode"><![CDATA[
item := rv-item::NEW()
]]></sourcecode>
          <t>A previously introduced variable or a field of a structured value is updated using "=":</t>
          <sourcecode type="pseudocode"><![CDATA[
item.addition.cmtype = reference-values
]]></sourcecode>
        </section>
        <section anchor="functions">
          <name>Functions</name>
          <t>A function is introduced by the FUNC keyword, followed by its name, a parenthesized parameter list with CDDL type annotations, and a return type:</t>
          <sourcecode type="pseudocode"><![CDATA[
FUNC name(param: type, ...) -> return-type {
    ...
}
]]></sourcecode>
          <t>A RETURN statement exits the enclosing function and yields the specified value to the caller:</t>
          <sourcecode type="pseudocode"><![CDATA[
RETURN value
]]></sourcecode>
          <t>A FAIL statement immediately aborts the enclosing top-level FUNC without yielding a value, signaling to the caller that the operation did not complete successfully:</t>
          <sourcecode type="pseudocode"><![CDATA[
FAIL
]]></sourcecode>
        </section>
        <section anchor="expressions">
          <name>Expressions</name>
          <t>The TYPEOF operator yields the CDDL type of a value at runtime.
Used with "==", it dispatches on the alternatives of a CDDL union type:</t>
          <sourcecode type="pseudocode"><![CDATA[
IF TYPEOF(T) == attest-key-triple-record:
    ...
ELIF TYPEOF(T) == identity-triple-record:
    ...
]]></sourcecode>
          <t>The "~" prefix operator unwraps a CBOR-tagged value to its untagged content, corresponding to the CDDL unwrap idiom:</t>
          <sourcecode type="pseudocode"><![CDATA[
ELIF TYPEOF(v) == tagged-svn:
    RETURN ~v
]]></sourcecode>
        </section>
        <section anchor="conditionals">
          <name>Conditionals</name>
          <t>An IF statement tests a condition and executes its body if the condition is true.
One or more ELIF clauses test additional conditions in order.
An optional ELSE clause provides a fallback:</t>
          <sourcecode type="pseudocode"><![CDATA[
IF condition:
    ...
ELIF condition:
    ...
ELSE:
    ...
]]></sourcecode>
        </section>
        <section anchor="iteration">
          <name>Iteration</name>
          <t>A FOREACH statement iterates over the elements of a collection in order:</t>
          <sourcecode type="pseudocode"><![CDATA[
FOREACH item IN collection:
    ...
]]></sourcecode>
          <t>A BREAK statement exits the innermost enclosing FOREACH immediately.</t>
        </section>
        <section anchor="primitive-operations">
          <name>Primitive Operations</name>
          <t>The pseudocode uses a "Receiver::OPERATION(args)" calling convention to invoke well-known operations on typed values.
All operation names are uppercase.</t>
          <table anchor="tbl-pseudocode-ops">
            <name>Primitive Operations</name>
            <thead>
              <tr>
                <th align="left">Operation</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>T::NEW()</tt></td>
                <td align="left">Construct a new zero-value instance of CDDL type T</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>collection::APPEND(item)</tt></td>
                <td align="left">Append item to a collection; when item is itself a list, all its elements are appended</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>acs::MATCH(condition)</tt></td>
                <td align="left">Test whether condition matches any entry in the ACS; the matching rules are relation-specific and defined in <xref target="sec-comparison-rules"/></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>acs::APPEND(addition)</tt></td>
                <td align="left">Attempt to atomically append addition to the ACS; returns TRUE on success, or FALSE (leaving the ACS unchanged) if the relation-specific pre-condition on addition or post-condition on the resulting ACS, both defined in <xref target="sec-match-and-augment"/>, is not satisfied</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>x::MEMBEROF(collection)</tt></td>
                <td align="left">Test whether x is a member of collection</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>INDEXOF(x)</tt></td>
                <td align="left">Return the position of x within its enclosing sequence</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="sec-appraisal-phases">
        <name>Appraisal Logical Phases</name>
        <t>For clarity, the appraisal procedure is divided into several logical phases.</t>
        <t><strong>Phase 1</strong>: Input Validation and Transformation.</t>
        <t>During this phase, all available Conceptual Messages are processed for validation.
This involves checking digital signatures to verify their integrity and authenticity, ensuring they are not outdated and confirming their relevance to the current appraisal.
If validation fails, the input Conceptual Message is discarded.
If validation succeeds, the Conceptual Message is transformed from its external representation into an internal one.
These internal representations are then collected in an implementation-specific "staging area", which acts as a database for subsequent appraisal processing.</t>
        <t><strong>Phase 2</strong>: Evidence Augmentation.</t>
        <t>During this phase, Evidence Claims are added to a structure describing the Attester's actual state, known as the ACS.
These Claims are added to the ACS with Attester Authority.</t>
        <t><strong>Phase 3</strong>: Reference Values Corroboration and Augmentation.</t>
        <t>During this phase, Reference Value Claims are compared with Evidence Claims from the ACS.
Reference Value Claims describe the possible states of the Attester.
If the Attester's actual state, as described in the ACS, is one of these possible states, the Attester's actual state is said to be "corroborated".
These Claims are added to the ACS with the Authority of the Reference Value Provider.</t>
        <t><strong>Phase 4</strong>: Endorsed Values Augmentation.</t>
        <t>During this phase, Endorsed Values inputs containing conditions that describe the expected state of the Attester are processed.
If the conditions are met, additional Claims about the Attester are added to the ACS.
These Claims are added with the Endorser's Authority.</t>
        <t><strong>Subsequent Phases</strong>: Before producing an Attestation Result, a Verifier may undergo subsequent phases of the appraisal procedure.</t>
        <t>For example, the Verifier may perform consistency, integrity or additional validity checks.
These checks may result in additional Claims about the Attester being added to the ACS.
These Claims are added with the Verifier's Authority.
Typically, a Verifier applies Appraisal Policy for Evidence on the ACS that describes desirable or undesirable Attester states.
If these conditions are met, the policy may add further Claims about the Attester to the ACS.
These Claims are added with the Authority of the Verifier's Owner.
Finally, the outcome of appraisal and the set of Attester Claims of interest to a Relying Party are copied from the Attester state to an output staging area.
The Claims in the output staging area and other Verifier-related metadata are then transformed into an external representation suitable for consumption by a Relying Party.
This external representation is the Attestation Result message (see <xref section="8.4" sectionFormat="of" target="RFC9334"/>).</t>
        <t>Please note that a detailed description of subsequent phases is beyond the scope of this document.
They are mentioned here to provide an overview of the appraisal procedure.
The CoRIM processor described in <xref target="sec-corim-processor"/> describes the handoff interface between Phase 4 and the subsequent phases in terms of the computed ACS.</t>
      </section>
      <section anchor="sec-corim-processor">
        <name>The CoRIM Processor</name>
        <t>This document assumes that Verifier implementations will differ.
In order to describe normative Verifier behavior, this section presents a reference Verifier and illustrates how the data is utilized within the appraisal phases detailed in <xref target="sec-appraisal-phases"/>.
If the Verifier operates on CoRIM documents, it is RECOMMENDED that it follows this algorithm.</t>
        <section anchor="high-level-view">
          <name>High-Level View</name>
          <t>The RATS Verifier takes Evidence, Reference Values, Endorsements and an Appraisal Policy for Evidence as inputs, and produces Attestation Results as output.
<xref target="fig-verifier-internal"/> illustrates how the CoRIM processor fits into the wider RATS Verifier architecture.</t>
          <figure anchor="fig-verifier-internal">
            <name>CoRIM Processing Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="896" width="560" viewBox="0 0 560 896" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,352 L 8,384" fill="none" stroke="black"/>
                  <path d="M 8,464 L 8,496" fill="none" stroke="black"/>
                  <path d="M 8,704 L 8,768" fill="none" stroke="black"/>
                  <path d="M 72,384 L 72,440" fill="none" stroke="black"/>
                  <path d="M 72,512 L 72,528" fill="none" stroke="black"/>
                  <path d="M 144,352 L 144,384" fill="none" stroke="black"/>
                  <path d="M 144,464 L 144,496" fill="none" stroke="black"/>
                  <path d="M 144,704 L 144,768" fill="none" stroke="black"/>
                  <path d="M 168,224 L 168,536" fill="none" stroke="black"/>
                  <path d="M 168,552 L 168,728" fill="none" stroke="black"/>
                  <path d="M 168,744 L 168,768" fill="none" stroke="black"/>
                  <path d="M 192,256 L 192,536" fill="none" stroke="black"/>
                  <path d="M 192,552 L 192,672" fill="none" stroke="black"/>
                  <path d="M 216,512 L 216,656" fill="none" stroke="black"/>
                  <path d="M 232,528 L 232,560" fill="none" stroke="black"/>
                  <path d="M 232,592 L 232,624" fill="none" stroke="black"/>
                  <path d="M 256,656 L 256,712" fill="none" stroke="black"/>
                  <path d="M 280,528 L 280,560" fill="none" stroke="black"/>
                  <path d="M 280,592 L 280,624" fill="none" stroke="black"/>
                  <path d="M 296,512 L 296,656" fill="none" stroke="black"/>
                  <path d="M 304,384 L 304,480" fill="none" stroke="black"/>
                  <path d="M 312,32 L 312,80" fill="none" stroke="black"/>
                  <path d="M 312,144 L 312,176" fill="none" stroke="black"/>
                  <path d="M 320,288 L 320,320" fill="none" stroke="black"/>
                  <path d="M 320,416 L 320,464" fill="none" stroke="black"/>
                  <path d="M 328,128 L 328,144" fill="none" stroke="black"/>
                  <path d="M 344,112 L 344,128" fill="none" stroke="black"/>
                  <path d="M 344,544 L 344,608" fill="none" stroke="black"/>
                  <path d="M 368,416 L 368,464" fill="none" stroke="black"/>
                  <path d="M 392,176 L 392,264" fill="none" stroke="black"/>
                  <path d="M 392,336 L 392,376" fill="none" stroke="black"/>
                  <path d="M 392,480 L 392,520" fill="none" stroke="black"/>
                  <path d="M 392,720 L 392,768" fill="none" stroke="black"/>
                  <path d="M 408,80 L 408,112" fill="none" stroke="black"/>
                  <path d="M 416,416 L 416,464" fill="none" stroke="black"/>
                  <path d="M 440,544 L 440,608" fill="none" stroke="black"/>
                  <path d="M 440,816 L 440,848" fill="none" stroke="black"/>
                  <path d="M 456,288 L 456,320" fill="none" stroke="black"/>
                  <path d="M 464,416 L 464,464" fill="none" stroke="black"/>
                  <path d="M 472,144 L 472,176" fill="none" stroke="black"/>
                  <path d="M 480,384 L 480,480" fill="none" stroke="black"/>
                  <path d="M 488,128 L 488,160" fill="none" stroke="black"/>
                  <path d="M 496,816 L 496,848" fill="none" stroke="black"/>
                  <path d="M 504,32 L 504,80" fill="none" stroke="black"/>
                  <path d="M 504,112 L 504,144" fill="none" stroke="black"/>
                  <path d="M 504,256 L 504,672" fill="none" stroke="black"/>
                  <path d="M 504,720 L 504,768" fill="none" stroke="black"/>
                  <path d="M 528,224 L 528,728" fill="none" stroke="black"/>
                  <path d="M 528,744 L 528,768" fill="none" stroke="black"/>
                  <path d="M 312,32 L 504,32" fill="none" stroke="black"/>
                  <path d="M 312,80 L 504,80" fill="none" stroke="black"/>
                  <path d="M 344,112 L 504,112" fill="none" stroke="black"/>
                  <path d="M 328,128 L 488,128" fill="none" stroke="black"/>
                  <path d="M 312,144 L 472,144" fill="none" stroke="black"/>
                  <path d="M 488,144 L 504,144" fill="none" stroke="black"/>
                  <path d="M 472,160 L 488,160" fill="none" stroke="black"/>
                  <path d="M 312,176 L 472,176" fill="none" stroke="black"/>
                  <path d="M 184,208 L 384,208" fill="none" stroke="black"/>
                  <path d="M 400,208 L 512,208" fill="none" stroke="black"/>
                  <path d="M 208,240 L 488,240" fill="none" stroke="black"/>
                  <path d="M 336,272 L 440,272" fill="none" stroke="black"/>
                  <path d="M 336,336 L 440,336" fill="none" stroke="black"/>
                  <path d="M 8,352 L 144,352" fill="none" stroke="black"/>
                  <path d="M 8,384 L 144,384" fill="none" stroke="black"/>
                  <path d="M 304,384 L 480,384" fill="none" stroke="black"/>
                  <path d="M 320,416 L 368,416" fill="none" stroke="black"/>
                  <path d="M 416,416 L 464,416" fill="none" stroke="black"/>
                  <path d="M 24,448 L 128,448" fill="none" stroke="black"/>
                  <path d="M 320,464 L 368,464" fill="none" stroke="black"/>
                  <path d="M 416,464 L 464,464" fill="none" stroke="black"/>
                  <path d="M 304,480 L 480,480" fill="none" stroke="black"/>
                  <path d="M 24,512 L 128,512" fill="none" stroke="black"/>
                  <path d="M 216,512 L 296,512" fill="none" stroke="black"/>
                  <path d="M 232,528 L 280,528" fill="none" stroke="black"/>
                  <path d="M 360,528 L 424,528" fill="none" stroke="black"/>
                  <path d="M 88,544 L 208,544" fill="none" stroke="black"/>
                  <path d="M 296,544 L 336,544" fill="none" stroke="black"/>
                  <path d="M 232,560 L 280,560" fill="none" stroke="black"/>
                  <path d="M 232,592 L 280,592" fill="none" stroke="black"/>
                  <path d="M 304,608 L 344,608" fill="none" stroke="black"/>
                  <path d="M 232,624 L 280,624" fill="none" stroke="black"/>
                  <path d="M 360,624 L 424,624" fill="none" stroke="black"/>
                  <path d="M 216,656 L 296,656" fill="none" stroke="black"/>
                  <path d="M 208,688 L 488,688" fill="none" stroke="black"/>
                  <path d="M 8,704 L 144,704" fill="none" stroke="black"/>
                  <path d="M 208,720 L 336,720" fill="none" stroke="black"/>
                  <path d="M 392,720 L 504,720" fill="none" stroke="black"/>
                  <path d="M 144,736 L 184,736" fill="none" stroke="black"/>
                  <path d="M 352,736 L 384,736" fill="none" stroke="black"/>
                  <path d="M 504,736 L 552,736" fill="none" stroke="black"/>
                  <path d="M 208,752 L 336,752" fill="none" stroke="black"/>
                  <path d="M 8,768 L 144,768" fill="none" stroke="black"/>
                  <path d="M 392,768 L 504,768" fill="none" stroke="black"/>
                  <path d="M 184,784 L 512,784" fill="none" stroke="black"/>
                  <path d="M 352,816 L 400,816" fill="none" stroke="black"/>
                  <path d="M 440,816 L 496,816" fill="none" stroke="black"/>
                  <path d="M 352,848 L 400,848" fill="none" stroke="black"/>
                  <path d="M 440,848 L 496,848" fill="none" stroke="black"/>
                  <path d="M 184,208 C 175.16936,208 168,215.16936 168,224" fill="none" stroke="black"/>
                  <path d="M 512,208 C 520.83064,208 528,215.16936 528,224" fill="none" stroke="black"/>
                  <path d="M 208,240 C 199.16936,240 192,247.16936 192,256" fill="none" stroke="black"/>
                  <path d="M 488,240 C 496.83064,240 504,247.16936 504,256" fill="none" stroke="black"/>
                  <path d="M 336,272 C 327.16936,272 320,279.16936 320,288" fill="none" stroke="black"/>
                  <path d="M 440,272 C 448.83064,272 456,279.16936 456,288" fill="none" stroke="black"/>
                  <path d="M 336,336 C 327.16936,336 320,328.83064 320,320" fill="none" stroke="black"/>
                  <path d="M 440,336 C 448.83064,336 456,328.83064 456,320" fill="none" stroke="black"/>
                  <path d="M 24,448 C 15.16936,448 8,455.16936 8,464" fill="none" stroke="black"/>
                  <path d="M 128,448 C 136.83064,448 144,455.16936 144,464" fill="none" stroke="black"/>
                  <path d="M 24,512 C 15.16936,512 8,504.83064 8,496" fill="none" stroke="black"/>
                  <path d="M 128,512 C 136.83064,512 144,504.83064 144,496" fill="none" stroke="black"/>
                  <path d="M 360,528 C 351.16936,528 344,535.16936 344,544" fill="none" stroke="black"/>
                  <path d="M 424,528 C 432.83064,528 440,535.16936 440,544" fill="none" stroke="black"/>
                  <path d="M 88,544 C 79.16936,544 72,536.83064 72,528" fill="none" stroke="black"/>
                  <path d="M 360,624 C 351.16936,624 344,616.83064 344,608" fill="none" stroke="black"/>
                  <path d="M 424,624 C 432.83064,624 440,616.83064 440,608" fill="none" stroke="black"/>
                  <path d="M 208,688 C 199.16936,688 192,680.83064 192,672" fill="none" stroke="black"/>
                  <path d="M 488,688 C 496.83064,688 504,680.83064 504,672" fill="none" stroke="black"/>
                  <path d="M 208,720 C 199.16936,720 192,727.16936 192,736" fill="none" stroke="black"/>
                  <path d="M 336,720 C 344.83064,720 352,727.16936 352,736" fill="none" stroke="black"/>
                  <path d="M 208,752 C 199.16936,752 192,744.83064 192,736" fill="none" stroke="black"/>
                  <path d="M 336,752 C 344.83064,752 352,744.83064 352,736" fill="none" stroke="black"/>
                  <path d="M 184,784 C 175.16936,784 168,776.83064 168,768" fill="none" stroke="black"/>
                  <path d="M 512,784 C 520.83064,784 528,776.83064 528,768" fill="none" stroke="black"/>
                  <path d="M 352,816 C 343.16936,816 336,823.16936 336,832" fill="none" stroke="black"/>
                  <path d="M 400,816 C 408.83064,816 416,823.16936 416,832" fill="none" stroke="black"/>
                  <path d="M 352,848 C 343.16936,848 336,840.83064 336,832" fill="none" stroke="black"/>
                  <path d="M 400,848 C 408.83064,848 416,840.83064 416,832" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="560,736 548,730.4 548,741.6" fill="black" transform="rotate(0,552,736)"/>
                  <polygon class="arrowhead" points="400,520 388,514.4 388,525.6" fill="black" transform="rotate(90,392,520)"/>
                  <polygon class="arrowhead" points="400,376 388,370.4 388,381.6" fill="black" transform="rotate(90,392,376)"/>
                  <polygon class="arrowhead" points="400,264 388,258.4 388,269.6" fill="black" transform="rotate(90,392,264)"/>
                  <polygon class="arrowhead" points="392,736 380,730.4 380,741.6" fill="black" transform="rotate(0,384,736)"/>
                  <polygon class="arrowhead" points="344,544 332,538.4 332,549.6" fill="black" transform="rotate(0,336,544)"/>
                  <polygon class="arrowhead" points="312,608 300,602.4 300,613.6" fill="black" transform="rotate(180,304,608)"/>
                  <polygon class="arrowhead" points="264,712 252,706.4 252,717.6" fill="black" transform="rotate(90,256,712)"/>
                  <polygon class="arrowhead" points="216,544 204,538.4 204,549.6" fill="black" transform="rotate(0,208,544)"/>
                  <polygon class="arrowhead" points="192,736 180,730.4 180,741.6" fill="black" transform="rotate(0,184,736)"/>
                  <polygon class="arrowhead" points="80,440 68,434.4 68,445.6" fill="black" transform="rotate(90,72,440)"/>
                  <g class="text">
                    <text x="384" y="52">Reference</text>
                    <text x="452" y="52">Values</text>
                    <text x="360" y="68">and</text>
                    <text x="428" y="68">Endorsements</text>
                    <text x="360" y="164">CoRIM</text>
                    <text x="416" y="164">file(s)</text>
                    <text x="196" y="228">RATS</text>
                    <text x="252" y="228">Verifier</text>
                    <text x="224" y="260">CoRIM</text>
                    <text x="288" y="260">Processor</text>
                    <text x="372" y="292">Validation</text>
                    <text x="424" y="292">&amp;</text>
                    <text x="364" y="308">Internal</text>
                    <text x="424" y="308">Repr.</text>
                    <text x="388" y="324">Transformation</text>
                    <text x="76" y="372">Evidence</text>
                    <text x="368" y="404">Staging</text>
                    <text x="420" y="404">Area</text>
                    <text x="344" y="436">Int</text>
                    <text x="440" y="436">Int</text>
                    <text x="344" y="452">Rep</text>
                    <text x="392" y="452">...</text>
                    <text x="440" y="452">Rep</text>
                    <text x="60" y="468">Validation</text>
                    <text x="112" y="468">&amp;</text>
                    <text x="52" y="484">Internal</text>
                    <text x="112" y="484">Repr.</text>
                    <text x="76" y="500">Transformation</text>
                    <text x="256" y="548">ECT</text>
                    <text x="376" y="564">ACS</text>
                    <text x="256" y="580">...</text>
                    <text x="384" y="580">Match</text>
                    <text x="416" y="580">&amp;</text>
                    <text x="392" y="596">Augment</text>
                    <text x="256" y="612">ECT</text>
                    <text x="256" y="644">ACS</text>
                    <text x="72" y="724">Appraisal</text>
                    <text x="60" y="740">Policy</text>
                    <text x="104" y="740">for</text>
                    <text x="244" y="740">Subsequent</text>
                    <text x="316" y="740">Phases</text>
                    <text x="448" y="740">Attestation</text>
                    <text x="68" y="756">Evidence</text>
                    <text x="432" y="756">Results</text>
                    <text x="40" y="820">Legend:</text>
                    <text x="40" y="836">ACS</text>
                    <text x="64" y="836">=</text>
                    <text x="112" y="836">Appraisal</text>
                    <text x="180" y="836">Claims</text>
                    <text x="224" y="836">Set</text>
                    <text x="376" y="836">Process</text>
                    <text x="468" y="836">Data</text>
                    <text x="40" y="852">ECT</text>
                    <text x="64" y="852">=</text>
                    <text x="148" y="852">Environment-Claims</text>
                    <text x="248" y="852">Tuple</text>
                    <text x="40" y="868">Int</text>
                    <text x="72" y="868">Rep</text>
                    <text x="96" y="868">=</text>
                    <text x="140" y="868">Internal</text>
                    <text x="236" y="868">Representation</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
                                       .-----------------------.
                                       |    Reference Values   |
                                       |    and Endorsements   |
                                       '-----------+-----------'
                                                   |
                                           .-------+-----------.
                                         .-+-----------------. |
                                       .-+-----------------. +-'
                                       |   CoRIM file(s)   +-'
                                       '---------+---------'
                                                 |
                      .--------------------------|---------------.
                     | RATS Verifier             |                |
                     |   .-----------------------+------------.   |
                     |  | CoRIM Processor        v             |  |
                     |  |                .--------------.      |  |
                     |  |               | Validation &   |     |  |
                     |  |               | Internal Repr. |     |  |
                     |  |               | Transformation |     |  |
                     |  |                '-------+------'      |  |
 .----------------.  |  |                        |             |  |
 |    Evidence    |  |  |                        v             |  |
 '-------+--------'  |  |             .---------------------.  |  |
         |           |  |             |    Staging Area     |  |  |
         |           |  |             | .-----.     .-----. |  |  |
         v           |  |             | | Int |     | Int | |  |  |
  .--------------.   |  |             | | Rep | ... | Rep | |  |  |
 | Validation &   |  |  |             | '-----'     '-----' |  |  |
 | Internal Repr. |  |  |             '----------+----------'  |  |
 | Transformation |  |  |                        |             |  |
  '------+-------'   |  |  .---------.           v             |  |
         |           |  |  | .-----. |      .---------.        |  |
          '--------------->| | ECT | +---->|           |       |  |
                     |  |  | '-----' |     |  ACS      |       |  |
                     |  |  |   ...   |     |  Match &  |       |  |
                     |  |  | .-----. |     |  Augment  |       |  |
                     |  |  | | ECT | |<----+           |       |  |
                     |  |  | '-----' |      '---------'        |  |
                     |  |  |   ACS   |                         |  |
                     |  |  '----+----'                         |  |
                     |  |       |                              |  |
                     |   '------+-----------------------------'   |
 .----------------.  |          v                                 |
 |   Appraisal    |  |   .-----------------.     .-------------.  |
 |   Policy for   +---->| Subsequent Phases +--->| Attestation +----->
 |   Evidence     |  |   '-----------------'     | Results     |  |
 '----------------'  |                           '-------------'  |
                      '------------------------------------------'

  Legend:                                  .-------.   .------.
    ACS = Appraisal Claims Set            | Process |  | Data |
    ECT = Environment-Claims Tuple         '-------'   '------'
    Int Rep = Internal Representation
]]></artwork>
            </artset>
          </figure>
          <t>The CoRIM processor accepts Reference Values and Endorsements in the form of CoRIM documents, as well as Evidence that has been converted into a CoRIM-compatible format using transforms such as those described in <xref target="I-D.ietf-rats-evidence-trans"/>.
Before the appraisal can begin, all Conceptual Messages must be broken down and reshaped into a common internal representation.
The internal representations of Reference Values and Endorsements are stored in a staging area prior to appraisal initiation.
In contrast, the internal representation of Evidence is used to initialize the ACS.
A Verifier can have multiple simultaneous sessions with different Attesters.
Each Attester has a different ACS.
The Verifier ensures that Evidence inputs are associated with the correct ACS.
All the internal representations are based on the Environment-Claim Tuple (ECT).
The ECT is the core data structure used to represent both Claims and matching conditions during appraisal by the CoRIM processor.
The CoRIM processor algorithm loads items from the staging area one by one and applies the required condition-matching rules against the ECTs in the ACS.
If the match is successful, the ACS is "augmented" with Claims from the matched item.
Once all the items in the staging area have been processed, the state of the Attester, as understood by the CoRIM processor, is reflected in the ACS.
The computed ACS can then be handed over to subsequent appraisal phases, such as Appraisal Policy evaluation and Attestation Results computation, repackaging and signing.</t>
        </section>
        <section anchor="data-structures">
          <name>Data Structures</name>
          <t>This section describes the data structures used by the CoRIM processor.</t>
          <section anchor="sec-ect">
            <name>ECT</name>
            <t>The Environment-Claim Tuple is a core internal construct of the CoRIM Verifier.
It is used to describe a feature (or "Claim") of the appraised environment alongside relevant metadata.
All ECTs, except those containing Evidence Claims, are typically obtained from CoMID triples.</t>
            <t>Claims in ECTs have both a name and a value.
The value represents the state associated with the Claim.
This specification does not assign any special meaning to Claim names; it only specifies the rules for determining whether two Claim names are the same.</t>
            <t>An ECT (<xref target="fig-ect"/>) can be one of the following specializations:</t>
            <ul spacing="normal">
              <li>
                <t><tt>E-ECT</tt> (Element ECT): used to represent Evidence, Reference Value and Endorsement Claims, as detailed in <xref target="sec-element-ect"/>;</t>
              </li>
              <li>
                <t><tt>M-ECT</tt> (Domain Membership ECT): used to represent domain membership Claims, as detailed in <xref target="sec-domain-ect"/>;</t>
              </li>
              <li>
                <t><tt>T-ECT</tt> (Trust Dependency ECT): used to represent trust dependency Claims, as detailed in <xref target="sec-domain-ect"/>;</t>
              </li>
              <li>
                <t><tt>K-ECT</tt> (Key ECT): used to represent Identity and Attestation keys, as detailed in <xref target="sec-key-ect"/>.</t>
              </li>
            </ul>
            <figure anchor="fig-ect">
              <name>ECT definition</name>
              <sourcecode type="cddl"><![CDATA[
ECT = E-ECT /
      M-ECT /
      T-ECT /
      K-ECT
]]></sourcecode>
            </figure>
            <t>While the internal representation of each specialization varies, all ECT specializations share the attributes captured in the <tt>ECT-common</tt> group (<xref target="fig-ect-common"/>).</t>
            <figure anchor="fig-ect-common">
              <name>ECT common attributes</name>
              <sourcecode type="cddl"><![CDATA[
ECT-common = (
  ? environment: environment-map
  ? authority: [ + $crypto-key-type-choice ]
  ? profile: $profile-type-choice
)
]]></sourcecode>
            </figure>
            <ul spacing="normal">
              <li>
                <t><tt>environment</tt>: Identifies the Environment that is the subject of the stated Claims.
In an Element ECT, it is the target environment to which the elements belong.
In a Domain ECT, it is the parent environment to which the child domains are related.
In a Key ECT, it is the environment to which the keys belong.
In all cases, Environments are identified using instance, class, or group identifiers.</t>
              </li>
              <li>
                <t><tt>authority</tt>: Identifies the entity that issued the tuple.
The authority of a given ECT is typically established through a digital signature on the Claim.
For instance, a signature of the authoritative supply chain entity over the CoRIM containing the triple from which the ECT was obtained, or the Attesting Environment that signed the Evidence from which the ECT is derived.
It is represented as the key material by which the authority (and corresponding provenance) of the tuple can be determined.
A typical example is the authority's PKIX certificate.
This attribute is mandatory in an addition ECT, and therefore in every ECT held in the ACS.
<tt>ECT-common</tt> (<xref target="fig-ect-common"/>) itself defines <tt>authority</tt> as optional because it is also the basis for condition ECTs, and not every relation uses <tt>authority</tt> as a matching criterion.</t>
              </li>
              <li>
                <t><tt>profile</tt>: The profile that defines the domain of interpretation of this tuple.
This is the <tt>profile</tt> attribute of the CoRIM that contained the original triple from which this ECT was obtained.
This is an optional attribute in an ECT.
If no profile is used, the attribute is omitted, and the only comparison rules that apply are those specified in <xref target="sec-comparison-rules"/>.</t>
              </li>
            </ul>
            <section anchor="sec-element-ect">
              <name>Element ECT</name>
              <t>An Element ECT (<tt>E-ECT</tt>) is used to represent Evidence, Reference Value and Endorsement Claims.</t>
              <figure anchor="fig-e-ect">
                <name>Element ECT</name>
                <sourcecode type="cddl"><![CDATA[
E-ECT = {
  ECT-common
  ? element-list: [ + element-map ]
  ? cmtype: cm-type
}

element-map = {
  ? element-id: $measured-element-type-choice
  element-claims: measurement-values-map
}

cm-type = &(
  reference-values: 0
  endorsements: 1
  evidence: 2
)
]]></sourcecode>
              </figure>
              <t>The following describes the specialized members of the <tt>E-ECT</tt>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>element-list</tt>: Identifies the set of elements contained within a Target Environment and their trustworthiness Claims, each described by an <tt>element-map</tt>.
An <tt>element-map</tt> is very similar to a <tt>measurement-map</tt>, with the <tt>element-id</tt> and <tt>element-claims</tt> corresponding to the <tt>mkey</tt> and <tt>mval</tt>, respectively.
The pseudocode in <xref target="algo-mm-to-em"/> describes the transformation from <tt>measurement-map</tt>(s) to <tt>element-map</tt>(s).</t>
                </li>
                <li>
                  <t><tt>cmtype</tt>: Identifies the type of Conceptual Message that originated the tuple (Reference Values, Endorsements or Evidence).</t>
                </li>
              </ul>
              <figure anchor="algo-mm-to-em">
                <name>Transform Measurement Map(s) into Element Map(s)</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC mm_to_em(mm: measurement-map) -> element-map {
    em := element-map::NEW()

    IF mm.mkey:
        em.element-id = mm.mkey

    em.element-claims = mm.mval

    RETURN em
}

FUNC mms_to_ems(mms: [ + measurement-map ]) -> [ + element-map ] {
    ems := [ + element-map ]::NEW()

    FOREACH mm IN mms:
        em := mm_to_em(mm)
        ems::APPEND(em)

    RETURN ems
}
]]></sourcecode>
              </figure>
              <t><strong>Claim Names.</strong>
The combination of <tt>environment</tt>, optional <tt>element-id</tt>, and map key within each <tt>element-claims</tt> encodes the name of an Element Claim.
The value of the corresponding map element represents an atom of actual state.
This specification does not assign special meanings to any Claim name, it only specifies rules for determining whether two Claim names are the same.</t>
              <t><strong>Merge Rules.</strong></t>
              <t>If two Element ECTs have the same <tt>environment</tt>, <tt>cmtype</tt>, <tt>authority</tt> and <tt>profile</tt> then their <tt>element-list</tt>s are merged.
Any duplicates MUST be pruned.</t>
              <t>Two <tt>element-map</tt>s containing duplicate codepoints and with non-equivalent measurement values MUST NOT be merged.
These are effectively two different acceptable states that need to be processed separately.</t>
            </section>
            <section anchor="sec-domain-ect">
              <name>Domain Membership ECT</name>
              <t>A Domain Membership ECT (<tt>M-ECT</tt>) is used to represent domain membership Claims between environments.
It describes the direct relationship between a specific node in the membership (i.e., the parent <tt>environment</tt>) and the <tt>members</tt> nodes that comprise the domain.</t>
              <figure anchor="fig-d-ect">
                <name>Domain Membership ECT</name>
                <sourcecode type="cddl"><![CDATA[
M-ECT = {
  ECT-common
  members: [ + environment-map ]
}
]]></sourcecode>
              </figure>
              <t>The following describes the specialized members of the <tt>M-ECT</tt>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>members</tt>: Identifies the set of members of the domain rooted in the parent <tt>environment</tt>.</t>
                </li>
              </ul>
              <t>A Domain Claim specifies the type of relationship that the parent domain is expected to have with its child environments.
In a Domain ECT, the <tt>environment</tt> attribute encodes the name of the Claim.
The value of the Claim is encoded in the <tt>members</tt> attribute.</t>
              <t><strong>Merge Rules.</strong></t>
              <t>If two Domain ECTs have the same <tt>environment</tt>, <tt>authority</tt> and <tt>profile</tt> then their <tt>members</tt> are merged.
Any duplicates MUST be pruned.</t>
            </section>
            <section anchor="sec-trust-ect">
              <name>Trust Dependency ECT</name>
              <t>A Trust Dependency ECT (<tt>T-ECT</tt>) is used to represent trust dependency Claims between environments.
It describes the direct relationship between a specific node in the trust domain (i.e., the parent <tt>environment</tt>) and the <tt>trustees</tt> nodes that comprise the trust chain.</t>
              <figure anchor="fig-t-ect">
                <name>Trust Dependency ECT</name>
                <sourcecode type="cddl"><![CDATA[
T-ECT = {
  ECT-common
  trustees: [ + environment-map ]
}
]]></sourcecode>
              </figure>
              <t>The following describes the specialized members of the <tt>T-ECT</tt>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>trustees</tt>: Identifies the set of environments that becomes a part of a trust chain to the parent <tt>environment</tt>.</t>
                </li>
              </ul>
              <t>A Trust Claim specifies the type of relationship that the parent domain is expected to have with its trustee environments.
In a Trust ECT, the <tt>environment</tt> attribute encodes the name of the Claim.
The value of the Claim is encoded in the <tt>trustees</tt> attribute.</t>
              <t><strong>Merge Rules.</strong></t>
              <t>If two Trust ECTs have the same <tt>environment</tt>, <tt>authority</tt> and <tt>profile</tt> then their <tt>trustees</tt> are merged.
Any duplicates MUST be pruned.</t>
            </section>
            <section anchor="sec-key-ect">
              <name>Key ECT</name>
              <t>A Key ECT (<tt>K-ECT</tt>) is used to represent Identity and Attestation keys.</t>
              <figure anchor="fig-k-ect">
                <name>Key ECT</name>
                <sourcecode type="cddl"><![CDATA[
K-ECT = {
  ECT-common
  ? key-id: $measured-element-type-choice
  ? key-list: [ + $crypto-key-type-choice ]
  ? key-type: key-type
}

key-type = &(
  attest-key: 0
  identity-key: 1
)
]]></sourcecode>
              </figure>
              <t>The following describes the specialized members of the <tt>K-ECT</tt>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>key-id</tt>: Identifies a specific namespace within <tt>environment</tt> that the keys in <tt>key-list</tt> are associated with.</t>
                </li>
                <li>
                  <t><tt>key-list</tt>: Identifies the set of keys associated with <tt>environment</tt> and (optionally) <tt>key-id</tt>.</t>
                </li>
                <li>
                  <t><tt>key-type</tt>: Either <tt>attest-key</tt> or <tt>identity-key</tt>, depending on the triple that originated this <tt>K-ECT</tt> instance.</t>
                </li>
              </ul>
              <t><strong>Claim Names.</strong></t>
              <t>A Key Claim specifies one or more keys associated with the <tt>environment</tt>, as well as the semantics of these keys.</t>
              <t>In a Key ECT, the <tt>environment</tt>, <tt>key-type</tt> and optional <tt>key-id</tt> attributes encode the name of the Claim.
The value of the Claim is encoded in the <tt>key-list</tt> attribute.</t>
              <t><strong>Merge Rules.</strong></t>
              <t>No merge rules are specified for a Key ECT.</t>
            </section>
          </section>
          <section anchor="sec-ir">
            <name>Internal Representation</name>
            <t>This section describes how the relevant RATS Conceptual Messages are represented within the CoRIM processor.
This internal representation is based on the concept of "relations", which in turn are based on ECTs.
Typically, a relation is structured as a "condition" ECT that specifies the matching criteria used to compare entries in the ACS, along with an "addition" ECT that is appended to the ACS if the specified conditions are met.
While this is the common structure, some relations may differ slightly from the condition/addition pattern.
This is because they either do not require a condition (e.g., Evidence) or they require more sophisticated matching criteria that cannot be expressed solely via a condition (e.g., Conditional Endorsement Series).</t>
            <section anchor="sec-ir-evidence">
              <name>Evidence</name>
              <t>The internal representation of Evidence uses the <tt>ae</tt> relation.</t>
              <figure anchor="fig-ae">
                <name>Attestation Evidence Relation</name>
                <sourcecode type="cddl"><![CDATA[
ae = [ + ae-item ]

ae-item = {
  addition: Evidence-addition-ECT
}
]]></sourcecode>
              </figure>
              <t>The <tt>addition</tt> is a list of ECTs with Evidence Claims (<tt>ae-item</tt>s) to be appraised.
Note that there is no <tt>condition</tt> in the <tt>ae</tt> relation, meaning that the addition of Evidence Claims is unconditional once Evidence has been verified.</t>
              <t><xref target="fig-ae-ect"/> shows the profiled ECT for an <tt>ae</tt> item.</t>
              <figure anchor="fig-ae-ect">
                <name>Profiled ECT for Evidence</name>
                <sourcecode type="cddl"><![CDATA[
Evidence-addition-ECT = ({
  environment: environment-map
  element-list: [ + element-map ]
  authority: [ + $crypto-key-type-choice ]
  cmtype: 2
  ? profile: $profile-type-choice
}) .within E-ECT
]]></sourcecode>
              </figure>
              <t>All <tt>E-ECT</tt> attributes are mandatory, except <tt>profile</tt>.</t>
            </section>
            <section anchor="sec-ir-refval">
              <name>Reference Values</name>
              <t>The internal representation of Reference Values uses the <tt>rv</tt> relation where each <tt>rv-item</tt> corresponds to a <tt>reference-triple-record</tt>.</t>
              <figure anchor="fig-rv">
                <name>Reference Values Relation</name>
                <sourcecode type="cddl"><![CDATA[
rv = [ + rv-item ]

rv-item = {
  condition: Reference-Value-condition-ECT
  addition: Reference-Value-addition-ECT
}
]]></sourcecode>
              </figure>
              <t>The <tt>rv</tt> relation is a list of condition-addition pairs, each of which is evaluated together.
If the <tt>condition</tt> containing the "reference" ECTs matches the Evidence ECTs, the Evidence ECTs are re-asserted with the RVP authority carried in the <tt>addition</tt> ECT and the <tt>cmtype</tt> set to <tt>reference-values</tt>.
The re-asserted ECTs are added to the ACS.
Refer to <xref target="sec-proc-rv"/> for how the <tt>rv</tt> entries are processed.</t>
              <t><xref target="fig-rv-ect-cond"/> shows the profiled Element ECT for a Reference Values condition.</t>
              <figure anchor="fig-rv-ect-cond">
                <name>Profiled ECT for Reference Values (condition)</name>
                <sourcecode type="cddl"><![CDATA[
Reference-Value-condition-ECT = ({
  environment: environment-map
  element-list: [ + element-map ]
  ? authority: [ + $crypto-key-type-choice ]
}) .within E-ECT
]]></sourcecode>
              </figure>
              <t><xref target="fig-rv-ect-add"/> shows the profiled Element ECT for a Reference Values addition.</t>
              <figure anchor="fig-rv-ect-add">
                <name>Profiled ECT for Reference Values (addition)</name>
                <sourcecode type="cddl"><![CDATA[
Reference-Value-addition-ECT = ({
  environment: environment-map
  ? element-list: [ + element-map ]
  authority: [ + $crypto-key-type-choice ]
  cmtype: 0
  ? profile: $profile-type-choice
}) .within E-ECT
]]></sourcecode>
              </figure>
              <t>As this is used to corroborate an Evidence ECT, its layout is identical to that of an <tt>Evidence-addition-ECT</tt>.
The only differences are the values of the <tt>element-list</tt>, <tt>authority</tt> and <tt>cmtype</tt> attributes.
Here, the <tt>authority</tt> value is that of the RVP rather than the Attester, and the <tt>cmtype</tt> value is <tt>reference-values</tt> rather than <tt>evidence</tt>.
Furthermore, the <tt>element-list</tt> is created if a match is found during processing, rather than when the triple is transformed into the internal representation.
Therefore, it may be absent.</t>
            </section>
            <section anchor="sec-ir-endval">
              <name>Endorsed Values</name>
              <t>The internal representation of Endorsed Values uses the <tt>ev</tt> and <tt>evs</tt> relations.
These are lists of ECTs that describe matching conditions and the additions that apply when these conditions are met.</t>
              <t>The <tt>ev</tt> relation (<xref target="fig-ev"/>) applies to Endorsed Values (EV) and Conditional Endorsement (CE) triples.</t>
              <figure anchor="fig-ev">
                <name>Endorsed Values Relation</name>
                <sourcecode type="cddl"><![CDATA[
ev = [ + ev-item ]

ev-item = {
  condition: [ + Endorsement-condition-ECT ]
  addition: [ + Endorsement-addition-ECT ]
}
]]></sourcecode>
              </figure>
              <t>The <tt>ev</tt> relation compares the condition ECTs with those in the ACS.
If all the ECTs are found in the ACS, the addition ECTs are added to it.
Note that when the <tt>ev</tt> relation is for an EV triple, the optional <tt>element-list</tt> inside the condition is not used; however, it is used for CE triples.</t>
              <t>The <tt>evs</tt> relation (<xref target="fig-evs"/>) applies to Conditional Endorsement Series (CES) Triples.</t>
              <figure anchor="fig-evs">
                <name>Endorsed Values Series Relation</name>
                <sourcecode type="cddl"><![CDATA[
evs = [ + evs-item ]

evs-item = {
  series: [ + series-item ]
}

series-item = [
  condition: [ + Endorsement-condition-ECT ]
  addition: [ + Endorsement-addition-ECT ]
]
]]></sourcecode>
              </figure>
              <t>The <tt>evs</tt> relation contains a list of series items.
Each series item contains a list of condition ECTs and a list of addition ECTs.
The condition ECTs are compared with the ACS.
If the condition criteria are satisfied, the addition ECTs are added to the ACS and the series evaluation ends.
If the condition criteria are not satisfied, evaluation proceeds to the next series item.</t>
              <t><xref target="fig-ev-cond"/> shows the profiled Element ECT for an Endorsed Value condition.</t>
              <figure anchor="fig-ev-cond">
                <name>Profiled condition ECT for ev and evs relations</name>
                <sourcecode type="cddl"><![CDATA[
Endorsement-condition-ECT = ({
  environment: environment-map
  ? element-list: [ + element-map ]
  ? authority: [ + $crypto-key-type-choice ]
}) .within E-ECT
]]></sourcecode>
              </figure>
              <t><xref target="fig-ev-add"/> shows the profiled Element ECT for an Endorsed Value addition.</t>
              <figure anchor="fig-ev-add">
                <name>Profiled addition ECT for ev and evs relations</name>
                <sourcecode type="cddl"><![CDATA[
Endorsement-addition-ECT = ({
  environment: environment-map
  element-list: [ + element-map ]
  authority: [ + $crypto-key-type-choice ]
  cmtype: 1
  ? profile: $profile-type-choice
}) .within E-ECT
]]></sourcecode>
              </figure>
            </section>
            <section anchor="sec-ir-keys">
              <name>Keys</name>
              <t>The internal representation of Attest Key and Device Identity triples uses the <tt>keys</tt> relation (<xref target="fig-k"/>), whereby each <tt>key-item</tt> corresponds to either an <tt>attest-key-triple-record</tt> or an <tt>identity-triple-record</tt>.</t>
              <figure anchor="fig-k">
                <name>Keys Relation</name>
                <sourcecode type="cddl"><![CDATA[
keys = [ + key-item ]

key-item = {
  ? condition: Key-condition-ECT
  addition: Key-addition-ECT
}
]]></sourcecode>
              </figure>
              <t>If <tt>key-item</tt> is used to transform Evidence, <tt>key-item.condition</tt> is omitted since Evidence addition is unconditional.
Nevertheless, <tt>key-item.addition</tt> is merely staged for addition pending successful key verification checks.</t>
            </section>
            <section anchor="sec-ir-domain-mem">
              <name>Domain Memberships</name>
              <t>The internal representation of Domain Membership uses the <tt>dm</tt> relation (<xref target="fig-dm"/>), whereby each <tt>domain-item</tt> corresponds to a <tt>domain-membership-triple-record</tt>.</t>
              <figure anchor="fig-dm">
                <name>Domain Membership Relation</name>
                <sourcecode type="cddl"><![CDATA[
dm = [ + domain-item ]
]]></sourcecode>
              </figure>
              <figure anchor="fig-dm-item">
                <name>Domain Item</name>
                <sourcecode type="cddl"><![CDATA[
domain-item = {
  condition: Domain-condition-ECT
  addition: Domain-addition-ECT
}
]]></sourcecode>
              </figure>
              <t><xref target="fig-domain-ect-cond"/> shows the profiled Domain ECT for Domain Membership conditions.</t>
              <figure anchor="fig-domain-ect-cond">
                <name>Profiled ECT for Domain Membership (condition)</name>
                <sourcecode type="cddl"><![CDATA[
Domain-condition-ECT = ({
  members: [ + environment-map ]
  authority: [ + $crypto-key-type-choice ]
  ? profile: $profile-type-choice
}) .within M-ECT
]]></sourcecode>
              </figure>
              <t>Only the <tt>members</tt> are used for matching, not the <tt>environment</tt>.
Therefore, the <tt>environment</tt> attribute is excluded from the ECT condition.</t>
              <t><xref target="fig-domain-ect-add"/> shows the profiled Domain ECT for Domain Membership additions.</t>
              <figure anchor="fig-domain-ect-add">
                <name>Profiled ECT for Domain Membership (addition)</name>
                <sourcecode type="cddl"><![CDATA[
Domain-addition-ECT = ({
  environment: environment-map
  authority: [ + $crypto-key-type-choice ]
  ? profile: $profile-type-choice
  members: [ + environment-map ]
}) .within M-ECT
]]></sourcecode>
              </figure>
            </section>
            <section anchor="sec-ir-trust-dep">
              <name>Trust Dependencies</name>
              <t>The internal representation of Trust Dependency uses the <tt>td</tt> relation (<xref target="fig-td"/>), whereby each <tt>td-item</tt> corresponds to a <tt>trust-dependency-triple-record</tt>.</t>
              <figure anchor="fig-td">
                <name>Trust Dependency Relation</name>
                <sourcecode type="cddl"><![CDATA[
td = [ + td-item ]
]]></sourcecode>
              </figure>
              <figure anchor="fig-td-item">
                <name>Trust Dependency Item</name>
                <sourcecode type="cddl"><![CDATA[
td-item = {
  condition: Trust-Dependency-condition-ECT
  addition: Trust-Dependency-addition-ECT
}
]]></sourcecode>
              </figure>
              <t><xref target="fig-td-ect-cond"/> shows the profiled <tt>T-ECT</tt> for Trust Dependency conditions.</t>
              <figure anchor="fig-td-ect-cond">
                <name>Profiled ECT for Trust Dependency (condition)</name>
                <sourcecode type="cddl"><![CDATA[
Trust-Dependency-condition-ECT = ({
  environment: environment-map
  authority: [ + $crypto-key-type-choice ]
  ? profile: $profile-type-choice
  trustees: [ + environment-map ]
}) .within T-ECT
]]></sourcecode>
              </figure>
              <t>Both the <tt>trustees</tt> and <tt>environment</tt> are used for matching.</t>
              <t><xref target="fig-td-ect-add"/> shows the profiled <tt>T-ECT</tt> for Trust Dependency additions.</t>
              <figure anchor="fig-td-ect-add">
                <name>Profiled ECT for Trust Dependency (addition)</name>
                <sourcecode type="cddl"><![CDATA[
Trust-Dependency-addition-ECT = ({
  environment: environment-map
  authority: [ + $crypto-key-type-choice ]
  ? profile: $profile-type-choice
  trustees: [ + environment-map ]
}) .within T-ECT
]]></sourcecode>
              </figure>
              <t>Before the <tt>td</tt> relation is added to the Staging Area, the trust dependency graph it describes MUST be checked to ensure that it is a directed acyclic graph.
If a cycle is detected, the <tt>td</tt> relation MUST NOT be added to the Staging Area, and this condition SHOULD be logged.
This is a prerequisite for the <tt>match_and_augment</tt> algorithm described in <xref target="algo-match-and-augment"/>.
Please note that a subsequent Appraisal Policy for Evidence may decide not to produce Attestation Results in this case.</t>
              <t>A trust dependency relation is added to the ACS if the <tt>environment</tt> and all <tt>trustees</tt> exist in the membership graph expressed by the <tt>dm</tt> relation (<xref target="fig-dm"/>) in the ACS.</t>
            </section>
          </section>
          <section anchor="acs">
            <name>ACS</name>
            <t>The ACS (<xref target="fig-acs"/>) is a list of ECTs that represent the Attester's actual state as determined by various authoritative sources (Reference Value Providers and Endorsers) collected by the Verifier.</t>
            <figure anchor="fig-acs">
              <name>ACS</name>
              <sourcecode type="cddl"><![CDATA[
ACS = [ + ECT ]
]]></sourcecode>
            </figure>
            <t>The <tt>authority</tt> attribute in each ECT represents one such source, while the Claims in the ECT are statements made by that source about the Attester.</t>
            <t>The ACS is initialized with Evidence Claims and is then populated with Reference Values and Endorsement Claims via the "match and augment" algorithm (see <xref target="sec-match-and-augment"/>) implemented by the CoRIM processor.</t>
            <t>Once the staging area has been drained by the CoRIM processor, processing stops and the computed ACS is handed over to subsequent phases.
In this way, the ACS represents the CoRIM processor's output interface.</t>
            <t>The order of the ECTs in the ACS is not significant.
Logically, as the ACS represents the conjunction of all claims, adding an ECT entry to the existing ACS at the end has the same effect as inserting it anywhere else.</t>
          </section>
          <section anchor="staging-area">
            <name>Staging Area</name>
            <t>The staging area (<xref target="fig-sa"/>) is a list of the relations corresponding to the transformed triples.</t>
            <figure anchor="fig-sa">
              <name>Staging Area</name>
              <sourcecode type="cddl"><![CDATA[
StagingArea = [
  ? rv,
  ? ev,
  ? evs,
  ? keys,
  ? dm,
  ? dd,
]
]]></sourcecode>
            </figure>
            <t>All relations are optional.
Whether a given relation is present in the staging area depends on whether a triple exists and has been successfully transformed.</t>
          </section>
        </section>
        <section anchor="sec-phase-1">
          <name>Input Validation and Transformation (Phase 1)</name>
          <t>This section provides a detailed description of Phase 1, which was outlined at a high level in <xref target="sec-appraisal-phases"/>, explaining how the relevant Conceptual Messages are ingested by the CoRIM processor.</t>
          <t>During the initialization phase, various Conceptual Message inputs are collected: CoMID tags (see <xref target="sec-comid"/>); CoSWID tags (see <xref target="RFC9393"/>); CoTL tags (see <xref target="sec-cotl"/>); cryptographic validation key material (including raw public keys, root certificates and intermediate CA certificate chains); and Concise Trust Anchor Stores (CoTS) (see <xref target="I-D.ietf-rats-concise-ta-stores"/>) are collected.
These objects will be utilized at various stages in the subsequent Evidence Appraisal phases that follow.
The primary goal of this phase is to ensure that all necessary information is available for subsequent processing.</t>
          <t>Once initialization is complete, no further inputs are accepted until the appraisal processing is finished.</t>
          <section anchor="corim-selection">
            <name>CoRIM Selection</name>
            <t>All available CoRIM tags are collected.</t>
            <t>CoRIM tags MUST be discarded if they have expired, or if they are not associated with an authenticated and authorized source, or if they have been revoked by an authorized source.
Any CoRIM secured by a cryptographic mechanism that fails validation MUST be discarded.</t>
            <t>If the Verifier fetches a resource identified by a <tt>corim-locator-map</tt> (<xref target="sec-corim-locator-map"/>) that includes a <tt>thumbprint</tt>, it MUST check the fetched resource against <tt>thumbprint</tt> following the rules in <xref target="sec-cmp-digests"/>, with the digests computed over the fetched resource in place of the ACS-ECT digests.
If that check fails, the Verifier MUST NOT use the fetched resource.</t>
            <t>Other selection criteria MAY be applied.
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>Further selection criteria may be applied to the CoRIM contents at later stages.</t>
          </section>
          <section anchor="corim-trust-anchors">
            <name>CoRIM Trust Anchors</name>
            <t>If CoRIM tags are signed, the signatures MUST be verified using the appropriate trust anchors available to the Verifier.
The Verifier is expected to have a trust anchor store.
The way in which these trust anchors are provisioned in the Verifier is beyond the scope of this specification.
If the CoRIM is signed, it should include at least one certificate (e.g., as part of the <tt>x5chain</tt> in the COSE header) that corresponds to the key pair used for signing.
This certificate MUST have a valid certification path to one of the Verifier's trust anchors.</t>
            <t>If the CoRIM is signed by multiple authorities, at least the signature from the CoRIM creator MUST be verified before the CoRIM can be accepted for further processing by the Verifier.
A Verifier Appraisal Policy for Evidence may require more signatures to be verified before accepting the CoRIM.
For each of these signers, it is expected that the corresponding trust anchors will be provisioned in the Verifier.
The way in which these trust anchors are provisioned in the Verifier is beyond the scope of this specification.</t>
          </section>
          <section anchor="tags-extraction-and-validation">
            <name>Tags Extraction and Validation</name>
            <t>The Verifier extracts tags from the selected CoRIMs, including CoMID, CoSWID, CoTL, and CoTS.</t>
            <t>The Verifier MUST discard any tags that are not syntactically or semantically valid.
Cross-referenced triples MUST be successfully resolved.
An example of a cross-referenced triple is a CoMID-CoSWID linking triple described in <xref target="sec-comid-triple-coswid"/>.</t>
          </section>
          <section anchor="cotl-extraction">
            <name>CoTL Extraction</name>
            <t>(This section is not applicable if the Verifier appraisal policy does not require CoTLs.)</t>
            <t>CoTLs that are outside their validity period MUST be discarded.</t>
            <t>The Verifier processes all CoTLs that are valid at the time of Evidence appraisal and activates all referenced tags.</t>
            <t>Depending on any locally configured authorization policies, the Verifier MAY decide to discard some of the available and valid CoTLs.
Such policies model the trust relationships between the Verifier Owner and the relevant suppliers, and are out of the scope of the present document.
For example, a composite device (see <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 a case, the Verifier Owner may instruct the Verifier to discard any tags activated by a supplier's CoTL that has not also been activated by the trusted integrator.</t>
            <t>Once the Verifier has processed all CoTLs, it MUST discard any tags that have not been activated by a CoTL.</t>
          </section>
          <section anchor="sec-ev-coll">
            <name>Evidence Collection</name>
            <t>The Verifier communicates with Attesters to gather Evidence.
Discovery of Evidence sources is untrusted.
Verifiers may rely on conveyance protocol-specific context to identify an Evidence source, which acts as the Evidence input oracle for appraisal.</t>
            <t>The collected Evidence is then transformed into an internal representation (see <xref target="sec-ir-evidence"/>), making it suitable for appraisal processing.</t>
            <t>The exact protocol used to collect Evidence is out of scope of this specification.</t>
          </section>
          <section anchor="sec-crypto-validate-evidence">
            <name>Cryptographic Validation of Evidence</name>
            <t>If Evidence is cryptographically signed, it is validated before being transformed into an internal representation.</t>
            <t>If Evidence is not cryptographically signed, the conveyance protocol used to collect it MUST provide the required security.
In such cases, the cryptographic validation of Evidence depends on the security offered by the conveyance protocol.</t>
            <t>How cryptographic signature validation works depends on the specific Evidence collection method used.
For example, in DICE, a proof of liveness is carried out on the final key in the certificate chain (i.e., the "alias" certificate).
If this is successful, a suitable certification path is looked up in the Verifier trust anchor store based on the linking information obtained from the DeviceID certificate.
See Section 9.2.1 of <xref target="DICE.Layer"/>.
If a trusted root certificate is found, X.509 certificate validation is performed.</t>
            <t>As a second example, the verification public key used to verify <xref target="RFC9783"/> Evidence is looked up in the appraisal context using the <tt>ueid</tt> claim found in the PSA claims-set.
If found, COSE Sign1 verification is performed.</t>
            <t>Regardless of the specific integrity protection method used, the Verifier MUST NOT process Evidence that is not successfully validated.</t>
          </section>
          <section anchor="sec-input-trans">
            <name>Input Transformation</name>
            <t>This section describes how the relevant RATS Conceptual Messages are transformed upon ingestion by the CoRIM processor.</t>
            <section anchor="sec-trans-evidence">
              <name>Evidence</name>
              <t>Evidence transformation involves mapping Evidence into one or more <tt>Evidence-ECT</tt>s (see <xref target="sec-ir-evidence"/>), and adding them to the <tt>addition</tt> list of an <tt>ae</tt> relation.
Evidence transformation algorithms may be well-known (e.g., <xref target="I-D.ietf-rats-evidence-trans"/>), defined by a CoRIM profile (see <xref target="sec-corim-profile-types"/>), or supplied dynamically.
Evidence transformation algorithms are out of scope for this document.</t>
              <t>For successful transformation, Evidence MUST contain a relevant value for all the mandatory <tt>Evidence-ECT</tt> attributes.
Otherwise, the CoRIM processor MUST reject the Evidence.</t>
            </section>
            <section anchor="sec-trans-reference-values">
              <name>Reference Values</name>
              <t>Reference Values transformation involves mapping Reference Value triples into an <tt>rv</tt> relation (see <xref target="sec-ir-refval"/>).
Each <tt>reference-triple-record</tt> (<xref target="triple-rv"/>) is transformed into an <tt>rv-item</tt> (<xref target="fig-rv"/>) as described in <xref target="algo-rv-transform"/>.
(The code reuses the <tt>mms_to_ems</tt> function from <xref target="algo-mm-to-em"/>.)</t>
              <figure anchor="algo-rv-transform">
                <name>Reference Value Triple Transformation</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC transform(
    T: reference-triple-record,
    signer: [ + $crypto-key-type-choice ],
    profile: $profile-type-choice
) -> rv-item {
    item := rv-item::NEW()

    item.addition.cmtype = reference-values

    item.addition.environment = T.ref-env
    item.condition.environment = T.ref-env

    item.condition.element-list = mms_to_ems(T.ref-claims)

    item.addition.authority = signer

    IF profile:
        item.addition.profile = profile

    RETURN item
}
]]></sourcecode>
              </figure>
              <t>Note that the <tt>ref-claims</tt> are not copied to the addition ECT.
Since they may contain ranges rather than individual values (see, for example, <xref target="sec-comid-int-range"/>), we need to wait until the condition is satisfied by an Evidence ECT before we can copy the matched claims from the Evidence ECT to the addition ECT.</t>
            </section>
            <section anchor="sec-trans-endorsed-values">
              <name>Endorsed Values</name>
              <t>Endorsed Values transformation involves mapping EV, CE and CES triples into <tt>ev</tt> or <tt>evs</tt> relations (see <xref target="sec-ir-endval"/>).</t>
              <t>An <tt>endorsed-triple-record</tt> (<xref target="triple-ev"/>) is transformed into an <tt>ev-item</tt> (<xref target="fig-ev"/>) as described in <xref target="algo-ev-transform"/>.
(The code reuses the <tt>mms_to_ems</tt> function from <xref target="algo-mm-to-em"/>.)</t>
              <figure anchor="algo-ev-transform">
                <name>Endorsed Value Triple Transformation</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC transform(
    T: endorsed-triple-record,
    signer: [ + $crypto-key-type-choice ],
    profile: $profile-type-choice
) -> ev-item {
    item := ev-item::NEW()

    ect-cond := Endorsement-condition-ECT::NEW()
    ect-cond.environment = T.condition
    item.condition::APPEND(ect-cond)

    ect-add := Endorsement-addition-ECT::NEW()
    ect-add.environment = T.condition
    ect-add.element-list = mms_to_ems(T.endorsement)
    ect-add.cmtype = endorsements
    ect-add.authority = signer
    IF profile:
        ect-add.profile = profile

    item.addition::APPEND(ect-add)

    RETURN item
}
]]></sourcecode>
              </figure>
              <t>A <tt>conditional-endorsement-triple-record</tt> (<xref target="triple-ce"/>) is transformed into an <tt>ev-item</tt> (<xref target="fig-ev"/>) as described in <xref target="algo-ce-transform"/>.
(The code reuses the <tt>mms_to_ems</tt> function from <xref target="algo-mm-to-em"/>.)</t>
              <figure anchor="algo-ce-transform">
                <name>Conditional Endorsement Triple Transformation</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC transform(
    T: conditional-endorsement-triple-record,
    signer: [ + $crypto-key-type-choice ],
    profile: $profile-type-choice
) -> ev-item {
    item := ev-item::NEW()

    FOREACH ser IN T.conditions:
        ect := Endorsement-condition-ECT::NEW()
        ect.environment = ser.environment
        ect.element-list = mms_to_ems(ser.claims-list)
        item.condition::APPEND(ect)

    FOREACH etr IN T.endorsements:
        ect := Endorsement-addition-ECT::NEW()
        ect.environment = etr.condition
        ect.element-list = mms_to_ems(etr.endorsement)
        ect.cmtype = endorsements
        ect.authority = signer
        IF profile:
            ect.profile = profile
        item.addition::APPEND(ect)

    RETURN item
}
]]></sourcecode>
              </figure>
              <t>Each <tt>conditional-endorsement-series-triple-record</tt> (<xref target="triple-ces"/>) is transformed into an <tt>evs-item</tt> (<xref target="fig-evs"/>) as described in <xref target="algo-ces-transform"/>.
(The pseudocode reuses the <tt>mms_to_ems</tt> function defined in <xref target="algo-mm-to-em"/>.)</t>
              <t>The <tt>conditional-endorsement-series-triple-record</tt> contains a condition that is common to all series items.
Each entry in the series is a <tt>conditional-series-record</tt> with conditions that have differing values and additions that are specific to those values.</t>
              <t>The internal representation for a conditional endorsement series consists of a list of condition-addition pairs where the common condition in the series is replicated for each series item.
The transformation algorithm combines the common conditions with each series item condition to simplify Verifier processing (see <xref target="sec-proc-evs-rel"/>).</t>
              <figure anchor="algo-ces-transform">
                <name>Conditional Endorsement Series Triple Transformation</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC transform(
    T: conditional-endorsement-series-triple-record,
    signer: [ + $crypto-key-type-choice ],
    profile: $profile-type-choice
) -> evs-item {
    evsitem := evs-item::NEW()
    FOREACH csr in T.series:
       // stage the condition
       sitem := series-item::NEW()
       sitem.condition.environment = T.condition.environment
       ems1 = mms_to_ems(T.condition.claims-list)
       sitem.condition.element-list = ems1
       ems2 := mms_to_ems(csr.condition)
       sitem.condition.element-list::APPEND(ems2)
       IF T.condition.authorized-by:
           sitem.condition.authority = T.condition.authorized-by
       ELIF csr.series.condition.authorized-by:
           sitem.condition.authority = csr.series.condition.authorized-by
       // stage the addition
       sitem.addition.environment = T.condition.environment
       ems3 = mms_to_ems(csr.addition)
       sitem.addition.element-list = ems3
       sitem.addition.cmtype = `endorsements`
       sitem.addition.authority = signer
       IF profile:
           sitem.addition.profile = profile
       evsitem[INDEXOF(sitem)] = sitem
    RETURN evsitem
}
]]></sourcecode>
              </figure>
            </section>
            <section anchor="keys">
              <name>Keys</name>
              <t>Keys transformation involves mapping Attest Key and Device Identity triples into into a <tt>keys</tt> relation (see <xref target="sec-ir-keys"/>).</t>
              <t>An <tt>attest-key-triple-record</tt> (<xref target="triple-ak"/>) or an <tt>identity-triple-record</tt> (<xref target="triple-di"/>) is transformed into a <tt>key-item</tt> (<xref target="fig-k"/>) as described in <xref target="algo-key-transform"/> pseudocode.</t>
              <figure anchor="algo-key-transform">
                <name>Key Triples Transformation</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC transform(
    T: attest-key-triple-record / identity-triple-record,
    verifier: [ + $crypto-key-type-choice ],
    profile: $profile-type-choice
) -> key-item {
    item := key-item::NEW()

    IF TYPEOF(T) == attest-key-triple-record:
        item.addition.key-type = attest-key
        item.condition.key-type = attest-key
    ELIF TYPEOF(T) == identity-triple-record:
        item.addition.key-type = identity-key
        item.condition.key-type = identity-key

    item.condition.environment = T.environment
    item.addition.environment = T.environment

    item.condition.key-list = T.key-list

    IF T.conditions.mkey:
        item.condition.key-id = T.conditions.mkey
        item.addition.key-id = T.conditions.mkey

    IF T.conditions.authorized-by:
        item.condition.authority = T.conditions.authorized-by

    item.addition.authority = verifier

    IF profile:
        item.addition.profile = profile

    RETURN item
}
]]></sourcecode>
              </figure>
              <t>Note that keys are added under the authority of the Verifier because the key verification check is performed by the Verifier.</t>
              <t>After the <tt>keys</tt> relations are staged, processing commences as described in <xref target="sec-proc-keys"/>.</t>
            </section>
            <section anchor="sec-trans-domain-mem">
              <name>Domain Membership Transformation</name>
              <t>Domain membership transformation maps Domain Membership triples into <tt>dm</tt> relations (see <xref target="sec-ir-domain-mem"/>).</t>
              <t>Prior to adding a domain membership relation, a <tt>domain-membership-triple-record</tt> (<xref target="triple-dm"/>) is transformed into a <tt>domain-item</tt> (<xref target="fig-dm"/>) using the domain membership transformation algorithm <xref target="algo-domain-member-transform"/>.</t>
              <figure anchor="algo-domain-member-transform">
                <name>Domain Membership Transformation</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC transform(
    T: domain-membership-triple-record
    signer: [ + $crypto-key-type-choice ],
    profile: $profile-type-choice
) -> domain-item {
    item := domain-item::NEW()
    item.condition.members = T.members

    item.addition.environment = T.domain-id
    item.addition.members = T.members
    item.addition.authority = signer

    IF profile:
        item.addition.profile = profile

    RETURN item
}
]]></sourcecode>
              </figure>
              <t>Subsequent to transformation the domain membership relations are processed using the domain membership processing algorithm <xref target="sec-proc-dm"/>.</t>
            </section>
            <section anchor="sec-trans-trust-dep">
              <name>Trust Dependency Transformation</name>
              <t>Prior to adding a trust dependency relation, Trust Dependency triples <tt>trust-dependency-triple-record</tt> (<xref target="triple-td"/>) are transformed into <tt>td</tt> relations (see <xref target="sec-ir-trust-dep"/>) using the trust dependency transformation algorithm <xref target="algo-trust-dependency-transform"/>.</t>
              <figure anchor="algo-trust-dependency-transform">
                <name>Trust Dependency Transformation</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC transform(
    T: trust-dependcy-triple-record,
    signer: [ + $crypto-key-type-choice ],
    profile: $profile-type-choice
) -> trust-dependency-item
    item := T-ECT::NEW()

    item.condition.environment = T.domain-id
    item.condition.members = T.members

    item.addition.environment = T.domain-id
    item.addition.members = T.members
    item.addition.authority = signer

    IF profile:
        item.addition.profile = profile

    RETURN item
}
]]></sourcecode>
              </figure>
              <t>Subsequent to transformation, the trust dependency relations are processed using the trust dependency processing algorithm <xref target="sec-proc-td"/>.</t>
            </section>
          </section>
          <section anchor="sec-appraisal-ctx-init">
            <name>Appraisal Context Initialization</name>
            <t>At the end of Phase 1 all of the extracted and validated tags are loaded into an "appraisal context", consisting of the ACS and the staging area.
The ACS is initialized with all the addition ECTs in the <tt>ae</tt> relation:</t>
            <figure anchor="algo-init-acs">
              <name>ACS Initialization</name>
              <sourcecode type="pseudocode"><![CDATA[
FUNC init_acs(ae: ae) -> ACS {
    FOREACH item IN ae:
        acs::APPEND(item.addition)

    RETURN acs
}
]]></sourcecode>
            </figure>
            <t>The staging area is loaded with <tt>rv</tt>, <tt>ev</tt>, <tt>evs</tt>, <tt>keys</tt>, <tt>dm</tt> and <tt>td</tt> relations, in that order.</t>
            <figure anchor="algo-init-sa">
              <name>Staging Area Initialization</name>
              <sourcecode type="pseudocode"><![CDATA[
FUNC init_staging_area(
    rv: rv,
    ev: ev,
    evs: evs,
    keys: keys,
    dm: dm,
    dd: td,
) -> StagingArea {
    sa := StagingArea::NEW()

    IF rv:   sa::APPEND(rv)
    IF ev:   sa::APPEND(ev)
    IF evs:  sa::APPEND(evs)
    IF keys: sa::APPEND(keys)
    IF dm:   sa::APPEND(dm)
    IF td:   sa::APPEND(td)

    RETURN sa
}
]]></sourcecode>
            </figure>
          </section>
        </section>
        <section anchor="sec-match-and-augment">
          <name>ACS Augmentation (Phases 2, 3 and 4)</name>
          <t>This section describes the "match and augment" algorithm, through which the ACS is updated incrementally to reflect the actual state of the Attester as asserted by RATS Roles (i.e., Attester, Reference Value Provider, and Endorser).</t>
          <t>Generally, the match and augment process involves pulling relations from the staging area one by one, in a specific order, and matching their conditions against the current state of the ACS according to the matching rules defined for each relation.
If there is a match, the additions in the matched relation are added to the ACS, thereby providing its "augmentation".
Otherwise, the algorithm moves on to the next relation.
Any augmentations to the ACS (i.e., the <tt>acs::APPEND</tt> operation in <xref target="algo-match-and-augment"/>) MUST be atomic.
Once all the relations in the staging area have been processed, the CoRIM processor forwards the augmented ACS to subsequent appraisal processors as needed.</t>
          <figure anchor="algo-match-and-augment">
            <name>Match and Augment Algorithm</name>
            <sourcecode type="pseudocode"><![CDATA[
FUNC match_and_augment(acs: ACS, sa: StagingArea) -> ACS {
    FOREACH rel IN sa:
        FOREACH item IN rel:
            IF acs::MATCH(item.condition):
                IF !acs::APPEND(item.addition):
                    FAIL

    RETURN acs
}
]]></sourcecode>
          </figure>
          <t>The <tt>acs::MATCH</tt> operation depends on the type of relation.
The matching logic for each type of relation is described in the following sections.</t>
          <t>The <tt>acs::APPEND</tt> operation is defined by a pre-condition and a post-condition:</t>
          <ul spacing="normal">
            <li>
              <t>Pre-condition: <tt>addition</tt> is eligible to be appended.</t>
            </li>
            <li>
              <t>Post-condition: the ACS resulting from the append satisfies the required consistency invariants (e.g., that a graph encoded across ACS entries remains acyclic).</t>
            </li>
          </ul>
          <t>Both conditions are relation-specific; the concrete criteria for each relation are described in the following sections.
If a relation's processing rules do not state a pre-condition or a post-condition, that condition is assumed to be a null operation (i.e., always satisfied) for that relation.</t>
          <t><tt>acs::APPEND</tt> fails, leaving the ACS unchanged, if either the pre-condition or the post-condition does not hold.
A failure of <tt>acs::APPEND</tt> MUST cause <tt>match_and_augment</tt> to terminate immediately, without processing any further relations or items: the appraisal that invoked it is thereby considered to have failed.</t>
          <section anchor="ordering-of-relations">
            <name>Ordering of Relations</name>
            <t>The order in which items within relations are processed is important.
Processing a relation may result in ACS modifications that affect the matching behavior of other relations.
The Verifier MUST ensure that any relation including a matching condition is processed after any other relation that modifies or adds an ACS entry with an <tt>environment</tt> matching the condition.
This can be achieved by sorting the relations before processing, repeating the processing of some relations after ACS modifications, or using other algorithms.
The "match and augment" algorithm described in <xref target="algo-match-and-augment"/> assumes that relations have been topologically sorted prior to loading into the staging area (<xref target="algo-init-sa"/>).</t>
          </section>
          <section anchor="sec-proc-rv">
            <name>Reference Values Corroboration and Augmentation (Phase 3)</name>
            <t>Corroboration is the process of determining whether actual Attester state (as contained in the ACS) can be satisfied by Reference Values.</t>
            <section anchor="sec-proc-rv-rel">
              <name>Processing <tt>rv</tt> Relations</name>
              <t>Reference Values are matched with ACS entries by iterating through the <tt>rv</tt> list.
For each <tt>rv</tt> entry, the condition ECT is compared against an ACS ECT with <tt>cmtype</tt> 2 (i.e., <tt>evidence</tt>).</t>
              <t>If the two match, the following two steps are performed:</t>
              <ol spacing="normal" type="1"><li>
                  <t>The <tt>element-list</tt> of the matched ACS ECT is copied to the <tt>element-list</tt> of the addition ECT.</t>
                </li>
                <li>
                  <t>The addition ECT is added to the ACS.</t>
                </li>
              </ol>
              <t>Note that this new ACS item is essentially a copy of the matched evidence ECT, which has been re-asserted under the authority of the Reference Value Provider.</t>
            </section>
          </section>
          <section anchor="endorsed-values-augmentation-phase-4">
            <name>Endorsed Values Augmentation (Phase 4)</name>
            <t>Endorsed values augmentation is the process of adding Claims about the Attester's actual state with Endorser authority rather than Attester authority.
Augmentation is predicated on a certain condition matching the actual state currently encoded in the ACS.</t>
            <section anchor="sec-proc-ev-rel">
              <name>Processing <tt>ev</tt> Relations</name>
              <t>Endorsed Values and Conditional Endorsed Values are matched with ACS entries by iterating through the <tt>ev</tt> list.
For each <tt>ev</tt> entry, the condition ECT is compared with an ACS ECT with <tt>cmtype</tt> 0, 1 or 2 (i.e., reference-values, endorsements or evidence).
If the two match, the addition ECT is added to the ACS.</t>
            </section>
            <section anchor="sec-proc-evs-rel">
              <name>Processing <tt>evs</tt> Relations</name>
              <t>The Conditional Endorsement Series relation is processed using a modified <tt>match_and_augment</tt> function (see <xref target="algo-match-and-augment"/>) where SERIES-MATCH() calls MATCH() (see <xref target="algo-series-match-and-augment"/>).</t>
              <t>The first series item that matches terminates processing of subsequent series items.</t>
              <t>The matched item is appended to the ACS.</t>
              <figure anchor="algo-series-match-and-augment">
                <name>Series Match and Augment Algorithm</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC match_and_augment(acs: ACS, sa: StagingArea) -> ACS {
    FOREACH rel IN sa:
        FOREACH item IN rel:
            IF ser-add = SERIES-MATCH(acs, item.series):
                IF !acs::APPEND(ser-add):
                    FAIL

    RETURN acs
}

FUNC SERIES-MATCH(acs: ACS, series: SERIES)
    -> Endorsement-addition-ECT {
    FOREACH sitem IN series:
        IF acs::MATCH(sitem.condition):
            RETURN sitem.addition
}
]]></sourcecode>
              </figure>
            </section>
            <section anchor="sec-proc-keys">
              <name>Processing <tt>keys</tt> Relations</name>
              <t>Keys relations identify cryptographic keys that require additional key verification steps before being appended to the ACS.
Processing follows the algorithm as defined in <xref target="sec-match-and-augment"/>.
The <tt>keys</tt> list is iterated for each <tt>key-item</tt> where the <tt>acs::MATCH()</tt> function uses <tt>condition</tt>, if specified, to search the ACS for preexisting keys  or to locate claims, where key verification is applied.
Match conditions may return a variety of results including <tt>Evidence-addition-ECT</tt>, <tt>Reference-Value-addition-ECT</tt>, <tt>Endorsement-addition-ECT</tt>, and <tt>Key-addition-ECT</tt> ECTs.
If <tt>Evidence-addition-ECT</tt>, <tt>Reference-Value-addition-ECT</tt>, or <tt>Endorsement-addition-ECT</tt> are matched, the <tt>element-list.element-map.measurement-values-map.cryptokeys</tt> list is appended to <tt>key-item.addition.key-list</tt>.
If <tt>Key-addition-ECT</tt> ECTs are matched, its <tt>key-list</tt> is appended to <tt>key-item.addition.key-list</tt>.</t>
              <t>Key verification steps, such as <xref section="6" sectionFormat="of" target="RFC5280"/>, are applied to each key in <tt>key-item.addition.key-list</tt>.
A key that is successfully verified is retained in <tt>key-item.addition.key-list</tt>; any other key is discarded.
The pre-condition of <tt>acs::APPEND</tt> for <tt>keys</tt> relations is that <tt>key-item.addition.key-list</tt> contains at least one verified key.
The post-condition of <tt>acs::APPEND</tt> for <tt>keys</tt> relations is null.</t>
            </section>
            <section anchor="sec-proc-dm">
              <name>Processing <tt>dm</tt> Relations</name>
              <t>Domain Membership relations describe the expected topological arrangement of the Attester.</t>
              <t>Domains are matched with ACS entries by iterating through the <tt>dm</tt> list, in the staging area.</t>
              <t>For each dm entry (M-ECT), the condition ECT is compared with either an ACS Element ECT with cmtype 2 (i.e., evidence) or a Domain ECT (M-ECT). All other ECTs are ignored.</t>
              <t>If all the <tt>members</tt> environments in the condition ECT have a matching ECT in the ACS, the <tt>addition</tt> ECT is added to the ACS.
The matching dm entry is pruned from the dm list.</t>
              <t>The post-condition of <tt>acs::APPEND</tt> for <tt>dm</tt> relations is that the domain-membership graph encoded by the ACS remains acyclic; the append does not take effect if this does not hold.</t>
              <t>If there is no match, processing moves to the next dm entry, till the list is exhausted; a single pass over the entire dm list constitutes one complete iteration.</t>
              <t>If there are additions to ACS, then the above algorithm is repeated until there are no more additions.
The algorithm is terminated when there are no more additions to ACS.</t>
              <t>This algorithm can be optimized to complete in a single iteration, if the <tt>dm</tt> entries in the staging area and the ACS entries are topologically sorted (bottom up, from leaves to root).
This specification does not mandate any specific topological sorting algorithm.</t>
            </section>
            <section anchor="sec-proc-td">
              <name>Processing <tt>td</tt> Relations</name>
              <t>The objective of processing a <tt>td</tt> relation is to verify that each edge in a trust dependency graph (TDG) has a corresponding edge in a domain membership graph (DMG).
TDGs MUST be directed acyclic graphs (DAG) before they can be added to the ACS.
TDGs need not be isomorphs of DMGs.</t>
              <t>The matching algorithm ensures that the <tt>td</tt> items queued for addition to the ACS are also Domain Membership ECTs already contained in the ACS.
This matching algorithm is the plug-in for the parameter <tt>item-condition</tt> of <tt>acs::MATCH</tt> defined in <xref target="algo-match-and-augment"/>.</t>
              <figure anchor="algo-process-trust-dep">
                <name>Process Trust Dependency Algorithm</name>
                <sourcecode type="pseudocode"><![CDATA[
FUNC ACS::MATCH(condition: Trust-Dependency-condition-ECT) -> bool {
    FOREACH dm-item IN ACS.ECT(.cm==member):
        IF condition.environment == dm-item.environment:
            FOREACH trustee IN condition.trustees:
                IF !trustee::MEMBEROF(dm-item.members):
                    BREAK   # break inner loop, try another dm-item
            RETURN TRUE

    RETURN FALSE
]]></sourcecode>
              </figure>
              <t>The pre-condition of <tt>acs::APPEND</tt> for <tt>td</tt> relations is that <tt>item.addition</tt> corresponds to a domain already present in the ACS.</t>
              <t>The post-condition of <tt>acs::APPEND</tt> for <tt>td</tt> relations is that the trust-dependency graph encoded by the ACS remains acyclic; the append does not take effect if this does not hold.
Since TDGs need not be isomorphs of DMGs, this post-condition is independent of the one defined for <tt>dm</tt> relations in <xref target="sec-proc-dm"/>.</t>
              <t>Subsequent processing phases SHOULD evaluate the Trust Domain Graph against ACS corroborated Evidence to ensure trustee graphs are also trusted.
For example, a Target Environment (TE-1) with corroborated Evidence that has another trustee Target Environment (TE-2), should ensure TE-2 also has corroborated Evidence before TE-1 is considered trustworthy.
Additionally, a trust dependency might specify a strength of function requirement for TE-1.
The trust dependency implies TE-2 should have at least the same strength of function as TE-1.</t>
            </section>
          </section>
          <section anchor="sec-comparison-rules">
            <name>Rules of Comparison</name>
            <t>The matching component of the "match and augment" algorithm (see <xref target="sec-match-and-augment"/>) relies on a standardized set of comparison rules for ECTs.
These rules depend on the type of elements being compared.
This section provides a normative description of the rules for comparing ECT elements found in relation conditions (referred to as C-ECTs for the remainder of this text) with ECTs in the ACS (referred to as ACS-ECTs for the remainder of this text).</t>
            <t>When comparing a C-ECT against the ACS, the processor iterates over all ACS entries and attempts to match the C-ECT with each ACS entry.
Typically, the comparison is between ECTs of the same type (i.e., Element ECTs are compared with Element ECTs, Key ECTs with Key ECTs and Domain ECTs with Domain ECTs).
However, ECTs of different types can sometimes be compared if the comparison is based on common attributes (<xref target="fig-ect-common"/>).
See <xref target="sec-proc-dm"/> for an example of this, where the <tt>environment</tt>s of <tt>M-ECT</tt>s and <tt>E-ECT</tt>s are compared.</t>
            <t>Conceptually, the processor creates a "matched entries" set and populates it with all ACS entries that match the C-ECT.
If, after visiting all the entries in the ACS, the matched entries set is not empty, the C-ECT matches the ACS.
Conversely, if the matched entries set is empty, the C-ECT does not match the ACS.</t>
            <t>If the C-ECT contains a profile and the profile defines an algorithm for a given codepoint, the processor MUST use the algorithm defined by the profile in comparisons involving that codepoint.
If the condition ECT contains a profile, but the profile does not define an algorithm for a particular codepoint, the processor MUST use the standard algorithm described in this document for comparisons involving that codepoint.</t>
            <t>The specific comparisons performed depend on the type of relation being processed.
In general, the processor will perform comparisons based on <tt>environment</tt> (see <xref target="sec-compare-environment"/>) as well as more specialized comparisons based on the type of ECT matched.
Element ECTs will match on <tt>element-list</tt> (see <xref target="sec-compare-element-list"/>), Key ECTs will match on <tt>key-list</tt>, Domain Membership ECTs will typically match on <tt>members</tt> (see <xref target="sec-proc-dm"/>) and Trust Dependency ECTs will typically match on <tt>trustees</tt> (see <xref target="sec-proc-td"/>).</t>
            <t><cref>
[TBC]
Check, for each relation processing, where authority comparisons apply.
</cref></t>
            <t>Each of these comparisons compares one attribute in the C-ECT against the same attribute in the ACS-ECT.
If all the attributes match, the C-ECT matches the ACS-ECT.
If any attributes do not match, the C-ECT does not match the ACS-ECT.</t>
            <section anchor="sec-compare-environment">
              <name>Environment Comparison</name>
              <t>The processor MUST compare each attribute which is present in the C-ECT's <tt>environment</tt> with the corresponding attribute in the ACS-ECT's <tt>environment</tt> using binary comparison.
Before performing the binary comparison, the processor SHOULD convert the attributes in both <tt>environment</tt>s into a form that meets the CBOR core deterministic encoding requirements described in <xref section="4.2" sectionFormat="of" target="STD94"/>.</t>
              <t>If all the attributes which are present in the C-ECT <tt>environment</tt> (e.g., <tt>instance</tt> or <tt>group</tt>) are also present in the ACS-ECT and are binary identical, the two environments match.
Otherwise, the environments do not match.</t>
              <t>In other words, a match succeeds when the C-ECT's <tt>environment</tt> is contained in the ACS-ECT's <tt>environment</tt> as defined by Attribute Path Containment (see <xref target="sec-glossary"/>) - i.e., for every Attribute Path defined in the C-ECT's <tt>environment</tt>, the ACS-ECT's <tt>environment</tt> defines the same path with an equal value.
Any attribute that is present in the ACS-ECT but not in the C-ECT is ignored in the comparison.</t>
            </section>
            <section anchor="sec-compare-authority">
              <name>Authority Comparison</name>
              <t>The comparison between a C-ECT's <tt>authority</tt> value and an ACS-ECT's <tt>authority</tt> value is as follows: if every entry in the C-ECT <tt>authority</tt> matches byte-by-byte an entry in the ACS-ECT <tt>authority</tt>, the authorities match.
Otherwise, the authorities do not match.</t>
              <t>The order of the items within each <tt>authority</tt> does not affect the result of the comparison.</t>
              <t>When comparing two <tt>$crypto-key-type-choice</tt> items for equality, the processor MUST treat them as equal if their deterministic CBOR encoding is binary equal.</t>
            </section>
            <section anchor="sec-compare-element-list">
              <name>Element List Comparison</name>
              <t>A C-ECT's <tt>element-list</tt> matches an ACS-ECT's <tt>element-list</tt> if all the <tt>element-map</tt>s in the C-ECT's <tt>element-list</tt> match the <tt>element-map</tt>s in the ACS-ECT's <tt>element-list</tt>.</t>
              <t>Any <tt>element-map</tt> that is present in the ACS-ECT's <tt>element-list</tt> but not in the C-ECT's is ignored in the comparison.</t>
              <t>The rules for matching <tt>element-map</tt>s are described in <xref target="sec-compare-element-map"/>.</t>
            </section>
            <section anchor="sec-compare-element-map">
              <name>Element Map Comparison</name>
              <t>The C-ECT's <tt>element-map</tt> matches an ACS-ECT's <tt>element-map</tt> if both the <tt>element-id</tt> and <tt>element-claims</tt> match.</t>
              <t><tt>element-claims</tt> matching uses Attribute Path Containment (see <xref target="sec-glossary"/>): every Attribute Path defined in the C-ECT's <tt>element-claims</tt> MUST be defined in the ACS-ECT's <tt>element-claims</tt>, and the ACS-ECT value at each such path MUST satisfy the corresponding C-ECT value according to the rules in <xref target="sec-match-one-codepoint"/>; additional attributes in the ACS-ECT are ignored.</t>
              <t>Two <tt>element-id</tt>s are considered the same if they are either both omitted, or both present with binary identical deterministic encodings.
Before performing the binary comparison, the processor SHOULD convert the <tt>element-id</tt> attributes into a form that meets the CBOR core deterministic encoding requirements described in <xref section="4.2" sectionFormat="of" target="STD94"/>.</t>
              <t>The rules for matching <tt>element-claims</tt> are described in <xref target="sec-compare-mvm"/>.</t>
            </section>
            <section anchor="sec-compare-mvm">
              <name>Measurement Values Map Comparison</name>
              <t>The C-ECT's <tt>element-claims</tt> match an ACS-ECT's <tt>element-claims</tt> when the C-ECT's <tt>element-claims</tt> is contained in the ACS-ECT's <tt>element-claims</tt> as defined by Attribute Path Containment (<xref target="sec-glossary"/>).
At each Attribute Path present in both maps, the ACS-ECT value MUST satisfy the C-ECT value.
For most attribute types, satisfaction means equality; for range and bound types (for example, <tt>int-range</tt> and <tt>tagged-min-svn</tt>), satisfaction means that the ACS-ECT value lies within the bounds expressed by the C-ECT value, as specified in <xref target="sec-match-one-codepoint"/>.</t>
              <t>Otherwise, the element claims do not match.</t>
              <t>The rules for matching a single <tt>measurement-values-map</tt> attribute are described in <xref target="sec-match-one-codepoint"/>.</t>
              <section anchor="sec-match-one-codepoint">
                <name>Comparison of a Single Measurement Values Map Attribute</name>
                <t>The algorithm used to compare two values of a <tt>measurement-values-map</tt> attribute depends on the attribute's type.</t>
                <t>In Attribute Path Containment comparisons (<xref target="sec-glossary"/>), the C-ECT value at an Attribute Path plays the role of the <strong>condition</strong> and the ACS-ECT value at the same path plays the role of the <strong>entry</strong>.
The comparison algorithms in this section define when an entry value <strong>satisfies</strong> a condition value at that path.
The processor needs to select the appropriate algorithm for the given attribute, including any extensions defined by a supported profile.</t>
                <t>Non-negative codepoints represent standard data representations.
The comparison algorithms for these are defined in this document (in the sections below) or in other specifications.
Some attributes allow different types.
These are designated by a CBOR tag that allows clear type disambiguation.</t>
                <t>Negative codepoints represent profile-defined data representations.
The processor MUST use the attribute name, the profile associated with the condition ECT, and, if present, the CBOR tag value to select the comparison algorithm.</t>
                <t>An attribute defined by this specification that has no comparison subsection of its own is compared by binary comparison.
Before performing the binary comparison, the processor MUST convert the C-ECT value and the ACS-ECT value into a form that meets the CBOR core deterministic encoding requirements described in <xref section="4.2" sectionFormat="of" target="STD94"/>.
The comparison returns true if and only if the two encodings are binary identical.
This applies to <tt>mac-addr</tt> (codepoint 6), <tt>ip-addr</tt> (codepoint 7), <tt>serial-number</tt> (codepoint 8), <tt>ueid</tt> (codepoint 9), <tt>uuid</tt> (codepoint 10) and <tt>name</tt> (codepoint 11).</t>
                <t>If the processor does not recognize an attribute, or is otherwise unable to determine the applicable comparison algorithm for it, it MUST behave as though the C-ECT does not match the ACS-ECT.</t>
                <t>The following subsections define the comparison algorithms for the other <tt>measurement-values-map</tt> attributes defined by this specification.</t>
              </section>
              <section anchor="comparison-for-version-entries">
                <name>Comparison for version entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 0 is of type <tt>version-map</tt>.</t>
                <t>Since, in general - with the exception of <tt>semver</tt> - they are colloquial versions that cannot specify ordering, two <tt>version-map</tt> values can only be compared for equality.</t>
              </section>
              <section anchor="comparison-for-svn-entries">
                <name>Comparison for svn entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 1 is a security version number of type <tt>svn-type-choice</tt>.</t>
                <t>If the ACS-ECT's <tt>svn-type-choice</tt> is a <tt>svn</tt> or <tt>tagged-svn</tt> (i.e., <tt>uint</tt> or a <tt>uint</tt> wrapped in tag 552), comparison with the <tt>uint</tt> in the C-ECT is as follows:</t>
                <ul spacing="normal">
                  <li>
                    <t>If the C-ECT value is of type <tt>svn</tt> or <tt>tagged-svn</tt>, an equality comparison is performed on the <tt>uint</tt> components.
The comparison MUST return true if the <tt>uint</tt> values are equal.</t>
                  </li>
                  <li>
                    <t>If the C-ECT value is of type <tt>tagged-min-svn</tt>, a minimum comparison is performed.
The comparison MUST return true if the <tt>uint</tt> value in the C-ECT is less than or equal to the value in the ACS-ECT.</t>
                  </li>
                </ul>
                <t>If the ACS-ECT's <tt>svn-type-choice</tt> is <tt>tagged-min-svn</tt> (i.e., <tt>uint</tt> wrapped in tag 553), then comparison with the <tt>uint</tt> in the C-ECT is as follows.</t>
                <ul spacing="normal">
                  <li>
                    <t>If the C-ECT value for <tt>measurement-values-map</tt> codepoint 1 is <tt>svn</tt> or <tt>tagged-svn</tt> (i.e., <tt>uint</tt> or a <tt>uint</tt> wrapped in tag 552), the comparison is not allowed and MUST return false.</t>
                  </li>
                  <li>
                    <t>If the condition ECT value for <tt>measurement-values-map</tt> codepoint 1 is a <tt>tagged-min-svn</tt> (i.e., <tt>uint</tt> wrapped in tag 553), an equality comparison is performed.
The comparison MUST return true if the <tt>uint</tt> values are equal.</t>
                  </li>
                </ul>
                <t>A minimum SVN is only meaningful as an entry value when it is an endorsed value that has been added to the ACS.
The condition therefore treats the minimum SVN as an exact state, rather than as something to be compared with inequality.</t>
                <t>The pseudocode for the above algorithm is shown in <xref target="fig-comp-svn"/>.</t>
                <figure anchor="fig-comp-svn">
                  <name>SVN Comparison</name>
                  <sourcecode type="pseudocode"><![CDATA[
FUNC compare(
    c_ect: svn-type-choice,
    acs_ect: svn-type-choice
) -> bool {
    IF is_plain_svn(acs_ect):
        IF is_plain_svn(c_ect):
            RETURN get_svn_value(c_ect) == get_svn_value(acs_ect)
        ELSE:
            RETURN get_svn_value(c_ect) <= get_svn_value(acs_ect)
    ELSE:
        IF is_plain_svn(c_ect):
            RETURN false
        ELSE:
            RETURN get_svn_value(c_ect) == get_svn_value(acs_ect)
}

FUNC get_svn_value(v: svn-type-choice) -> uint {
    IF TYPEOF(v) == svn:
        RETURN v
    ELIF TYPEOF(v) == tagged-svn:
        RETURN ~v
    ELIF TYPEOF(v) == tagged-min-svn:
        RETURN ~v
}

FUNC is_plain_svn(v: svn-type-choice) -> bool {
    RETURN TYPEOF(v) == svn OR TYPEOF(v) == tagged-svn
}
]]></sourcecode>
                </figure>
              </section>
              <section anchor="sec-cmp-digests">
                <name>Comparison for digests entries</name>
                <t>A <tt>digests</tt> entry contains one or more digests, each measuring the same object.
When multiple digests are provided, each represents a different acceptable algorithm to the C-ECT author.</t>
                <t>In the simplest case, a C-ECT <tt>digests</tt> entry containing one digest matches an ACS-ECT entry containing a single entry with the same algorithm and value.</t>
                <t>If there are multiple algorithms in common between the C-ECT and ACS-ECT, the bytes paired with common algorithms MUST be equal.
This is to prevent downgrade attacks.
The processor MUST treat two algorithm identifiers as equal if they have the same deterministic binary encoding.
If both an integer and a string representation are defined for an algorithm, then entities creating ECTs SHOULD use the integer representation.
If C-ECT and ACS-ECT use different names for the same algorithm, and the processor does not recognize that they are the same, then a downgrade attack is possible.</t>
                <t>The comparison MUST return false if the CBOR encoding of the <tt>digests</tt> entry in the C-ECT or the ACS-ECT value with the same codepoint is incorrect.
For example, if fields are missing or if they are the wrong type.</t>
                <t>The comparison MUST return false if the C-ECT <tt>digests</tt> entry does not contain any digests.</t>
                <t>The comparison MUST return false if either <tt>digests</tt> entry contains multiple values for the same hash algorithm.</t>
                <t>The processor iterates over the C-ECT <tt>digests</tt> array to locate the common hash algorithm identifiers which are present in both the C-ECT and in the ACS-ECT.
The comparison MUST return false if there are no hash algorithms in common between the C-ECT and the ACS-ECT.
The comparison MUST return false if the value associated with any common hash algorithm identifier in the C-ECT differs from the value for the same algorithm identifier in the ACS-ECT.
If all the values associated with the common hash algorithm identifiers match, the comparison returns true.</t>
              </section>
              <section anchor="sec-cmp-flags">
                <name>Comparison for flags entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 3 is of type <tt>flags-map</tt>.</t>
                <t>Each flag is compared separately.
For each flag present in the C-ECT <tt>flags-map</tt>, the comparison MUST return false if that flag is absent from the ACS-ECT <tt>flags-map</tt> or has a different value.
Flags present in the ACS-ECT <tt>flags-map</tt> but absent from the C-ECT <tt>flags-map</tt> are ignored.
A flag that is absent from the ACS-ECT <tt>flags-map</tt> is not treated as <tt>false</tt>.
If every flag in the C-ECT <tt>flags-map</tt> matches, the same flag in the ACS-ECT <tt>flags-map</tt>, the comparison returns true.</t>
              </section>
              <section anchor="comparison-for-raw-value-entries">
                <name>Comparison for raw-value entries</name>
                <t>A <tt>raw-value</tt> entry contains binary data.</t>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 4 in an ACS-ECT MUST be a <tt>raw-value</tt> entry, which MUST be <tt>tagged-bytes</tt>.</t>
                <t>The value stored under the C-ECT <tt>measurement-values-map</tt> codepoint 4 may additionally be a <tt>tagged-masked-raw-value</tt> entry, which specifies an expected value and a mask.</t>
                <t>If the C-ECT <tt>measurement-values-map</tt> codepoint 4 is of type <tt>tagged-bytes</tt>, and there is no value stored under codepoint 5, the processor treats it as if it were a <tt>tagged-masked-raw-value</tt> with the <tt>value</tt> field holding the same contents and a <tt>mask</tt> of the same length as the value, with all bits set.
The standard comparison function defined in this document removes the CBOR tag before performing the comparison.</t>
                <t>For backwards compatibility, if the C-ECT <tt>measurement-values-map</tt> codepoint 4 is of type <tt>tagged-bytes</tt>, and there is a mask stored under codepoint 5, the processor treats it as a <tt>tagged-masked-raw-value</tt> with the <tt>value</tt> field holding the same contents and a <tt>mask</tt> holding the contents of codepoint 5.
Codepoint 5 is used only as part of the codepoint 4 comparison and is not compared on its own, so it does not need to be present in the ACS-ECT.</t>
                <t>The comparison MUST return false if the lengths of the ACS-ECT entry value and the C-ECT value are different.</t>
                <t>The comparison MUST return false if the lengths of the C-ECT mask and value are different.</t>
                <t>The comparison MUST use the mask to determine which bits to compare.
If a bit in the mask is 0 then this indicates that the corresponding bit in the ACS-ECT value is ignored.</t>
                <t>The comparison returns true if, for every bit position in the mask whose value is 1, the corresponding bits in both values are equal.</t>
              </section>
              <section anchor="sec-cryptokeys-matching">
                <name>Comparison for cryptokeys entries</name>
                <t>The CBOR tag of the first entry in the C-ECT <tt>cryptokeys</tt> array is compared with the CBOR tag of the first entry of the ACS-ECT <tt>cryptokeys</tt> value.
If the CBOR tags match, then the bytes following the CBOR tag from the C-ECT entry are compared byte-by-byte with the bytes following the CBOR tag from the ACS-ECT entry.
If the byte strings match and there are more array entries, the next C-ECT array entry is compared with the next ACS-ECT array entry.
If all the C-ECT array entries match their corresponding entries in the ACS-ECT array, the C-ECT <tt>cryptokeys</tt> match.
Otherwise, the C-ECT <tt>cryptokeys</tt> do not match.</t>
              </section>
              <section anchor="sec-cmp-integrity-registers">
                <name>Comparison for Integrity Registers</name>
                <t>For each Integrity Register entry in the C-ECT, the processor will use the associated identifier (i.e., <tt>integrity-register-id-type-choice</tt>) to look up the matching Integrity Register entry in the ACS-ECT.
If no matching entry is found, the comparison MUST return false.
Instead, if an entry is found, the digest comparison proceeds as defined in <xref target="sec-cmp-digests"/> after equivalence has been established according to <xref target="sec-comid-integrity-registers"/>.
Note that it is not required for all the entries in the C-ECT to be used during matching: the C-ECT may represent only a subset of the device's register space.
In TPM parlance, a TPM "quote" may report all PCRs in Evidence, while a C-ECT could describe a subset of PCRs.</t>
              </section>
              <section anchor="sec-match-int-range">
                <name>Comparison for int-range entries</name>
                <t>The ACS-ECT value stored under <tt>measurement-values-map</tt> codepoint 15 is an int range value of <tt>int-range-type-choice</tt>.</t>
                <t>Consider an <tt>int</tt> ACS-ECT value named ENTRY in a <tt>measurement-values-map</tt> codepoint (e.g., 15) that allows comparing <tt>int</tt> against either another <tt>int</tt> or an <tt>int-range</tt> named CONDITION.</t>
                <ul spacing="normal">
                  <li>
                    <t>If CONDITION is an <tt>int</tt> then an equality comparison is performed with ENTRY.</t>
                  </li>
                  <li>
                    <t>If CONDITION is an <tt>int-range</tt> (CBOR tag 564), then a range inclusion comparison is performed.
The comparison MUST return true if and only if all the following conditions are true:  </t>
                    <ul spacing="normal">
                      <li>
                        <t>CONDITION.min is <tt>null</tt> or ENTRY is greater than or equal to CONDITION.min.</t>
                      </li>
                      <li>
                        <t>CONDITION.max is <tt>null</tt> or ENTRY is less than or equal to CONDITION.max.</t>
                      </li>
                    </ul>
                  </li>
                </ul>
                <t>Consider an <tt>int-range</tt> (CBOR tag 564) value named ENTRY in a <tt>measurement-values-map</tt> codepoint (e.g., 15) that allows comparing an <tt>int-range</tt> against either another <tt>int-range</tt> or an <tt>int</tt> named CONDITION.</t>
                <ul spacing="normal">
                  <li>
                    <t>If CONDITION is an <tt>int</tt>, then the comparison MUST return true if and only if ENTRY.min and ENTRY.max are both equal to CONDITION.</t>
                  </li>
                  <li>
                    <t>If CONDITION is an <tt>int-range</tt> (CBOR tag 564), then a range subsumption comparison is performed (i.e., the condition range includes all values of the entry range).
The comparison MUST return true if and only if all the following conditions are true:  </t>
                    <ul spacing="normal">
                      <li>
                        <t>CONDITION.min is <tt>null</tt> or ENTRY.min is an <tt>int</tt> that is greater than or equal to CONDITION.min</t>
                      </li>
                      <li>
                        <t>CONDITION.max is <tt>null</tt> or ENTRY.max is an <tt>int</tt> that is less than or equal to CONDITION.max.</t>
                      </li>
                    </ul>
                  </li>
                </ul>
              </section>
              <section anchor="sec-match-bool">
                <name>Comparison for bool entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 16 is of type <tt>bool-matcher</tt>, which is a bare <tt>bool</tt>.
An equality comparison is performed between the C-ECT value and the ACS-ECT value.</t>
                <t>Set match (CBOR tag 566) is not defined for <tt>bool</tt> since <tt>bool</tt> has only two possible values.
A set of two or more elements represents the full domain, which can be already expressed by omitting the entry.</t>
              </section>
              <section anchor="sec-match-integer">
                <name>Comparison for integer entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 17 is of type <tt>integer-matcher</tt>.
The ACS-ECT value at this codepoint is always a bare <tt>int</tt> (see <xref target="sec-comid-matchers"/>); the comparison rules below are defined against the form of the C-ECT value.</t>
                <t>If the C-ECT value is a bare <tt>int</tt>, an equality comparison is performed with the ACS-ECT value.</t>
                <t>If the C-ECT value is a <tt>tagged-integer-range</tt> (CBOR tag 565), <tt>null</tt> in the first element represents negative infinity (no lower bound) and <tt>null</tt> in the second element represents positive infinity (no upper bound).
The comparison MUST return true if and only if both of the following conditions are met:</t>
                <ul spacing="normal">
                  <li>
                    <t>The C-ECT <tt>min</tt> is <tt>null</tt> or the ACS-ECT value is greater than or equal to <tt>min</tt>.</t>
                  </li>
                  <li>
                    <t>The C-ECT <tt>max</tt> is <tt>null</tt> or the ACS-ECT value is less than or equal to <tt>max</tt>.</t>
                  </li>
                </ul>
                <t>At least one of <tt>min</tt> and <tt>max</tt> of a <tt>tagged-integer-range</tt> MUST be non-<tt>null</tt>.
A <tt>tagged-integer-range</tt> whose <tt>min</tt> and <tt>max</tt> are both <tt>null</tt> is malformed and MUST be rejected; to match any value, the entry is omitted.</t>
                <t>If the C-ECT value is a <tt>tagged-integer-set</tt> (CBOR tag 566), the comparison MUST return true if and only if the ACS-ECT value equals any element of the set.</t>
              </section>
              <section anchor="sec-match-float">
                <name>Comparison for float entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 20 is of type <tt>float-matcher</tt>.
The ACS-ECT value at this codepoint is always a bare <tt>float</tt> (see <xref target="sec-comid-matchers"/>); the comparison rules below are defined against the form of the C-ECT value.</t>
                <t>Comparison is numeric, not byte-wise: it does not depend on the width (e.g., half, single or double precision) or on the preferred or non-preferred serialization used to encode a value.</t>
                <ul spacing="normal">
                  <li>
                    <t><tt>+0.0</tt> and <tt>-0.0</tt> are equal.</t>
                  </li>
                  <li>
                    <t><tt>+Infinity</tt> and <tt>-Infinity</tt> are equal only to themselves, and order above and below all finite values, respectively.</t>
                  </li>
                </ul>
                <t><tt>NaN</tt> MUST NOT appear in a <tt>float-matcher</tt>, whether as a bare value, as a range bound, or as a set element.
A <tt>float-matcher</tt> that contains a <tt>NaN</tt> is malformed and MUST be rejected.
An Evidence transformation MUST NOT produce a <tt>NaN</tt> as the ACS-ECT value; Evidence that would result in one MUST be rejected.</t>
                <t>If the C-ECT value is a bare <tt>float</tt>, an equality comparison is performed with the ACS-ECT value.</t>
                <t>If the C-ECT value is a <tt>tagged-float-range</tt> (CBOR tag 565), <tt>null</tt> in the first element represents negative infinity (no lower bound) and <tt>null</tt> in the second element represents positive infinity (no upper bound).
The comparison MUST return true if and only if both of the following conditions are met:</t>
                <ul spacing="normal">
                  <li>
                    <t>The C-ECT <tt>min</tt> is <tt>null</tt> or the ACS-ECT value is greater than or equal to <tt>min</tt>.</t>
                  </li>
                  <li>
                    <t>The C-ECT <tt>max</tt> is <tt>null</tt> or the ACS-ECT value is less than or equal to <tt>max</tt>.</t>
                  </li>
                </ul>
                <t>The <tt>min</tt> and <tt>max</tt> of a <tt>tagged-float-range</tt> MUST NOT be <tt>+Infinity</tt> or <tt>-Infinity</tt>; <tt>null</tt> is the only way to express an unbounded range.
A <tt>tagged-float-range</tt> that violates this requirement is malformed and MUST be rejected.</t>
                <t>At least one of <tt>min</tt> and <tt>max</tt> of a <tt>tagged-float-range</tt> MUST be non-<tt>null</tt>.
A <tt>tagged-float-range</tt> whose <tt>min</tt> and <tt>max</tt> are both <tt>null</tt> is malformed and MUST be rejected; to match any value, the entry is omitted.</t>
                <t>If the C-ECT value is a <tt>tagged-float-set</tt> (CBOR tag 566), the comparison MUST return true if and only if the ACS-ECT value equals any element of the set.</t>
              </section>
              <section anchor="sec-match-text">
                <name>Comparison for text entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 18 is of type <tt>text-matcher</tt>.
The ACS-ECT value at this codepoint is always a bare <tt>text</tt> (see <xref target="sec-comid-matchers"/>); the comparison rules below are defined against the form of the C-ECT value.</t>
                <t>If the C-ECT value is a bare <tt>text</tt>, an equality comparison is performed with the ACS-ECT value.</t>
                <t>If the C-ECT value is a <tt>tagged-text-set</tt> (CBOR tag 566), the comparison MUST return true if and only if the ACS-ECT value equals any element of the set.</t>
              </section>
              <section anchor="sec-match-bytes">
                <name>Comparison for bytes entries</name>
                <t>The value stored under <tt>measurement-values-map</tt> codepoint 19 is of type <tt>bytes-matcher</tt>.
The ACS-ECT value at this codepoint is always a bare <tt>bytes</tt> (see <xref target="sec-comid-matchers"/>); the comparison rules below are defined against the form of the C-ECT value.</t>
                <t>If the C-ECT value is a bare <tt>bytes</tt>, an equality comparison is performed with the ACS-ECT value.</t>
                <t>If the C-ECT value is a <tt>tagged-bytes-set</tt> (CBOR tag 566), the comparison MUST return true if and only if the ACS-ECT value equals any element of the set.</t>
              </section>
            </section>
            <section anchor="sec-compare-profile">
              <name>Profile-directed Comparison</name>
              <t>A profile MUST specify comparison algorithms for its additions to <tt>$</tt>-prefixed CoRIM CDDL codepoints when this specification does not prescribe binary comparison.
The profile MUST specify how to compare the CBOR tagged value against the ACS.</t>
            </section>
          </section>
        </section>
        <section anchor="handoff">
          <name>Handoff</name>
          <t>Once all the relations in the staging area have been processed, the computed ACS is ready to be handed over to the Verifier for further processing in subsequent phases.
Typically, the ACS is passed to a policy engine that applies a policy to deduce high-level characteristics of the Attester from the low-level information contained in the ACS.
This information can then be encoded in an Attestation Result that can be understood by a Relying Party, which does not need to know all the details in order to make a trust decision.</t>
        </section>
        <section anchor="example-appraisal">
          <name>Example Appraisal</name>
          <t>The following example describes the appraisal of a PSA Attester <xref target="RFC9783"/> from the fictitious vendor "Acme Inc.", which uses the CoRIM profile documented in <xref target="I-D.fdb-rats-psa-endorsements"/>.</t>
          <section anchor="input-corims">
            <name>Input CoRIMs</name>
            <t>In this scenario, the Verifier obtains two CoRIM files from two different actors in the supply chain:</t>
            <ul spacing="normal">
              <li>
                <t>The device manufacturer (Acme Inc.); and</t>
              </li>
              <li>
                <t>A certifier (Certifier Inc.), which has evaluated the device according to the PSA Certified scheme.</t>
              </li>
            </ul>
            <t>The manufacturer's CoRIM contains a single CoMID with two Reference Values triples (see <xref target="ex-comid-rvt"/>) describing two acceptable states of the Attester.
The Attester is identified by the class attribute Implementation ID with the value <tt>6163..3031</tt>.
One state has a digest of <tt>9a27..86aa</tt> for the "PRoT" component, and the other has a digest of <tt>a3fe..5065</tt>.</t>
            <t>For the remainder of this section, we will assume that the CoRIM containing this CoMID is signed using the manufacturer's certificate, which has a thumbprint of <tt>482e..78b3</tt>.</t>
            <figure anchor="ex-comid-rvt">
              <name>Example Manufacturer CoMID</name>
              <sourcecode type="cbor-diag"><![CDATA[
/ concise-mid-tag / {
  / comid.tag-identity / 1 : {
    / comid.tag-id / 0 : "acme.example/gizmo-v1"
  },
  / comid.entity / 2 : [ {
    / comid.entity-name / 0 : "ACME Inc.",
    / comid.reg-id / 1 : 32("https://acme.example"),
    / comid.role / 2 : [ 0 ] / tag-creator /
  } ],
  / comid.triples / 4 : {
    / comid.reference-triples / 0 : [ [
      / environment-map / {
        / comid.class / 0 : {
          / comid.class-id / 0 :
            / tagged-bytes / 560(
              h'61636d652d696d706c656d656e746174
                696f6e2d69642d303030303030303031'
            )
        }
      },
      [
        / measurement-map / {
          / comid.mkey / 0 : "psa.software-component",
          / comid.mval / 1 : {
            / comid.digests / 2 : [ [
              / hash-alg-id / "sha-256",
              / hash-value / h'9a271f2a916b0b6ee6cecb2426f0b320
                               6ef074578be55d9bc94f6f3fe3ab86aa'
            ] ],
            / name / 11 : "PRoT",
            / cryptokeys / 13 : [ 560(h'5378796307535df3ec8d8b15a2
                                        e2dc5641419c3d3060cfe32238
                                        c0fa973f7aa3') ]
          }
        }
      ]
    ],
    [
      / environment-map / {
        / comid.class / 0 : {
          / comid.class-id / 0 :
            / tagged-bytes / 560(
              h'61636d652d696d706c656d656e746174
                696f6e2d69642d303030303030303031'
            )
        }
      },
      [
        / measurement-map / {
          / comid.mkey / 0 : "psa.software-component",
          / comid.mval / 1 : {
            / comid.digests / 2 : [ [
              / hash-alg-id / "sha-256",
              / hash-value / h'a3fe9f414586c0d3cacbe3b6920a09d8
                               718e503bca22e23fef882203bf765065'
            ] ],
            / name / 11 : "PRoT",
            / cryptokeys / 13 : [ 560(h'5378796307535df3ec8d8b15a2
                                        e2dc5641419c3d3060cfe32238
                                        c0fa973f7aa3') ]
          }
        }
      ]
    ] ]
  }
}
]]></sourcecode>
            </figure>
            <t>The CoMID from the certifier contains a Conditional Endorsement triple that describes the Attester who was granted the security certification <tt>1234567890123 - 12345</tt> (see <xref target="ex-comid-cet"/>).
This Attester has Implementation ID <tt>6163..3031</tt> and the digest associated with the "PRoT" component is <tt>9a27..86aa</tt>.
In the triple, the security certification is represented as <tt>endorsements</tt>, while the target identification information is represented as <tt>conditions</tt>.</t>
            <figure anchor="ex-comid-cet">
              <name>Example Certifier CoMID</name>
              <sourcecode type="cbor-diag"><![CDATA[
/ concise-mid-tag / {
  / comid.tag-identity / 1 : {
    / comid.tag-id / 0 : "certifier.example/gizmo-v1"
  },
  / comid.entity / 2 : [ {
    / comid.entity-name / 0 : "Certifier Inc.",
    / comid.reg-id / 1 : 32("https://certifier.example"),
    / comid.role / 2 : [ 0 ] / tag-creator /
  } ],
  / comid.triples / 4 : {
    / comid.conditional-endorsement-triple / 10 : [
      [
        / conditions / [
          / stateful-environment / [
            / environment-map / {
              / comid.class / 0 : {
                / comid.class-id / 0 :
                  / tagged-bytes / 560(
                    h'61636d652d696d706c656d656e746174
                      696f6e2d69642d303030303030303031'
                  )
              }
            },
            / claims-list / [
              / measurement-map / {
                / comid.mkey / 0 : "psa.software-component",
                / comid.mval / 1 : {
                  / comid.digests / 2 : [ [
                    / hash-alg-id / "sha-256",
                    / hash-value / h'9a271f2a916b0b6ee6cecb2426f0b320
                                     6ef074578be55d9bc94f6f3fe3ab86aa'
                  ] ],
                  / name / 11 : "PRoT",
                  / cryptokeys / 13 : [ 560(h'5378796307535df3ec8d8b15a2
                                              e2dc5641419c3d3060cfe32238
                                              c0fa973f7aa3') ]
                }
              }
            ]
          ]
        ],
        / endorsements / [
          / endorsed-triple / [
            / environment / {
              / comid.class / 0 : {
                / comid.class-id / 0 :
                  / tagged-bytes / 560(
                    h'61636d652d696d706c656d656e746174
                      696f6e2d69642d303030303030303031'
                  )
              }
            },
            [
              / measurement-map / {
                / comid.mkey / 0 : "psa.certification",
                / comid.mval / 1 : {
                  / psa.cert-num / 100 : "1234567890123 - 12345"
                }
              }
            ]
          ]
        ]
      ]
    ]
  }
}
]]></sourcecode>
            </figure>
            <t>For the remainder of this section, we will assume that the CoRIM containing this CoMID is signed using the certifier's certificate, which has a thumbprint of <tt>768f..75b1</tt>.</t>
          </section>
          <section anchor="input-evidence">
            <name>Input Evidence</name>
            <t>The Verifier obtains Evidence from a PSA Attester in the format described in <xref target="RFC9783"/> and verifies its cryptographic integrity and validity.</t>
          </section>
          <section anchor="internal-representations">
            <name>Internal Representations</name>
            <t>As described in <xref target="sec-phase-1"/>, once all the "raw" inputs have been validated, input transformations can start.</t>
            <t>The two Reference Values triples from the manufacturer's CoMID are mapped to their corresponding <tt>rv-item</tt>s (<xref target="ex-rv-item-1"/>, <xref target="ex-rv-item-2"/>) using the transformations defined in <xref target="algo-rv-transform"/>.</t>
            <t>The first triple:</t>
            <figure anchor="ex-rv-item-1">
              <name>First rv Relation Item</name>
              <sourcecode type="cbor-diag"><![CDATA[
{
  "condition": {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      }
    },
    "element-list": [
      {
        "element-id": "psa.software-component",
        "element-claims": {
          2: [
            [
              "sha-256",
              h'9a271f2a916b0b6ee6cecb2426f0b320
                6ef074578be55d9bc94f6f3fe3ab86aa'
            ]
          ],
          11: "PRoT",
          13: [ 560(h'5378796307535df3ec8d8b15a2e2dc56
                      41419c3d3060cfe32238c0fa973f7aa3') ]
        }
      }
    ]
  },
  "addition": {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      }
    },
    "authority": [
      559([
        "sha-256",
        h'482e829ad29ac6ea6eda2d47d1d93a00
          2bf41d9d88710ba972c36e59038f78b3'
      ])
    ],
    "cmtype": 0,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  }
}
]]></sourcecode>
            </figure>
            <t>The second triple:</t>
            <figure anchor="ex-rv-item-2">
              <name>Second rv Relation Item</name>
              <sourcecode type="cbor-diag"><![CDATA[
{
  "condition": {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      }
    },
    "element-list": [
      {
        "element-id": "psa.software-component",
        "element-claims": {
          2: [
            [
              "sha-256",
              h'a3fe9f414586c0d3cacbe3b6920a09d8
                718e503bca22e23fef882203bf765065'
            ]
          ],
          11: "PRoT",
          13: [ 560(h'5378796307535df3ec8d8b15a2e2dc56
                      41419c3d3060cfe32238c0fa973f7aa3') ]
        }
      }
    ]
  },
  "addition": {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      }
    },
    "authority": [
      559([
        "sha-256",
        h'482e829ad29ac6ea6eda2d47d1d93a00
          2bf41d9d88710ba972c36e59038f78b3'
      ])
    ],
    "cmtype": 0,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  }
}
]]></sourcecode>
            </figure>
            <t>Note the authorities in the addition ECT of both items, which are set to <tt>482e..78b3</tt>, and correspond to the thumbprint of the manufacturer's signing certificate.</t>
            <t>The Conditional Endorsement triple from the certifier's CoMID is mapped to its corresponding <tt>ev-item</tt> (<xref target="ex-ev-item"/>) using the transformation defined in <xref target="algo-ce-transform"/>.</t>
            <figure anchor="ex-ev-item">
              <name>First (and only) ev Relation Item</name>
              <sourcecode type="cbor-diag"><![CDATA[
{
  "condition": [
    {      
      "environment": {
          0: {
            0:
              560(h'61636d652d696d706c656d656e746174
                    696f6e2d69642d303030303030303031')
          }
      },
      "element-list": [
        {
          "element-id": "psa.software-component",
          "element-claims": {
            2 : [ [
              "sha-256",
              h'9a271f2a916b0b6ee6cecb2426f0b320
                6ef074578be55d9bc94f6f3fe3ab86aa'
            ] ],
            11 : "PRoT",
            13 : [ 560(h'5378796307535df3ec8d8b15a2
                         e2dc5641419c3d3060cfe32238
                         c0fa973f7aa3') ]
          }
        }
      ]
    }
  ],
  "addition": [
    { 
      "environment": {
        0: {
          0:
            560(h'61636d652d696d706c656d656e746174
                  696f6e2d69642d303030303030303031')
        }
      },
      "element-list": [
        {
          "element-id": "psa.certification",
          "element-claims": {
            100: "1234567890123 - 12345"
          }
        }
      ],
      "authority": [
        559([
          "sha-256",
          h'768ff09154f6aacda857cb175ef29cf9
            d23ef9c38c69efdbf20354dbfd7875b1'
        ])
      ],
      "cmtype": 1,
      "profile": 32("tag:arm.com,2025:psa#1.0.0")
    }
  ]
}
]]></sourcecode>
            </figure>
            <t>Note the authority in the addition ECT, which is set to <tt>768f..75b1</tt>, and corresponds to the thumbprint of the certifier's signing certificate.</t>
            <t>Evidence from the PSA Attester is transformed into the corresponding <tt>ae-item</tt> using the transformation defined in <xref target="I-D.fdb-rats-psa-endorsements"/>:</t>
            <figure anchor="ex-ae-item">
              <name>ae-item</name>
              <sourcecode type="cbor-diag"><![CDATA[
{
  "addition": {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      },
      1: 550(h'01
               4ca3e4f50bf248c39787020d68ffd05c
               88767751bf2645ca923f57a98becd296')
    },
    "element-list": [
      {
        "element-id": "psa.software-component",
        "element-claims": {
          2: [
            [
              "sha-256",
              h'9a271f2a916b0b6ee6cecb2426f0b320
                6ef074578be55d9bc94f6f3fe3ab86aa'
            ]
          ],
          11: "PRoT",
          13: [ 560(h'5378796307535df3ec8d8b15a2e2dc56
                      41419c3d3060cfe32238c0fa973f7aa3') ]
        }
      }
    ],
    "authority": [
      554("-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETl4iCZ47zrRbRG0TVf0dw7VFlHtv
18HInYhnmMNybo+A1wuECyVqrDSmLt4QQzZPBECV8ANHS5HgGCCSr7E/Lg==
-----END PUBLIC KEY-----
")
    ],
    "cmtype": 2,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  }
}
]]></sourcecode>
            </figure>
            <t>Note the authority in the ECT, which is set to <tt>MFkw..Lg==</tt>, and corresponds to the Attester's PEM-encoded SPKI.</t>
          </section>
          <section anchor="appraisal">
            <name>Appraisal</name>
            <t>As described in <xref target="sec-appraisal-ctx-init"/>, the appraisal context is bootstrapped by loading the <tt>ae</tt> ECT(s) into the ACS, and the <tt>rv</tt> and <tt>ev</tt> relations into the Staging Area.
Then, ACS augmentation described in <xref target="sec-match-and-augment"/> can begin.</t>
            <t>The first relation to be processed is <tt>rv</tt>, according to the rules described in <xref target="sec-proc-rv-rel"/>.</t>
            <t>The condition of the first <tt>rv-item</tt> (<xref target="ex-rv-item-1"/>) is matched against the ACS which, at this time, contains a single ECT obtained from the <tt>ae-item</tt> (<xref target="ex-ae-item"/>).
The <tt>cmtype</tt> of the ACS-ECT is 2 (evidence), which is exactly the type <tt>rv-item</tt>s need to match against.
When the two are compared, it is found that the environments of the <tt>rv-item</tt> condition and the ACS-ECT match (note that the instance identifier in the ACS-ECT is ignored because it is not present in the <tt>rv-item</tt>).
The matching algorithm then proceeds to try to match the respective <tt>element-list</tt>s.
Both lists contain a single element, whose ID and claims are a perfect match.
Therefore, all the matching criteria are satisfied and the <tt>rv-item</tt> addition ECT is appended to the ACS.
Before this addition is made, the matched element from the <tt>rv-item</tt> condition is copied to the addition <tt>element-list</tt>.</t>
            <t>The ACS now contains two ECTs, one with <tt>cmtype</tt> 2 (evidence), and a second one with <tt>cmtype</tt> 0 (reference-value) that corroborates the first one with manufacturer authority (<xref target="ex-acs-1"/>).</t>
            <figure anchor="ex-acs-1">
              <name>ACS State after Corroboration</name>
              <artwork><![CDATA[
[
  / Evidence ECT / {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      },
      1: 550(h'01
               4ca3e4f50bf248c39787020d68ffd05c
               88767751bf2645ca923f57a98becd296')
    },
    "element-list": [
      {
        "element-id": "psa.software-component",
        "element-claims": {
          2: [
            [
              "sha-256",
              h'9a271f2a916b0b6ee6cecb2426f0b320
                6ef074578be55d9bc94f6f3fe3ab86aa'
            ]
          ],
          11: "PRoT",
          13: [ 560(h'5378796307535df3ec8d8b15a2e2dc56
                      41419c3d3060cfe32238c0fa973f7aa3') ]
        }
      }
    ],
    "authority": [
      554("-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETl4iCZ47zrRbRG0TVf0dw7VFlHtv
18HInYhnmMNybo+A1wuECyVqrDSmLt4QQzZPBECV8ANHS5HgGCCSr7E/Lg==
-----END PUBLIC KEY-----
")
    ],
    "cmtype": 2,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  },
  / Reference Value ECT / {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      }
    },
    "element-list": [
      {
        "element-id": "psa.software-component",
        "element-claims": {
          2: [
            [
              "sha-256",
              h'9a271f2a916b0b6ee6cecb2426f0b320
                6ef074578be55d9bc94f6f3fe3ab86aa'
            ]
          ],
          11: "PRoT",
          13: [ 560(h'5378796307535df3ec8d8b15a2e2dc56
                      41419c3d3060cfe32238c0fa973f7aa3') ]
        }
      }
    ],
    "authority": [
      559([
        "sha-256",
        h'482e829ad29ac6ea6eda2d47d1d93a00
          2bf41d9d88710ba972c36e59038f78b3'
      ])
    ],
    "cmtype": 0,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  }
]
]]></artwork>
            </figure>
            <t>The algorithm then moves on to the second <tt>rv-item</tt> (<xref target="ex-rv-item-2"/>), checking its condition against the ACS.
Once again, the ACS-ECT with <tt>cmtype</tt> 2 (evidence) is selected for matching.
This time, the environments match, but the state represented in the <tt>rv-item</tt>'s <tt>element-list</tt> is not (the digest differs).
This results in a no-op on the ACS.</t>
            <t>Next, the <tt>ev</tt> relation is popped from the Staging Area for processing according to the rules described in <xref target="sec-proc-ev-rel"/>.
The condition of the first (and only) <tt>ev-item</tt> (<xref target="ex-ev-item"/>) is then matched against the ACS.
The only applicable ACS-ECT is the one with <tt>cmtype</tt> 2 (evidence).
<cref>
The fact that {{sec-proc-ev-rel}} requires matching against reference values seems incorrect.
</cref>
When compared, the environment in the <tt>ev-item</tt> condition matches that of the ACS-ECT (again, the instance identifier in the ACS-ECT is ignored because it is not present in the <tt>ev-item</tt>), and the matching algorithm proceeds to try to match the respective <tt>element-list</tt>s.
Both lists contain a single element, whose ID and claims are an exact match.
Therefore, all the matching criteria are satisfied and the <tt>ev-item</tt> addition ECT is appended to the ACS.</t>
            <t>The ACS now contains three ECTs, one with <tt>cmtype</tt> 2 (evidence), a second with <tt>cmtype</tt> 0 (reference-value), which corroborates the first with manufacturer authority, and a third one with <tt>cmtype</tt> 1 (endorsements) which adds the PSA certification identifier as an endorsed value for the appraised environment with certifier's authority (<xref target="ex-acs-2"/>).</t>
            <figure anchor="ex-acs-2">
              <name>ACS State after Endorsements Augmentation</name>
              <artwork><![CDATA[
[
  / Evidence ECT / {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      },
      1: 550(h'01
               4ca3e4f50bf248c39787020d68ffd05c
               88767751bf2645ca923f57a98becd296')
    },
    "element-list": [
      {
        "element-id": "psa.software-component",
        "element-claims": {
          2: [
            [
              "sha-256",
              h'9a271f2a916b0b6ee6cecb2426f0b320
                6ef074578be55d9bc94f6f3fe3ab86aa'
            ]
          ],
          11: "PRoT",
          13: [ 560(h'5378796307535df3ec8d8b15a2e2dc56
                      41419c3d3060cfe32238c0fa973f7aa3') ]
        }
      }
    ],
    "authority": [
      554("-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETl4iCZ47zrRbRG0TVf0dw7VFlHtv
18HInYhnmMNybo+A1wuECyVqrDSmLt4QQzZPBECV8ANHS5HgGCCSr7E/Lg==
-----END PUBLIC KEY-----
")
    ],
    "cmtype": 2,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  },
  / Reference Value ECT / {
    "environment": {
      0: {
        0: 560(h'61636d652d696d706c656d656e746174
                 696f6e2d69642d303030303030303031')
      }
    },
    "element-list": [
      {
        "element-id": "psa.software-component",
        "element-claims": {
          2: [
            [
              "sha-256",
              h'9a271f2a916b0b6ee6cecb2426f0b320
                6ef074578be55d9bc94f6f3fe3ab86aa'
            ]
          ],
          11: "PRoT",
          13: [ 560(h'5378796307535df3ec8d8b15a2e2dc56
                      41419c3d3060cfe32238c0fa973f7aa3') ]
        }
      }
    ],
    "authority": [
      559([
        "sha-256",
        h'482e829ad29ac6ea6eda2d47d1d93a00
          2bf41d9d88710ba972c36e59038f78b3'
      ])
    ],
    "cmtype": 0,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  },
  / Endorsed Value ECT / {
    "environment": {
      0: {
        0:
          560(h'61636d652d696d706c656d656e746174
                696f6e2d69642d303030303030303031')
      }
    },
    "element-list": [
      {
        "element-id": "psa.certification",
        "element-claims": {
          100: "1234567890123 - 12345"
        }
      }
    ],
    "authority": [
      559([
        "sha-256",
        h'768ff09154f6aacda857cb175ef29cf9
          d23ef9c38c69efdbf20354dbfd7875b1'
      ])
    ],
    "cmtype": 1,
    "profile": 32("tag:arm.com,2025:psa#1.0.0")
  }
]
]]></artwork>
            </figure>
            <t>At this point, all the relations in the Staging Area have been processed, and the <tt>match_and_augment</tt> algorithm (<xref target="algo-match-and-augment"/>) terminates, returning the computed ACS.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section is to be removed before publishing as an RFC.</t>
      <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: There are three CoRIM libraries under project Veraison.
            </t>
            <ol spacing="normal" type="1"><li>
                <t><eref target="https://github.com/veraison/corim">CoRIM golang library</eref> 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.</t>
              </li>
              <li>
                <t><eref target="https://github.com/veraison/corim-rs">CoRIM rust library</eref> provide a rust implementation of
CoRIM specification.</t>
              </li>
              <li>
                <t><eref target="https://github.com/veraison/cover">CoRIM Processor</eref> provides a library for appraisal of Evidence by processing CoRIMs as outlined in <xref target="sec-corim-processor"/> of this specification.</t>
              </li>
            </ol>
            <t>
In addition to the base CoRIM Libraries, the <eref target="https://github.com/veraison/cocli">cocli package</eref> uses the golang 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/cocli/README.md">https://github.com/veraison/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 -06 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>
              <eref target="https://github.com/veraison/corim-rs/commits/master/">https://github.com/veraison/corim-rs/commits/master/</eref>
              <eref target="https://github.com/veraison/cover/commits/main/">https://github.com/veraison/cover/commits/main/</eref></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-sec">
      <name>Security and Privacy Considerations</name>
      <t>Evidence appraisal is at the core of any RATS protocol flow, mediating all interactions between Attesters and their Relying Parties.
The Verifier is effectively part of the Attesters' and Relying Parties' trusted computing base (TCB).
Any mistake in the appraisal procedure conducted by the Verifier could have security implications.
For instance, it could lead to the subversion of an access control function, which creates a chance for privilege escalation.</t>
      <t>Therefore, the Verifier's code and configuration, especially those of the CoRIM processor, are primary security assets that must be built and maintained as securely as possible.</t>
      <t>The protection of the Verifier system should be considered throughout its entire lifecycle, from design to operation.
This includes the following aspects:</t>
      <ul spacing="normal">
        <li>
          <t>Minimizing implementation complexity (see also <xref section="6.1" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>);</t>
        </li>
        <li>
          <t>Using memory-safe programming languages;</t>
        </li>
        <li>
          <t>Using secure defaults;</t>
        </li>
        <li>
          <t>Minimizing the attack surface by avoiding unnecessary features that could be exploited by attackers;</t>
        </li>
        <li>
          <t>Applying the principle of least privilege to the system's users;</t>
        </li>
        <li>
          <t>Minimizing the potential impact of security breaches by implementing separation of duties in both the software and operational architecture;</t>
        </li>
        <li>
          <t>Conducting regular, automated audits and reviews of the system, such as ensuring that users' privileges are correctly configured and that any new code has been audited and approved by independent parties;</t>
        </li>
        <li>
          <t>Failing securely in the event of errors to avoid compromising the security of the system.</t>
        </li>
      </ul>
      <t>It is critical that appraisal procedures are auditable and reproducible.
The integrity of code and data during execution is an explicit objective, for example, ensuring that the appraisal functions are executed in an attestable trusted execution environment (TEE).</t>
      <t>Please review the Security and Privacy Considerations in Sections <xref target="I-D.ietf-rats-endorsements" section="8" sectionFormat="bare"/> and <xref target="I-D.ietf-rats-endorsements" section="9" sectionFormat="bare"/> of <xref target="I-D.ietf-rats-endorsements"/>; these considerations apply to this document as well.</t>
    </section>
    <section anchor="sec-iana-cons">
      <name>IANA Considerations</name>
      <section anchor="new-cose-header-parameters">
        <name>New COSE Header Parameters</name>
      </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">Reserved for backward compatibility</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-unsigned-corim-map, see <xref target="sec-corim-map"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">502-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-tl-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 (7..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>any</tt></td>
              <td align="left">Earmarked for CoRIM</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-key-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</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</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">tagged-pkix-asn1der-cert-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">563</td>
              <td align="left">
                <tt>tagged-masked-raw-value</tt></td>
              <td align="left">tagged-masked-raw-value, see <xref target="sec-comid-raw-value-types"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">564</td>
              <td align="left">
                <tt>array</tt></td>
              <td align="left">tagged-int-range, see <xref target="sec-comid-int-range"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">565</td>
              <td align="left">
                <tt>array</tt></td>
              <td align="left">tagged-{integer,float}-range, see <xref target="sec-comid-matchers"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">566</td>
              <td align="left">
                <tt>array</tt></td>
              <td align="left">tagged-{integer,float,text,bytes}-set, see <xref target="sec-comid-matchers"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">567-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>CoRIM Map Registry</name>
        <t>This document defines a new registry titled "CoRIM Map".
The registry uses integer values as index values for items in <tt>corim-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-corim-map-items-reg-procedures">
          <name>CoRIM Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoRIM Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-corim-map-items">
          <name>CoRIM Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">id</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">tags</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">dependent-rims</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">profile</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">rim-validity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">entities</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">6-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-corim-entity-map">
        <name>CoRIM Entity Map Registry</name>
        <t>This document defines a new registry titled "CoRIM Entity Map".
The registry uses integer values as index values for items in <tt>corim-entity-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-corim-entity-map-items-reg-procedures">
          <name>CoRIM Entity Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoRIM Entity Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-corim-entity-map-items">
          <name>CoRIM Entity Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Value Type</th>
              <th align="left">Description</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">entity-name</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">Name of the entity responsible for the actions of the role.</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">reg-id</td>
              <td align="left">
                <tt>uri</tt></td>
              <td align="left">A URI associated with the organization that owns the entity name.</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">role</td>
              <td align="left">
                <tt>[ + role-type-choice ]</tt></td>
              <td align="left">A type choice defining the roles that the entity is claiming.</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-corim-signer-map">
        <name>CoRIM Signer Map Registry</name>
        <t>This document defines a new registry titled "CoRIM Signer Map".
The registry uses integer values as index values for items in <tt>corim-signer-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-corim-signer-map-items-reg-procedures">
          <name>CoRIM Signer Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoRIM Signer Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-corim-signer-map-items">
          <name>CoRIM Signer Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">signer-name</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">signer-uri</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid">
        <name>CoMID Map Registry</name>
        <t>This document defines a new registry titled "CoMID Map".
The registry uses integer values as index values for items in <tt>concise-mid-tag</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-map-items-reg-procedures">
          <name>CoMID Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-map-items">
          <name>CoMID Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">language</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">tag-identity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">entities</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">linked-tags</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid-entity-map">
        <name>CoMID Entity Map Registry</name>
        <t>This document defines a new registry titled "CoMID Entity Map".
The registry uses integer values as index values for items in <tt>comid-entity-map</tt> CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-entity-map-items-reg-procedures">
          <name>CoMID Entity Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Entity Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-entity-map-items">
          <name>CoMID Entity Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Value Type</th>
              <th align="left">Description</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">entity-name</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">Name of the entity responsible for the actions of the role.</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">reg-id</td>
              <td align="left">
                <tt>uri</tt></td>
              <td align="left">A URI associated with the organization that owns the entity name.</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">role</td>
              <td align="left">
                <tt>[ + role-type-choice ]</tt></td>
              <td align="left">A type choice defining the roles that the entity is claiming.</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-triples-map">
        <name>CoMID Triples Map Registry</name>
        <t>This document defines a new registry titled "CoMID Triples Map".
The registry uses integer values as index values for items in the <tt>triples-map</tt> CBOR maps in <tt>concise-mid-tag</tt> codepoint 4.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-triples-map-items-reg-procedures">
          <name>CoMID Triples Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-1023</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">1024-65535</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">65536-18446744073709551616</td>
              <td align="left">First come first served</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Triples Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-triples-map-items">
          <name>CoMID Triples Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">reference-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">endorsed-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">identity-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">attest-key-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">dependency-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">membership-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">coswid-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">(reserved)</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">conditional-endorsement-series-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">(reserved)</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">conditional-endorsement-triples</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">11-18446744073709551616</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid-measurement-values-map">
        <name>CoMID Measurement Values Map Registry</name>
        <t>This document defines a new registry titled "CoMID Measurement Values Map".
The registry uses integer values as index values for items in <tt>measurement-values-map</tt>.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-measurement-values-map-items-reg-procedures">
          <name>CoMID Measurement Values Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-1023</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">1024-65535</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">65536-18446744073709551616</td>
              <td align="left">First come first served</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Measurement Values Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-measurement-values-map-items">
          <name>Measurement Values Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">version</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">svn</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">digests</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">flags</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">raw-value</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">raw-value-mask-DEPRECATED</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">mac-addr</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">ip-addr</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">serial-number</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">ueid</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">uuid</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">name</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">(reserved)</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">13</td>
              <td align="left">cryptokeys</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">14</td>
              <td align="left">integrity-registers</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">15</td>
              <td align="left">int-range</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">16</td>
              <td align="left">bool</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">17</td>
              <td align="left">integer</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">18</td>
              <td align="left">text</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">19</td>
              <td align="left">bytes</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">20</td>
              <td align="left">float</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">21-18446744073709551616</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-comid-flags-map">
        <name>CoMID Flags Map Registry</name>
        <t>This document defines a new registry titled "CoMID Flags Map".
The registry uses integer values as index values for items in <tt>measurement-values-map</tt> codepoint 3.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-comid-flags-map-items-reg-procedures">
          <name>CoMID Flags Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-1023</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">1024-65535</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">65536-18446744073709551616</td>
              <td align="left">First come first served</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoMID Flags Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-comid-flags-map-items">
          <name>Flags Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">is-configured</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">is-secure</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">is-recovery</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">is-debug</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">is-replay-protected</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">is-integrity-protected</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">is-runtime-meas</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">is-immutable</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">is-tcb</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">is-confidentiality-protected</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">is-runtime-updatable</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">11-18446744073709551616</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-iana-cotl">
        <name>CoTL Map Registry</name>
        <t>This document defines a new registry titled "CoTL Map".
The registry uses integer values as index values for items in 'concise-tl-tag' CBOR maps.</t>
        <t>Future registrations for this registry are to be made based on <xref target="RFC8126"/> as follows:</t>
        <table anchor="tbl-iana-cotl-map-items-reg-procedures">
          <name>CoTL Map Items Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedures</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-127</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">128-255</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>All negative values are reserved for Private Use.</t>
        <t>Initial registrations for the "CoTL Map" registry are provided below.
Assignments consist of an integer index value, the item name, and a reference to the defining specification.</t>
        <table anchor="tbl-iana-tl-map-items">
          <name>CoTL Map Items Initial Registrations</name>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Item Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">tag-identity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">tags-list</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">tl-validity</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </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">rim+cbor</td>
              <td align="left">application/rim+cbor</td>
              <td align="left">RFCthis, (<xref target="sec-mt-rim-cbor"/>)</td>
            </tr>
            <tr>
              <td align="left">rim+cose</td>
              <td align="left">application/rim+cose</td>
              <td align="left">RFCthis, (<xref target="sec-mt-rim-cose"/>)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sec-mt-rim-cbor">
          <name>rim+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>rim+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></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>.corim</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person and 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>no</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-mt-rim-cose">
          <name>rim+cose</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>rim+cose</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a (cose-type is explicitly not supported, as it is understood to be "cose-sign1")</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 CoRIM payloads protected using COSE Sign1 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>D2 84</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>.corim</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person and 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>no</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/rim+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD1</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">application/rim+cose</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-swid-version-scheme">
        <name>New Software ID Version Scheme Value</name>
        <t>IANA is requested to register the following Version Scheme Name in the "Software ID Version Scheme Values" registry within the "Software ID Values" <xref target="IANA.software-id"/> registry group.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Index</th>
              <th align="left">Version Scheme Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">5</td>
              <td align="left">binary</td>
              <td align="left">
                <xref target="sec-comid-version"/> of RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9562">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author fullname="K. Davis" initials="K." surname="Davis"/>
            <author fullname="B. Peabody" initials="B." surname="Peabody"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="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="RFC9164">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for IPv4 and IPv6 Addresses and Prefixes</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This specification defines two Concise Binary Object Representation (CBOR) tags for use with IPv6 and IPv4 addresses and prefixes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9164"/>
          <seriesInfo name="DOI" value="10.17487/RFC9164"/>
        </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="RFC9393">
          <front>
            <title>Concise Software Identification Tags</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay"/>
            <author fullname="C. Schmidt" initials="C." surname="Schmidt"/>
            <author fullname="D. Waltermire" initials="D." surname="Waltermire"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles. SWID tag representations can be too large for devices with network and storage constraints. This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags. CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9393"/>
          <seriesInfo name="DOI" value="10.17487/RFC9393"/>
        </reference>
        <reference anchor="RFC9597">
          <front>
            <title>CBOR Web Token (CWT) Claims in COSE Headers</title>
            <author fullname="T. Looker" initials="T." surname="Looker"/>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document describes how to include CBOR Web Token (CWT) claims in the header parameters of any CBOR Object Signing and Encryption (COSE) structure. This functionality helps to facilitate applications that wish to make use of CWT claims in encrypted COSE structures and/or COSE structures featuring detached signatures, while having some of those claims be available before decryption and/or without inspecting the detached payload. Another use case is using CWT claims with payloads that are not CWT Claims Sets, including payloads that are not CBOR at all.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9597"/>
          <seriesInfo name="DOI" value="10.17487/RFC9597"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC9711">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
              <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9711"/>
          <seriesInfo name="DOI" value="10.17487/RFC9711"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="11" month="December" year="2025"/>
            <abstract>
              <t>   The Conceptual Messages introduced by the RATS architecture (RFC
   9334) are protocol-agnostic data units that are conveyed between RATS
   roles during remote attestation procedures.  Conceptual Messages
   describe the meaning and function of such data units within RATS data
   flows without specifying a wire format, encoding, transport
   mechanism, or processing details.  The initial set of Conceptual
   Messages is defined in Section 8 of RFC 9334 and includes Evidence,
   Attestation Results, Endorsements, Reference Values, and Appraisal
   Policies.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-23"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat-measured-component">
          <front>
            <title>Entity Attestation Token (EAT) Measured Component</title>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="20" month="February" year="2026"/>
            <abstract>
              <t>   The term "measured component" refers to an object within the
   attester's target environment whose state can be sampled and
   typically digested using a cryptographic hash function.  Examples of
   measured components include firmware stored in flash memory, software
   loaded into memory at start time, data stored in a file system, or
   values in a CPU register.  This document provides the information
   model for the "measured component" and two associated data models.
   This separation is intentional: the JSON and CBOR serializations,
   coupled with the media types and associated Constrained Application
   Protocol (CoAP) Content-Formats, enable the immediate use of the
   semantics within the Entity Attestation Token (EAT) framework.
   Meanwhile, the information model can be reused in future
   specifications to provide additional serializations, for example,
   using ASN.1.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-measured-component-12"/>
        </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">
          <front>
            <title>ASN.1 encoding rules: Specification of basic encoding Rules (BER), Canonical encoding rules (CER) and Distinguished encoding rules (DER)</title>
            <author>
              <organization>International Telephone and Telegraph
Consultative Committee</organization>
            </author>
            <date month="July" year="2002"/>
          </front>
          <seriesInfo name="CCITT" value="Recommendation X.690"/>
        </reference>
        <reference anchor="RFC9995">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Hash Envelope</title>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>This document defines new CBOR Object Signing and Encryption (COSE) header parameters for signaling a payload as an output of a hash function. This mechanism enables faster validation, as access to the original payload is not required for signature validation. Additionally, hints of the hashed payload's content format and availability are defined, providing references to optional discovery mechanisms that can help to find the original payload content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9995"/>
          <seriesInfo name="DOI" value="10.17487/RFC9995"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </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>
        <reference anchor="IANA.software-id" target="https://www.iana.org/assignments/software-id">
          <front>
            <title>Software ID Values</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="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="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.fdb-rats-psa-endorsements">
          <front>
            <title>A CoRIM Profile for Arm's Platform Security Architecture (PSA) 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="29" month="June" year="2026"/>
            <abstract>
              <t>   PSA Endorsements comprise reference values, endorsed 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 PSA Endorsements as a profile of
   the CoRIM data model.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-fdb-rats-psa-endorsements-10"/>
        </reference>
        <reference anchor="I-D.ydb-rats-cca-endorsements">
          <front>
            <title>A CoRIM Profile for Arm's Confidential Computing Architecture (CCA) Endorsements</title>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="26" month="June" year="2026"/>
            <abstract>
              <t>   Arm Confidential Computing Architecture (CCA) Endorsements comprise
   reference values and cryptographic key material that a Verifier needs
   to appraise Attestation Evidence produced by an Arm CCA system.

   This memo defines CCA Endorsements as a profile of the CoRIM data
   model.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/yogeshbdeshpande/draft-cca-rats-endorsements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ydb-rats-cca-endorsements-04"/>
        </reference>
        <reference anchor="RFC9783">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="S. Frost" initials="S." surname="Frost"/>
            <author fullname="M. Brossard" initials="M." surname="Brossard"/>
            <author fullname="A. Shaw" initials="A." surname="Shaw"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>Arm's Platform Security Architecture (PSA) is a family of hardware and firmware security specifications, along with open-source reference implementations, aimed at helping device makers and chip manufacturers integrate best-practice security into their products. Devices that comply with PSA can generate attestation tokens as described in this document, which serve as the foundation for various protocols, including secure provisioning and network access control. This document specifies the structure and semantics of the PSA attestation token.</t>
              <t>The PSA attestation token is a profile of the Entity Attestation Token (EAT). This specification describes the claims used in an attestation token generated by PSA-compliant systems, how these claims are serialized for transmission, and how they are cryptographically protected.</t>
              <t>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="RFC" value="9783"/>
          <seriesInfo name="DOI" value="10.17487/RFC9783"/>
        </reference>
        <reference anchor="I-D.ietf-rats-endorsements">
          <front>
            <title>Remote Attestation Procedures (RATS) Endorsements</title>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Armidale Consulting</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>NVIDIA</organization>
            </author>
            <date day="14" month="October" year="2026"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture (RFC
   9334), a Verifier accepts Evidence and uses Appraisal Policy for
   Evidence, typically with additional input from Endorsements and
   Reference Values, to generate Attestation Results in formats that are
   useful for Relying Parties.  This document illustrates the purpose
   and role of Endorsements and discusses some considerations in the
   choice of message format for Endorsements in the scope of the RATS
   architecture.

   This document does not aim to define a conceptual message format for
   Endorsements and Reference Values.  Instead, it updates RFC 9334 by
   refining the description of Endorsements and Reference Values.
   Specifically, this document classifies the RATS conceptual messages
   as actual state, reference state, or appraisal policy, and adds
   considerations on conditionally endorsed values, endorsing
   verification keys, timeliness, and multiple Endorsements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-13"/>
        </reference>
        <reference anchor="I-D.ietf-rats-evidence-trans">
          <front>
            <title>Evidence Transformations</title>
            <author fullname="Fabrizio Damato" initials="F." surname="Damato">
              <organization>AMD</organization>
            </author>
            <author fullname="Andrew Draper" initials="A." surname="Draper">
              <organization>Independent</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <date day="30" month="October" year="2026"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester to decide if continued
   interaction is warrented.  Evidence structures can vary making
   appraisals challenging for Verifiers.  Verifiers need to understand
   Evidence encoding formats and some of the Evidence semantics to
   appraise it.  Consequently, Evidence may require format
   transformation to an internal representation that preserves original
   semantics.  This document specifies Evidence transformation methods
   for DiceTcbInfo, concise evidence, and SPDM measurements block
   structures.  These Evidence structures are converted to the CoRIM
   internal representation and follow CoRIM defined appraisal
   procedures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-evidence-trans-03"/>
        </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="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="27" month="July" year="2026"/>
            <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-03"/>
        </reference>
        <reference anchor="DICE.cert" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Certificate-Profiles-v1.1_pub.pdf">
          <front>
            <title>DICE Certificate Profiles</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2025" month="April"/>
          </front>
          <seriesInfo name="Version 1.1" value=""/>
        </reference>
        <reference anchor="DICE.endorsement" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-Endorsement-Architecture-for-Devices-V1-R38_pub.pdf">
          <front>
            <title>DICE Endorsement Architecture for Devices</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2022" month="November"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.38" value=""/>
        </reference>
        <reference anchor="TNC.Arch" target="https://trustedcomputinggroup.org/wp-content/uploads/TNC_Architecture_v1_1_r2.pdf">
          <front>
            <title>TCG Trusted Network Connect TNC Architecture for Interoperability</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2006" month="May"/>
          </front>
          <seriesInfo name="Specification Version 1.1 Revision 2" value=""/>
        </reference>
        <reference anchor="TPM2.Part1" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
          <front>
            <title>Trusted Platform Module Library, Part 1: Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="Family &quot;2.0&quot;, Level 00, Revision 01.83" value=""/>
        </reference>
        <reference anchor="IEEE-802.OandA">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture</title>
            <author>
              <organization/>
            </author>
            <date month="July" year="2014"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2014.6847097"/>
          <seriesInfo name="ISBN" value="[&quot;9780738192192&quot;]"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="SPDM" target="https://www.dmtf.org/dsp/DSP0274">
          <front>
            <title>Security Protocol and Data Model (SPDM) Specification</title>
            <author>
              <organization>Distributed Management Task Force</organization>
            </author>
            <date year="2026" month="July"/>
          </front>
          <seriesInfo name="Version 1.4.1" value=""/>
        </reference>
        <reference anchor="W3C.rdf11-primer" target="https://www.w3.org/TR/rdf11-primer/">
          <front>
            <title>RDF 1.1 Primer</title>
            <author/>
          </front>
          <seriesInfo name="W3C NOTE" value="rdf11-primer"/>
          <seriesInfo name="W3C" value="rdf11-primer"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
    </references>
    <?line 5228?>

<section anchor="sec-corim-cddl">
      <name>Base CoRIM CDDL</name>
      <sourcecode type="cddl"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

corim = concise-rim-type-choice
concise-rim-type-choice /= tagged-unsigned-corim-map / signed-corim
concise-tl-tag = {
  &(tag-identity: 0) => tag-identity-map,
  &(tags-list: 1) => [+ tag-identity-map],
  &(tl-validity: 2) => validity-map,
}
$concise-tag-type-choice /= tagged-concise-swid-tag / tagged-concise\
                                     -mid-tag / tagged-concise-tl-tag
corim-entity-map = entity-map<$corim-role-type-choice, $$corim-\
                                                entity-map-extension>
$corim-id-type-choice /= tstr / uuid-type
corim-locator-map = {
  &(href: 0) => uri / [+ uri],
  ? &(thumbprint: 1) => eatmc.digest / [+ eatmc.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,
}
unsigned-corim-map = corim-map
corim-meta-map = {
  &(signer: 0) => corim-signer-map,
  ? &(signature-validity: 1) => validity-map,
}
$corim-role-type-choice /= &(manifest-creator: 1) / &(manifest-\
                                                           signer: 2)
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-unsigned-corim-map / hash-envelope-\
                                                        digest / nil,
  signature: bstr,
]
hash-envelope-digest = bstr
COSE-Sign-corim = [
  protected: bstr .cbor protected-corim-header-map,
  unprotected: unprotected-corim-header-map,
  payload: bstr .cbor tagged-unsigned-corim-map / hash-envelope-\
                                                        digest / nil,
  signature: [+ signature-structure],
]
$profile-type-choice /= uri / tagged-oid-type
cwt-claims = {
  &(iss: 1) => tstr,
  ? &(sub: 2) => tstr,
  ? &(exp: 4) => int / float,
  ? &(nbf: 5) => int / float,
  * int => any,
}
protected-corim-header-map = protected-corim-header-map-inline / \
                             protected-corim-header-map-hash-envelope
protected-corim-header-map-inline = {
  &(alg: 1) => int,
  &(content-type: 3) => "application/rim+cbor",
  meta-group,
  * cose-label => cose-value,
}
protected-corim-header-map-hash-envelope = {
  &(alg: 1) => int,
  &(payload_hash_alg: 258) => int,
  &(payload_preimage_content_type: 259) => "application/rim+cbor",
  ? &(payload_location: 260) => tstr,
  meta-group,
  * cose-label => cose-value,
}
meta-group = ((
        corim-meta-identity,
        ? cwt-claims-identity,
      ) // cwt-claims-identity)
corim-meta-identity = (&(corim-meta: 8) => bstr .cbor corim-meta-map)
cwt-claims-identity = (&(CWT-Claims: 15) => cwt-claims)
signed-corim = #6.18(COSE-Sign1-corim) / #6.98(COSE-Sign-corim)
tagged-concise-swid-tag = #6.505(bytes .cbor coswid.concise-swid-tag)
signature-structure = [
  protected: bstr .cbor protected-corim-header-map,
  unprotected: unprotected-corim-header-map,
  signature: bstr,
]
tagged-concise-mid-tag = #6.506(bytes .cbor concise-mid-tag)
tagged-concise-tl-tag = #6.508(bytes .cbor concise-tl-tag)
tagged-unsigned-corim-map = #6.501(unsigned-corim-map)
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,
}
attest-key-triple-record = [
  environment: environment-map,
  key-list: [+ $crypto-key-type-choice],
  ? conditions: non-empty<{
            ? &(mkey: 0) => $measured-element-type-choice,
            ? &(authorized-by: 1) => [+ $crypto-key-type-choice],
}>,
]
$class-id-type-choice /= tagged-oid-type / tagged-uuid-type / 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) / &(creator: 1) / &(\
                                                       maintainer: 2)
conditional-endorsement-series-triple-record = [
  common-condition: [
        environment: environment-map,
        claims-list: [* measurement-map],
        ? authorized-by: [+ $crypto-key-type-choice],
],
  series: [+ conditional-series-record],
]
conditional-series-record = [
  condition: [+ measurement-map],
  addition: [+ measurement-map],
]
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,
  [+ coswid.tag-id],
]
$crypto-key-type-choice /= tagged-pkix-base64-key-type / tagged-pkix\
-base64-cert-type / tagged-pkix-base64-cert-path-type / tagged-cose-\
key-type / tagged-pkix-asn1der-cert-type / tagged-key-thumbprint-\
type / tagged-cert-thumbprint-type / tagged-cert-path-thumbprint-\
                                                  type / tagged-bytes
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-key-thumbprint-type = #6.557(eatmc.digest)
tagged-cose-key-type = #6.558(COSE_Key)
tagged-cert-thumbprint-type = #6.559(eatmc.digest)
tagged-cert-path-thumbprint-type = #6.561(eatmc.digest)
tagged-pkix-asn1der-cert-type = #6.562(bstr)
trust-dependency-triple-record = [
  domain-id: domain-type,
  trustees: [+ domain-type],
]
domain-membership-triple-record = [
  domain-id: domain-type,
  members: [+ domain-type],
]
conditional-endorsement-triple-record = [
  conditions: [+ stateful-environment-record],
  endorsements: [+ endorsed-triple-record],
]
domain-type = environment-map
endorsed-triple-record = [
  condition: environment-map,
  endorsement: [+ 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 = non-empty<{
    ? &(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,
    ? &(is-runtime-updatable: 10) => bool,
    * $$flags-map-extension,
}>
$group-id-type-choice /= tagged-uuid-type / tagged-bytes
identity-triple-record = [
  environment: environment-map,
  key-list: [+ $crypto-key-type-choice],
  ? conditions: non-empty<{
            ? &(mkey: 0) => $measured-element-type-choice,
            ? &(authorized-by: 1) => [+ $crypto-key-type-choice],
}>,
]
$instance-id-type-choice /= tagged-ueid-type / tagged-uuid-type / \
tagged-bytes / tagged-pkix-base64-key-type / tagged-pkix-base64-cert\
-type / tagged-cose-key-type / tagged-key-thumbprint-type / tagged-\
                 cert-thumbprint-type / tagged-pkix-asn1der-cert-type
ip-addr-type-choice /= cbor-ip.ipv4-address / cbor-ip.ipv6-address
int-range-type-choice = int / tagged-int-range
int-range = [
  min: int / negative-inf,
  max: int / positive-inf,
]
tagged-int-range = #6.564(int-range)
positive-inf = null
negative-inf = null
tagged-integer-set = #6.566([2*int])
tagged-float-set = #6.566([2*float])
tagged-text-set = #6.566([2*text])
tagged-bytes-set = #6.566([2*bytes])
tagged-integer-range = #6.565([
    int / null,
    int / null,
])
tagged-float-range = #6.565([
    float / null,
    float / null,
])
bool-matcher = bool
integer-matcher = int / tagged-integer-range / tagged-integer-set
float-matcher = float / tagged-float-range / tagged-float-set
text-matcher = text / tagged-text-set
bytes-matcher = bytes / tagged-bytes-set
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 / tagged-uuid-type \
                                                        / uint / tstr
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) => digests-type,
    ? &(flags: 3) => flags-map,
    ? (
                  &(raw-value: 4) => $raw-value-type-choice,
                  ? &(raw-value-mask-DEPRECATED: 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,
    ? &(int-range: 15) => int-range-type-choice,
    ? &(bool: 16) => bool-matcher,
    ? &(integer: 17) => integer-matcher,
    ? &(text: 18) => text-matcher,
    ? &(bytes: 19) => bytes-matcher,
    ? &(float: 20) => float-matcher,
    * $$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 / tagged-masked-raw-value
raw-value-mask-type = bytes
tagged-masked-raw-value = #6.563([
    value: bytes,
    mask: bytes,
])
reference-triple-record = [
  ref-env: environment-map,
  ref-claims: [+ measurement-map],
]
stateful-environment-record = [
  environment: environment-map,
  claims-list: [+ 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 = svn / tagged-svn / tagged-min-svn
$tag-id-type-choice /= tstr / uuid-type
tag-identity-map = {
  &(tag-id: 0) => $tag-id-type-choice,
  ? &(tag-version: 1) => tag-version-type,
}
$tag-rel-type-choice /= &(supplements: 0) / &(replaces: 1)
tag-version-type = uint
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) => [+ trust-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: 10) => [+ conditional-\
                                          endorsement-triple-record],
    * $$triples-map-extension,
}>
ueid-type = bytes .size (7 .. 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) => coswid.$version-scheme,
}
digests-type = [+ eatmc.digest]
integrity-register-id-type-choice = uint / text
integrity-registers = {+ integrity-register-id-type-choice => \
                                                        digests-type}
$$measurement-values-map-extension //= (&(psa-cert-num: 100) => psa-\
                                                       cert-num-type)
psa-cert-num-type = text .regexp "[0-9]{13} - [0-9]{5}"
eatmc.measured-component = {
  eatmc.component-id-label => eatmc.component-id,
  eatmc.measurement,
  ? eatmc.authorities-label => [+ eatmc.authority-id-type],
  ? eatmc.flags-label => eatmc.flags-type,
}
eatmc.measurement //= (eatmc.digested-measurement-label => eatmc.\
                      digest // eatmc.raw-measurement-label => bytes)
eatmc.authority-id-type = eatmc.eat.JC<eatmc.bytes-b64u, bytes>
eatmc.flags-type = eatmc.eat.JC<eatmc.bytes8-b64u, eatmc.bytes8>
eatmc.component-id = [
  name: text,
  ? version: eatmc.version,
]
eatmc.version = [
  val: text,
  ? scheme: eatmc.coswid.$version-scheme,
]
eatmc.digest = [
  alg: int / text,
  val: eatmc.digest-value-type,
]
eatmc.digest-value-type = eatmc.eat.JC<eatmc.bytes-b64u, bytes>
eatmc.bytes-b64u = text .b64u bytes
eatmc.bytes8 = bytes .size 8
eatmc.bytes8-b64u = text .b64u eatmc.bytes8
eatmc.component-id-label = eatmc.eat.JC<"id", 1>
eatmc.digested-measurement-label = eatmc.eat.JC<"digested-\
                                                     measurement", 2>
eatmc.raw-measurement-label = eatmc.eat.JC<"raw-measurement", 5>
eatmc.authorities-label = eatmc.eat.JC<"authorities", 3>
eatmc.flags-label = eatmc.eat.JC<"flags", 4>
eatmc.mc-cbor = bytes .cbor eatmc.measured-component
eatmc.mc-json = text .json eatmc.measured-component
eatmc.$measurements-body-cbor /= eatmc.mc-cbor / eatmc.mc-json
eatmc.$measurements-body-json /= eatmc.mc-json / text .b64u eatmc.mc\
                                                                -cbor
eatmc.eat.JSON-ONLY<J> = J .feature "json"
eatmc.eat.CBOR-ONLY<C> = C .feature "cbor"
eatmc.eat.JC<J, C> = eatmc.eat.JSON-ONLY<J> / eatmc.eat.CBOR-ONLY<C>
eatmc.coswid.$version-scheme /= eatmc.coswid.multipartnumeric / \
eatmc.coswid.multipartnumeric-suffix / eatmc.coswid.alphanumeric / \
              eatmc.coswid.decimal / eatmc.coswid.semver / int / text
eatmc.coswid.multipartnumeric = 1
eatmc.coswid.multipartnumeric-suffix = 2
eatmc.coswid.alphanumeric = 3
eatmc.coswid.decimal = 4
eatmc.coswid.semver = 16384
coswid.concise-swid-tag = {
  coswid.tag-id => text / bstr .size 16,
  coswid.tag-version => integer,
  ? coswid.corpus => bool,
  ? coswid.patch => bool,
  ? coswid.supplemental => bool,
  coswid.software-name => text,
  ? coswid.software-version => text,
  ? coswid.version-scheme => coswid.$version-scheme,
  ? coswid.media => text,
  ? coswid.software-meta => coswid.one-or-more<coswid.software-meta-\
                                                              entry>,
  coswid.entity => coswid.one-or-more<coswid.entity-entry>,
  ? coswid.link => coswid.one-or-more<coswid.link-entry>,
  ? coswid.payload-or-evidence,
  * $$coswid-extension,
  coswid.global-attributes,
}
coswid.tag-id = 0
coswid.$version-scheme /= coswid.multipartnumeric / coswid.\
multipartnumeric-suffix / coswid.alphanumeric / coswid.decimal / \
                                           coswid.semver / int / text
coswid.one-or-more<T> = T / [2*T]
coswid.tag-version = 12
coswid.corpus = 8
coswid.patch = 9
coswid.supplemental = 11
coswid.software-name = 1
coswid.software-version = 13
coswid.version-scheme = 14
coswid.media = 10
coswid.software-meta = 5
coswid.software-meta-entry = {
  ? coswid.activation-status => text,
  ? coswid.channel-type => text,
  ? coswid.colloquial-version => text,
  ? coswid.description => text,
  ? coswid.edition => text,
  ? coswid.entitlement-data-required => bool,
  ? coswid.entitlement-key => text,
  ? coswid.generator => text / bstr .size 16,
  ? coswid.persistent-id => text,
  ? coswid.product => text,
  ? coswid.product-family => text,
  ? coswid.revision => text,
  ? coswid.summary => text,
  ? coswid.unspsc-code => text,
  ? coswid.unspsc-version => text,
  * $$software-meta-extension,
  coswid.global-attributes,
}
coswid.entity = 2
coswid.entity-entry = {
  coswid.entity-name => text,
  ? coswid.reg-id => coswid.any-uri,
  coswid.role => coswid.one-or-more<coswid.$role>,
  ? coswid.thumbprint => coswid.hash-entry,
  * $$entity-extension,
  coswid.global-attributes,
}
coswid.link = 4
coswid.link-entry = {
  ? coswid.artifact => text,
  coswid.href => coswid.any-uri,
  ? coswid.media => text,
  ? coswid.ownership => coswid.$ownership,
  coswid.rel => coswid.$rel,
  ? coswid.media-type => text,
  ? coswid.use => coswid.$use,
  * $$link-extension,
  coswid.global-attributes,
}
coswid.payload-or-evidence //= (coswid.payload => coswid.payload-\
                   entry // coswid.evidence => coswid.evidence-entry)
coswid.global-attributes = (
  ? coswid.lang => text,
  * coswid.any-attribute,
  )
coswid.multipartnumeric = 1
coswid.multipartnumeric-suffix = 2
coswid.alphanumeric = 3
coswid.decimal = 4
coswid.semver = 16384
coswid.activation-status = 43
coswid.channel-type = 44
coswid.colloquial-version = 45
coswid.description = 46
coswid.edition = 47
coswid.entitlement-data-required = 48
coswid.entitlement-key = 49
coswid.generator = 50
coswid.persistent-id = 51
coswid.product = 52
coswid.product-family = 53
coswid.revision = 54
coswid.summary = 55
coswid.unspsc-code = 56
coswid.unspsc-version = 57
coswid.entity-name = 31
coswid.reg-id = 32
coswid.any-uri = uri
coswid.role = 33
coswid.$role /= coswid.tag-creator / coswid.software-creator / \
coswid.aggregator / coswid.distributor / coswid.licensor / coswid.\
                                              maintainer / int / text
coswid.thumbprint = 34
coswid.hash-entry = [
  hash-alg-id: int,
  hash-value: bytes,
]
coswid.artifact = 37
coswid.href = 38
coswid.ownership = 39
coswid.$ownership /= coswid.shared / coswid.private / coswid.\
                                                 abandon / int / text
coswid.rel = 40
coswid.$rel /= coswid.ancestor / coswid.component / coswid.feature \
/ coswid.installationmedia / coswid.packageinstaller / coswid.\
parent / coswid.patches / coswid.requires / coswid.see-also / coswid\
             .supersedes / coswid.supplemental / -256 .. 65536 / text
coswid.media-type = 41
coswid.use = 42
coswid.$use /= coswid.optional / coswid.required / coswid.\
                                             recommended / int / text
coswid.payload = 6
coswid.payload-entry = {
  coswid.resource-collection,
  * $$payload-extension,
  coswid.global-attributes,
}
coswid.evidence = 3
coswid.evidence-entry = {
  coswid.resource-collection,
  ? coswid.date => coswid.integer-time,
  ? coswid.device-id => text,
  ? coswid.location => text,
  * $$evidence-extension,
  coswid.global-attributes,
}
coswid.lang = 15
coswid.any-attribute = (coswid.label => coswid.one-or-more<text> / \
                                             coswid.one-or-more<int>)
coswid.tag-creator = 1
coswid.software-creator = 2
coswid.aggregator = 3
coswid.distributor = 4
coswid.licensor = 5
coswid.maintainer = 6
coswid.shared = 3
coswid.private = 2
coswid.abandon = 1
coswid.ancestor = 1
coswid.component = 2
coswid.feature = 3
coswid.installationmedia = 4
coswid.packageinstaller = 5
coswid.parent = 6
coswid.patches = 7
coswid.requires = 8
coswid.see-also = 9
coswid.supersedes = 10
coswid.optional = 1
coswid.required = 2
coswid.recommended = 3
coswid.resource-collection = (
  coswid.path-elements-group,
  ? coswid.process => coswid.one-or-more<coswid.process-entry>,
  ? coswid.resource => coswid.one-or-more<coswid.resource-entry>,
  * $$resource-collection-extension,
  )
coswid.date = 35
coswid.integer-time = #6.1(int)
coswid.device-id = 36
coswid.location = 23
coswid.label = text / int
coswid.path-elements-group = (
  ? coswid.directory => coswid.one-or-more<coswid.directory-entry>,
  ? coswid.file => coswid.one-or-more<coswid.file-entry>,
  )
coswid.process = 18
coswid.process-entry = {
  coswid.process-name => text,
  ? coswid.pid => integer,
  * $$process-extension,
  coswid.global-attributes,
}
coswid.resource = 19
coswid.resource-entry = {
  coswid.type => text,
  * $$resource-extension,
  coswid.global-attributes,
}
coswid.directory = 16
coswid.directory-entry = {
  coswid.filesystem-item,
  ? coswid.path-elements => {coswid.path-elements-group},
  * $$directory-extension,
  coswid.global-attributes,
}
coswid.file = 17
coswid.file-entry = {
  coswid.filesystem-item,
  ? coswid.size => uint,
  ? coswid.file-version => text,
  ? coswid.hash => coswid.hash-entry,
  * $$file-extension,
  coswid.global-attributes,
}
coswid.process-name = 27
coswid.pid = 28
coswid.type = 29
coswid.filesystem-item = (
  ? coswid.key => bool,
  ? coswid.location => text,
  coswid.fs-name => text,
  ? coswid.root => text,
  )
coswid.path-elements = 26
coswid.size = 20
coswid.file-version = 21
coswid.hash = 7
coswid.key = 22
coswid.fs-name = 24
coswid.root = 25
cbor-ip.ipv4-address = bytes .size 4
cbor-ip.ipv6-address = bytes .size 16
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the following people for their review and comments on this document:
<contact fullname="Greg Kostal"/>,
<contact fullname="Carl Wallace"/>,
<contact fullname="Hannes Tschofenig"/>,
<contact fullname="Jag Raman"/>,
<contact fullname="Giri Mandyam"/>,
<contact fullname="Jeremy O'Donoghue"/>,
<contact fullname="Michael Richardson"/>,
<contact fullname="Dhawal Kumar"/>,
<contact fullname="Spencer Gilson"/>,
and
<contact fullname="Sergei Trofimov"/>.</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>
          <email>cabo@tzi.org</email>
        </address>
      </contact>
      <t>Carsten Bormann contributed to the CDDL specifications and the IANA considerations.</t>
      <contact initials="A." surname="Draper" fullname="Andrew Draper">
        <organization>Altera</organization>
        <address>
          <email>andrew.draper@altera.com</email>
        </address>
      </contact>
      <t>Andrew contributed the concept, description, and semantics of conditional endorsements as well as consistent contribution to weekly reviews of others' edits.</t>
      <contact initials="D." surname="Glaze" fullname="Dionna Glaze">
        <organization>Google LLC</organization>
        <address>
          <email>dionnaglaze@google.com</email>
        </address>
      </contact>
      <t>Dionna contributed many clarifying questions and disambiguations to the semantics of attestation appraisal as well as consistent contribution to weekly reviews of others' edits.</t>
      <contact initials="S." surname="Bellock" fullname="Steven Bellock">
        <organization>NVIDIA</organization>
        <address>
          <email>sbellock@nvidia.com</email>
        </address>
      </contact>
      <t>Steven contributed a thorough review of the specification, with many fixes and clarifications to the CDDL, IANA considerations, Reference Verifier pseudocode and normative text.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
mk/wyS6YyD1ZxMMO8gKx6Lt7UR/SEh4USUXDP4xlbzipGyr3bcjR3TA8d8Of
5217tN0fdKXdnw2u5IDC7uiUM3vbsBWLNrwI64e04UunbKwj/myEVT02Qs61
exhx0piv1go0nyC73NOGZ/md7X1nJyWY7OytI4CQRFFzaaUEjVrJ4S7Yvh9E
7doQl/g/OZ1pRTRDZPv7Tzf9/id2/uoBeEqe7D7NBu5//YM8O8gH2e7g0ePB
zuDpXrZt93y3d/HIfTp48uTxznbPLeJuf+8g33+6vffkAlwtsts/0AB5izf6
IwhAcaPa5g/Yx7lBCqeTXA6z2chpgKPW7vbu/qE7AL/b6Wx3tje2qpef8h25
/F4go5hdg++YrRLuezG+cAjlb3zkV+Uj9zZY3tNC+Rsf+Y2PfCE+sqvosMQp
UoyEQQXCmpUsZcqmIvD2hMOosWpky6AOQnA+xFMZtzS53L2UJdENoYScENlA
8MbQbC9jd8TSvNSKXDVBPzDyvJf/UBAOpb+cpT8W/vjPZYJeQs5Dh7GV81Yw
YyK4n4kWmCRqjkzl2NAH0Zn41IN0n7Pkz5NRcOt4dzMY8X359yoO3qyxc/0D
BcDYQlVrkvps69OnGJo+wUkEf/0Qc3ch3FU0ux0TcDC0T6bWe9Dql6PUenvL
KiLd2d5ex6CS2AEddOrKii+tGrq/egA2iIvtpzv7jnKzrD/Inuw/7vd2Hu/n
F7tP+xdPg8EOdvfyC0dRT/oHT/OLQe/CCSn7j9y/A0ei+z1jBfthqzJMvcB2
9KN7XWFMbuFFxrw4FIc3JeZ4q5mvc6Hdpq4zk24v95ex18T3V1l/gdn7Jn17
hfYcCfKzEXN6c+CVwl1Ft1SW8y213qWUCKlMawj/vIKb0JGTe/f3obPtnbi5
R/1sL390sb/taPXRk/7eU0eo27vbA6D6wfZ+P37eCWUHjx/v77jHDx7t97On
Thzff5w9dRy+72S7A+78f6BW8pt1w//7w1Jh/9HmRht+vjn58+nr5tvvvnl5
etz8y8nf8MPGqxfvb05u/vbtXyb/cfrTf24fH/3b30759+dH/9Z//m+XRyfn
w0fF8X88evzT7F3v3Z+3z7+/2B7cPP7+xfDb+XVj58m3p+O/XY1Hr17f9iZ/
ONq5WZwc337/X7PnZ6OX80f/9m8//cfbb06Ov39y9Prbs/1vL/98fHw2e3zy
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

-->

</rfc>
