<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-corim-03" category="std" consensus="true" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="CoRIM">Concise Reference Integrity Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-03"/>
    <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="October" day="23"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>RIM, RATS, attestation, verifier, supply chain</keyword>
    <abstract>
      <?line 128?>

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>In order to conduct Evidence appraisal, a Verifier requires not only fresh Evidence from an Attester, but also trusted Endorsements (e.g., test results or certification data) and Reference Values (e.g., the version or digest of a firmware component) associated with the Attester.
Such Endorsements and Reference Values are obtained from the relevant supply chain actors, such as manufacturers, distributors, or device owners.
In a complex supply chain, it is likely that multiple actors will produce these values at different points in time.
Besides, one supply chain actor will only provide the subset of characteristics that they know about the Attester.
Attesters vary from one vendor to another, and for a given vendor from one product to another.
Not only Attesters can evolve and therefore new measurement types need to be expressed, but an Endorser may also want to provide new security relevant attributes about an Attester at a future point in time.</t>
      <t>This document specifies Concise Reference Integrity Manifests (CoRIM) a CBOR <xref target="STD94"/> based data model addressing the above challenges by using an extensible format common to all supply chain actors and Verifiers.
CoRIM enables Verifiers to reconcile a complex and scattered supply chain into a single homogeneous view.</t>
      <section anchor="terminology-and-requirements-language">
        <name>Terminology and Requirements Language</name>
        <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
        <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>.</t>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP&nbsp;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">
