<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.36 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-corim-02" category="std" consensus="true" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="CoRIM">Concise Reference Integrity Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-02"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>arm</organization>
      <address>
        <email>Thomas.Fossati@arm.com</email>
      </address>
    </author>
    <author initials="Y." surname="Deshpande" fullname="Yogesh Deshpande">
      <organization>arm</organization>
      <address>
        <email>yogesh.deshpande@arm.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel</organization>
      <address>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>RIM, RATS, attestation, verifier, supply chain</keyword>
    <abstract>
      <?line 106?>

<t>Remote Attestation Procedures (RATS) enable Relying Parties to assess the
trustworthiness of a remote Attester and therefore to decide whether to engage
in secure interactions with it. Evidence about trustworthiness can be rather
complex and it is deemed unrealistic that every Relying Party is capable of the
appraisal of Evidence. Therefore that burden is typically offloaded to a
Verifier. In order to conduct Evidence appraisal, a Verifier requires not only
fresh Evidence from an Attester, but also trusted Endorsements and Reference
Values from Endorsers and Reference Value Providers, such as manufacturers,
distributors, or device owners. This document specifies the information elements for
representing Endorsements and Reference Values in CBOR format.</t>
    </abstract>
    <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 119?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In order to conduct Evidence appraisal, a Verifier requires not only fresh Evidence from an Attester, but also trusted Endorsements (e.g., test results or certification data) and Reference Values (e.g., the version or digest of a firmware component) associated with the Attester.
Such Endorsements and Reference Values are obtained from the relevant supply chain actors, such as manufacturers, distributors, or device owners.
In a complex supply chain, it is likely that multiple actors will produce these values at different points in time.
Besides, one supply chain actor will only provide the subset of characteristics that they know about the Attester.
Attesters vary from one vendor to another, and for a given vendor from one product to another.
Not only Attesters can evolve and therefore new measurement types need to be expressed, but an Endorser may also want to provide new security relevant attributes about an Attester at a future point in time.</t>
      <t>This document specifies Concise Reference Integrity Manifests (CoRIM) a CBOR <xref target="STD94"/> based data model addressing the above challanges by using an extensible format common to all supply chain actors and Verifiers.
CoRIM enables Verifiers to reconcile a complex and scattered supply chain into a single homogeneous view.</t>
      <section anchor="terminology-and-requirements-language">
        <name>Terminology and Requirements Language</name>
        <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
        <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>.</t>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
        </t>
      </section>
      <section anchor="cddl-typographical-conventions">
        <name>CDDL Typographical Conventions</name>
        <t>The CDDL definitions in this document follow the naming conventions illustrated
