<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-corim-01" category="std" consensus="true" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="CoRIM">Concise Reference Integrity Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-01"/>
    <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="March" day="09"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>RIM, RATS, attestation, verifier, supply chain</keyword>
    <abstract>
      <t>Remote Attestation Procedures (RATS) enable Relying Parties to assess the
trustworthiness of a remote Attester and therefore to decide whether to engage
in secure interactions with it. Evidence about trustworthiness can be rather
complex and it is deemed unrealistic that every Relying Party is capable of the
appraisal of Evidence. Therefore that burden is typically offloaded to a
Verifier.  In order to conduct Evidence appraisal, a Verifier requires not only
fresh Evidence from an Attester, but also trusted Endorsements and Reference
Values from Endorsers and Reference Value Providers, such as manufacturers,
distributors, or device owners.  This document specifies Concise Reference
Integrity Manifests (CoRIM) that represent Endorsements and Reference Values in
CBOR format.  Composite devices or systems are represented by a collection of
Concise Module Identifiers (CoMID) and Concise Software Identifiers (CoSWID)
bundled in a CoRIM document.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/ietf-rats-wg/draft-ietf-rats-corim"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t><cref anchor="issue">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/4</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="I-D.ietf-rats-architecture"/>.</t>
        <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>.</t>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
      <section anchor="cddl-typographical-conventions">
        <name>CDDL Typographical Conventions</name>
        <t>The CDDL definitions in this document follow the naming conventions illustrated
in <xref target="tbl-typography"/>.</t>
        <table anchor="tbl-typography">
          <name>Type Traits &amp; Typographical Conventions</name>
          <thead>
            <tr>
              <th align="left">Type trait</th>
              <th align="left">Example</th>
              <th align="left">Typographical convention</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">extensible type choice</td>
              <td align="left">
                <tt>int / text / ...</tt></td>
              <td align="left">
                <tt>$</tt>NAME<tt>-type-choice</tt></td>
            </tr>
            <tr>
              <td align="left">closed type choice</td>
              <td align="left">
                <tt>int / text</tt></td>
              <td align="left">NAME<tt>-type-choice</tt></td>
            </tr>
            <tr>
              <td align="left">group choice</td>
              <td align="left">
                <tt>( 1 =&gt; int // 2 =&gt; text )</tt></td>
              <td align="left">
                <tt>$$</tt>NAME<tt>-group-choice</tt></td>
            </tr>
            <tr>
              <td align="left">group</td>
              <td align="left">
                <tt>( 1 =&gt; int, 2 =&gt; text )</tt></td>
              <td align="left">NAME<tt>-group</tt></td>
            </tr>
            <tr>
              <td align="left">type</td>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">NAME<tt>-type</tt></td>
            </tr>
            <tr>
              <td align="left">tagged type</td>
              <td align="left">
                <tt>#6.123(int)</tt></td>
              <td align="left">
                <tt>tagged-</tt>NAME<tt>-type</tt></td>
            </tr>
            <tr>
              <td align="left">map</td>
              <td align="left">
                <tt>{ 1 =&gt; int, 2 =&gt; text }</tt></td>
              <td align="left">NAME-<tt>map</tt></td>
            </tr>
            <tr>
              <td align="left">flags</td>
              <td align="left">
                <tt>&amp;( a: 1, b: 2 )</tt></td>
              <td align="left">NAME-<tt>flags</tt></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="common-types">
        <name>Common Types</name>
        <t>The following CDDL types are used in both CoRIM and CoMID.</t>
        <section anchor="non-empty">
          <name>Non-Empty</name>
          <t>The <tt>non-empty</tt> generic type is used to express that a map with only optional
members MUST at least include one of the members.</t>
          <sourcecode type="cddl"><![CDATA[
non-empty<M> = (M) .and ({ + any => any })
]]></sourcecode>
        </section>
        <section anchor="sec-common-entity">
          <name>Entity</name>
          <t>The <tt>entity-map</tt> is a generic type describing an organization responsible for
the contents of a manifest. It is instantiated by supplying two parameters:</t>
          <ul spacing="normal">
            <li>A <tt>role-type-choice</tt>, i.e., a selection of roles that entities of the
instantiated type can claim</li>
            <li>An <tt>extension-socket</tt>, i.e., a CDDL socket that can be used to extend
the attributes associated with entities of the instantiated type</li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
entity-map<role-type-choice, extension-socket> = {
  &(entity-name: 0) => $entity-name-type-choice
  ? &(reg-id: 1) => uri
  &(role: 2) => [ + role-type-choice ]
  * extension-socket
}

$entity-name-type-choice /= text
]]></sourcecode>
          <t>The following describes each member of the <tt>entity-map</tt>.</t>
          <ul spacing="normal">
            <li>
              <tt>entity-name</tt> (index 0): The name of entity which is responsible for the