non-empty&lt;M&gt; = (M) .and ({ + any =&gt; 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">
entity-map&lt;role-type-choice, extension-socket&gt; = {
  &amp;(entity-name: 0) =&gt; $entity-name-type-choice
  ? &amp;(reg-id: 1) =&gt; uri
  &amp;(role: 2) =&gt; [ + 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">
validity-map = {
  ? &amp;(not-before: 0) =&gt; time
  &amp;(not-after: 1) =&gt; 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">
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">
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">
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">
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">
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">
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">
corim-map = {
  &amp;(id: 0) =&gt; $corim-id-type-choice
  &amp;(tags: 1) =&gt; [ + $concise-tag-type-choice ]
  ? &amp;(dependent-rims: 2) =&gt; [ + corim-locator-map ]
  ? &amp;(profile: 3) =&gt; $profile-type-choice
  ? &amp;(rim-validity: 4) =&gt; validity-map
  ? &amp;(entities: 5) =&gt; [ + 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">
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">
$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">
$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">
corim-locator-map = {
  &amp;(href: 0) =&gt; uri
  ? &amp;(thumbprint: 1) =&gt; 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">
$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">
corim-entity-map =
  entity-map&lt;$corim-role-type-choice, $$corim-entity-map-extension&gt;

$corim-role-type-choice /= &amp;(manifest-creator: 1)
</sourcecode>
        </section>
      </section>
      <section anchor="sec-corim-signed">
        <name>Signed CoRIM</name>
        <sourcecode type="cddl">
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">
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">
protected-corim-header-map = {
  &amp;(alg-id: 1) =&gt; int
  &amp;(content-type: 3) =&gt; "application/corim-unsigned+cbor"
  &amp;(issuer-key-id: 4) =&gt; bstr
  &amp;(corim-meta: 8) =&gt; bstr .cbor corim-meta-map
  * cose-label =&gt; 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">
corim-meta-map = {
  &amp;(signer: 0) =&gt; corim-signer-map
  ? &amp;(signature-validity: 1) =&gt; 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">
corim-signer-map = {
  &amp;(signer-name: 0) =&gt; $entity-name-type-choice
  ? &amp;(signer-uri: 1) =&gt; 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">
unprotected-corim-header-map = {
  * cose-label =&gt; 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">
concise-mid-tag = {
  ? &amp;(language: 0) =&gt; text
  &amp;(tag-identity: 1) =&gt; tag-identity-map
  ? &amp;(entities: 2) =&gt; [ + comid-entity-map ]
  ? &amp;(linked-tags: 3) =&gt; [ + linked-tag-map ]
  &amp;(triples: 4) =&gt; 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">
tag-identity-map = {
  &amp;(tag-id: 0) =&gt; $tag-id-type-choice
  ? &amp;(tag-version: 1) =&gt; 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">
$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">
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">
comid-entity-map =
  entity-map&lt;$comid-role-type-choice, $$comid-entity-map-extension&gt;
</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">
$comid-role-type-choice /= &amp;(tag-creator: 0)
$comid-role-type-choice /= &amp;(creator: 1)
$comid-role-type-choice /= &amp;(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">
linked-tag-map = {
  &amp;(linked-tag-id: 0) =&gt; $tag-id-type-choice
  &amp;(tag-rel: 1) =&gt; $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">
$tag-rel-type-choice /= &amp;(supplements: 0)
$tag-rel-type-choice /= &amp;(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">
triples-map = non-empty&lt;{
  ? &amp;(reference-triples: 0) =&gt;
    [ + reference-triple-record ]
  ? &amp;(endorsed-triples: 1) =&gt;
    [ + endorsed-triple-record ]
  ? &amp;(identity-triples: 2) =&gt;
    [ + identity-triple-record ]
  ? &amp;(attest-key-triples: 3) =&gt;
    [ + attest-key-triple-record ]
  ? &amp;(dependency-triples: 4) =&gt;
    [ + domain-dependency-triple-record ]
  ? &amp;(membership-triples: 5) =&gt;
    [ + domain-membership-triple-record ]
  ? &amp;(coswid-triples: 6) =&gt;
    [ + coswid-triple-record ]
  ? &amp;(conditional-endorsement-series-triples: 8) =&gt;
    [ + conditional-endorsement-series-triple-record ]
  ? &amp;(conditional-endorsement-triples: 9) =&gt;
    [ + conditional-endorsement-triple-record ]
  * $$triples-map-extension
}&gt;
</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">
environment-map = non-empty&lt;{
  ? &amp;(class: 0) =&gt; class-map
  ? &amp;(instance: 1) =&gt; $instance-id-type-choice
  ? &amp;(group: 2) =&gt; $group-id-type-choice
}&gt;
</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">
class-map = non-empty&lt;{
  ? &amp;(class-id: 0) =&gt; $class-id-type-choice
  ? &amp;(vendor: 1) =&gt; tstr
  ? &amp;(model: 2) =&gt; tstr
  ? &amp;(layer: 3) =&gt; uint
  ? &amp;(index: 4) =&gt; uint
}&gt;

$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 a Target Environment
that is an instance of the Attester.</t>
              <t>The types defined for an instance identifier are CBOR tagged expressions of
UEID, UUID, or cryptographic key identifier.</t>
              <sourcecode type="cddl">
$instance-id-type-choice /= tagged-ueid-type
$instance-id-type-choice /= tagged-uuid-type
$instance-id-type-choice /= $crypto-key-type-choice
</sourcecode>
            </section>
            <section anchor="group">
              <name>&nbsp;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">
$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 instance.  Environments
identified by a class identifier have measurements that are common to the
class. Environments identified by an instance identifier have measurements that
are specific to that instance.</t>
              <t>The supply chain entity that is responsible for providing the the measurements (i.e. Reference Values or Endorsed Values)
is by default the CoRIM signer. If a different entity is authorized to provide measurement values,
the <tt>authorized-by</tt> statement can be supplied in the <tt>measurement-map</tt>.</t>
              <sourcecode type="cddl">
measurement-map = {
  ? &amp;(mkey: 0) =&gt; $measured-element-type-choice
  &amp;(mval: 1) =&gt; measurement-values-map
  ? &amp;(authorized-by: 2) =&gt; [ + $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>
                <li>
                  <tt>authorized-by</tt> (index 2): The cryptographic identity of the individual or organization that is
 the designated authority for this measurement. For example, producer of the measurement or a delegated supplier.</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">
$measured-element-type-choice /= tagged-oid-type
$measured-element-type-choice /= tagged-uuid-type
$measured-element-type-choice /= uint
</sourcecode>
              </section>
              <section anchor="sec-comid-mval">
                <name>Measurement Values</name>
                <t>A <tt>measurement-values-map</tt> contains measurements associated with a certain
environment. Depending on the context (triple) in which they are found,
elements in a <tt>measurement-values-map</tt> can represent class or instance
measurements. Note that some of the elements have instance scope only.</t>
                <t>Measurement values may support use cases beyond Verifier appraisal.
Typically, a Relying Party determines if additional processing is desirable
and whether the processing is applied by the Verifier or the Relying Party.</t>
                <sourcecode type="cddl">
measurement-values-map = non-empty&lt;{
  ? &amp;(version: 0) =&gt; version-map
  ? &amp;(svn: 1) =&gt; svn-type-choice
  ? &amp;(digests: 2) =&gt; [ + digest ]
  ? &amp;(flags: 3) =&gt; flags-map
  ? (
      &amp;(raw-value: 4) =&gt; $raw-value-type-choice,
      ? &amp;(raw-value-mask: 5) =&gt; raw-value-mask-type
    )
  ? &amp;(mac-addr: 6) =&gt; mac-addr-type-choice
  ? &amp;(ip-addr: 7) =&gt;  ip-addr-type-choice
  ? &amp;(serial-number: 8) =&gt; text
  ? &amp;(ueid: 9) =&gt; ueid-type
  ? &amp;(uuid: 10) =&gt; uuid-type
  ? &amp;(name: 11) =&gt; text
  ? &amp;(cryptokeys: 12) =&gt; [ + $crypto-key-type-choice ]
  * $$measurement-values-map-extension
}&gt;
</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>
                  <li>
                    <tt>cryptokeys</tt> (index 12): identifies cryptographic keys that are protected by the Target Environment
See <xref target="sec-crypto-keys"/> for the supported formats.
An Attesting Environment determines that keys are protected as part of Claims collection.
Appraisal verifies that, for each value in <tt>cryptokeys</tt>, there is a matching Reference Value entry.
Matching is described in <xref target="sec-cryptokeys-matching"/>.</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">
version-map = {
  &amp;(version: 0) =&gt; text
  ? &amp;(version-scheme: 1) =&gt; $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">
$version-scheme /= &amp;(multipartnumeric: 1)
$version-scheme /= &amp;(multipartnumeric-suffix: 2)
$version-scheme /= &amp;(alphanumeric: 3)
$version-scheme /= &amp;(decimal: 4)
$version-scheme /= &amp;(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">
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">
flags-map = {
  ? &amp;(is-configured: 0) =&gt; bool
  ? &amp;(is-secure: 1) =&gt; bool
  ? &amp;(is-recovery: 2) =&gt; bool
  ? &amp;(is-debug: 3) =&gt; bool
  ? &amp;(is-replay-protected: 4) =&gt; bool
  ? &amp;(is-integrity-protected: 5) =&gt; bool
  ? &amp;(is-runtime-meas: 6) =&gt; bool
  ? &amp;(is-immutable: 7) =&gt; bool
  ? &amp;(is-tcb: 8) =&gt; bool
  ? &amp;(is-confidentiality-protected: 9) =&gt; 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>
                  <li>
                    <tt>is-confidentiality-protected</tt> (index 9): If the flag is true, the measured environment
is confidentiality protected. For example, if the measured environment consists of memory,
the sensitive values in memory are encrypted.</li>
                </ul>
              </section>
              <section anchor="sec-comid-raw-value-types">
                <name>Raw Values Types</name>
                <t>Raw value measurements are typically vendor defined values that are checked by Verifiers
for consistency only, since the security relevance is opaque to Verifiers.</t>
                <t>There are two parts to a <tt>raw-value-group</tt>, a measurement and an optional mask.
The default raw value measurement is a CBOR tagged <tt>bstr</tt>.
Additional raw value types can be defined, but must be CBOR tagged so that parsers can distinguish
between the various semantics of type values.</t>
                <t>The mask is applied by the Verifier as part of appraisal.
Only the raw value bits with corresponding TRUE mask bits are compared during appraisal.</t>
                <t>When a new raw value type is defined, the convention for applying the mask is also defined.
Typically, a CoRIM profile is used to define new raw values and mask semantics.</t>
                <sourcecode type="cddl">
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">
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">
$crypto-key-type-choice /= tagged-pkix-base64-key-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-type
$crypto-key-type-choice /= tagged-pkix-base64-cert-path-type
$crypto-key-type-choice /= tagged-cose-key-type
$crypto-key-type-choice /= tagged-thumbprint-type
$crypto-key-type-choice /= tagged-cert-thumbprint-type
$crypto-key-type-choice /= tagged-cert-path-thumbprint-type

tagged-pkix-base64-key-type = #6.554(tstr)
tagged-pkix-base64-cert-type = #6.555(tstr)
tagged-pkix-base64-cert-path-type = #6.556(tstr)
tagged-thumbprint-type = #6.557(digest)
tagged-cose-key-type = #6.558(COSE_KeySet / COSE_Key)
tagged-cert-thumbprint-type = #6.559(digest)
tagged-cert-path-thumbprint-type = #6.561(digest)
</sourcecode>
            </section>
            <section anchor="sec-comid-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">
$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">
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">
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">
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">
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">
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">
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">
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">
; 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 successfully 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">
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">
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">
; 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">
conditional-endorsement-triple-record = [
  stateful-environment-record,
  ; endorsed values
  measurement-values-map
]
</sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sec-extensibility">
        <name>Extensibility</name>
        <t>The base CORIM schema is described using CDDL <xref target="RFC8610"/> that can be extended
only at specific allowed points known as "extension points"</t>
        <t>The following types of extensions are supported in CoRIM</t>
        <section anchor="map-extensions">
          <name>Map Extensions</name>
          <t>Map Extensions provides extensibility support to CoRIM Map structures.
CDDL map extensibility enables a CoRIM profile to extend the base CoRIM definition.
CDDL map extension points have the form <tt>($$NAME-extension)</tt> where "NAME" is the name of the map
and '$$' signifies map extensibility. Typically, map extension requires a convention
for code point naming that avoids code-point reuse.
Well-known code points may be in a registry, such as CoSWID <xref target="IANA.concise-software-identifier"/>.
Additionally, a range of code points may be reserved for vendor-specific use such as negative integers.</t>
        </section>
        <section anchor="data-type-extensions">
          <name>Data Type Extensions</name>
          <t>Data type extensibility has the form <tt>($NAME-type-choice)</tt> where "NAME" is the type name
and '$' signifies type extensibility.</t>
          <t>Schema extensions (Map or Data Type) should be documented to facilitate interoperability. CoRIM profiles are best used to document vendor or industry defined extensions.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-cobom">
      <name>CoBOM</name>
      <t>A Concise Bill of Material (CoBOM) object represents the signal for the
Verifier to activate the listed tags. Verifier policy determines whether CoBOMs are required.</t>
      <t>When CoBOMs are required, each tag MUST be activated by a CoBOM before being processed.
All the tags listed in the CoBOM MUST be activated atomically. If any tag activated by a CoBOM is not available to the Verifier, the entire CoBOM is rejected.</t>
      <t>The number of CoBOMs required in a given supply chain ecosystem is dependent on
Verifier Owner's Appraisal Policy for Evidence. Corresponding policies are often driven by the complexity and nature of the use case.</t>
      <t>If a Verifier Owner has a policy that does not require CoBOM, tags within a CoRIM received by a Verifier
are activated immediately and treated valid for appraisal.</t>
      <t>There may be cases when Verifier receives CoRIMs from multiple
Reference Value providers and Endorsers. In such cases, a supplier (or other authorities, such as integrators)
may be designated to issue a single CoBOM to activate all the tags submitted to the Verifier
in these CoRIMs.</t>
      <t>In a more complex case, there may be multiple authorities that issue CoBOMs at different points in time.
An Appraisal Policy for Evidence may dictate how multiple CoBOMs are to be processed within the Verifier.</t>
      <section anchor="structure-1">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-bom-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoBOM
tag:</t>
        <sourcecode type="cddl">
concise-bom-tag = {
  &amp;(tag-identity: 0) =&gt; tag-identity-map
  &amp;(tags-list: 1) =&gt; [ + tag-identity-map ],
  &amp;(bom-validity: 2) =&gt; 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-appraisal-of-evidence">
      <name>CoRIM-based Appraisal of Evidence</name>
      <t>The verification procedure is divided into three separate phases:</t>
      <ul spacing="normal">
        <li>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="verifier-abstraction">
        <name>Verifier Abstraction</name>
        <t>This document assumes Verifier implementations may differ.
To facilitate description of normative Verifier behavior,
this document uses abstract representation of Verifier internals.</t>
        <ul spacing="normal">
          <li>Claim: A piece of information, in the form of a key-value pair.</li>
          <li>Environment Measurement Tuple (EMT): A structure containing a set of environment
Claims that describe a Target Environment and a set of measurement Claims that
describe attributes of the Target Environment.</li>
          <li>reference state: Claims that describe various alternative states of a Target Environment.
Reference Values Claims typically describe various possible states due to versioning,
manufactruing practices, or supplier configuration options.</li>
          <li>actual state: Claims that describe a Target Environment instance at a given point in time.
Endorsed Values and Evidence typically are Claims about actual state.</li>
          <li>Group: A set of Evidence, Reference Values, Endorsed Values and Appraisal Policies
which are processed together.
An Attester may be composed of multiple components, where each component may
represent a scope of appraisal.</li>
          <li>Authority: The entity asserting that a claim is true.
Typically, a Claim is asserted using a cryptographic key to digitally sign the Claim. A cryptographic key can be a proxy for a human or organizational entity.</li>
          <li>Accepted Claims Set (ACS): A structure that holds EMT Claims that have been vetted
following the appraisal process. The ACS describes the actual state of an Attester that has been vetted by Appraisal Policy. The ACS also keeps track of a Claim's authority.</li>
          <li>Appraisal Policy: A description of the conditions that, if met, allow acceptance
of Claims. Typically, the entity asserting a Claim should have knowledge, expertise,
or context that gives credibility to the assertion. Appraisal Policy resolves which
entities are credible and under what conditions.</li>
        </ul>
      </section>
      <section anchor="appraisal-context-initialisation">
        <name>Appraisal Context initialisation</name>
        <t>The goal of the initialisation phase is to load the CoRIM Appraisal Context
with objects such as tags (CoMID, CoSWID, etc.) from CoRIM files,
cryptographic validation key material (e.g., raw public keys, root certificates,
intermediate CA certificate chains), etc. that will be used in the subsequent
Evidence Appraisal phase.</t>
        <section anchor="corim-selection">
          <name>CoRIM Selection</name>
          <t>All available CoRIMs are collected.
A Verifier may be pre-configured with a large number of CoRIMs describing many
types of device.
All CoRIMs are loaded at this stage, later stages will select the CoRIMs
appropriate to the Evidence Appraisal step.</t>
          <t>CoRIMs that are not within their validity period, or that cannot be associated
with an authenticated and authorised source MUST be discarded.</t>
          <t>CoRIM that are secured by a cryptographic mechanism such as a signature which
does not pass validation MUST be discarded.</t>
          <t>Other selection criteria MAY be applied.</t>
          <t>For example, if the Evidence format is known in advance, CoRIMs using a
profile that is not understood by a Verifier can be readily discarded.</t>
          <t>The selection process MUST yield at least one usable tag.</t>
        </section>
        <section anchor="cobom-extraction">
          <name>CoBOM Extraction</name>
          <t>This section is not applicable if the Verifier policy does not require CoBOMs.</t>
          <t>All the available Concise Bill Of Material (CoBOMs) tags are then collected
from the selected CoRIMs.</t>
          <t>CoBOMs which are not within their validity period, or which reference tags
not available to the verifier, are discarded.</t>
          <t>The Verifier processes all CoBOMs that are valid at the point in time of Evidence Appraisal, and activates all tags referenced therein.</t>
          <t>A Verifier may decide to discard some of the available and valid CoBOMs depending on any locally configured authorization policies.
(Such policies model the trust relationships between the Verifier Owner and the relevant suppliers, and are out of scope of the present document.)</t>
          <t>For example, a composite device (<xref section="3.3" sectionFormat="of" target="RFC9334"/>) is likely to be fully described by multiple CoRIMs, each signed by a different supplier.
In such case, the Verifier Owner may instruct the Verifier to discard tags activated by supplier CoBOMs that are not activated by the trusted integrator.</t>
          <t>After the Verifier has processed all CoBOMs it MUST discard any tags which have
not been activated by a CoBOM.</t>
        </section>
        <section anchor="tags-identification-and-validation">
          <name>Tags Identification and Validation</name>
          <t>The Verifier chooses tags -- including Concise Module ID Tags (CoMID, <xref target="sec-comid"/>),
Concise Software ID Tags (CoSWID, <xref target="I-D.ietf-sacm-coswid"/>),
and/or Concise Trust Anchor Stores (CoTS, <xref target="I-D.ietf-rats-concise-ta-stores"/>) --
from the selected CoRIMs.</t>
          <t>The Verifier MUST discard all tags which are not syntactically and semantically
valid.
In particular, any cross-referenced triples (e.g., CoMID-CoSWID linking triples)
MUST be successfully resolved.</t>
        </section>
        <section anchor="appraisal-context-construction">
          <name>Appraisal Context Construction</name>
          <t>All of the validated and potentially useful tags are loaded into the Appraisal Context.</t>
          <t>This concludes the initialisation phase.</t>
        </section>
      </section>
      <section anchor="evidence-collection">
        <name>Evidence Collection</name>
        <t>In the Evidence collection phase the Verifier communicates with attesters to
collect Evidence.</t>
        <t>The first part of the Evidence collection phase does not perform any
cryptographic validation.
This allows Verifiers to use untrusted code for their initial Evidence collection.</t>
        <t>The results of the evidence collection are protocol specific data and transcripts
which are used as input to appraisal by the Verifier.</t>
        <section anchor="sec-crypto-validate-evidence">
          <name>Cryptographic validation of Evidence</name>
          <t>If the authenticity of Evidence is secured by a cryptographic mechanism such as
a signature, the first step in the Evidence Appraisal is to perform
cryptographic validation of the Evidence.</t>
          <t>The exact cryptographic signature validation mechanics depend on the specific
Evidence collection protocol.</t>
          <t>For example:
In DICE, a proof of liveness is performed on the final key in the certificate
chain.
If this passes then a suitable certification path anchored on a trusted root
certificate is looked up -- e.g., based on linking information obtained from
the DeviceID certificate (see Section 9.2.1 of <xref target="DICE.Layer"/>) --
in the Appraisal Context.  If found, then usual X.509 certificate validation
is performed.
In PSA, the verification public key is looked up in the appraisal context using
the <tt>ueid</tt> claim found in the PSA claims-set (see <xref section="4.2.1" sectionFormat="of" target="I-D.tschofenig-rats-psa-token"/>).
If found, COSE Sign1 verification is performed accordingly.</t>
          <t>Independent of the specific integrity protection method used, the integrity of
Evidence MUST be successfully verified.</t>
          <ul empty="true">
            <li>
              <t>A CoRIM profile MUST describe:</t>
              <ul spacing="normal">
                <li>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">
accepted-claims-set = {
  &amp;(state-triples: 0) =&gt; [ + endorsed-triple-record ]
  ? &amp;(identity-triples: 1) =&gt; [ + identity-triple-record ]
  ? &amp;(coswid-triples: 2) =&gt; [ + ev-coswid-triple-record ]
  * $$accepted-claims-set-extension
}
</sourcecode>
          <t>Verifiers are not required to use this as their internal state, for the
purposes of this document a sample Verifier is discussed which uses this format.</t>
          <t>The Accepted Claims Set (ACS) contains the actual state of Target Environments (TEs).
The <tt>state-triples</tt> field contains Evidence (from Attesters) and Endorsements
(e.g. from <tt>endorsed-triple-record</tt>).</t>
          <t>CoMID Reference Values will be matched against the Accepted Claims Set, as per
the appraisal policy of the Verifier.
This document describes an example evidence structure which can be easily
matched against these Reference Values.</t>
          <t>Each entry within <tt>state-triples</tt> uses the syntax of <tt>endorsed-triple-record</tt>.
When an <tt>endorsed-triple-record</tt> appears within <tt>state-triples</tt> it
indicates that the authority named by <tt>measurement-map</tt>/<tt>authorized-by</tt>
asserts that the actual state of one or more Claims within the
Target Environment, as identified by <tt>environment-map</tt>, have the
measurement values in <tt>measurement-map</tt>/<tt>mval</tt>.</t>
          <t>In <tt>authorized-by</tt>, authority is represented by cryptographic keys. Authority
is asserted by digitally signing a Claim using the key. Hence, Claims are
added to the ACS under the authority of a key.</t>
          <t>Each Claim is encoded as an Environment Measurement Tuple (a contraction
of <tt>environment-map</tt>, <tt>measurement-map</tt> tuple). The <tt>environment-map</tt> and a
key within <tt>measurement-values-map</tt> encode the name of the Claim.
The value matching that key within <tt>measurement-values-map</tt> is the actual
state of the Claim.</t>
          <t>This specification does not assign special meanings to any Claim name,
it only specifies rules for determining when two Claim names are the same.</t>
          <t>If two Claims have the same <tt>environment-map</tt> encoding then this does not
trigger special encoding in the Verifier. The Verifier follows instructions
in the CoRIM file which tell it how claims are related.</t>
          <t>If Evidence or Endorsements from different sources has the same <tt>environment-map</tt>
and <tt>authorized-by</tt> then the <tt>measurement-values-map</tt>s are merged.</t>
          <t>The ACS must maintain the authority information for each EMT. There can be
multiple entries in <tt>state-triples</tt> which have the same <tt>environment-map</tt>
and a different <tt>authorized-by</tt> field (see <xref target="sec-authorized-by"/>).</t>
          <t>If the merged measurement-value-map contains duplicate codepoints and the
measurement values are equivalent, then duplicate claims SHOULD be omitted.
Equivalence typically means values MUST be binary identical.</t>
          <t>If the merged measurement-value-map contains duplicate codepoints and the
measurement values are not equivalent then the verifier SHALL report
an error and stop validation processing.</t>
          <section anchor="sec-acs-initialization">
            <name>Accepted Claims Set Initialization</name>
            <t>The Accepted Claims Set is initialized by copying Evidence claims describing
authenticated Attester's Target Environments into the Verifier's Accepted Claims Set.</t>
            <t>Evidence formats may require format translation before being added to the Accepted Claims Set.
If format translation is required, a CoRIM profile, see <xref target="sec-corim-profile-types"/>, defines an Evidence translation function.</t>
            <t><xref target="sec-dice-spdm"/> provides information on how DICE and SPDM Evidence is reformatted into CoMID schema compliant expressions before being added to the Accepted Claims Set.</t>
          </section>
          <section anchor="sec-authorized-by">
            <name>The authorized-by field in Accepted Claims Set</name>
            <t>The <tt>authorized-by</tt> field in an Accepted Claims Set entry indicates the entity
whose authority backs the claim.</t>
            <t>An entity is authoritative when it makes Claims that are inside its area of
competence. The Verifier keeps track of the authorities that assert Claims so
that it can filter out claims from entities that do not satisfy appraisal
policies.</t>
            <t>When adding an Evidence Claim to the Accepted Claims Set, the
Verifier SHALL set the <tt>authorized-by</tt> field in that Claim to the trusted
authority keys at the head of each key chain which signed that Evidence. This
key is often the subject of a self-signed certificate.
The Verifier has already verified the certificate chain (see <xref target="sec-crypto-validate-evidence"/>).</t>
            <t>If multiple authorities approve the same Claim, for example if multiple key chains
are available, then the <tt>authorized-by</tt> field SHALL be set to include the trusted
authority keys used by each of those authorities.</t>
            <t>When adding Endorsement Claims to the Accepted Claims Set that resulted
from CoRIM processing (see <xref target="sec-add-to-acs"/>) the Verifier SHALL set the
<tt>authorized-by</tt> field in that Evidence to the trusted authority key that is
at the head of the key chain that signed the CoRIM.</t>
            <t>When searching the Accepted Claims Set for an entry which matches a Reference
Value containing an <tt>authorized-by</tt> field, the Verifier SHALL ignore ACS
entries if none of the keys present in the Reference Value <tt>authorized-by</tt> field
are also present in the ACS <tt>authorized-by</tt> field.</t>
            <t>The Verifier SHOULD set the <tt>authorized-by</tt> field in Accepted Claims Set entries
to a format which contains only a key, for example the <tt>tagged-cose-key-type</tt>
format. Using a common format makes it easier to compare the field.</t>
          </section>
        </section>
      </section>
      <section anchor="accepted-claims-set-extension-using-comid-tags-or-triples">
        <name>Accepted Claims Set extension using CoMID tags or triples</name>
        <t>In the Accepted Claims Set extension phase, a CoRIM Appraisal Context and
an Evidence Appraisal Policy are used by the Verifier to find CoMID tags or triples which
match the Attester. Tags/triples which match are accepted, and the Accepted Claims Set
is extended using Endorsements etc. from the accepted tags.</t>
        <section anchor="comparing-and-processing-comid-tags-or-triples">
          <name>Comparing and processing CoMID tags or triples</name>
        </section>
        <section anchor="matching-evidence-against-reference-values">
          <name>Matching Evidence against Reference Values</name>
          <t>An Endorser may use CoMID tags to publish Conditional Endorsements, which
are added to the Accepted Claims Set only if specified conditions apply.
This section describes the process performed by the Verifier to determine
which Conditional Endorsements from the candidate CoMIDs should be added
to the Accepted Claims Set.</t>
          <t>The verifier checks whether Conditional Endorsements are applicable by
comparing Evidence in the Accepted Claims Set against Reference Values
from the CoMID. These Reference Values may be provided as Reference Value
Triples or may be combined with the Endorsements, for example as the
Conditional Endorsement Series Triple.</t>
          <t>The following subsections describe how the CoRIM tells the verifier which
Reference Values and Endorsed Values are grouped together (<xref target="sec-grouping-ref-vals"/>)
and how the verifier matches a Reference Value against the Accepted Claims Set
(<xref target="sec-match-all-ref-vals"/>).</t>
          <section anchor="sec-grouping-ref-vals">
            <name>Grouping Reference Values and Endorsements</name>
            <ul empty="true">
              <li>
                <t>This paragraph will be replaced by a description of how the CoRIM tells the
verifier which Reference Values and Endorsed Values are grouped together.</t>
              </li>
            </ul>
          </section>
          <section anchor="sec-match-all-ref-vals">
            <name>Matching all Reference Values in a group against the Accepted Claims Set</name>
            <t>If all Reference Values in a group match entries in the Accepted Claims Set
then all Endorsements in the group are added to the Accepted Claims Set
(see <xref target="sec-add-to-acs"/>). <xref target="sec-match-one-ref-val"/> describes how one
Reference Value is matched against the Accepted Claims Set.</t>
            <t>If any Reference Value in a group does not match the Accepted Claims Set then
all Endorsements in the group are silently ignored.</t>
            <t>Each group is processed independently of other groups. If a group fails to match
the Accepted Claims Set then this does not affect the processing of other groups.</t>
          </section>
          <section anchor="sec-match-one-ref-val">
            <name>Matching a Reference Value against the Accepted Claims Set</name>
            <t>This section describes how a Reference Value is matched against Evidence in the Accepted
Claims Set.
If any part of the processing indicates that the Reference Value does not match then the remaining steps in this section are skipped for that group.</t>
            <t>A Reference Value consists of an <tt>environment-map</tt> plus a <tt>measurement-map</tt>. In the
<tt>reference-triple-record</tt> these are encoded together. In other triples multiple
Reference Values are represented more compactly by letting one <tt>environment-map</tt>
apply to multiple <tt>measurement-map</tt>s.</t>
            <t>The Verifier first looks for entries in the Accepted Claims Set with the same
<tt>environment-map</tt> as the Reference Value. These are the candidate claims. If there are
no candidate claims then the Reference Value does not match.</t>
            <t>A Verifier SHALL compare two <tt>environment-map</tt>s using a binary comparison of the CBOR
encoded objects.</t>
            <t>A Verifier SHOULD convert <tt>environment-map</tt> into a form which meets CBOR Core
Deterministic Encoding Requirements <xref target="STD94"/> before performing the binary comparison.</t>
            <t>If the Reference Value contains an <tt>authorized-by</tt> field then the Verifier
SHALL modify the candidate claims set to remove Claims whose <tt>authorized-by</tt>
field does not contain one of the keys listed in the Reference Value
<tt>authorized-by</tt> field (see <xref target="sec-authorized-by"/> for more details).
If all candidate claim entries are discarded by this step then the
Reference Value does not match.</t>
            <t>The Verifier SHALL iterate over the codepoints which are present in the
<tt>measurement-values-map</tt> field within the Reference Value <tt>measurement-values-map</tt>.
The Reference Value entry is compared against each of the candidate claims.
If none of the candidate claims matches
the Reference Value entry then the Reference Value does not match.</t>
            <t>The algorithm used to match the <tt>measurement-values-map</tt> entries
is described below. The comparison performed depends on the type of
field being compared.</t>
            <t>If the Reference Value <tt>measurement-values-map</tt> value is tagged with a CBOR
tag <xref target="STD94"/> then the Verifier MUST use the comparison algorithm associated
with that tag.</t>
            <t>If the Reference Value is not tagged then the Verifier MUST use the comparison
algorithm associated with the <tt>measurement-values-map</tt> codepoint for the entry.</t>
            <t>This specification defines the matching algorithm for some CBOR tagged reference
values, which is described in sub-sections below.</t>
            <t>A CoRIM profile may define additional tags and their matching algorithms.</t>
            <t>If the Verifier does not recognize the Reference Value CBOR tag value then
the Reference Value does not match.</t>
            <t>If the Reference Value is not tagged and the measurement-value-map key is a
value with handling described in the sub-sections below,
then the algorithm appropriate to that key is used to match the entries.</t>
            <t>If the Reference Value is not tagged, and the <tt>measurement-values-map</tt> key
is not a value described below, then the entries are compared
using binary comparison of their CBOR encoded values. If the values
are not binary identical then the Reference Value does not match.</t>
            <t>Note that while specifications may extend the matching semantics using CBOR tags,
there is no way to extend the matching semantics of keys.
Any new keys requiring non-default comparison must add a CBOR tag to the
Reference Value describing the desired behaviour.</t>
            <t>If all checks above have been performed successfully then the Reference Value
matches.</t>
            <section anchor="comparison-for-svn-entries">
              <name>Comparison for svn entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 1 is an SVN, which must
have type UINT.</t>
              <t>If the Reference value for <tt>measurement-values-map</tt> key 1 is an untagged UINT or
a UINT tagged with #6.552 then an equality comparison is performed. If the value
of the SVN in Accepted Claims Set is not equal to the value in the Reference
Value then the Reference Value does not match.</t>
              <t>If the Reference value for <tt>measurement-values-map</tt> key 1 is a UINT tagged with
#6.553 then a minimum comparison is performed. If the value of the SVN in
Accepted Claims Set less than the value in the Reference Value then the
Reference Value does not match.</t>
            </section>
            <section anchor="comparison-for-digests-entries">
              <name>Comparison for digests entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 2,
or a value tagged with
#6.TBD is a digest entry.
It contains one or more digests, each measuring the
same object. A Reference Value may contain multiple digests, each with a
different algorithm acceptable to the Reference Value provider. If the
digest in Evidence contains a single value with an algorithm and value
matching one of the algorithms and values in the Reference Value then it
matches.</t>
              <t>To prevent downgrade attacks, if there are multiple algorithms which are in
both the Evidence and Reference Value then the digests calculated using all
shared algorithms must match.</t>
              <t>If the CBOR encoding of the <tt>digests</tt> entry in the Reference Value or the
Accepted Claim Set value with the same key is incorrect (for example if fields
are missing or the wrong type) then the Reference Value does not match.</t>
              <t>The Verifier MUST iterate over the Reference Value <tt>digests</tt> array, locating
hash algorithm identifiers that are present in the Reference Value and
in the Accepted Claims Set entry.</t>
              <t>If the hash algorithm identifier which is present in the Reference Value
differs from the hash algorithm identifier in the Accepted Claims Set entry then the Reference Value does not match.</t>
              <t>If a hash algorithm identifier is present in both the Reference Value and
the Accepted Claims Set, but the value of the hash is not binary identical
between the Reference Value and the Accepted Claims Set entry then the
Reference Value does not match.</t>
            </section>
            <section anchor="comparison-for-raw-value-entries">
              <name>Comparison for raw-value entries</name>
              <ul empty="true">
                <li>
                  <t>I think this comparison method only works if the entry is at key 4 (because
there needs to be a mask at key 5). Should we have a Reference Value of this
which stores [expect-raw-value raw-value-mask] in an array?</t>
                </li>
              </ul>
            </section>
            <section anchor="sec-cryptokeys-matching">
              <name>Comparison for cryptokeys entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 12 is an array of <tt>$crypto-key-type-choice</tt> entries. <tt>$crypto-key-type-choice</tt> entries are CBOR tagged values.
The array contains one or more entries in sequence.</t>
              <t>The CBOR tag of the first entry of the Reference Value <tt>cryptokeys</tt> array is compared with
the CBOR tag of the first entry of the Accepted Claims Set <tt>cryptokeys</tt> value.
If the CBOR tags match, then the bytes following the CBOR tag from the Reference Value entry
are compared with the bytes following the CBOR tag from the Accepted Claims Set entry.
If the byte strings match, and there is another array entry,
then the next entry from the Reference Values array is likewise
compared with the next entry of the Accepted Claims Set array.
If all entries of the Reference Values array match a corresponding entry in the Accepted Claims Set array, then the <tt>cryptokeys</tt> Reference Value matches.
Otherwise, <tt>cryptokeys</tt> does not match.</t>
            </section>
            <section anchor="handling-of-new-tags">
              <name>Handling of new tags</name>
              <t>A profile may specify handling for new CBOR tagged Reference Values. The
profile must specify how to compare the CBOR tagged Reference Value against
the Accepted Claims Set.</t>
              <t>Note that the verifier may compare Reference Values in any order, so the
comparison should not be stateful.</t>
            </section>
          </section>
        </section>
        <section anchor="sec-add-to-acs">
          <name>Adding CoMID Endorsed Values to the Accepted Claims Set</name>
        </section>
      </section>
      <section anchor="sec-dice-spdm">
        <name>Adding DICE/SPDM Evidence to the Accepted Claims Set</name>
        <t>This section defines how Evidence from DICE <xref target="DICE.AA"/> and/or SPDM <xref target="SPDM"/> is transformed into a
format where it can be added to an accepted claims set.
A Verifier supporting DICE/SPDM format Evidence should implement this section.</t>
        <section anchor="transforming-spdm-evidence-to-a-format-usable-for-matching">
          <name>Transforming SPDM Evidence to a format usable for matching</name>
          <t>The TCG DICE Concise Evidence Binding for SPDM specification <xref target="CE.SPDM"/> describes the process by which
measurements in an SPDM Measurement Block are converted to Evidence suitable for
matching using the rules below.
The SPDM measurements are converted to <tt>concise-evidence</tt> which has a format that is similar
to CoRIM <tt>triples-map</tt> (their semantics follows the matching rules described above).</t>
        </section>
        <section anchor="transforming-dice-evidence-to-a-format-usable-for-matching">
          <name>Transforming DICE Evidence to a format usable for matching</name>
          <t>DICE Evidence appears in certificates in the TcbInfo or MultiTcbInfo extension.
Each TcbInfo, and each entry in the MultiTcbInfo, is converted to an
<tt>endorsed-triple-record</tt> using the rules in this section.
In a MultiTcbInfo each entry in the sequence is treated as independent and
translated into a separate Evidence object.</t>
          <t>The Verifier SHALL translate each field in the TcbInfo into a field in the
created endorsed-triple-record</t>
          <ul spacing="normal">
            <li>The TcbInfo <tt>type</tt> field SHALL be copied to the field named <tt>environment-map / class / class-id</tt> and tagged with tag #6.111</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 <tt>endorsed-triple-record</tt>s with the same <tt>environment-map</tt>
then they MUST be merged into a single entry.
If the <tt>measurement-values-map</tt> fields in Evidence triples have conflicting
values then the Verifier MUST fail validation.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol
defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>. The description of
implementations in this section is intended to assist the IETF in its decision
processes in progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalogue of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to
assign due consideration to documents that have the benefit of running code,
which may serve as Evidence of valuable experimentation and feedback that have
made the implemented protocols more mature.  It is up to the individual working
groups to use this information as they see fit".</t>
      <section anchor="veraison">
        <name>Veraison</name>
        <ul spacing="normal">
          <li>Organization responsible for the implementation: Veraison Project, Linux
Foundation</li>
          <li>Implementation's web page:
<eref target="https://github.com/veraison/corim/blob/main/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/veraison/corim/blob/main/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">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/11</t>
    </section>
    <section anchor="sec-iana-cons">
      <name>IANA Considerations</name>
      <section anchor="new-cose-header-parameters">
        <name>New COSE Header Parameters</name>
        <t><cref anchor="issue_1">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/12</t>
      </section>
      <section anchor="sec-iana-cbor-tags">
        <name>New CBOR Tags</name>
        <t>IANA is requested to allocate the following tags in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably with the specific CBOR tag value requested:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">500</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-concise-rim-type-choice, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">501</td>
              <td align="left">
                <tt>map</tt></td>
              <td align="left">A tagged-corim-map, see <xref target="sec-corim-map"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">502</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-signed-corim, see <xref target="sec-corim-signed"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">503-504</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">505</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-swid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">506</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-mid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">507</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">508</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-bom-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">509-549</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">550</td>
              <td align="left">
                <tt>bytes .size 33</tt></td>
              <td align="left">tagged-ueid-type, see <xref target="sec-common-ueid"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">551</td>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">tagged-int-type, see <xref target="sec-common-tagged-int"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">552</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">553</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-min-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">554</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">555</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">556</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-path-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">557</td>
              <td align="left">
                <tt>[int/text, bytes]</tt></td>
              <td align="left">tagged-thumbprint-type, see <xref target="sec-common-hash-entry"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">558</td>
              <td align="left">
                <tt>COSE_Key/ COSE_KeySet</tt></td>
              <td align="left">tagged-cose-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">559</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-thumbprint-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">560</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">tagged-bytes, see <xref target="sec-comid-raw-value-types"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">561</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-path-thumbprint-type, see  <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">562-599</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
        <t>Tags designated as "Earmarked for CoRIM" can be reassigned by IANA based on advice from the designated expert for the CBOR Tags registry.</t>
      </section>
      <section anchor="sec-iana-corim">
        <name>New CoRIM Registries</name>
        <t><cref anchor="issue_2">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/14</t>
      </section>
      <section anchor="sec-iana-comid">
        <name>New CoMID Registries</name>
        <t><cref anchor="issue_3">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/15</t>
      </section>
      <section anchor="sec-iana-cobom">
        <name>New CoBOM Registries</name>
        <t><cref anchor="issue_4">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/45</t>
      </section>
      <section anchor="sec-iana-media-types">
        <name>New Media Types</name>
        <t>IANA is requested to add the following media types to the "Media Types"
registry <xref target="IANA.media-types"/>.</t>
        <table align="left" anchor="tbl-media-type">
          <name>New Media Types</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Template</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">corim-signed+cbor</td>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-signed"/></td>
            </tr>
            <tr>
              <td align="left">corim-unsigned+cbor</td>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-unsigned"/></td>
            </tr>
          </tbody>
        </table>
        <section anchor="sec-mt-corim-signed">
          <name>corim-signed+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-signed+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer COSE Sign1 wrapped CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F6 D2</tt>, <tt>D9 01 F4 D9 01 F6 D2</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-mt-corim-unsigned">
          <name>corim-unsigned+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-unsigned+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer unprotected CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F5</tt>, <tt>D9 01 F4 D9 01 F5</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="coap-content-formats-registration">
        <name>CoAP Content-Formats Registration</name>
        <t>IANA is requested to register the two following Content-Format numbers in the
"CoAP Content-Formats" sub-registry, within the "Constrained RESTful
Environments (CoRE) Parameters" Registry <xref target="IANA.core-parameters"/>:</t>
        <table align="left">
          <name>New Content-Formats</name>
          <thead>
            <tr>
              <th align="left">Content-Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD1</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <seriesInfo name="DOI" value="10.17487/RFC4122"/>
            <seriesInfo name="RFC" value="4122"/>
            <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>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <seriesInfo name="DOI" value="10.17487/RFC7468"/>
            <seriesInfo name="RFC" value="7468"/>
            <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>
        </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>
            <seriesInfo name="DOI" value="10.17487/RFC8610"/>
            <seriesInfo name="RFC" value="8610"/>
            <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>
        </reference>
        <reference anchor="RFC9090">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <seriesInfo name="DOI" value="10.17487/RFC9090"/>
            <seriesInfo name="RFC" value="9090"/>
            <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>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <seriesInfo name="DOI" value="10.17487/RFC9052"/>
            <seriesInfo name="RFC" value="9052"/>
            <seriesInfo name="STD" value="96"/>
            <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>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="STD" value="94"/>
            <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>
        </reference>
        <reference anchor="STD66">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <seriesInfo name="DOI" value="10.17487/RFC3986"/>
            <seriesInfo name="RFC" value="3986"/>
            <seriesInfo name="STD" value="66"/>
            <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>
        </reference>
        <reference anchor="I-D.ietf-sacm-coswid">
          <front>
            <title>Concise Software Identification Tags</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-sacm-coswid-24"/>
            <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>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <seriesInfo name="DOI" value="10.17487/RFC9334"/>
            <seriesInfo name="RFC" value="9334"/>
            <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>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-22"/>
            <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="14" month="October" 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 the type
   and degree of trust placed in the entity.

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

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-concise-ta-stores">
          <front>
            <title>Concise TA Stores (CoTS)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-concise-ta-stores-01"/>
            <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>
        </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>
            <seriesInfo name="ITU-T" value="Recommendation X.690"/>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
        </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>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </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>
            <seriesInfo name="DOI" value="10.17487/RFC7942"/>
            <seriesInfo name="RFC" value="7942"/>
            <seriesInfo name="BCP" value="205"/>
            <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>
        </reference>
        <reference anchor="I-D.fdb-rats-psa-endorsements">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Verifier Endorsements</title>
            <seriesInfo name="Internet-Draft" value="draft-fdb-rats-psa-endorsements-03"/>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="10" month="September" year="2023"/>
            <abstract>
              <t>   PSA Endorsements include reference values, cryptographic key material
   and certification status information that a Verifier needs in order
   to appraise attestation Evidence produced by a PSA device.  This memo
   defines such PSA Endorsements as a profile of the CoRIM data model.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.tschofenig-rats-psa-token">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-14"/>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>HP Labs</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="23" month="October" 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>
        </reference>
        <reference anchor="DICE.Layer" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Layering-Architecture-r19_pub.pdf">
          <front>
            <title>DICE Layering Architecture</title>
            <seriesInfo name="Version 1.0, Revision 0.19" value=""/>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
        </reference>
        <reference anchor="IANA.concise-software-identifier">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SPDM" target="https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.3.0.pdf">
          <front>
            <title>Security Protocol and Data Model (SPDM)</title>
            <seriesInfo name="Version 1.3.0" value=""/>
            <author>
              <organization>Distributed Management Task Force</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
        </reference>
        <reference anchor="CE.SPDM" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-DICE-Concise-Evidence-Binding-for-SPDM-Version-1.0-Revision-53_1August2023.pdf">
          <front>
            <title>TCG DICE Concise Evidence Binding for SPDM</title>
            <seriesInfo name="Version 1.00, Revision 0.53, public review" value=""/>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
        <reference anchor="DICE.AA" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-17_1August2023.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <seriesInfo name="Version 1.1, Revision 0.17, public review" value=""/>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2328?>

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

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

concise-bom-tag = {
  &amp;(tag-identity: 0) =&gt; tag-identity-map
  &amp;(tags-list: 1) =&gt; [ + tag-identity-map ],
  &amp;(bom-validity: 2) =&gt; 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&lt;$corim-role-type-choice, $$corim-entity-map-extension&gt;

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

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

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

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

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

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

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

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

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

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

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

accepted-claims-set = {
  &amp;(state-triples: 0) =&gt; [ + endorsed-triple-record ]
  ? &amp;(identity-triples: 1) =&gt; [ + identity-triple-record ]
  ? &amp;(coswid-triples: 2) =&gt; [ + 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&lt;{
  ? &amp;(class-id: 0) =&gt; $class-id-type-choice
  ? &amp;(vendor: 1) =&gt; tstr
  ? &amp;(model: 2) =&gt; tstr
  ? &amp;(layer: 3) =&gt; uint
  ? &amp;(index: 4) =&gt; uint
}&gt;

comid-entity-map =
  entity-map&lt;$comid-role-type-choice, $$comid-entity-map-extension&gt;

$comid-role-type-choice /= &amp;(tag-creator: 0)
$comid-role-type-choice /= &amp;(creator: 1)
$comid-role-type-choice /= &amp;(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 =&gt; tstr / int
    ? 2 =&gt; bstr 
    ? 3 =&gt; tstr / int 
    ? 4 =&gt; [+ (tstr / int) ]
    ? 5 =&gt; bstr
    * cose-label =&gt; cose-value
}

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

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

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

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

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

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

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

$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&lt;role-type-choice, extension-socket&gt; = {
  &amp;(entity-name: 0) =&gt; $entity-name-type-choice
  ? &amp;(reg-id: 1) =&gt; uri
  &amp;(role: 2) =&gt; [ + role-type-choice ]
  * extension-socket
}

$entity-name-type-choice /= text

environment-map = non-empty&lt;{
  ? &amp;(class: 0) =&gt; class-map
  ? &amp;(instance: 1) =&gt; $instance-id-type-choice
  ? &amp;(group: 2) =&gt; $group-id-type-choice
}&gt;

flags-map = {
  ? &amp;(is-configured: 0) =&gt; bool
  ? &amp;(is-secure: 1) =&gt; bool
  ? &amp;(is-recovery: 2) =&gt; bool
  ? &amp;(is-debug: 3) =&gt; bool
  ? &amp;(is-replay-protected: 4) =&gt; bool
  ? &amp;(is-integrity-protected: 5) =&gt; bool
  ? &amp;(is-runtime-meas: 6) =&gt; bool
  ? &amp;(is-immutable: 7) =&gt; bool
  ? &amp;(is-tcb: 8) =&gt; bool
  ? &amp;(is-confidentiality-protected: 9) =&gt; 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
$instance-id-type-choice /= $crypto-key-type-choice

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 = {
  &amp;(linked-tag-id: 0) =&gt; $tag-id-type-choice
  &amp;(tag-rel: 1) =&gt; $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 = {
  ? &amp;(mkey: 0) =&gt; $measured-element-type-choice
  &amp;(mval: 1) =&gt; measurement-values-map
  ? &amp;(authorized-by: 2) =&gt; [ + $crypto-key-type-choice ]
}

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

non-empty&lt;M&gt; = (M) .and ({ + any =&gt; 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 = {
  &amp;(tag-id: 0) =&gt; $tag-id-type-choice
  ? &amp;(tag-version: 1) =&gt; tag-version-type
}

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

tag-version-type = uint .default 0

tagged-int-type = #6.551(int)

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

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 = {
  &amp;(version: 0) =&gt; text
  ? &amp;(version-scheme: 1) =&gt; $version-scheme
}

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

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

payload-or-evidence //= ( payload =&gt; payload-entry )
payload-or-evidence //= ( evidence =&gt; 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 =&gt; one-or-more&lt;text&gt; / one-or-more&lt;int&gt;
)

one-or-more&lt;T&gt; = T / [ 2* T ]

global-attributes = (
  ? lang =&gt; text,
  * any-attribute,
)

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

entity-entry = {
  entity-name =&gt; text,
  ? reg-id =&gt; any-uri,
  role =&gt; one-or-more&lt;$role&gt;,
  ? thumbprint =&gt; 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 =&gt; text,
  href =&gt; any-uri,
  ? media =&gt; text,
  ? ownership =&gt; $ownership,
  rel =&gt; $rel,
  ? media-type =&gt; text,
  ? use =&gt; $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 =&gt; text,
  ? channel-type =&gt; text,
  ? colloquial-version =&gt; text,
  ? description =&gt; text,
  ? edition =&gt; text,
  ? entitlement-data-required =&gt; bool,
  ? entitlement-key =&gt; text,
  ? generator =&gt;  text / bstr .size 16,
  ? persistent-id =&gt; text,
  ? product =&gt; text,
  ? product-family =&gt; text,
  ? revision =&gt; text,
  ? summary =&gt; text,
  ? unspsc-code =&gt; text,
  ? unspsc-version =&gt; text,
  * $$software-meta-extension,
  global-attributes,
}

path-elements-group = ( ? directory =&gt; one-or-more&lt;directory-entry&gt;,
                        ? file =&gt; one-or-more&lt;file-entry&gt;,
                      )

resource-collection = (
  path-elements-group,
  ? process =&gt; one-or-more&lt;process-entry&gt;,
  ? resource =&gt; one-or-more&lt;resource-entry&gt;,
  * $$resource-collection-extension,
)

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

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

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

resource-entry = {
  type =&gt; text,
  * $$resource-extension,
  global-attributes,
}

filesystem-item = (
  ? key =&gt; bool,
  ? location =&gt; text,
  fs-name =&gt; text,
  ? root =&gt; text,
)

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

evidence-entry = {
  resource-collection,
  ? date =&gt; integer-time,
  ? device-id =&gt; text,
  ? location =&gt; 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:
H4sIADurNmUAA+y97XbcRpYg+B9PgaF1qkh3ZlKkKFpilV1FS3SZO9bHinTV
9NbxFJGZSBKtzEQ2gCTFkjVnHmL+7L/5sU8y+ybzJHs/I24EgCQpu3t6zrbP
qRITCETciLhx437f4XCYXB+lT5KkKZp5fpS+KJeTos7Td/ksr/LlJE9Pl01+
WRXNbfoqWxazvG6SbDyu8mts/O70VTItJ8tsAd9Oq2zWDIu8mQ2rrKmHk7Iq
FsPHT5JJBl2U1e1RWjfTZFIu63xZr+ujtKnWeVKvx4uiroty2dyuoJvTk/Pv
kqRYVfS+bvYfP37+eD/Jqjw7SrfO8skaodlKbsrq/WVVrlfw9F2+KJs8PT5v
AL6sgb7St1U5yafrKj/bSt7nt9B6epQCvIP03fH52SDNGtd2kF7nVTEr8mqQ
1uvVan6bTq6yYpkk0GA5/Vs2L5e5QLsqjpI0bcrJUXqb1/BnXVZNlc9q9/t2
YX9Cy2m+aq6O0sMkydbNVVkdJcO0WEKL70fpt0X1/qqc/x1a8iJ+ny/f26dl
dXmUfldl6+VVCVuSnp2ew9N8kRXzo/QKGo/G0viPddGMZq7laJrrOOej9Luy
rmGubpjzq3KR1eYxjAPb+3daj6M0qxZ+FG47krZ/hHejSbnQzv9xlL7M66sV
LFTuuv/H8hKeBS82DHBLrQFgaR0P8XqUni2K5sp1/zqfuie0QIikc9/hMp+O
anz/xwJf2L7+MkrfZkvX01/yQn5TP9+vsxt4cp5PrpblvLwsaA+l15tiPi+y
xQhghEZ/vKK21DfidFMV43WDu5umMtYL2N+yWmRL7F9HfJFVdZMvgzc09o/L
AtAQNvH//X+a9NsqX0Cj8//rlBrUgGJ5c5S+Letmlk2u0idPHh8cPKZ3EzgN
R/IBPyinMM7L4f6zJ0+fy5M1wAet/pTjoLf0cHVFWP0PB8+HB/t7w/29Z8PD
J8/39+ilTHmSjcs/Nn8vRgCh9CQTpV38hp6l8Zx8K9inpkybqzx98fLlD2m9
yidwziaEBHUKe03vTo9fH+M3dTHNK343SpIldtbAmuCKvvvuxcHe/v5Rul4X
U/791cHhs6N09b74MGzyDw0/fHa49xjAnk7n/Ps50A74PS6rYVlMcTPPzl8+
PzwiwIfwpqxz+vvrI27+dF/aHPg28LVp8+z5wXNuc+j7AZpkmjx5/uwQfp4O
X46IHNbZZAHksL4ppjTkjc7h+ZMnB0cpUcusmlzZb+hhnsGmw/+1XkyYTg+b
bFgD0uVITOVPbAsLOppny8t1dpkPgcA22eWwyi+LmrAgegMf/KfRIawTzUAu
At3a0+WM9wFIaqPH4jb9n//1v6XHZ69HeylcEuW0WF6m1XoOYMhnZ3an03KW
fpvVxSQ90cbvsHG6/e3Ju50BoM+yXELbuXsvvUirF9CKkOUlTADerov6CjAr
7uwlNKMPlcxyJ45AVEuCBoY5z+c5nNvFeulwEU5fycdnCrfVUbr/eO/p8PEz
Pn1wO+R1ASuhfZ6e/zg8h62mXvLllKdJq8iLmFWXeF6vmmZVH+3u3tzcjIpm
PQJytFvlk93z4buTF0NtT9uF1GE6LPxyH6X+UQIXor5xB+Kr5wf7R4IZs+mY
EWNVZ0MAqKxqpAcN4EX8RL5o6gneE8vi0n/YlO/zJX9Bf0LTl6cvTkY/ZLd5
FaAHPk7pMW7AMeBuAdjRrKu8bwfO8S6HXXtRLlZr3MX0T3h5xwuc/hlpICzm
3ugxXNX5dUG/Ho/2npvd+T/WcEfvP97vXu2Gh5roSMQlIAnbvVnhyQFS1eyu
V/Mym9a7OJOhzmRoZzKs9p7/bbUej1bTme6Snru6nDU3wJIMgWQtG+Id9GTj
QUP68Pblq2DJlHNBzgS4gnLOKJ01WfoKKPY83cZPejEYcV9pKnBicHxxN9Pz
rH4P13g1yTes5JPRY7N4rzJauye9mDpdNDNaLriM8np3ms+y9bzZnRVwzHaJ
JcoqWDlg/NaEUbsvz94+3v/q4G80kiwXoE1rCc5f/IkxR9nMk2tcP+Ayvy2W
dJQBx2nlfkUsCtHo6ZNBCns6B2IEPGyR3wRYtcz7V+ZBWAUzHRJmyUyHOtOh
zHQIMx3iTIcC6hBAHSqgw6dP/rZ3vL4k9nf/iSwpncXj4/ZBPPa87L/QWdwL
z+JX/Yu4EbsefjLN1MLD6Zdtzy/b3letZUvwfAKHhEfy5IfvUFj47kVzVdRb
STIcDtNsDOcqmzRJokJE0yFEwPWCYsMOXHfZeI7y0fwW1+1tVjWwXMjlZHWd
1zUyNAlNEyQOGGaJz+D+y2ClTPfAyQv3A8ICXNrYwRSuzGme3lzl+Bif5MtL
OOdA+mFXgHjkKbKzCCxdWTfA4KbA8/tTBNzauknj0SfZMh3nyGVAtwmu/Tz/
QMMXTVrUMC6Qkmm6XoKENccbdgJwZU2aAzt6G8z0FptPshUtAUwK55qtVlVW
1HCrwgOFZARCg5sZ9jVeV/ACPwchD696oN/lbIYbzTxilvxZZLARXNaAplNe
AkCK6XrSmDnqeCDCpfoNLO4/rwvcpmXZpOVyfpvMKpRA3GezqlzAnN3yDwCk
Js3mdZkKUgI/4S9JWh4nBCd/zuZr6Jw6kWZV1CalNogxOGRVoygJjDoIWcAS
r4FpR6yFx8lUCXmJjYDeTQF74fvyZgnvceVwT4S2KsucE2Klhj1IgYdhUOFR
UuUrmC+iOmxV/0RSmQhg1Itv37xLubcRn4RFAWxzniRfILdUlbjsyBMlv8Z2
pL9wO7bz0eVokGJj6LyG66jGpZvkVePZTCBA2U73hPV7WMNrIWq48sUldkjH
c1ZUC7zRUzwgIBktmx080uWkyBAaOmz4uUI8Ss5wf+9ea+yzBD4bDuOU543d
VLB91xlusFE4pIAlZT/qpHegDu5UluoBtx0P5KjPi/dwnPlILmARC2gpg5J4
m65o3/HQAjal1zKDBkae0bSadFUWOFUAtikW+Sj5NkexDcGBy7M9Ge6WUGDF
R4OmD5JHndPKQ1ukaIA5SHlqhg2a3Kbvl+WNkrRg4fWvGgCsbnlNcfRrYnOJ
mgDeXSFW4Y4gT5Gll8A4L7WJ+4Tn25hvRslrxVk/DpLQ/LqcX+cR2V7mN+ki
z+p1xewYqrAA63MmakB18w94MOt8Khi+dPQDNveWMf4G8QCa6wJhp7Vyiw5R
skb4v1oWxRwf3CJA4TUiCu+Q36Ckj6DcR9eH0hdq+eAsMMX4+HGI8vCnT+k4
g1nRmUsXxL9m0ylOFSkQ7hcACcsF2zufwz0G441v0zW9xcX8AFd9XeA9wjQI
0XaBMiZsBCBMx6mglVcKA8hOcMl9XPsX2AOIWDg3xO3U3nf1BLV+FYAd9A/L
BaOmCBt8clUuyst8mZdrwC/gbWAFv/gCRMZqUYjwy8ecKByf+x9EoI7Xel0j
3YYvGXgEKl81eOPOiBqMb2mlkLNIM8PcjJLvCGcZdmAaLueofANcr/MctgBE
CSJ4B3iAhk598OkT7XZOQyqwhOrh1g1YG4O/geLDViJwL96cndCjss7xEawP
IMnvkPlYIZMzWc8zOFDU07TILpclcQpwaJj4Fn5a8ImH8RnByAMnOJB/9Sd+
RTAI5O/h3KOqtk63Xv14dr414H/T12/o73cn/+ePp+9OXuLfZ98f//CD+yOR
Fmffv/nxh5f+L//lizevXp28fskfw9M0eJRsvTr+xy0mGFtv3p6fvnl9/MMW
naJgSzPm1cbCi8HhxtshqxOggRM4nzz9b1+8/R//fe8A5vofgNvc39t7DkvK
P57tfXUAP4DLW/JoRGr4J5I9ZKjyrMJe8CAAt1U0QCUGeB3UV0DpUyQ+o+T3
f5jDYqfDwz98kxCG0p6e367KyypbXZE6BU74NfIEwC3y8lIb2qaCecjW/Gbl
fA5kF9FymS3wtE58JynQ8jWyyzDnhHa5Gc+HjY55S9v4MwIBiwRsQZP+nJ58
yBCJ058j2Hy36c/Jz8B/wIeGKiAhheNZ4vX2c3qBFG03RT0f/DMajS7w4aOL
18evTi4QgHzIbS+ws3QCxwUpcF8f+HXPpySRmI+20730629S+nY33ce/CYod
hkBBoM86Ogp6GMTfm2/5I4KYQQ1hvKC32eWlTgsafXE42tt/sg1tGRh+PbyI
vlpkBMbHTjA+6TDDC2jHQMzm2WWNn/xmO82OUhD9xkfwyY5vSi2w8cej9IsQ
BVgu/XqLcOAccaBOf9OPllufGHeZ+ONHgqmMh4h/hLN8r+LhW9d8xMZwW7MF
islX+er0JZHqL9LXIAmeLFbNLXd1sYTfOf6+SJGwVyjgIHiA99QbSlp8TTP3
kdGaEcdHh7Ncsd4wWeSLMV4xRJKg4RxufrxpJ/M1XNvIT7BQlEpDgOe/wH+s
j3ZQ/P7VN+nX6TbcqSOEfPtj+g8whVvcE/zn0w59xFM5IeE1/fgF8ANDviKH
LNB+ksnxryHtHkwoC6coVEluXWuDQTZ6Vfo7OEG4RQQXiXUhTABIZMQ9FktU
/jTMEMPdxZco3fc3Jd4S2SJHdukoSb5Mj9OLqpznwQkDNnSUj1BSqFEDq7ph
bCdLT7NB5kSkyzQclE80zGQyz4oFDbOEJWCyAUsD7Pr7vDHjsNmBnvIAIgz7
fYdPURlPHIvhsCLOP4KrDRXtNO2z35DfxwswSGNQERM+wvC/2ZbP2Ej0eAex
4ZF5ZruB9n+AL6r8cogGhT1qzBYIeFqiWmifnv0VMCuGIf0Jmn3ZAiQBfOob
L939mqhFQmgZnk699uo0R7sUI76ukkXOEe7WhRnhIgXSNQXO7PEO2hjpvqED
xG3gSiygQ0C7CFEFL1gLsl2jlBYzVDjnEVDnnvlcEBbQ0R5jVzi3UZq+IbVL
ZKOaKLPKpqoNfW4DbwadffyIR7XIlhme12L66dMOT523y816D2Z9nP747rRT
ygxOKiEu3Py1TF0WCEHgnmG6rt996tdefXzfC1duzhr+lK4KtArQmYJ2sBTn
0hKXn055QUwOHCh3ylPpAYWM1mZDb0qGIrohaBCfWITZnlU9nyBTkDhkFR/A
gKyJTUZeX45uhGnCdNBxvRJ2JqCUPdApeZiVa1SPLRPeTfZkELrL7LK+gB12
L+T6Abm/mLao9rU8hXMGpFF/MTROe1P7JSX2Epql0zXZWPg4kOxcXALwyU1W
VRl/AlsBvBZJ2gsQaBoWavyKeSEaFZtrR8Wop2lSjv8JiLHqSDzdR8QllUII
7oDvXjgShhwKsHhDk0WQ8SVflZOrIUmKCaqHd2lq8GIFCOQFgSejg9G+kRP4
3uRr0w4txBKJH8gdwzHJ4EotsWuigPgqmzVokdnzbz4x9foS2QH9NCBBOA+E
EQhDvNhTtySpgoMzKEq8Ocb5ZYH8tfRMIwen/HM7xgVmjPrxx9OXITahGRww
6Uc5JsD6wTaNbxvcYUIXOqxw76PQSJ93CmcHo73R/ghWPuEeg5XHJ0TiYNmx
6zod1cXf83TvMBFW07YAbvTJV9vuyU7ieJgfT1rQ53dDL+4QZBQmGgWdvEAK
lW7jfHbMhBI7of3RHmFSnjXRdPLu6Tx54qaTB9N5+vTxtntk5vMmnk5592xw
x789eeet5R8/kvUXqAmyWnhE63K+RiShw5h4u6LK7eTAEE6pjGakEymDeezt
7W2X7WmcszRBOh8YhRj2YFrSGZxtnR0hFVwTwCgb+OROhrldF1W5RDESrhBm
GYGvhtngwsiNkxQyHukWsYmo5PTeFTsFfrBEvceYbAWLPMMrbLae8+3E6rdB
widpPMclveCeLlKAaj5l0RbIPsHLdJb49jFqyFbreSbeKYxHBBveqPUqgzsT
yD/A4E8rQ7sA4Ze4R3xbN2U5tbvh1ytAoj2S0Py6v2Slc7DUV1l9hddIxdeD
6KWja4FhIM4c2+OUy5U4zMBELtls5FgIbJNk80u4u5qrBd2ocrMTdEK5ZSjf
zmysXIZ5QYYjFkphpy5IhIa+/nKVAycO15ByB6RK87urWudAUzKBy5RcPMQx
aOs1ejkEfibfA+TpsYPonTiubOFJ8D4ReBQIAh7EwMEADlhNS1fSslSTBCvs
aJGAIUM7NuIASKmJ2ELQ5YXZA7RpEAbRxN3JhbGM5kiWlId0jZL6qlzPp8pj
MjuDOh7ukBf9Qrg0lIZvkc1VNSwtXmLUyiqXwkwAxAk6vwBtHMNqLXgqzq5C
7VjtiCcDOUSjaBmmfMVbeolXwFOimM7tg1lWh9eCIl+nf0W2e355hJebqlJ2
BvAQAD4SCvSTIPq9tMtOuayHAdgsOgAs15M4OwFRw4uKDaomkP+qcj7AwItm
pIMmKUBVcOMcxBNUKWJzQWP42lsxSJ9AcqrC+aqcroHhBdq+TbqEHR5r2zB6
sC4kISN75cdFxS7eS7Vhs64AsciYRPYHtSwtaIh6ZIc9E0cSGfjsL25k1sXe
4LBuZqn6nXgrVdjdt2RtmcEKo0UFLk/o89s3r+LJjMuFnQyCjJZf/JImLyoV
hIa/dAKDM/EJhqvbHq7/Fspk1/kWWyPQNoedt80RMA22/VDXdEs4vR8aAHEs
sWV0SGMqErwvhAE1nC4rznPm/gduVcjfIT1egkBUpWfkL4cLg/Z8WGV1nIN1
RjqyrhBD6NyygMtsBt196vwiCOrEGBQ5UPzlx7Ks+MF6WfwzXnOeqOKN493Y
UEVB37BFiig4PYBt/et/RseE90DusuYn50JxCed9PUa3013vDnhzudvpfb1b
1PU6r3e/epKIvYRWEI1OSC9ZWvbCvCq6HHaLJmdewgaU1UAuxAzb1ziNSUk+
ArAJq7LGDbx1BxPnwF+vqhJdh8wiDLxwr4KeuyNadm5Zzdzd6EBMRL8L6DMy
Awhc2AZFDlnZGujlIhOl/QQQAY6yDDorEFEd5+EsjGkaoBEbXVqudcSL4QQj
1t3NbjlFxM2NUMcNiGPyvIVHGjYiVzn3SL2fdotx1nzldFMdipJAo+cHEyNm
UVnlA6kGRp78Ct0UQWXbisL8DEkIW/TIeHQGD/esHRMWCy4UXDNvzlR34GDO
cpE7qs/d8+0LnTXMQl7l2ZS4Erzoa6AQFR0XQSvSQ3YLvYIHJDaPkuO5uIJe
5/PbQThXI7qyvVOY4HSV3aKvSrgKwFPiEtBigigOi18hnHgmSMVJLjuwR8tl
Ph91qrW99oxQpFwN5zmAxUDZO5gGhCtYeEx1Q0QorGIwedTzhlR4+q3Afp/G
vBP8jbKwsmSvQB439zathrEyBZTboeOFa8va6lpWRJ3BUd2H1zB7J9UULIKW
JMRg5b75C2WoJhVIekS8Kj42/EvpKozUWkejSvjNNmpQRd3KL0VS8rrW32wj
oVFlAupU3cKhX3WsW0XtxDRfAdYDXuLS1lYdy2MIQSVA9BuhYkfpE4ZGfncp
fqEHpTlH6QE1t2oSaaZ04Sh9Gg3vNWGiDX70yC3M0F1qqjLZqPCdXBUoazX5
gilMUcuSfwl88zRQsBx7ca7zWtSDrHtHgSXM0JEdILVnD9kiGqQhU5RRt6BJ
AFVjdC2RTaYCzqvKhbMpK8vYAKnfMAi2kGHCHQ20rW/MGHVeoUdObWwjwK8U
fK0iq+zuSdfhwOmAyKVJ70/ytjVLgHqONIDOIJEAKSjjoHuCq77013r7JnYH
k1gxe9WSYrWodStIytHvVY72crBq3vnQrdBtEi4WukmzYs6uqOKYcblErUtj
ujPgUM/s4KXXfZX/k+H/nQK8yh1op7OUIsiWl4OgX3FcJgmPfGeTNFjPYDXt
cdNNtwfNLeoBLOpZ4JUX3f/BVds7ZqgU/uStI9CrG+spHRtlzd1FXyzJF4n6
U0I3BxQaTm4n83zjNFVXTeN1HvuLI3ZBtOp4w6h1aOSTNNTJx5QetuiMWChj
GUFJ71OH9sQSaFSfPN7bdo+MEuV0moeWUaEJnns59UjF1AbOnEO02i0ba//F
Y5XZRmEYhZsk5SldTmgB86gKZ5MNRmyaRjnEv8OIqzmKoVZ8QK+wPNAYdd44
dPvCeva/dUrWQJlXB2tBpItMDX2XlZiLhcEhvx7lcsRSynwWq3/SLGH6GQnE
ZGRlemoEVnJOxBcge6aB0BlNv/sa3W0xOhRYgbFKD/hm8fBPAET6xK3rD0xj
W8yOpb18Q8oTch1wAiDJvs4pDWh/AU1wUW9INeXuAH8FDBLv05qzkydLhc4P
MJCNxLU7b6DXa28Adb7ULdbHch7KAl1V+UyZIDYjI/sAYuZivKpgAsr6sCLo
AWyBuCg7zgAXn1kDHDJgDtAQajl5sse7mxOvhHJdqYJLrXQ56cKYDXDQBsyA
0z97V1++U6Q7p3SjpWOwkH56etXW0Kqd761cM+S1EmBHeJckCbcU5SH7h6BY
UNQLUez9WoIrHnhz+6H/vwiaMnHPCmSVunmISFjlqiOdDhIR9Cu6TK+KcUG6
2+VUenOXhboDk93vQ15NCEJseIUKuOOQZUCvuwzFLxZib+GUfEAMB4EaLbAT
ASjSsjDWmK6O/zF1coHXjMvH7Ofrv0zZt9P5G/v2cZ/GzC9tO3pbO/9Wpeyt
tdiuHfKoYgs2Hy/dnVFy4hap9Z1o1EjnX13nzrC6dHADcl0WuHtuwUaq15GJ
1Km4PY6d7kzZBA7YgVswuwaWjEI41OvPCP26IHjE4Mq3Tk0GNRf5tMjk5gsM
izjpRRNpCRAfkujdeuneOouF51+9lwHuhHAUGGpQwhFHUyrtYEuWh1OBGykW
HVYTo+0AtQSI7TdLA3lwWAwLWvgrb8m2vsD+xjfbj+/IfxaopXNd7eiqm/HQ
VUe1An8zQqGF1DnoKK2WEXk5wEAcxvN6XlxeUQwEOv5L7oKidkpYPHrWVZ87
SIjG0AG8ytCD3TTxwAYXc4fsSYxHVaS9LyPbYxL6sBURiQyc2BipTtQXhQ1J
6pXhOX9tIc4byXZAoZWzVZ1URqwPjtXyQ5MdI+sMubkYHKaLqq28yGIgkwu9
s4ekgigr7dax1V7MNty1OfeeuSa/QB09CUZvX+FGev/aeQORv1nPfAfpJoi+
SZKe73BXf7MdTxO5AacKOmPlIK+N3V853QZ4q0oSw/SzbVQcDklxyC+kZ3xi
tTiqJJJjoTF5ZtuIf33DjizuayA7J8tJdUuXnnduR52xkPTs0gmzNxV6XqtM
BXD9jRWaTrQZGVzVj0Q5Gki/sk7dGr8Qs/SOxuhAdBYg+4m5rEivynrPxPtX
pv5Aj71DbKeyFFOXXCJtMMxUsklLqhpQWgWV4fImY5VdqP6Ex5GpMN5OMRo6
sI5SjLZMR0hP/VPpj0EWBdZ6aT4yP7raitgSdN5Sdqa0VxluJDdUU+Uv4mMd
XOzBhkh4IivY2gtn8/BvFG9g2SyAI7RcsQQR7FUt/MiYg8i5j++5d5RQ1OwJ
gJklY9A8JonDGAfnBbBQIw8Fz5AX189PMUQFR1FVQ1P3pR/RPUrHIHm892ug
LlD8klTmAQKjqXnp9e7e3Bn6rrnhhSFvrYlBzn4ccpJQNrcutcB80VMxUww5
PxGrZ7coQIaP8W7I0vwDIuAWK5fR/FYN3+e31C2ragn5uF89RkfpM/dKEDg8
eqSlReo1BM4tn2Nb+sWuAr9UUcvTDl1TvS8Ho4vlYPzGOb8R7siuVKiFVF8o
6ixybNl6dfqKcgI0aprH1VOHDiFtwp4yPoh+2a5uoJ87TkFi0SEdzmUUXlSo
6mjFBmqCSv1IRXdEHeuUdB/cCM9oBMQblkb1rBpfhNCjN5PD7fC1Xz/HRBV5
Uy/8Up8i80qwgV8Wc64RorZvJXn3ycXH5+RVjjknYvMNDmzZMXxAXZqtNy7D
aCBVxo6XAa895rpxrqSqldmSPhFzflXSBzKswAMTs02SiFX/Q0f0ZzZ3WkfK
nIXPUCtCvLxa81qmHTkw7khzQ1VvGOakMqYSh9DGrrLXtqt85jnjLAeORBr3
UNR8dFt4ZZVpZfGj+h4qZT810e+2pxWc8T9Hemu1BXTgqDE9tBTXX3yhjGBb
TybgtLbJ70C0UQ8JgJAvQCoJgyC8PcsP0zZrud1oRyO8lkiEbk98WC3cMX+H
5UjOkXm2nQIoHb7+sYqrppHMEIFevgt8uFtPQs0B7Zv4y+QfVhm/csYS2Rkm
9uSP61kDOeqGhbCbZ9kuJjF2IzcxZbKpd19ZxlFMHbC8+KyOWM5V0in4X7H5
zpPeNkurLlgD5381YCsdjUL8RF00ge8O9nqVGbcdHEV4JTV/rAFZxsVlua69
WH8r36otoVbLdFl7tz6SABTwekCbJh4mRMtvUfaYF8v3bAFEdycCWEw8qEiH
D0d+/io71JinA24JZ4cgL2n4mMXgLbgEMRRiK1AaHaP+8Kq4vErJ4QC1+NyO
70kME5CAdpw/glWzFo0ELIqWF0/l9LrIULsERJuo80jsBDKsyffBjCPlSanY
nWsB+BLKTpysRraQ1Zpi2z+nVDLAXTsn49q4sTj/kllOBC9aYOtLOUhJItR4
ROIJFuIuN0jzZhL5qMk8Aje1UXQHaCPyzHMOZCKekhNVKy2EfHKkOEyJzFqN
1O3T+1GX7AJqUmmY9AbtRQrsNUMedAg4CaeQZLcvNR/BdBNgW1GjLY2w0+X2
KQns2AT+tCRBw4c1+yQxmiVO96l2sZRm49s5PkLOLc30UHdNNV9O/VRfcroM
ZzzsmmqIHJYXGVqUwthtoA/5NaD6sKXoY8O/pufogku5UIHMJh36j/l9IHuP
PsMOP5Q8USLTW6c6ZndbodN0KzDX6JCnyid5cW0Tk7iUEl1Qc9JU5Lh1RUsM
OHKGrImB3ISeUkoXT9euilUNvGxzkwPKTqmHWhEqdPdVZ4i8+9QHLtJd8HLn
Qw9eCLaE6QI83WCXK0oCOiEDVBfw20ARhzvq1xt6DRaajAXvGbOu+KgqiDa7
FCzYjc82Qr1KpzsDUTkwdY7CV33sQi+wDtY53M5DZs+hew9PsLYbFtEvliwi
0fmhGH/xijCU8MjJQHwSOggTx9V+YF/YwNm4Cwi1LO9wOo4zVcrdx+MsMAdf
sEzT6XuWWN+z1PqeqbLt3r5nsDTo0nAUcL4BICaYTRNyulA2zmdKjmeOUrho
NvOs09vLOpv58MTA1wx3KycoalVoYHv/2LUGGHRHWXshP51S4tGjaF4PdCCL
Ioa7dotFJ1ykyJ8M12kN+K7rRzyhyuTMoxOWUYLZLZelBXhiSnwaRpZEWVFR
TXyuDrQfnAnOG9XmvjtJluKS10hAEiISzhYThOJtKNCy9RH4s+UcUw5kpg30
JVzVlYlqtgYbO1UEcI2ZQcghRwGlWF68TAAIypNKqGpH0THwblP9M/YQ9p0e
z+cSHO2hpvUkysYMhw6q58NYolzmI1FVoA6ktXgj9eFzKB0JTRcxul/YK5Hv
XXTcE6lBDr8VB7xUixkiepyxBHUlBLLLFQs9/SS5W5e4YR0NrTyHmxH7ZXPS
KRUBnVCwATYTYYwnwZ/eSMmmnmIWmovwVMMX0x7BHgbybcm3hz25CVKST7pv
QbqgMkqjoBEMMKVa9pbpRaCesx6Tyjr7oYJYb+UQnYbOA8835IBimo5M+BRp
poRd1bMW8E7Qk2f40f1ALpO+m7NrWE7dQ4FxqQvsifQyHfdYrTcYuWy13dgM
Ioa+ccEZcDoTfuHUJfyzQ1OCLyTvnb1G5BHbaz+DWLfOpj3OEa1eazxvp/tv
3yG1PrnhATXwByTjjXq4yMsYoxxfoFD2qNNM/6o4lT3T6N/2PnVsgPfm634X
+fId6xDGCyHdOxxSOLGEc7NaW1zslDzb4BqVRhKrezCre87+vi2/23Eee2iP
1H0Xzx8rcKWJNHAJRlX7i8qRdSHGbBgDfUiA153k6mUMa5CQf0utcdHSIcrh
M3KgA/GWJjgvy/frFbNnwl+O0NnXmQ8kUiPpWSCSgtpzzJhX68BIG3UdZhVB
Xw8OkOfoY40qZaNtClOe5nO6SgHFJOOE7Q19CpRllVSALZnXb/Sf0OdU0jFw
uPVBwkHvDo6B+qGcWj8Uh6SauddjquJyRFYsCQCyskZ94kgcp9PHQhJMh+qd
YYO4WUcWRDv5aO4ckyTllCdY9JKJYAI6latySDYL05Ipr+HU5xLOXasv0GNX
OIBViRRhjPiHBB8xiOzniJwNyxOS1NIruEnrKnRcACQPd2CdeGhxyMuMqlE6
kSyoVYUMFK2E/uBGME3SDSbSL1uAkEOQBWIBgV191LOJ/Og5WkCgkiXyeV1j
6VIauGymzuGYew5ctdUuNUgs7Om4wmBfOlkDbZ6pJ30cjsyaMQ75dvxLkvG+
sjWYgcIBDWLJXjr6QmRCovtJvT6fJq3mox7HIcMKBXJVJOW0vWKwQbdXTPip
9YpxtyHjwL+Id1IXXIEbUR94v8iNqGdgdvfBzXCePo93Nje2LkEbG2paGrTE
7e/4teV0REpo1dEK11sYI6CzR+6+V0erdJuxCjkLeeaDLpSbZutt9AVyCM6L
cpG998yMHDwTQ37b1aGfiOsTJYNsqQBDp6SsY18+PeEdvTuLs++fPM6JAyci
btHeMObib87tkAYgzhuTetbBrAe8LDJx06kzSOD5S7eJLpJTNEc0SjpcQwG3
meagIidw+om0Bsqbmsd3saiMdQCvMqeP5HfQ7tdjUAPQQjf0Xs6UJy731ncu
DZlPppl6t982pwpzaeUEwgB2p+TEDpwOzW0FKzRKGUtAcMCxz3o4mVHMjkar
yMeRotO0QAge8t6WgFfzbJLX3uuPjq2i1h2ek+70mgGD0xtNdaUCtnH9b8na
cnBaR0o8IsxGSd41nkFAA6Jx5VIEJKqqklP/hvFNrSD0AB3Or8KQ9bCN3H2I
LEXNSUcoDIh4NZF+A/lPJEW5BozC7cIbPFHPZMiHdCNX+hQ9nVcUK82V1wDG
12WTcEJZfmSTVAvp4AzVmtYSdQiuscucIy1R2tfsEcEXFCIRxHV58IE0+CSY
qvt0fMbQKRqJVFD9CEpgGDUYYhBhNXW6TJX1/fd7wffR+/hzRx7c5/vB59H7
+HNvEfEdPAk6aLWIu/DWiWGoa3VdtMwYPT15Fb3v6WlXT62GcU9Sysb1chj0
Erxtf7rUs2vTJQy5sIjv8lnU5T2+uu9Qbozn9xqj3TmqtQ3iWpX2N59xC5kT
fCQ0KUL6MBmmnGaj6Iy48bo3NrrDyqsKzfCYBNdRx4iRCu0+A6qtVaO/w4MV
aFI7BnR+ecbm2h8922VJFWfG1okMlKQdI3P1R7my0K6KKv3Yhc/5Ilh7Wb+T
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
j1I7puKXEow96qHufpU7VVTONZwpvvqEmvwI185vHP7sUFwJC2hpumRcVFst
1QxVTRX9cP1vk4WWihdmNwyrqq4euSeB65588Af7CXRXv9dc1+FTPnD4xY5e
cNlkiPWqxbKd6u+OqRUrafkVtUzld1c+AgopGLJwoildJJYL36NoJjbp1Itp
8m5NeWckCec6fMk5Efb24g6ZqKPFEt7e5zZly3Y3ZvxCI3fPoVYtV+ioT1Zu
xzGrrxwKd7lmAlLqGBk+MDXUako6o/5r0frto/PR9bJ1ETuVjjqeikjZtKBy
9Zk5jUurLru48hYSzq4Ofx3gRxbQyFwMUDoDMZ+m4BJ3RgO6h6kBFr+M+JRI
DdauCoU8cM5pxjClaRoWiDJ5xJACMYcT5/6IUqECvFIP2CjuvK6wvWCuaBW6
YJZTUUCR0k7YBUsMI7tXwaFs4zVZefMBpRSnIiT8E7WbszXsHxtYSapF9SM+
54oM/Dd5hd2a9FdATvF5K2oaEe2c3O90mlpeTP3dJcFqPKsoGUB0y2LU0N0o
EiAIDa9L7ghcoH4MkCSbUGQI1kOkvc6nO9az3t2VyGFaZvgiJJ7GEaA16XHR
qDyKC2SA4kXipLKy78iRWVeLESVRqt+TBgTLFpGKdGtva4cXR7zczBh3jABC
vOoA5FonDQA5JHgdAOqSJVhFFAFBt05jzqYhUVv7Ox16o/gOLHg8ee+1DjJi
oGEIOvZ5BJkAZVSuEjtB4srqEpdphMOLJRYeXruAfa2P1BJLOf5OPnFuO7Q+
sILDG1TaoPYmI56jZ3Jy4qSIGemkg7WRuAtyl0RZmtjBGF/UUZpv1MBZ4zg9
+fF0ePCMhGj46/AgfXX8Ankkqr7dIRB9xjmR3jSTv6jqVyE0X7EEePr2+gCB
gX8PN4FhBcFfAkbAIkQJxYiZlpxljg1W7YQYXFLuAKDgLiTZX27MYs/RjRlL
bm6aRtqSY2MqTzU6BWrkR/wNSn7SP/7yAdZ+gCAD0x7e0RkbkO89hHj7Kz/k
Owvs4PXGJBqtvIwdpoJA5ndsFuYFdsFFLEawCApnuhb66rPZ2CwIwdkDOAii
EBhM6QbMvU/tY5JkUN8qlQh1la5EcY6smtTaXAYrpPURKeGPBt3FdEX9eV/p
+6IOPa7tSmC3Q+3J+elgReQgGi3k0bgcspc4jJQKa5MVc1tXz8R0sp+EnsoQ
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

-->

</rfc>