in <xref target="tbl-typography"/>.</t>
        <table anchor="tbl-typography">
          <name>Type Traits &amp; Typographical Conventions</name>
          <thead>
            <tr>
              <th align="left">Type trait</th>
              <th align="left">Example</th>
              <th align="left">Typographical convention</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">extensible type choice</td>
              <td align="left">
                <tt>int / text / ...</tt></td>
              <td align="left">
                <tt>$</tt>NAME<tt>-type-choice</tt></td>
            </tr>
            <tr>
              <td align="left">closed type choice</td>
              <td align="left">
                <tt>int / text</tt></td>
              <td align="left">NAME<tt>-type-choice</tt></td>
            </tr>
            <tr>
              <td align="left">group choice</td>
              <td align="left">
                <tt>( 1 =&gt; int // 2 =&gt; text )</tt></td>
              <td align="left">
                <tt>$$</tt>NAME<tt>-group-choice</tt></td>
            </tr>
            <tr>
              <td align="left">group</td>
              <td align="left">
                <tt>( 1 =&gt; int, 2 =&gt; text )</tt></td>
              <td align="left">NAME<tt>-group</tt></td>
            </tr>
            <tr>
              <td align="left">type</td>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">NAME<tt>-type</tt></td>
            </tr>
            <tr>
              <td align="left">tagged type</td>
              <td align="left">
                <tt>#6.123(int)</tt></td>
              <td align="left">
                <tt>tagged-</tt>NAME<tt>-type</tt></td>
            </tr>
            <tr>
              <td align="left">map</td>
              <td align="left">
                <tt>{ 1 =&gt; int, 2 =&gt; text }</tt></td>
              <td align="left">NAME-<tt>map</tt></td>
            </tr>
            <tr>
              <td align="left">flags</td>
              <td align="left">
                <tt>&amp;( a: 1, b: 2 )</tt></td>
              <td align="left">NAME-<tt>flags</tt></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="common-types">
        <name>Common Types</name>
        <t>The following CDDL types are used in both CoRIM and CoMID.</t>
        <section anchor="non-empty">
          <name>Non-Empty</name>
          <t>The <tt>non-empty</tt> generic type is used to express that a map with only optional
members MUST at least include one of the members.</t>
          <sourcecode type="cddl"><![CDATA[
non-empty<M> = (M) .and ({ + any => any })
]]></sourcecode>
        </section>
        <section anchor="sec-common-entity">
          <name>Entity</name>
          <t>The <tt>entity-map</tt> is a generic type describing an organization responsible for
the contents of a manifest. It is instantiated by supplying two parameters:</t>
          <ul spacing="normal">
            <li>A <tt>role-type-choice</tt>, i.e., a selection of roles that entities of the
instantiated type can claim</li>
            <li>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</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>
              <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"/>).</li>
            <li>
              <tt>reg-id</tt> (index 1): A URI associated with the organization that owns the
entity name</li>
            <li>
              <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.</li>
            <li>
              <tt>extension-socket</tt>: A CDDL socket used to add new information structures to
the <tt>entity-map</tt>.</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>
              <tt>not-before</tt> (index 0): the date on which the signed manifest validity period
begins</li>
            <li>
              <tt>not-after</tt> (index 1): the date on which the signed manifest validity period
ends</li>
          </ul>
        </section>
        <section anchor="sec-common-uuid">
          <name>UUID</name>
          <t>Used to tag a byte string as a binary UUID defined in <xref section="4.1.2." sectionFormat="of" target="RFC4122"/>.</t>
          <sourcecode type="cddl"><![CDATA[
uuid-type = bytes .size 16
tagged-uuid-type = #6.37(uuid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-ueid">
          <name>UEID</name>
          <t>Used to tag a byte string as Universal Entity ID Claim (UUID) defined in
<xref section="4.2.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
          <sourcecode type="cddl"><![CDATA[
ueid-type = bytes .size 33
tagged-ueid-type = #6.550(ueid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-oid">
          <name>OID</name>
          <t>Used to tag a byte string as the BER encoding <xref target="X.690"/> of an absolute object
identifier <xref target="RFC9090"/>.</t>
          <sourcecode type="cddl"><![CDATA[
oid-type = bytes
tagged-oid-type = #6.111(oid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-tagged-int">
          <name>Tagged Integer Type</name>
          <t>Used as a class identifier for the environment.  It is expected that the
integer value is vendor specific rather than globally meaningful.  Therefore,
the sibling <tt>vendor</tt> field in the <tt>class-map</tt> MUST be populated to define the
namespace under which the value must be understood.</t>
          <sourcecode type="cddl"><![CDATA[
tagged-int-type = #6.551(int)
]]></sourcecode>
        </section>
        <section anchor="sec-common-hash-entry">
          <name>Digest</name>
          <t>A digest represents the value of a hashing operation together with the hash
algorithm used.  The type of the digest algorithm identifier can be either
<tt>int</tt> or <tt>text</tt>.  When carried as an integer value, it is interpreted according
to the "Named Information Hash Algorithm Registry" <xref target="IANA.named-information"/>.
When it is carried as <tt>text</tt>, there are no requirements with regards to its
format.  In general, the <tt>int</tt> encoding is RECOMMENDED.  The <tt>text</tt> encoding
should only be used when the <tt>digest</tt> type conveys reference value
measurements that are matched verbatim with Evidence that uses the same
convention - e.g., <xref section="4.4.1.5" sectionFormat="of" target="I-D.tschofenig-rats-psa-token"/>).</t>
          <sourcecode type="cddl"><![CDATA[
digest = [
  alg: (int / text),
  val: bytes
]
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-corim">
      <name>Concise Reference Integrity Manifest (CoRIM)</name>
      <t>A CoRIM is a collection of tags and related metadata as described below.</t>
      <t>Tags can be of different types:</t>
      <ul spacing="normal">
        <li>Concise Module ID (CoMID) tags (<xref target="sec-comid"/>) contain metadata and claims about the hardware and firmware modules.</li>
        <li>Concise Software ID (CoSWID) tags <xref target="I-D.ietf-sacm-coswid"/> describe software components.</li>
        <li>Concise Bill of Material (CoBOM) tags (<xref target="sec-cobom"/>) contain the list of CoMID and CoSWID tags that the Verifier should consider as "active" at a certain point in time.</li>
      </ul>
      <t>The set of tags is extensible so that future specifications can add new kinds of information.
For example, Concise Trust Anchor Stores (CoTS) <xref target="I-D.ietf-rats-concise-ta-stores"/> is currently being defined as a standard CoRIM extension.</t>
      <t>Each CoRIM contains a unique identifier to distinguish a CoRIM from other CoRIMs.
<cref anchor="tracked-at">Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/73</t>
      <t>CoRIM can also carry the following optional metadata:</t>
      <ul spacing="normal">
        <li>A locator, which allows discovery of possibly related RIMs</li>
        <li>A profile identifier, which is used to interpret the information contained in the enclosed tags. A profile allows the base CoRIM schema to be customised to fit a specific Attester.  For example, see <xref target="I-D.fdb-rats-psa-endorsements"/>.</li>
        <li>A validity period, which indicates the time period for which the CoRIM contents are valid.</li>
        <li>Information about the supply chain entities responsible for the contents of the CoRIM and their associated roles.</li>
      </ul>
      <t>A CoRIM can be signed (<xref target="sec-corim-signed"/>) using COSE Sign1 to provide end-to-end security to the CoRIM contents.
When CoRIM is signed, the protected header carries further identifying information about the CoRIM signer.
Alternatively, CoRIM can be encoded as a CBOR-tagged payload (<xref target="sec-corim-map"/>) and transported over a secure channel.</t>
      <t>The following CDDL describes the top-level CoRIM.</t>
      <sourcecode type="cddl"><![CDATA[
corim = tagged-concise-rim-type-choice

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

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

$class-id-type-choice /= tagged-oid-type
$class-id-type-choice /= tagged-uuid-type
$class-id-type-choice /= tagged-int-type
]]></sourcecode>
              <t>The following describes each member of the <tt>class-map</tt>:</t>
              <ul spacing="normal">
                <li>
                  <tt>class-id</tt> (index 0): Identifies the environment via a well-known identifier.
Typically, <tt>class-id</tt> is an object identifier (OID) or universally unique
identifier (UUID). Use of this attribute is preferred.</li>
                <li>
                  <tt>vendor</tt> (index 1): Identifies the entity responsible for choosing values for
the other class attributes that do not already have naming authority.</li>
                <li>
                  <tt>model</tt> (index 2): Describes a product, generation, and family.  If
populated, vendor MUST also be populated.</li>
                <li>
                  <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.</li>
                <li>
                  <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.</li>
              </ul>
            </section>
            <section anchor="sec-comid-instance">
              <name>Instance</name>
              <t>An instance carries a unique identifier that is reliably bound to an instance
of the Attester.</t>
              <t>The types defined for an instance identifier are UEID or UUID.</t>
              <sourcecode type="cddl"><![CDATA[
$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type
]]></sourcecode>
            </section>
            <section anchor="group">
              <name> Group</name>
              <t>A group carries a unique identifier that is reliably bound to a group of
Attesters, for example when a number of Attester are hidden in the same
anonymity set.</t>
              <t>The type defined for a group identified is UUID.</t>
              <sourcecode type="cddl"><![CDATA[
$group-id-type-choice /= tagged-uuid-type
]]></sourcecode>
            </section>
            <section anchor="measurements">
              <name>Measurements</name>
              <t>Measurements can be of a variety of things including software, firmware,
configuration files, read-only memory, fuses, IO ring configuration, partial
reconfiguration regions, etc. Measurements comprise raw values, digests, or
status information.</t>
              <t>An environment has one or more measurable elements. Each element can have a
dedicated measurement or multiple elements could be combined into a single
measurement. Measurements can have class, instance or group scope.  This is
typically determined by the triple's environment.</t>
              <t>Class measurements apply generally to all the Attesters in the given class.
Instance measurements apply to a specific Attester instances.  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>
              <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>
                  <tt>mkey</tt> (index 0): An optional unique identifier of the measured
(sub-)environment.  See <xref target="sec-comid-mkey"/>.</li>
                <li>
                  <tt>mval</tt> (index 1): The measurements associated with the (sub-)environment.
Described in <xref target="sec-comid-mval"/>.</li>
              </ul>
              <section anchor="sec-comid-mkey">
                <name>Measurement Keys</name>
                <t>The types defined for a measurement identifier are OID, UUID or uint.</t>
                <sourcecode type="cddl"><![CDATA[
$measured-element-type-choice /= tagged-oid-type
$measured-element-type-choice /= tagged-uuid-type
$measured-element-type-choice /= uint
]]></sourcecode>
              </section>
              <section anchor="sec-comid-mval">
                <name>Measurement Values</name>
                <t>A <tt>measurement-values-map</tt> contains measurements associated with a certain
environment. Depending on the context (triple) in which they are found,
elements in a <tt>measurement-values-map</tt> can represent class or instance
measurements. Note that some of the elements have instance scope only.</t>
                <sourcecode type="cddl"><![CDATA[
measurement-values-map = non-empty<{
  ? &(version: 0) => version-map
  ? &(svn: 1) => svn-type-choice
  ? &(digests: 2) => [ + digest ]
  ? &(flags: 3) => flags-map
  ? (
      &(raw-value: 4) => $raw-value-type-choice,
      ? &(raw-value-mask: 5) => raw-value-mask-type
    )
  ? &(mac-addr: 6) => mac-addr-type-choice
  ? &(ip-addr: 7) =>  ip-addr-type-choice
  ? &(serial-number: 8) => text
  ? &(ueid: 9) => ueid-type
  ? &(uuid: 10) => uuid-type
  ? &(name: 11) => text
  * $$measurement-values-map-extension
}>
]]></sourcecode>
                <t>The following describes each member of the <tt>measurement-values-map</tt>.</t>
                <ul spacing="normal">
                  <li>
                    <tt>version</tt> (index 0): Typically changes whenever the measured environment is
updated. Described in <xref target="sec-comid-version"/>.</li>
                  <li>
                    <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"/>.</li>
                  <li>
                    <tt>digests</tt> (index 2): Contains the digest(s) of the measured environment
together with the respective hash algorithm used in the process.  See
<xref target="sec-common-hash-entry"/>.</li>
                  <li>
                    <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"/>.</li>
                  <li>
                    <tt>raw-value</tt> (index 4): Contains the actual (not hashed) value of the element.
An optional <tt>raw-value-mask</tt> (index 5) indicates which bits in the
<tt>raw-value</tt> field are relevant for verification. A mask of all ones ("1")
means all bits in the <tt>raw-value</tt> field are relevant. Multiple values could
be combined to create a single <tt>raw-value</tt> attribute. The vendor determines
how to pack multiple values into a single <tt>raw-value</tt> structure. The same
packing format is used when collecting Evidence so that Reference Values and
collected values are bit-wise comparable. The vendor determines the encoding
of <tt>raw-value</tt> and the corresponding <tt>raw-value-mask</tt>.</li>
                  <li>
                    <tt>mac-addr</tt> (index 6): A EUI-48 or EUI-64 MAC address associated with the
measured environment.  Described in <xref target="sec-comid-address-types"/>.</li>
                  <li>
                    <tt>ip-addr</tt> (index 7): An IPv4 or IPv6 address associated with the measured
environment.  Described in <xref target="sec-comid-address-types"/>.</li>
                  <li>
                    <tt>serial-number</tt> (index 8): A text string representing the product serial
number.</li>
                  <li>
                    <tt>ueid</tt> (index 9): UEID associated with the measured environment.  See
<xref target="sec-common-ueid"/>.</li>
                  <li>
                    <tt>uuid</tt> (index 10): UUID associated with the measured environment.  See
<xref target="sec-common-uuid"/>.</li>
                  <li>
                    <tt>name</tt> (index 11): a name associated with the measured environment.</li>
                </ul>
              </section>
              <section anchor="sec-comid-version">
                <name>Version</name>
                <t>A <tt>version-map</tt> contains details about the versioning of a measured
environment.</t>
                <sourcecode type="cddl"><![CDATA[
version-map = {
  &(version: 0) => text
  ? &(version-scheme: 1) => $version-scheme
}
]]></sourcecode>
                <t>The following describes each member of the <tt>version-map</tt>:</t>
                <ul spacing="normal">
                  <li>
                    <tt>version</tt> (index 0): the version string</li>
                  <li>
                    <tt>version-scheme</tt> (index 1): an optional indicator of the versioning
convention used in the <tt>version</tt> attribute.  Defined in <xref section="4.1" sectionFormat="of" target="I-D.ietf-sacm-coswid"/>.  The CDDL is copied below for convenience.</li>
                </ul>
                <sourcecode type="cddl"><![CDATA[
$version-scheme /= &(multipartnumeric: 1)
$version-scheme /= &(multipartnumeric-suffix: 2)
$version-scheme /= &(alphanumeric: 3)
$version-scheme /= &(decimal: 4)
$version-scheme /= &(semver: 16384)
$version-scheme /= int / text
]]></sourcecode>
              </section>
              <section anchor="sec-comid-svn">
                <name>Security Version Number</name>
                <t>The following details the security version number (<tt>svn</tt>) and the minimum security version number (<tt>min-svn</tt>) statements.
A security version number is used to track changes to an object (e.g., a secure enclave, a boot loader executable, a configuration file, etc.) that are security relevant.
Rollback of a security relevant change is considered to be an attack vector, as such, security version numbers can't be decremented.
If a security relevant flaw is discovered in the Target Environment and subsequently fiexed, the <tt>svn</tt> value is typically incremented.</t>
                <t>There may be several revisions to a Target Environment that are in use at the same time.
If there are multiple revisions with different <tt>svn</tt> values, the revision with a lower <tt>svn</tt> value may
or may not be in a security critical condition. The Endorser may provide a minimum security version number
using <tt>min-svn</tt> to specify the lowest <tt>svn</tt> value that is acceptable.
<tt>svn</tt> values that are equal to or greater than <tt>min-svn</tt> do not signal a security critical condition.
<tt>svn</tt> values that are below <tt>min-svn</tt> are in a security critical condition that is unsafe for normal use.</t>
                <t>The <tt>svn-type-choice</tt> measurement consists of a <tt>tagged-svn</tt> or <tt>tagged-min-svn</tt> value.
The <tt>tagged-svn</tt> and <tt>tagged-min-svn</tt> tags are CBOR tags with the values <tt>#6.552</tt> and <tt>#6.553</tt> respectively.</t>
                <sourcecode type="cddl"><![CDATA[
svn-type = uint
svn = svn-type
min-svn = svn-type
tagged-svn = #6.552(svn)
tagged-min-svn = #6.553(min-svn)
svn-type-choice = tagged-svn / tagged-min-svn
]]></sourcecode>
              </section>
              <section anchor="sec-comid-flags">
                <name>Flags</name>
                <t>The <tt>flags-map</tt> measurement describes a number of boolean operational modes.
If a <tt>flags-map</tt> value is not specified, then the operational mode is unknown.</t>
                <sourcecode type="cddl"><![CDATA[
flags-map = {
  ? &(is-configured: 0) => bool
  ? &(is-secure: 1) => bool
  ? &(is-recovery: 2) => bool
  ? &(is-debug: 3) => bool
  ? &(is-replay-protected: 4) => bool
  ? &(is-integrity-protected: 5) => bool
  ? &(is-runtime-meas: 6) => bool
  ? &(is-immutable: 7) => bool
  ? &(is-tcb: 8) => bool
  * $$flags-map-extension
}
]]></sourcecode>
                <t>The following describes each member of the <tt>flags-map</tt>:</t>
                <ul spacing="normal">
                  <li>
                    <tt>is-configured</tt> (index 0): If the flag is true, the measured environment is fully configured for normal operation.</li>
                  <li>
                    <tt>is-secure</tt> (index 1): If the flag is true, the measured environment's configurable
security settings are fully enabled.</li>
                  <li>
                    <tt>is-recovery</tt> (index 2): If the flag is true, the measured environment is in recovery
mode.</li>
                  <li>
                    <tt>is-debug</tt> (index 3): If the flag is true, the measured environment is in a debug enabled
mode.</li>
                  <li>
                    <tt>is-replay-protected</tt> (index 4): If the flag is true, the measured environment is
protected from replay by a previous image that differs from the current image.</li>
                  <li>
                    <tt>is-integrity-protected</tt> (index 5): If the flag is true, the measured environment is
protected from unauthorized update.</li>
                  <li>
                    <tt>is-runtime-meas</tt> (index 6): If the flag is true, the measured environment is measured
after being loaded into memory.</li>
                  <li>
                    <tt>is-immutable</tt> (index 7): If the flag is true, the measured environment is immutable.</li>
                  <li>
                    <tt>is-tcb</tt> (index 8): If the flag is true, the measured environment is a trusted
computing base.</li>
                </ul>
              </section>
              <section anchor="sec-comid-raw-value-types">
                <name>Raw Values Types</name>
                <t><cref anchor="issue">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/9</t>
                <sourcecode type="cddl"><![CDATA[
tagged-bytes = #6.560(bytes)
$raw-value-type-choice /= tagged-bytes

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

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

tagged-pkix-base64-key-type = #6.554(tstr)
tagged-pkix-base64-cert-type = #6.555(tstr)
tagged-pkix-base64-cert-path-type = #6.556(tstr)
tagged-thumbprint-type = #6.557(digest)
tagged-cose-key-type = #6.558(COSE_KeySet / COSE_Key)
tagged-cert-thumbprint-type = #6.559(digest)
tagged-cert-path-thumbprint-type = #6.560(digest)
]]></sourcecode>
            </section>
            <section anchor="sec-comid-domain-type">
              <name>Domain Types</name>
              <t>A domain is a context for bundling a collection of related environments and
their measurements.</t>
              <t>Three types are defined: uint and text for local scope, UUID for global scope.</t>
              <sourcecode type="cddl"><![CDATA[
$domain-type-choice /= uint
$domain-type-choice /= text
$domain-type-choice /= tagged-uuid-type
$domain-type-choice /= tagged-oid-type
]]></sourcecode>
            </section>
          </section>
          <section anchor="sec-comid-triple-refval">
            <name>Reference Values Triple</name>
            <t>A Reference Values triple relates reference measurements to a Target
Environment. For Reference Value Claims, the subject identifies a Target
Environment, the object contains measurements, and the predicate asserts that
these are the expected (i.e., reference) measurements for the Target
Environment.</t>
            <sourcecode type="cddl"><![CDATA[
reference-triple-record = [
  environment-map
  measurement-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-endval">
            <name>Endorsed Values Triple</name>
            <t>An Endorsed Values triple declares additional measurements that are valid when
a Target Environment has been verified against reference measurements. For
Endorsed Value Claims, the subject is either a Target or Attesting Environment,
the object contains measurements, and the predicate defines semantics for how
the object relates to the subject.</t>
            <sourcecode type="cddl"><![CDATA[
endorsed-triple-record = [
  environment-map
  measurement-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-identity">
            <name>Device Identity Triple</name>
            <t>A Device Identity triple relates one or more cryptographic keys to a device.
The subject of an Identity triple uses an instance or class identifier to refer
to a device, and a cryptographic key is the object. The predicate asserts that
the identity is authenticated by the key. A common application for this triple
is device identity.</t>
            <sourcecode type="cddl"><![CDATA[
identity-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-attest-key">
            <name>Attestation Keys Triple</name>
            <t>An Attestation Keys triple relates one or more cryptographic keys to an
Attesting Environment. The Attestation Key triple subject is an Attesting
Environment whose object is a cryptographic key. The predicate asserts that the
Attesting Environment signs Evidence that can be verified using the key.</t>
            <sourcecode type="cddl"><![CDATA[
attest-key-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-dependency">
            <name>Domain Dependency Triple</name>
            <t>A Domain Dependency triple defines trust dependencies between measurement
sources.  The subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has
a predicate relationship to the object containing one or more dependent
domains.  Dependency means the subject domain’s trustworthiness properties rely
on the object domain(s) trustworthiness having been established before the
trustworthiness properties of the subject domain exists.</t>
            <sourcecode type="cddl"><![CDATA[
domain-dependency-triple-record = [
  $domain-type-choice
  [ + $domain-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-membership">
            <name>Domain Membership Triple</name>
            <t>A Domain Membership triple assigns domain membership to environments.  The
subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has a predicate
relationship to the object containing one or more environments.  Endorsed
environments (<xref target="sec-comid-triple-endval"/>) membership is conditional upon
successful matching of Reference Values (<xref target="sec-comid-triple-refval"/>) to
Evidence.</t>
            <sourcecode type="cddl"><![CDATA[
domain-membership-triple-record = [
  $domain-type-choice
  [ + environment-map ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-coswid">
            <name>CoMID-CoSWID Linking Triple</name>
            <t>A CoSWID triple relates reference measurements contained in one or more CoSWIDs
to a Target Environment. The subject identifies a Target Environment, the
object one or more unique tag identifiers of existing CoSWIDs, and the
predicate asserts that these contain the expected (i.e., reference)
measurements for the Target Environment.</t>
            <sourcecode type="cddl"><![CDATA[
coswid-triple-record = [
  environment-map
  [ + concise-swid-tag-id ]
]

concise-swid-tag-id = text / bstr .size 16
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-series">
            <name>Conditional Endorsement Series Triple</name>
            <t>A Conditional Endorsement Series triple uses a stateful environment, (i.e., <tt>stateful-environment-record</tt>),
that identifies a Target Environment based on an <tt>environment-map</tt> plus the <tt>measurement-map</tt> measurements
that have matching Evidence.</t>
            <t>The stateful Target Environment is a triple subject that MUST be satisfied before the series triple object is
matched.</t>
            <sourcecode type="cddl"><![CDATA[
; an environment with a set of measurements that must match evidence
stateful-environment-record = [
  environment-map,
  measurement-map
]
]]></sourcecode>
            <t>The series object is an array of <tt>conditional-series-record</tt> that has both Reference and Endorsed Values.
Each <tt>conditional-series-record</tt> record is evaluated in the order it appears in the series array.
The Endorsed Values are accepted if the Reference Values in a <tt>conditional-series-record</tt> matches Evidence.
The first <tt>conditional-series-record</tt> that sucessfully matches Evidence terminates the series and
the matching Reference Values as well as the Endorsed Values are accepted.
If none of the Reference Values in the series match Evidence, the triple is not matched,
and no Claims are accepted.</t>
            <t>The <tt>authorized-by</tt> value in <tt>measurement-map</tt> in the stateful environment, if present,
applies to all measurements in the triple, including <tt>conditional-series-record</tt> records.</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-series-triple-record = [
  stateful-environment-record
  ; order matters: the first matching record wins and halts matching
  [ + conditional-series-record ]
]
]]></sourcecode>
            <sourcecode type="cddl"><![CDATA[
conditional-series-record = [
  ; reference values to be matched against evidence
  refv: measurement-values-map
  ; endorsed values that apply in case revf matches
  endv: measurement-values-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-end">
            <name>Conditional Endorsement Triple</name>
            <t>A Conditional Endorsement triple uses a stateful environment, (i.e., <tt>stateful-environment-record</tt>),
that identifies a Target Environment based on an <tt>environment-map</tt> plus the <tt>measurement-map</tt> measurements
that have matching Evidence.</t>
            <t>The stateful Target Environment is a triple subject that MUST be satisfied before the Endorsed Values in the triple object are accepted.</t>
            <sourcecode type="cddl"><![CDATA[
; an environment with a set of measurements that must match evidence
stateful-environment-record = [
  environment-map,
  measurement-map
]
]]></sourcecode>
            <t>The <tt>authorized-by</tt> value in <tt>measurement-map</tt> in the stateful environment, if present,
applies to all measurements in the triple, including those in <tt>measurement-values-map</tt>.</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-triple-record = [
  stateful-environment-record,
  ; endorsed values
  measurement-values-map
]
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sec-extensibility">
        <name>Extensibility</name>
        <t><cref anchor="issue_1">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/10</t>
      </section>
    </section>
    <section anchor="sec-cobom">
      <name>CoBOM</name>
      <t>A Concise Bill of Material (CoBOM) object represents the signal for the
Verifier to activate the listed tags. Data contained in a tag MUST NOT be used
for appraisal until a CoBOM which activates that tag has been received and
successfully processed. All the tags listed in the CoBOM must be activated in
the same transaction, i.e., either all or none.</t>
      <section anchor="structure-1">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-bom-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoBOM
tag:</t>
        <sourcecode type="cddl"><![CDATA[
concise-bom-tag = {
  &(tag-identity: 0) => tag-identity-map
  &(tags-list: 1) => [ + tag-identity-map ],
  &(bom-validity: 2) => validity-map
  * $$concise-bom-tag-extension
}
]]></sourcecode>
        <t>The following describes each member of the <tt>concise-bom-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <tt>tag-identity</tt> (index 0): A <tt>tag-identity-map</tt> containing unique
identification information for the CoBOM. Described in <xref target="sec-comid-tag-id"/>.</li>
          <li>
            <tt>tags-list</tt> (index 1): A list of one or more <tt>tag-identity-maps</tt> identifying
the CoMID and CoSWID tags that constitute the "bill of material", i.e.,
a complete set of verification-related information.  The <tt>tags-list</tt> behaves
like a signaling mechanism from the supply chain (e.g., a product vendor) to
a Verifier that activates the tags in <tt>tags-list</tt> for use in the Evidence
appraisal process. The activation is atomic: all tags listed in <tt>tags-list</tt>
MUST be activated or no tags are activated.</li>
          <li>
            <tt>bom-validity</tt> (index 2): Specifies the validity period of the CoBOM.
Described in <xref target="sec-common-validity"/></li>
          <li>
            <tt>$$concise-bom-tag-extension</tt>: This CDDL socket is used to add new
information structures to the <tt>concise-bom-tag</tt>.  See <xref target="sec-iana-cobom"/>.
The <tt>$$concise-bom-tag-extension</tt> extension socket is empty in this
specification.</li>
        </ul>
      </section>
    </section>
    <section anchor="corim-based-evidence-verification">
      <name>CoRIM-based Evidence Verification</name>
      <t>The verification procedure is divided into three separate phases:</t>
      <ul spacing="normal">
        <li>Appraisal Context initialisation</li>
        <li>Evidence collection</li>
        <li>Evidence appraisal</li>
      </ul>
      <t>At a few well-defined points in the procedure, the Verifier behaviour will
depend on the specific CoRIM profile.
Each CoRIM profile MUST provide a description of the expected Verifier behavior
for each of those well-defined points.</t>
      <t>Note that what follows describes a simplified and standard algorithm.
Verifiers claiming compliance with this specification MUST exhibit the same
externally visible behavior as described here,
they are not required to use the same internal data structures.
For example, it is expected that the resources used during the initialisation
phase can be amortised across multiple appraisals.</t>
      <section anchor="appraisal-context-initialisation">
        <name>Appraisal Context initialisation</name>
        <t>The goal of the initialisation phase is to load the CoRIM Appraisal Context
with objects such as tags (CoMID, CoSWID, etc.) from CoRIM files,
cryptographic validation key material (e.g., raw public keys, root certificates,
intermediate CA certificate chains), etc. that will be used in the subsequent
Evidence Appraisal phase.</t>
        <section anchor="corim-selection">
          <name>CoRIM Selection</name>
          <t>All available CoRIMs are collected.
A Verifier may be pre-configured with a large number of CoRIMs describing many
types of device.
All CoRIMs are loaded at this stage, later stages will select the CoRIMs
appropriate to the Evidence Appraisal step.</t>
          <t>CoRIMs that are not within their validity period, or that cannot be associated
with an authenticated and authorised source MUST be discarded.</t>
          <t>CoRIM that are secured by a cryptographic mechanism such as a signature which
does not pass validation MUST be discarded.</t>
          <t>Other selection criteria MAY be applied.</t>
          <t>For example, if the Evidence format is known in advance, CoRIMs using a
profile that is not understood by a Verifier can be readily discarded.</t>
          <t>The selection process MUST yield at least one usable tag.</t>
        </section>
        <section anchor="cobom-extraction">
          <name>CoBOM Extraction</name>
          <t>All the available Concise Bill Of Material (CoBOMs) tags are then collected
from the selected CoRIMs.</t>
          <t>CoBOMs which are not within their validity period, or which reference tags
not available to the verifier, are discarded.</t>
          <t>The Verifier MUST activate all tags referenced by a CoBOM.</t>
          <t>ISSUE: What does the verifier do if there are multiple CoBOMs available</t>
          <t>After the Verifier has processed all CoBOMs it MUST discard any tags which have
not been activated by a CoBOM.</t>
        </section>
        <section anchor="tags-identification-and-validation">
          <name>Tags Identification and Validation</name>
          <t>The Verifier chooses tags -- including Concise Module ID Tags (CoMID, <xref target="sec-comid"/>),
Concise Software ID Tags (CoSWID, <xref target="I-D.ietf-sacm-coswid"/>),
and/or Concise Trust Anchor Stores (CoTS, <xref target="I-D.ietf-rats-concise-ta-stores"/>) --
from the selected CoRIMs.</t>
          <t>The Verifier MUST discard all tags which are not syntactically and semantically
valid.
In particular, any cross-referenced triples (e.g., CoMID-CoSWID linking triples)
MUST be successfully resolved.</t>
        </section>
        <section anchor="appraisal-context-construction">
          <name>Appraisal Context Construction</name>
          <t>All of the validated and potentially useful tags are loaded into the Appraisal Context.</t>
          <t>This concludes the initialisation phase.</t>
        </section>
      </section>
      <section anchor="evidence-collection">
        <name>Evidence Collection</name>
        <t>In the evidence collection phase the Verifier communicates with attesters to
collect evidence.</t>
        <t>The first part of the Evidence collection phase does not perform any
cryptographic validation.
This allows Verifiers to use untrusted code for their initial Evidence collection.</t>
        <t>The results of the evidence collection are protocol specific data and transcripts
which are used as input to appraisal by the Verifier.</t>
        <section anchor="cryptographic-validation-of-evidence">
          <name>Cryptographic validation of Evidence</name>
          <t>If the authenticity of Evidence is secured by a cryptographic mechanism such as
a signature, the first step in the Evidence Appraisal is to perform
cryptographic validation of the Evidence.</t>
          <t>The exact cryptographic signature validation mechanics depend on the specific
Evidence collection protocol.</t>
          <t>For example:
In DICE, a proof of liveness is performed on the final key in the certificate
chain.
If this passes then a suitable certification path anchored on a trusted root
certificate is looked up -- e.g., based on linking information obtained from
the DeviceID certificate (see Section 9.2.1 of <xref target="DICE.Layer"/>) --
in the Appraisal Context.  If found, then usual X.509 certificate validation
is performed.
In PSA, the verification public key is looked up in the appraisal context using
the <tt>ueid</tt> claim found in the PSA claims-set (see <xref section="4.2.1" sectionFormat="of" target="I-D.tschofenig-rats-psa-token"/>).
If found, COSE Sign1 verification is performed accordingly.</t>
          <t>Independent of the specific integrity protection method used, the integrity of
Evidence MUST be successfully verified.</t>
          <ul empty="true">
            <li>
              <t>A CoRIM profile MUST describe:</t>
              <ul spacing="normal">
                <li>How cryptographic verification key material is represented (e.g., using Attestation Keys triples, or CoTS tags)</li>
                <li>How key material is associated with the Attesting Environment</li>
                <li>How the Attesting Environment is identified in Evidence</li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="the-accepted-claims-set">
          <name>The Accepted Claims Set</name>
          <t>At the end of the Evidence collection process evidence has been converted into
a format suitable for appraisal. To this end, this document describes an <tt>accepted-claims-set</tt>
format and the algorithms used to compare it against CoMID reference values.</t>
          <sourcecode type="cddl"><![CDATA[
accepted-claims-set = {
  &(evidence-triples: 0) => [ + reference-triple-record ]
  ? &(identity-triples: 1) => [ + identity-triple-record ]
  ? &(coswid-triples: 2) => [ + ev-coswid-triple-record ]
  * $$accepted-claims-set-extension
}
]]></sourcecode>
          <t>Verifiers are not required to use this as their internal state, but for the
purposes of this document a sample Verifier is discussed which uses this format.</t>
          <t>The Accepted Claims Set will be matched against CoMID reference values, as per
the appraisal policy of the Verifier.
This document describes an example evidence structure which can be easily
matched against these reference values.</t>
          <t>Each set of evidence contains an <tt>environment-map</tt> providing a namespace, and
a non empty <tt>measurement-values-map</tt>.</t>
          <t>Each entry in the <tt>measurement-values-map</tt> is a separate piece of evidence
describing a measurement associated with the environment identified in
the <tt>environment-map</tt>.</t>
          <t>An Attester can provide multiple <tt>environment-map</tt>s each containing a
<tt>measurement-values-map</tt> with one entry;  a single <tt>environment-map</tt> containing
multiple entries in its <tt>measurement-values-map</tt>; or a combination of
 these approaches.</t>
          <t>If evidence from different sources has the same <tt>environment-map</tt> then the
<tt>measurement-values-map</tt>s are merged.</t>
          <t>If the merged measurement-value-map contains duplicate codepoints and the
measurement values are equivalent, then duplicate claims SHOULD be omitted.
Equivalence typically means values MUST be binary identical.</t>
          <t>If the merged measurement-value-map contains duplicate codepoints and the
measurement values are not equivalent then the verifier SHALL report
an error and stop validation processing.</t>
        </section>
        <section anchor="accepted-claims-set-initialisation">
          <name>Accepted Claims Set Initialisation</name>
          <t>The Accepted Claims Set is initialised with cryptographically verified Evidence
from the Attestation Environments.</t>
          <ul empty="true">
            <li>
              <t>A CoRIM profile MUST describe:</t>
              <ul spacing="normal">
                <li>How evidence is converted to a format suitable for appraisal</li>
              </ul>
            </li>
          </ul>
          <t><xref target="sec-dice-spdm"/> provides information on how evidence collected using
DICE and SPDM is added to the Accepted Claims Map.</t>
        </section>
      </section>
      <section anchor="accepted-claims-map-extension-using-comid-tags">
        <name>Accepted Claims Map extension using CoMID tags</name>
        <t>In the Accepted Claims Map extension phase, a CoRIM Appraisal Context and
an Evidence Appraisal Policy are used by the Verifier to find CoMID tags which
match the Attester. Tags which match are accepted, and the Accepted Claims Map
is extended using Endorsements etc. from the accepted tags.</t>
        <section anchor="comparing-and-processing-comid-tags">
          <name>Comparing and processing CoMID tags</name>
        </section>
        <section anchor="matching-evidence-against-reference-values">
          <name>Matching Evidence against Reference Values</name>
        </section>
        <section anchor="adding-comid-endorsed-values-to-the-accepted-claims-set">
          <name>Adding CoMID Endorsed Values to the Accepted Claims Set</name>
        </section>
      </section>
      <section anchor="sec-dice-spdm">
        <name>Adding DICE/SPDM evidence to the Accepted Claims Set</name>
        <t>This section defines how evidence from DICE and/or SPDM is transformed into a
format where it can be added to an accepted claims set.
A Verifier supporting DICE/SPDM format evidence should implement this section.</t>
        <section anchor="transforming-spdm-evidence-to-a-format-usable-for-matching">
          <name>Transforming SPDM Evidence to a format usable for matching</name>
          <t><eref target="TCG_SPDM-TBD">Evidence Binding For SPDM</eref> describes the process by which
measurements in an SPDM Measurement Block are converted to Evidence suitable for
matching using the rules below.
The converted evidence is held in evidence triples which have a similar format
to reference-triples (their semantics follows the matching rules described above).</t>
        </section>
        <section anchor="transforming-dice-evidence-to-a-format-usable-for-matching">
          <name>Transforming DICE Evidence to a format usable for matching</name>
          <t>DICE Evidence appears in certificates in the TcbInfo or MultiTcbInfo extension.
Each TcbInfo, and each entry in the MultiTcbInfo, is converted to an evidence
triple using the rules in this section.
In a MultiTcbInfo each entry in the sequence is treated as independent and
translated into a separate evidence object.</t>
          <t>The Verifier SHALL translate each field in the TcbInfo into a field in the
created endorsed-triple-record</t>
          <ul spacing="normal">
            <li>The TcbInfo <tt>type</tt> field SHALL be copied to the field named <tt>environment-map / class / class-id</tt></li>
            <li>The TcbInfo <tt>vendor</tt> field SHALL be copied to the field named <tt>environment-map / class / vendor</tt></li>
            <li>The TcbInfo <tt>model</tt> field SHALL be copied to the field named <tt>environment-map / class / model</tt></li>
            <li>The TcbInfo <tt>layer</tt> field SHALL be copied to the field named <tt>environment-map / class / layer</tt></li>
            <li>The TcbInfo <tt>index</tt> field SHALL be copied to the field named <tt>environment-map / class / index</tt></li>
            <li>The TcbInfo <tt>version</tt> field SHALL be translated to the field named <tt>measurement-map / mval / version / version</tt></li>
            <li>The TcbInfo <tt>svn</tt> field SHALL be copied to the field named <tt>measurement-map / mval / svn</tt></li>
            <li>
              <t>The TcbInfo <tt>fwids</tt> field SHALL be translated to the field named <tt>measurement-map / mval / digests</tt>
              </t>
              <ul spacing="normal">
                <li>Each digest within fwids is translated to a CoMID digest object, with an appropriate algorithm identifier</li>
              </ul>
            </li>
            <li>
              <t>The TcbInfo <tt>flags</tt> field SHALL be translated to the field named <tt>measurement-map / mval / flags</tt>
              </t>
              <ul spacing="normal">
                <li>Each flag is translated independently</li>
              </ul>
            </li>
            <li>The TcbInfo <tt>vendorInfo</tt> SHALL shall be copied to the field named <tt>measurement-map / mval / raw-value</tt></li>
          </ul>
          <t>If there are multiple evidence triples with the same <tt>environment-map</tt> then
they MUST be merged into a single entry.
If the <tt>measurement-values-map</tt> fields in evidence triples have conflicting
values then the Verifier MUST fail validation.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol
defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>. The description of
implementations in this section is intended to assist the IETF in its decision
processes in progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalog 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>Organization responsible for the implementation: Veraison Project, Linux
Foundation</li>
          <li>Implementation's web page:
<eref target="https://github.com/veraison/corim/README.md">https://github.com/veraison/corim/README.md</eref></li>
          <li>Brief general description: The <tt>corim/corim</tt> and <tt>corim/comid</tt> packages
provide a golang API for low-level manipulation of Concise Reference
Integrity Manifest (CoRIM) and Concise Module Identifier (CoMID) tags
respectively.  The <tt>corim/cocli</tt> package uses the API above (as well as the
API from the <tt>veraison/swid</tt> package) to provide a user command line
interface for working with CoRIM, CoMID and CoSWID. Specifically, it allows
creating, signing, verifying, displaying, uploading, and more. See
<eref target="https://github.com/cocli/README.md">https://github.com/cocli/README.md</eref> for
further details.</li>
          <li>Implementation's level of maturity: alpha.</li>
          <li>Coverage: the whole protocol is implemented, including PSA-specific
extensions <xref target="I-D.fdb-rats-psa-endorsements"/>.</li>
          <li>Version compatibility: Version -02 of the draft</li>
          <li>Licensing: Apache 2.0
<eref target="https://github.com/veraison/corim/blob/main/LICENSE">https://github.com/veraison/corim/blob/main/LICENSE</eref></li>
          <li>Implementation experience: n/a</li>
          <li>Contact information:
<eref target="https://veraison.zulipchat.com">https://veraison.zulipchat.com</eref></li>
          <li>Last updated:
<eref target="https://github.com/veraison/corim/commits/main">https://github.com/veraison/corim/commits/main</eref></li>
        </ul>
      </section>
    </section>
    <section anchor="sec-sec">
      <name>Security and Privacy Considerations</name>
      <t><cref anchor="issue_2">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/11</t>
    </section>
    <section anchor="sec-iana-cons">
      <name>IANA Considerations</name>
      <section anchor="new-cose-header-parameters">
        <name>New COSE Header Parameters</name>
        <t><cref anchor="issue_3">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/12</t>
      </section>
      <section anchor="sec-iana-cbor-tags">
        <name>New CBOR Tags</name>
        <t>IANA is requested to allocate the following tags in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably with the specific CBOR tag value requested:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">500</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-concise-rim-type-choice, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">501</td>
              <td align="left">
                <tt>map</tt></td>
              <td align="left">A tagged-corim-map, see <xref target="sec-corim-map"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">502</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-signed-corim, see <xref target="sec-corim-signed"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">503-504</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">505</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-swid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">506</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-mid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">507</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">508</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-bom-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">509-549</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">550</td>
              <td align="left">
                <tt>bytes .size 33</tt></td>
              <td align="left">tagged-ueid-type, see <xref target="sec-common-ueid"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">551</td>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">tagged-int-type, see <xref target="sec-common-tagged-int"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">552</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">553</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-min-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">554</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">555</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">556</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-path-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">557</td>
              <td align="left">
                <tt>[int/text, bytes]</tt></td>
              <td align="left">tagged-thumbprint-type, see <xref target="sec-common-hash-entry"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">558-559</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">560</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">tagged-bytes, see <xref target="sec-comid-raw-value-types"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">561-599</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
        <t>Tags designated as "Earmarked for CoRIM" can be reassigned by IANA based on advice from the designated expert for the CBOR Tags registry.</t>
      </section>
      <section anchor="sec-iana-corim">
        <name>New CoRIM Registries</name>
        <t><cref anchor="issue_4">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/14</t>
      </section>
      <section anchor="sec-iana-comid">
        <name>New CoMID Registries</name>
        <t><cref anchor="issue_5">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/15</t>
      </section>
      <section anchor="sec-iana-cobom">
        <name>New CoBOM Registries</name>
        <t><cref anchor="issue_6">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/45</t>
      </section>
      <section anchor="sec-iana-media-types">
        <name>New Media Types</name>
        <t>IANA is requested to add the following media types to the "Media Types"
registry <xref target="IANA.media-types"/>.</t>
        <table align="left" anchor="tbl-media-type">
          <name>New Media Types</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Template</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">corim-signed+cbor</td>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-signed"/></td>
            </tr>
            <tr>
              <td align="left">corim-unsigned+cbor</td>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-unsigned"/></td>
            </tr>
          </tbody>
        </table>
        <section anchor="sec-mt-corim-signed">
          <name>corim-signed+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-signed+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer COSE Sign1 wrapped CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F6 D2</tt>, <tt>D9 01 F4 D9 01 F6 D2</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-mt-corim-unsigned">
          <name>corim-unsigned+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-unsigned+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer unprotected CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F5</tt>, <tt>D9 01 F4 D9 01 F5</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="coap-content-formats-registration">
        <name>CoAP Content-Formats Registration</name>
        <t>IANA is requested to register the two following Content-Format numbers in the
"CoAP Content-Formats" sub-registry, within the "Constrained RESTful
Environments (CoRE) Parameters" Registry <xref target="IANA.core-parameters"/>:</t>
        <table align="left">
          <name>New Content-Formats</name>
          <thead>
            <tr>
              <th align="left">Content-Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD1</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9090">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR), defined in RFC 8949, is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.</t>
              <t>This document defines CBOR tags for object identifiers (OIDs) and is the reference document for the IANA registration of the CBOR tags so defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9090"/>
          <seriesInfo name="DOI" value="10.17487/RFC9090"/>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="STD66">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="I-D.ietf-sacm-coswid">
          <front>
            <title>Concise Software Identification Tags</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <author fullname="Charles Schmidt" initials="C." surname="Schmidt">
              <organization>The MITRE Corporation</organization>
            </author>
            <author fullname="David Waltermire" initials="D." surname="Waltermire">
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date day="24" month="February" year="2023"/>
            <abstract>
              <t>ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles.  SWID tag representations can be too large for devices with network and storage constraints.  This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags.  CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-sacm-coswid-24"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="30" month="June" year="2023"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine how much
   it wishes to trust the entity.

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-concise-ta-stores-01"/>
        </reference>
        <reference anchor="IANA.language-subtag-registry" target="https://www.iana.org/assignments/language-subtag-registry">
          <front>
            <title>Language Subtag Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology — ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="ITU-T" value="Recommendation X.690"/>
        </reference>
        <reference anchor="IANA.named-information" target="https://www.iana.org/assignments/named-information">
          <front>
            <title>Named Information</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="I-D.fdb-rats-psa-endorsements">
          <front>
            <title>A CoRIM Profile for Arm's Platform Security Architecture (PSA)</title>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Ltd</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="10" month="March" year="2023"/>
            <abstract>
              <t>   PSA Endorsements include reference values, endorsed values,
   cryptographic key material and certification status information that
   a Verifier may need 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-02"/>
        </reference>
        <reference anchor="I-D.tschofenig-rats-psa-token">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>HP Labs</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Limited</organization>
            </author>
            <date day="5" month="July" year="2023"/>
            <abstract>
              <t>   The Platform Security Architecture (PSA) is a family of hardware and
   firmware security specifications, as well as open-source reference
   implementations, to help device makers and chip manufacturers build
   best-practice security into products.  Devices that are PSA compliant
   are able to produce attestation tokens as described in this memo,
   which are the basis for a number of different protocols, including
   secure provisioning and network access control.  This document
   specifies the PSA attestation token structure and semantics.

   The PSA attestation token is a profiled Entity Attestation Token
   (EAT).

   This specification describes what claims are used in an attestation
   token generated by PSA compliant systems, how these claims get
   serialized to the wire, and how they are cryptographically protected.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-12"/>
        </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>
      </references>
    </references>
    <?line 1961?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

COSE_KeySet = [ + COSE_Key ]

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

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

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

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

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

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

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

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

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

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

$entity-name-type-choice /= text

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

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

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

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

$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type

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

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

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

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

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

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

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

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

tagged-bytes = #6.560(bytes)
$raw-value-type-choice /= tagged-bytes

raw-value-mask-type = bytes

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

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

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

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

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

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

tag-version-type = uint .default 0

tagged-int-type = #6.551(int)

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

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

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

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

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

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

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

any-uri = uri
label = text / int

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

integer-time = #6.1(int)

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

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

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

abandon=1
private=2
shared=3

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

optional=1
required=2
recommended=3

]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t><contact fullname="Carl Wallace"/> for review and comments on this document.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="C." surname="Bormann" fullname="Carsten Bormann">
        <organization>Universität Bremen TZI</organization>
        <address>
          <postal>
            <street>Postfach 330440</street>
            <city>Bremen</city>
            <code>D-28359</code>
            <country>Germany</country>
          </postal>
          <phone>+49-421-218-63921</phone>
          <email>cabo@tzi.org</email>
        </address>
      </contact>
      <t>Carsten Bormann contributed to the CDDL specifications and the IANA considerations.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