action(s) as defined by the role. <tt>$entity-name-type-choice</tt> can only be
Other specifications can extend the <tt>$entity-name-type-choice</tt> (see
<xref target="sec-iana-comid"/>).</li>
            <li>
              <tt>reg-id</tt> (index 1): A URI associated with the organization that owns the
entity name</li>
            <li>
              <tt>role</tt> (index 2): A type choice defining the roles that the entity is
claiming.  The role is supplied as a parameter at the time the <tt>entity-map</tt>
generic is instantiated.</li>
            <li>
              <tt>extension-socket</tt>: A CDDL socket used to add new information structures to
the <tt>entity-map</tt>.</li>
          </ul>
          <t>Examples of how the <tt>entity-map</tt> generic is instantiated can be found in
<xref target="sec-corim-entity"/> and <xref target="sec-comid-entity"/>.</t>
        </section>
        <section anchor="sec-common-validity">
          <name>Validity</name>
          <t>A <tt>validity-map</tt> represents the time interval during which the signer
warrants that it will maintain information about the status of the signed
object (e.g., a manifest).</t>
          <t>In a <tt>validity-map</tt>, both ends of the interval are encoded as epoch-based
date/time as per <xref section="3.4.2" sectionFormat="of" target="STD94"/>.</t>
          <sourcecode type="cddl"><![CDATA[
validity-map = {
  ? &(not-before: 0) => time
  &(not-after: 1) => time
}
]]></sourcecode>
          <ul spacing="normal">
            <li>
              <tt>not-before</tt> (index 0): the date on which the signed manifest validity period
begins</li>
            <li>
              <tt>not-after</tt> (index 1): the date on which the signed manifest validity period
ends</li>
          </ul>
        </section>
        <section anchor="sec-common-uuid">
          <name>UUID</name>
          <t>Used to tag a byte string as a binary UUID defined in <xref section="4.1.2." sectionFormat="of" target="RFC4122"/>.</t>
          <sourcecode type="cddl"><![CDATA[
uuid-type = bytes .size 16
tagged-uuid-type = #6.37(uuid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-ueid">
          <name>UEID</name>
          <t>Used to tag a byte string as Universal Entity ID Claim (UUID) defined in
<xref section="4.2.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
          <sourcecode type="cddl"><![CDATA[
ueid-type = bytes .size 33
tagged-ueid-type = #6.550(ueid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-oid">
          <name>OID</name>
          <t>Used to tag a byte string as the BER encoding <xref target="X.690"/> of an absolute object
identifier <xref target="RFC9090"/>.</t>
          <sourcecode type="cddl"><![CDATA[
oid-type = bytes
tagged-oid-type = #6.111(oid-type)
]]></sourcecode>
        </section>
        <section anchor="sec-common-tagged-int">
          <name>Tagged Integer Type</name>
          <t>Used as a class identifier for the environment.  It is expected that the
integer value is vendor specific rather than globally meaningful.  Therefore,
the sibling <tt>vendor</tt> field in the <tt>class-map</tt> MUST be populated to define the
namespace under which the value must be understood.</t>
          <sourcecode type="cddl"><![CDATA[
tagged-int-type = #6.551(int)
]]></sourcecode>
        </section>
        <section anchor="sec-common-hash-entry">
          <name>Digest</name>
          <t>A digest represents the value of a hashing operation together with the hash
algorithm used.  The type of the digest algorithm identifier can be either
<tt>int</tt> or <tt>text</tt>.  When carried as an integer value, it is interpreted according
to the "Named Information Hash Algorithm Registry" <xref target="IANA.named-information"/>.
When it is carried as <tt>text</tt>, there are no requirements with regards to its
format.  In general, the <tt>int</tt> encoding is RECOMMENDED.  The <tt>text</tt> encoding
should only be used when the <tt>digest</tt> type conveys reference value
measurements that are matched verbatim with Evidence that uses the same
convention - e.g., <xref section="4.4.1.5" sectionFormat="of" target="I-D.tschofenig-rats-psa-token"/>).</t>
          <sourcecode type="cddl"><![CDATA[
digest = [
  alg: (int / text),
  val: bytes
]
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="corim">
      <name>CoRIM</name>
      <t><cref anchor="issue_1">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/6</t>
      <t>At the top-level, a CoRIM can either be a CBOR-tagged <tt>corim-map</tt>
(<xref target="sec-corim-map"/>) or a COSE signed <tt>corim-map</tt> (<xref target="sec-corim-signed"/>).</t>
      <sourcecode type="cddl"><![CDATA[
corim = #6.500($concise-rim-type-choice)

$concise-rim-type-choice /= #6.501(corim-map)
$concise-rim-type-choice /= #6.502(signed-corim)
]]></sourcecode>
      <section anchor="sec-corim-map">
        <name>CoRIM Map</name>
        <t>The CDDL specification for the <tt>corim-map</tt> is as follows and this rule and its
constraints must be followed when creating or validating a CoRIM map.</t>
        <sourcecode type="cddl"><![CDATA[
corim-map = {
  &(id: 0) => $corim-id-type-choice
  &(tags: 1) => [ + $concise-tag-type-choice ]
  ? &(dependent-rims: 2) => [ + corim-locator-map ]
  ? &(profile: 3) => profile-type-choice
  ? &(rim-validity: 4) => validity-map
  ? &(entities: 5) => [ + corim-entity-map ]
  * $$corim-map-extension
}
]]></sourcecode>
        <t>The following describes each child item of this map.</t>
        <ul spacing="normal">
          <li>
            <tt>id</tt> (index 0): A globally unique identifier to identify a CoRIM. Described
in <xref target="sec-corim-id"/></li>
          <li>
            <tt>tags</tt> (index 1):  An array of one or more CoMID or CoSWID tags.  Described
in <xref target="sec-corim-tags"/></li>
          <li>
            <tt>dependent-rims</tt> (index 2): One or more services supplying additional,
possibly dependent, manifests or related files.  Described in
<xref target="sec-corim-locator-map"/></li>
          <li>
            <tt>profile</tt> (index 3): An optional profile identifier for the tags contained in
this CoRIM.  The profile MUST be understood by the CoRIM processor.  Failure
to recognize the profile identifier MUST result in the rejection of the
entire CoRIM.  If missing, the profile defaults to DICE.
Described in <xref target="sec-corim-profile-types"/></li>
          <li>
            <tt>rim-validity</tt> (index 4): Specifies the validity period of the CoRIM.
Described in <xref target="sec-common-validity"/></li>
          <li>
            <tt>entities</tt> (index 5): A list of entities involved in a CoRIM life-cycle.
Described in <xref target="sec-corim-entity"/></li>
          <li>
            <tt>$$corim-map-extension</tt>: This CDDL socket is used to add new information
structures to the <tt>corim-map</tt>.  See <xref target="sec-iana-corim"/>.</li>
        </ul>
        <sourcecode type="cddl"><![CDATA[
tagged-corim-map = #6.501(corim-map)
]]></sourcecode>
        <section anchor="sec-corim-id">
          <name>Identity</name>
          <t>A CoRIM id can be either a text string or a UUID type that uniquely identifies
a CoRIM.</t>
          <sourcecode type="cddl"><![CDATA[
$corim-id-type-choice /= tstr
$corim-id-type-choice /= uuid-type
]]></sourcecode>
        </section>
        <section anchor="sec-corim-tags">
          <name>Tags</name>
          <t>A <tt>$concise-tag-type-choice</tt> is a tagged CBOR payload that carries either a
CoMID (<xref target="sec-comid"/>) or a CoSWID <xref target="I-D.ietf-sacm-coswid"/>.</t>
          <sourcecode type="cddl"><![CDATA[
$concise-tag-type-choice /= #6.505(bytes .cbor concise-swid-tag)
$concise-tag-type-choice /= #6.506(bytes .cbor concise-mid-tag)
$concise-tag-type-choice /= #6.508(bytes .cbor concise-bom-tag)
]]></sourcecode>
        </section>
        <section anchor="sec-corim-locator-map">
          <name>Locator Map</name>
          <t>The locator map contains pointers to repositories where dependent manifests,
certificates, or other relevant information can be retrieved by the Verifier.</t>
          <sourcecode type="cddl"><![CDATA[
corim-locator-map = {
  &(href: 0) => uri
  ? &(thumbprint: 1) => digest
}
]]></sourcecode>
          <t>The following describes each child element of this type.</t>
          <ul spacing="normal">
            <li>
              <tt>href</tt> (index 0): URI identifying the additional resource that can be fetched</li>
            <li>
              <tt>thumbprint</tt> (index 1): expected digest of the resource referenced by <tt>href</tt>.
See <xref target="sec-common-hash-entry"/>.</li>
          </ul>
        </section>
        <section anchor="sec-corim-profile-types">
          <name>Profile Types</name>
          <t>A profile specifies which of the optional parts of a CoRIM are required, which
are prohibited and which extension points are exercised and how.</t>
          <sourcecode type="cddl"><![CDATA[
profile-type-choice = uri / tagged-oid-type
]]></sourcecode>
        </section>
        <section anchor="sec-corim-entity">
          <name>Entities</name>
          <t>The CoRIM Entity is an instantiation of the Entity generic
(<xref target="sec-common-entity"/>) using a <tt>$corim-role-type-choice</tt>.</t>
          <t>The only role defined in this specification for a CoRIM Entity is
<tt>manifest-creator</tt>.</t>
          <t>The <tt>$$corim-entity-map-extension</tt> extension socket is empty in this
specification.</t>
          <sourcecode type="cddl"><![CDATA[
corim-entity-map =
  entity-map<$corim-role-type-choice, $$corim-entity-map-extension>

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

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

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

mac-addr-type-choice = eui48-addr-type / eui64-addr-type
eui48-addr-type = bytes .size 6
eui64-addr-type = bytes .size 8
]]></sourcecode>
              </section>
            </section>
            <section anchor="sec-crypto-keys">
              <name>Crypto Keys</name>
              <t>A cryptographic key can be one of the following formats:</t>
              <ul spacing="normal">
                <li>
                  <tt>tagged-pkix-base64-key-type</tt>: PEM encoded SubjectPublicKeyInfo.
Defined in <xref section="13" sectionFormat="of" target="RFC7468"/>.</li>
                <li>
                  <tt>tagged-pkix-base64-cert-type</tt>: PEM encoded X.509 public key certificate.
Defined in <xref section="5" sectionFormat="of" target="RFC7468"/>.</li>
                <li>
                  <tt>tagged-pkix-base64-cert-path-type</tt>: X.509 certificate chain created by the
concatenation of as many PEM encoded X.509 certificates as needed.  The
certificates MUST be concatenated in order so that each directly certifies
the one preceding.</li>
              </ul>
              <t>A fourth format is used to represent thumbprints of raw keys or certificated
keys:</t>
              <ul spacing="normal">
                <li>
                  <tt>tagged-thumbprint-type</tt>: hash of a certificate or raw public key.</li>
              </ul>
              <sourcecode type="cddl"><![CDATA[
{:include cddl/crypto-key-type-choice.cddl}
]]></sourcecode>
            </section>
            <section anchor="sec-comid-domain-type">
              <name>Domain Types</name>
              <t>A domain is a context for bundling a collection of related environments and
their measurements.</t>
              <t>Three types are defined: uint and text for local scope, UUID for global scope.</t>
              <sourcecode type="cddl"><![CDATA[
$domain-type-choice /= uint
$domain-type-choice /= text
$domain-type-choice /= tagged-uuid-type
]]></sourcecode>
            </section>
          </section>
          <section anchor="sec-comid-triple-refval">
            <name>Reference Values Triple</name>
            <t>A Reference Values triple relates reference measurements to a Target
Environment. For Reference Value Claims, the subject identifies a Target
Environment, the object contains measurements, and the predicate asserts that
these are the expected (i.e., reference) measurements for the Target
Environment.</t>
            <sourcecode type="cddl"><![CDATA[
reference-triple-record = [
  environment-map
  measurement-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-endval">
            <name>Endorsed Values Triple</name>
            <t>An Endorsed Values triple declares additional measurements that are valid when
a Target Environment has been verified against reference measurements. For
Endorsed Value Claims, the subject is either a Target or Attesting Environment,
the object contains measurements, and the predicate defines semantics for how
the object relates to the subject.</t>
            <sourcecode type="cddl"><![CDATA[
endorsed-triple-record = [
  environment-map
  measurement-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-identity">
            <name>Device Identity Triple</name>
            <t>A Device Identity triple relates one or more cryptographic keys to a device.
The subject of an Identity triple uses an instance or class identifier to refer
to a device, and a cryptographic key is the object. The predicate asserts that
the identity is authenticated by the key. A common application for this triple
is device identity.</t>
            <sourcecode type="cddl"><![CDATA[
identity-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-attest-key">
            <name>Attestation Keys Triple</name>
            <t>An Attestation Keys triple relates one or more cryptographic keys to an
Attesting Environment. The Attestation Key triple subject is an Attesting
Environment whose object is a cryptographic key. The predicate asserts that the
Attesting Environment signs Evidence that can be verified using the key.</t>
            <sourcecode type="cddl"><![CDATA[
attest-key-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-dependency">
            <name>Domain Dependency Triple</name>
            <t>A Domain Dependency triple defines trust dependencies between measurement
sources.  The subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has
a predicate relationship to the object containing one or more dependent
domains.  Dependency means the subject domain’s trustworthiness properties rely
on the object domain(s) trustworthiness having been established before the
trustworthiness properties of the subject domain exists.</t>
            <sourcecode type="cddl"><![CDATA[
domain-dependency-triple-record = [
  $domain-type-choice
  [ + $domain-type-choice ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-membership">
            <name>Domain Membership Triple</name>
            <t>A Domain Membership triple assigns domain membership to environments.  The
subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has a predicate
relationship to the object containing one or more environments.  Endorsed
environments (<xref target="sec-comid-triple-endval"/>) membership is conditional upon
successful matching of Reference Values (<xref target="sec-comid-triple-refval"/>) to
Evidence.</t>
            <sourcecode type="cddl"><![CDATA[
domain-membership-triple-record = [
  $domain-type-choice
  [ + environment-map ]
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-coswid">
            <name>CoMID-CoSWID Linking Triple</name>
            <t>A CoSWID triple relates reference measurements contained in one or more CoSWIDs
to a Target Environment. The subject identifies a Target Environment, the
object one or more unique tag identifiers of existing CoSWIDs, and the
predicate asserts that these contain the expected (i.e., reference)
measurements for the Target Environment.</t>
            <sourcecode type="cddl"><![CDATA[
coswid-triple-record = [
  environment-map
  [ + concise-swid-tag-id ]
]

concise-swid-tag-id = text / bstr .size 16
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-series">
            <name>Conditional Endorsement Series Triple</name>
            <t>A Conditional Endorsement Series triple uses a stateful environment, (i.e., <tt>stateful-environment-record</tt>),
that identifies a Target Environment based on an <tt>environment-map</tt> plus the <tt>measurement-map</tt> measurements
that have matching Evidence.</t>
            <t>The stateful Target Environment is a triple subject that MUST be satisfied before the series triple object is
matched.</t>
            <sourcecode type="cddl"><![CDATA[
; an environment with a set of measurements that must match evidence
stateful-environment-record = [
  environment-map,
  measurement-map
]
]]></sourcecode>
            <t>The series object is an array of <tt>conditional-series-record</tt> that has both Reference and Endorsed Values.
Each <tt>conditional-series-record</tt> record is evaluated in the order it appears in the series array.
The Endorsed Values are accepted if the Reference Values in a <tt>conditional-series-record</tt> matches Evidence.
The first <tt>conditional-series-record</tt> that sucessfully matches Evidence terminates the series and
the matching Reference Values as well as the Endorsed Values are accepted.
If none of the Reference Values in the series match Evidence, the triple is not matched,
and no Claims are accepted.</t>
            <t>The <tt>authorized-by</tt> value in <tt>measurement-map</tt> in the stateful environment, if present,
applies to all measurements in the triple, including <tt>conditional-series-record</tt> records.</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-series-triple-record = [
  stateful-environment-record
  ; order matters: the first matching record wins and halts matching
  [ + conditional-series-record ]
]
]]></sourcecode>
            <sourcecode type="cddl"><![CDATA[
conditional-series-record = [
  ; reference values to be matched against evidence
  refv: measurement-values-map
  ; endorsed values that apply in case revf matches
  endv: measurement-values-map
]
]]></sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-end">
            <name>Conditional Endorsement Triple</name>
            <t>A Conditional Endorsement triple uses a stateful environment, (i.e., <tt>stateful-environment-record</tt>),
that identifies a Target Environment based on an <tt>environment-map</tt> plus the <tt>measurement-map</tt> measurements
that have matching Evidence.</t>
            <t>The stateful Target Environment is a triple subject that MUST be satisfied before the Endorsed Values in the
triple object are accepted.</t>
            <sourcecode type="cddl"><![CDATA[
; an environment with a set of measurements that must match evidence
stateful-environment-record = [
  environment-map,
  measurement-map
]
]]></sourcecode>
            <t>The <tt>authorized-by</tt> value in <tt>measurement-map</tt> in the stateful environment, if present,
applies to all measurements in the triple, including those in <tt>measurement-values-map</tt>.</t>
            <sourcecode type="cddl"><![CDATA[
conditional-endorsement-triple-record = [
  stateful-environment-record,
  ; endorsed values
  measurement-values-map
]
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="extensibility">
        <name>Extensibility</name>
        <t><cref anchor="issue_4">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/10</t>
      </section>
    </section>
    <section anchor="sec-cobom">
      <name>CoBOM</name>
      <t>A Concise Bill of Material (CoBOM) object represents the signal for the
verifier to activate the listed tags. Data contained in a tag MUST NOT be used
for appraisal until a CoBOM which activates that tag has been received and
successfully processed. All the tags listed in the CoBOM must be activated in
the same transaction, i.e., either all or none.</t>
      <section anchor="structure-1">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-bom-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoBOM
tag:</t>
        <sourcecode type="cddl"><![CDATA[
concise-bom-tag = {
  &(tag-identity: 0) => tag-identity-map
  &(tags-list: 1) => [ + tag-identity-map ],
  &(bom-validity: 2) => validity-map
  * $$concise-bom-tag-extension
}
]]></sourcecode>
        <t>The following describes each member of the <tt>concise-bom-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <tt>tag-identity</tt> (index 0): A <tt>tag-identity-map</tt> containing unique
identification information for the CoBOM. Described in <xref target="sec-comid-tag-id"/>.</li>
          <li>
            <tt>tags-list</tt> (index 1): A list of one or more <tt>tag-identity-maps</tt> identifying
the CoMID and CoSWID tags that constitute the "bill of material", i.e.,
a complete set of verification-related information.  The <tt>tags-list</tt> behaves
like a signaling mechanism from the supply chain (e.g., a product vendor) to
a Verifier that activates the tags in <tt>tags-list</tt> for use in the Evidence
appraisal process. The activation is atomic: all tags listed in <tt>tags-list</tt>
MUST be activated or no tags are activated.</li>
          <li>
            <tt>bom-validity</tt> (index 2): Specifies the validity period of the CoBOM.
Described in <xref target="sec-common-validity"/></li>
          <li>
            <tt>$$concise-bom-tag-extension</tt>: This CDDL socket is used to add new
information structures to the <tt>concise-bom-tag</tt>.  See <xref target="sec-iana-cobom"/>.
The <tt>$$concise-bom-tag-extension</tt> extension socket is empty in this
specification.</li>
        </ul>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol
defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>.  The description of
implementations in this section is intended to assist the IETF in its decision
processes in progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalog of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to
assign due consideration to documents that have the benefit of running code,
which may serve as evidence of valuable experimentation and feedback that have
made the implemented protocols more mature.  It is up to the individual working
groups to use this information as they see fit".</t>
      <section anchor="veraison">
        <name>Veraison</name>
        <ul spacing="normal">
          <li>Organization responsible for the implementation: Veraison Project, Linux
Foundation</li>
          <li>Implementation's web page:
<eref target="https://github.com/veraison/corim/README.md">https://github.com/veraison/corim/README.md</eref></li>
          <li>Brief general description: The <tt>corim/corim</tt> and <tt>corim/comid</tt> packages
provide a golang API for low-level manipulation of Concise Reference
Integrity Manifest (CoRIM) and Concise Module Identifier (CoMID) tags
respectively.  The <tt>corim/cocli</tt> package uses the API above (as well as the
API from the <tt>veraison/swid</tt> package) to provide a user command line
interface for working with CoRIM, CoMID and CoSWID. Specifically, it allows
creating, signing, verifying, displaying, uploading, and more. See
<eref target="https://github.com/cocli/README.md">https://github.com/cocli/README.md</eref> for
further details.</li>
          <li>Implementation's level of maturity: alpha.</li>
          <li>Coverage: the whole protocol is implemented, including PSA-specific
extensions <xref target="I-D.fdb-rats-psa-endorsements"/>.</li>
          <li>Version compatibility: Version -02 of the draft</li>
          <li>Licensing: Apache 2.0
<eref target="https://github.com/veraison/corim/blob/main/LICENSE">https://github.com/veraison/corim/blob/main/LICENSE</eref></li>
          <li>Implementation experience: n/a</li>
          <li>Contact information:
<eref target="https://veraison.zulipchat.com">https://veraison.zulipchat.com</eref></li>
          <li>Last updated:
<eref target="https://github.com/veraison/corim/commits/main">https://github.com/veraison/corim/commits/main</eref></li>
        </ul>
      </section>
    </section>
    <section anchor="sec-sec">
      <name>Security and Privacy Considerations</name>
      <t><cref anchor="issue_5">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_6">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><cref anchor="issue_7">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/13</t>
        <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">tag</td>
              <td align="left">A corim, one out of $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">map</td>
              <td align="left">A corim-map, see <xref target="sec-corim-map"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">502</td>
              <td align="left">tag</td>
              <td align="left">A 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">any</td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">505</td>
              <td align="left">bytes</td>
              <td align="left">An encoded 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">bytes</td>
              <td align="left">An encoded 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">any</td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">508</td>
              <td align="left">bytes</td>
              <td align="left">An encoded 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">any</td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">550</td>
              <td align="left">bytes .size 33</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">int</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">uint</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">uint</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">text</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">text</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">text</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">digest: [alg: int/text, val: bytes]</td>
              <td align="left">tagged-thumbprint-type, see <xref target="sec-common-hash-entry"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">558-559</td>
              <td align="left">any</td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">560</td>
              <td align="left">bytes</td>
              <td align="left">$raw-value-type-choice, see <xref target="sec-comid-raw-value-types"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">561-599</td>
              <td align="left">any</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_8">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_9">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_10">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/45</t>
      </section>
      <section anchor="sec-iana-media-types">
        <name>New Media Types</name>
        <t>IANA is requested to add the following media types to the "Media Types"
registry <xref target="IANA.media-types"/>.</t>
        <table align="left" anchor="tbl-media-type">
          <name>New Media Types</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Template</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">corim-signed+cbor</td>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-signed"/></td>
            </tr>
            <tr>
              <td align="left">corim-unsigned+cbor</td>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">RFCthis, <xref target="sec-mt-corim-unsigned"/></td>
            </tr>
          </tbody>
        </table>
        <section anchor="sec-mt-corim-signed">
          <name>corim-signed+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-signed+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer COSE Sign1 wrapped CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F6 D2</tt>, <tt>D9 01 F4 D9 01 F6 D2</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
        <section anchor="sec-mt-corim-unsigned">
          <name>corim-unsigned+cbor</name>
          <dl spacing="compact">
            <dt>Type name:</dt>
            <dd>
              <t><tt>application</tt></t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t><tt>corim-unsigned+cbor</tt></t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>"profile" (CoRIM profile in string format.  OIDs MUST use the dotted-decimal
notation.)</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>binary</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t><xref target="sec-sec"/> of RFCthis</t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>RFCthis</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>Attestation Verifiers, Endorsers and Reference-Value providers that need to
transfer unprotected CoRIM payloads over HTTP(S), CoAP(S), and other
transports.</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Magic number(s):</dt>
            <dd>
              <t><tt>D9 01 F5</tt>, <tt>D9 01 F4 D9 01 F5</tt></t>
            </dd>
            <dt>File extension(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>
              <t>n/a</t>
            </dd>
            <dt>Person &amp; email address to contact for further information:</dt>
            <dd>
              <t>RATS WG mailing list (rats@ietf.org)</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>none</t>
            </dd>
            <dt>Author/Change controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Provisional registration?</dt>
            <dd>
              <t>Maybe</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="coap-content-formats-registration">
        <name>CoAP Content-Formats Registration</name>
        <t>IANA is requested to register the two following Content-Format numbers in the
"CoAP Content-Formats" sub-registry, within the "Constrained RESTful
Environments (CoRE) Parameters" Registry <xref target="IANA.core-parameters"/>:</t>
        <table align="left">
          <name>New Content-Formats</name>
          <thead>
            <tr>
              <th align="left">Content-Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/corim-signed+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD1</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">application/corim-unsigned+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach">
              <organization/>
            </author>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <author fullname="R. Salz" initials="R." surname="Salz">
              <organization/>
            </author>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier).  A UUID is 128 bits long, and can guarantee uniqueness across space and time.  UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group).  Information from earlier versions of the DCE specification have been incorporated into this document.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="S. Leonard" initials="S." surname="Leonard">
              <organization/>
            </author>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS).  The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed.  This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9090">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="July" year="2021"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR), defined in RFC 8949, is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.</t>
              <t>This document defines CBOR tags for object identifiers (OIDs) and is the reference document for the IANA registration of the CBOR tags so defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9090"/>
          <seriesInfo name="DOI" value="10.17487/RFC9090"/>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need to be able to define basic security services for this data format.  This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.  </t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="STD66">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="I-D.ietf-sacm-coswid">
          <front>
            <title>Concise Software Identification Tags</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <author fullname="Charles Schmidt" initials="C." surname="Schmidt">
              <organization>The MITRE Corporation</organization>
            </author>
            <author fullname="David Waltermire" initials="D." surname="Waltermire">
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date day="24" month="February" year="2023"/>
            <abstract>
              <t>   ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an
   extensible XML-based structure to identify and describe individual
   software components, patches, and installation bundles.  SWID tag
   representations can be too large for devices with network and storage
   constraints.  This document defines a concise representation of SWID
   tags: Concise SWID (CoSWID) tags.  CoSWID supports a similar set of
   semantics and features as SWID tags, as well as new semantics that
   allow CoSWIDs to describe additional types of information, all in a
   more memory efficient format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-sacm-coswid-24"/>
        </reference>
        <reference anchor="I-D.ietf-rats-architecture">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="28" month="September" year="2022"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state.  This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims.  It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-22"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="19" month="December" year="2022"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine how much
   it wishes to trust the entity.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-19"/>
        </reference>
        <reference anchor="IANA.language-subtag-registry" target="https://www.iana.org/assignments/language-subtag-registry">
          <front>
            <title>Language Subtag Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology — ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="ITU-T" value="Recommendation X.690"/>
        </reference>
        <reference anchor="IANA.named-information" target="https://www.iana.org/assignments/named-information">
          <front>
            <title>Named Information</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer">
              <organization/>
            </author>
            <author fullname="A. Farrel" initials="A." surname="Farrel">
              <organization/>
            </author>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section.  This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory.  Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications.  This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="I-D.fdb-rats-psa-endorsements">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Verifier Endorsements</title>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="11" month="May" year="2022"/>
            <abstract>
              <t>   PSA Endorsements include reference values, cryptographic key material
   and certification status information that a Verifier needs in order
   to appraise attestation Evidence produced by a PSA device.  This memo
   defines such PSA Endorsements as a profile of the CoRIM data model.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-11"/>
        </reference>
      </references>
    </references>
    <section anchor="full-corim-cddl">
      <name>Full CoRIM CDDL</name>
      <sourcecode type="cddl"><![CDATA[
corim = #6.500($concise-rim-type-choice)

$concise-rim-type-choice /= #6.501(corim-map)
$concise-rim-type-choice /= #6.502(signed-corim)

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

$concise-tag-type-choice /= #6.505(bytes .cbor concise-swid-tag)
$concise-tag-type-choice /= #6.506(bytes .cbor concise-mid-tag)
$concise-tag-type-choice /= #6.508(bytes .cbor concise-bom-tag)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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-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)

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

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

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

$entity-name-type-choice /= text

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

flags-map = {
  ? &(configured: 0) => bool
  ? &(secure: 1) => bool
  ? &(recovery: 2) => bool
  ? &(debug: 3) => bool
  ? &(replay-protected: 4) => bool
  ? &(integrity-protected: 5) => bool
  * $$flags-map-extension
}

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

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

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

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

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

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

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

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

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

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

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

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

raw-value-mask-type = bytes

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

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

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

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

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

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

tag-version-type = uint .default 0

tagged-int-type = #6.551(int)

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

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

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

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

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

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

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

any-uri = uri
label = text / int

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

integer-time = #6.1(int)

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

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

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

abandon=1
private=2
shared=3

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

optional=1
required=2
recommended=3

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

-->

</rfc>
