<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-corim-05" category="std" consensus="true" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="CoRIM">Concise Reference Integrity Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-05"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>Thomas.Fossati@linaro.org</email>
      </address>
    </author>
    <author initials="Y." surname="Deshpande" fullname="Yogesh Deshpande">
      <organization>arm</organization>
      <address>
        <email>yogesh.deshpande@arm.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel</organization>
      <address>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>RIM, RATS, attestation, verifier, supply chain</keyword>
    <abstract>
      <?line 128?>

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

<section anchor="sec-intro">
      <name>Introduction</name>
      <t>In order to conduct Evidence appraisal, a Verifier requires not only fresh Evidence from an Attester, but also trusted Endorsements (e.g., test results or certification data) and Reference Values (e.g., the version or digest of a firmware component) associated with the Attester.
Endorsements and Reference Values are obtained from relevant supply chain actors, such as manufacturers, distributors, or device owners.
In a complex supply chain, multiple actors will likely produce these values over several points in time.
As such, one supply chain actor will only provide the subset of characteristics that they know about the Attester. A proper subset is typical because a certain supply chain actor will be the responsible authority for only a system component/module that is measured amongst a long chain of measurements.
Attesters vary across vendors and even across products from a single vendor.
Not only Attesters can evolve and therefore new measurement types need to be expressed, but an Endorser may also want to provide new security relevant attributes about an Attester at a future point in time.</t>
      <t>This document specifies Concise Reference Integrity Manifests (CoRIM) - a CBOR <xref target="STD94"/> based data model addressing the above challenges by using an extensible format common to all supply chain actors and Verifiers.
CoRIM enables Verifiers to reconcile a complex distributed supply chain into a single homogeneous view. See <xref target="sec-verifier-rec"/>.</t>
      <section anchor="terminology-and-requirements-language">
        <name>Terminology and Requirements Language</name>
        <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
        <t>In this document, the term CoRIM message and CoRIM documents are used as synonyms. A CoRIM data structure can be at rest (e.g., residing in a file system as a document) or can be in flight (e.g., conveyed as a message in a protocol exchange). The bytes composing the CoRIM data structure are the same either way.</t>
        <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>. Terms and concepts are always referenced as proper nouns, i.e., with Capital Letters.</t>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
        </t>
      </section>
    </section>
    <section anchor="sec-verifier-rec">
      <name>Verifier Reconciliation</name>
      <t>This specification describes the CoRIM format and documents how a Verifier should process the CoRIM to enable CoRIM authors to convey their intended meaning.
A Verifier needs to reconcile its various inputs, with CoRIM being one of them.
In addition to the external CoRIM documents, the Verifier is expected to create an internal representation for each input and map each external representation to an internal one.
By using the internal representation, the Verifier processes inputs as if they are part of a conversation, keeping track of who said what.
The origin of the inputs is tracked as <em>authority</em>.
The authority for the Claims in a CoRIM is the CoRIM issuer.</t>
      <t>Effectively, Attesters, Reference Value Providers, Endorsers, Verifier Owners, Relying Parties, and even the Verifier potentially all contribute to the conversation.
Each producer of corresponding RATS Conceptual Messages can assert Claims about an Attester's actual or allowed state.
The Verifier's objective is to produce a list of Claims that describe the Attester's presumed actual state.
Producers of RATS Conceptual Messages can assert contradictory assertions.
For example, a compromised Attester may produce false claims that conflict with the Reference Values provided by a Reference Value Provider (RVP).
In essence, if Evidence is not corroborated by an RVP's Claims, then the RVP's Claims are not included in the internal representation of an Attester's actual state, a.k.a., Appraisal Claims Set (ACS).</t>
      <t>A Verifier relies on input from appraisal policy to identify relevant assertions included in the ACS.
For example, if a policy requires corroborated assertions issued by a particular RVP, then those assertions may be conveyed as Attestation Results.
The Verifier may produce new assertions as a result of an applied appraisal policy.
For example, if an appraisal procedure finds all of the components of a subsystem are configured correctly, the policy may direct the Verifier to produce new assertions, "Subsystem=X" has the Claim "TRUSTED=TRUE".
Consequently, the internal ACS structure is a reconciled conversation between several producers of RATS Conceptual Messages that has mapped each message into a consistent internal representation, has associated the identity of the corresponding RATS role with each assertion (the authority), and has applied Conceptual Message constraints to the assertion.</t>
      <t>The CoRIM data model specified in this document covers the RATS Conceptual Message types, "Reference Values" and "Endorsements".
Reference values and Endorsements are required for Verifier reconciliation, and Evidence is required for corresponding internal ACS creation as illustrated in <xref target="sec-interact-acs"/>.</t>
      <section anchor="sec-internal-rep">
        <name>Internal Representation</name>
        <t>In this document CDDL is used to specify both the CoRIM structure and to specify an internal representation for use in the appraisal procedure.
The actual internal representation of a Verifier is implementation-specific and out-of-scope of this document.
Requirements for an internal representation of Conceptual Messages are defined in <xref target="tbl-cmrr"/>, where each Conceptual Message type has a structure as depicted by the <em>Structure</em> column.
The internal representations used by this document are defined in <xref target="sec-ir-cm"/>.</t>
      </section>
      <section anchor="sec-interact-acs">
        <name>Interacting with an ACS</name>
        <t>Conceptual Messages interact with an ACS by specifying criteria that should be met by the ACS and by presenting the assertions that should be added to the ACS if the criteria are satisfied.
Internal representations of Conceptual Messages, ACS, and Attestation Results Set (ARS) should satisfy the following requirements for Verifier reconciliation and appraisal processing:</t>
        <table anchor="tbl-cmrr">
          <name>Conceptual Message Representation Requirements</name>
          <thead>
            <tr>
              <th align="left">CM Type</th>
              <th align="left">Structure</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Evidence</td>
              <td align="left">List of Evidence claims</td>
              <td align="left">If the Attester is authenticated, add Evidence claims to the ACS with Attester authority</td>
            </tr>
            <tr>
              <td align="left">Reference Values</td>
              <td align="left">List of Reference Values claims</td>
              <td align="left">If a reference value in a CoRIM matches claims in the ACS, then the authority of the CoRIM issuer is added to those claims.</td>
            </tr>
            <tr>
              <td align="left">Endorsements</td>
              <td align="left">List of expected actual state claims, List of Endorsed Values claims</td>
              <td align="left">If the list of expected claims are in the ACS, then add the list of Endorsed Values claims to the ACS with Endorser authority</td>
            </tr>
            <tr>
              <td align="left">Series Endorsements</td>
              <td align="left">List of expected actual state claims and a series of selection-addition tuples</td>
              <td align="left">If the expected claims are in the ACS, and if the series selection condition is satisfied, then add the additional claims to the ACS with Endorser authority. See <xref target="sec-ir-end-val"/></td>
            </tr>
            <tr>
              <td align="left">Verifier</td>
              <td align="left">List of expected actual state claims, List of Verifier-generated claims</td>
              <td align="left">If the list of expected claims are in the ACS, then add the list of Verifier-generated claims to the ACS with Verifier authority</td>
            </tr>
            <tr>
              <td align="left">Policy</td>
              <td align="left">List of expected actual state claims, List of Policy-generated claims</td>
              <td align="left">If the list of expected claims are in the ACS, then add the list of Policy-generated claims to the ACS with Policy Owner authority</td>
            </tr>
            <tr>
              <td align="left">Attestation Results</td>
              <td align="left">List of expected actual state claims, List of expected Attestation Results claims</td>
              <td align="left">If the list of expected claims are in the ACS, then copy the list of Attestation Results claims into the ARS. See <xref target="sec-ir-ars"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-quantize">
        <name>Quantizing Inputs</name>
        <t><cref anchor="tracked-at">Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/242</t>
      </section>
    </section>
    <section anchor="sec-type-conv">
      <name>Typographical Conventions for CDDL</name>
      <t>The CDDL definitions in this document follow the naming conventions illustrated
in <xref target="tbl-typography"/>.</t>
      <table anchor="tbl-typography">
        <name>Type Traits &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="sec-corim">
      <name>Concise Reference Integrity Manifest (CoRIM)</name>
      <t>A CoRIM is a collection of tags and related metadata in a concise CBOR <xref target="STD94"/> encoding.
A CoRIM can be digitally signed with a COSE <xref target="STD96"/> signature.
A tag identifies and describes properties of modules or components of a system.</t>
      <t>Tags can be of different types:</t>
      <ul spacing="normal">
        <li>Concise Module ID (CoMID) tags (<xref target="sec-comid"/>) contain metadata and claims about the hardware and firmware modules.</li>
        <li>Concise Software ID (CoSWID) tags <xref target="RFC9393"/> describe software components.</li>
        <li>Concise Bill of Material (CoBOM) tags (<xref target="sec-cobom"/>) contain the list of CoMID and CoSWID tags that the Verifier should consider as "active" at a certain point in time.</li>
      </ul>
      <t>The set of tags is extensible so that future specifications can add new kinds of information.
For example, Concise Trust Anchor Stores (CoTS) <xref target="I-D.ietf-rats-concise-ta-stores"/> is currently being defined as a standard CoRIM extension.</t>
      <t>Each CoRIM contains a unique identifier to distinguish a CoRIM from other CoRIMs.
<cref anchor="tracked-at_1">Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/73</t>
      <t>CoRIM can also carry the following optional metadata:</t>
      <ul spacing="normal">
        <li>A locator, which allows discovery of possibly related RIMs</li>
        <li>A profile identifier, which is used to interpret the information contained in the enclosed tags.
A profile allows the base CoRIM CDDL definition to be customized to fit a specific Attester by augmenting the base CDDL data definition via the specified extension points or by constraining types defined.
A profile MUST NOT change the base CoRIM CDDL definition's semantics, which includes not changing or overloading names and numbers registered at IANA registries used by this document.
For more detail, see <xref target="sec-corim-profile-types"/>,</li>
        <li>A validity period, which indicates the time period for which the CoRIM contents are valid.</li>
        <li>Information about the supply chain entities responsible for the contents of the CoRIM and their associated roles.</li>
      </ul>
      <t>A CoRIM can be signed (<xref target="sec-corim-signed"/>) using COSE Sign1 to provide end-to-end security to the CoRIM contents.
When CoRIM is signed, the protected header carries further identifying information about the CoRIM signer.
Alternatively, CoRIM can be encoded as a CBOR-tagged payload (<xref target="sec-corim-map"/>) and transported over a secure channel.</t>
      <t>The following CDDL describes the top-level CoRIM.</t>
      <sourcecode type="cddl">
corim = tagged-concise-rim-type-choice

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

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

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

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

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

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

integrity-registers = {
  + integrity-register-id-type-choice =&gt; digests-type
}
</sourcecode>
              <t>All the measured objects in an Integrity Registers map are explicitly named and the order in which they appear in the map is irrelevant.
Any digests associated with a measured object represent an acceptable state for the object.
Therefore, if multiple digests are provided, the acceptable state is their cross-product.
For example, given the following Integrity Registers:</t>
              <sourcecode type="cbor-diag">
{
  0: [ [ 0, h'00' ] ],
  1: [ [ 0, h'11' ], [ 1, h'12' ] ]
}
</sourcecode>
              <t>then both</t>
              <sourcecode type="cbor-diag">
{
  0: [ 0, h'00' ],
  1: [ 0, h'11' ]
}
</sourcecode>
              <t>and</t>
              <sourcecode type="cbor-diag">
{
  0: [ 0, h'00' ],
  1: [ 1, h'12' ]
}
</sourcecode>
              <t>are acceptable states.</t>
              <t>Integrity Registers can be used to model the PCRs in a TPM or vTPM, in which case the identifier is the register index, or other kinds of vendor-specific measured objects.</t>
            </section>
            <section anchor="sec-comid-domain-type">
              <name>Domain Types</name>
              <t>A domain is a context for bundling a collection of related environments and their measurements.</t>
              <t>The following CDDL describes domain type choices.</t>
              <sourcecode type="cddl">
$domain-type-choice /= uint
$domain-type-choice /= text
$domain-type-choice /= tagged-uuid-type
$domain-type-choice /= tagged-oid-type
</sourcecode>
              <t>The <tt>uint</tt> and <tt>text</tt> types MUST NOT be interpreted in a global scope.</t>
            </section>
          </section>
          <section anchor="sec-comid-triple-refval">
            <name>Reference Values Triple</name>
            <t>A Reference Values triple relates reference measurements to a Target
Environment. For Reference Value Claims, the subject identifies a Target
Environment, the object contains measurements, and the predicate asserts that
these are the expected (i.e., reference) measurements for the Target
Environment.</t>
            <sourcecode type="cddl">
reference-triple-record = [
  environment-map
  measurement-map
]
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-endval">
            <name>Endorsed Values Triple</name>
            <t>An Endorsed Values triple declares additional measurements that are valid when
a Target Environment has been verified against reference measurements. For
Endorsed Value Claims, the subject is either a Target or Attesting Environment,
the object contains measurements, and the predicate defines semantics for how
the object relates to the subject.</t>
            <sourcecode type="cddl">
endorsed-triple-record = [
  environment-map
  measurement-map
]
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-identity">
            <name>Device Identity Triple</name>
            <t>A Device Identity triple record relates one or more cryptographic keys to a device identity.
The cryptographic keys are bound to or associated with a Target Environment that is within the device.
The device identifier may be part of the Target Environment's <tt>environment-map</tt> or may be part of some other device identity credential, such as a certificate.
The cryptographic keys are expected to be used to authenticate the device.</t>
            <t>Device Identity triples instruct a Verifier to perform key validation checks, such as revocation, certificate path construction &amp; verification, or proof of possession.
The Verifier SHOULD perform offline verification of keys contained in Device Identity triples.</t>
            <t>A Device Identity triple endorses that the keys were securely provisioned to the named Target Environment.
Additional details about how a key was provisioned or is protected may be asserted using Endorsements such as <tt>endorsed-triples</tt>.</t>
            <t>Depending on key formatting, as defined by <tt>$crypto-key-type-choice</tt>, the Verifier may take different steps to locate and verify the key.</t>
            <t>If a key has usage restrictions that limit its use to device identity challenges, Verifiers SHOULD check for key use that violates usage restrictions.</t>
            <t>Offline verification of keys or verification of key use restrictions MAY produce Claims that are added to the ACS.
Alternatively, Verifiers MAY report key verification results as part of an error reporting function.</t>
            <sourcecode type="cddl">
identity-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-attest-key">
            <name>Attest Key Triple</name>
            <t>An Attest Key triple record relates one or more cryptographic keys to an Attesting Environment.
The cryptographic keys are wielded by an Attesting Environment that collects measurements from a Target Environment.
The cryptographic keys sign Evidence.
Attest Key triples instruct a Verifier to perform key validation checks, such as revocation, certificate path construction &amp; verification, or proof of possession.
The Verifier SHOULD perform offline verification of keys contained in Attest Key triples.</t>
            <t>Attest Key triples endorse that the keys were securely provisioned to the named (identified via an <tt>environment-map</tt>) Attesting Environment.
Additional details about how a key was provisioned or is protected may be asserted using Endorsements such as <tt>endorsed-triples</tt>.</t>
            <t>Depending on key formatting, as defined by <tt>$crypto-key-type-choice</tt>, the Verifier may take different steps to locate and verify the key.
If a key has usage restrictions that limits its use to Evidence signing, Verifiers SHOULD check for key use that violates usage restrictions.</t>
            <t>Offline verification of keys or verification of key use restrictions MAY produce Claims that are added to the ACS.
Alternatively, Verifiers MAY report key verification results as part of an error reporting function.</t>
            <sourcecode type="cddl">
attest-key-triple-record = [
  environment-map
  [ + $crypto-key-type-choice ]
]
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-dependency">
            <name>Domain Dependency Triple</name>
            <t>A Domain Dependency triple defines trust dependencies between measurement
sources.  The subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has
a predicate relationship to the object containing one or more dependent
domains.  Dependency means the subject domain's trustworthiness properties rely
on the object domain(s) trustworthiness having been established before the
trustworthiness properties of the subject domain exists.</t>
            <sourcecode type="cddl">
domain-dependency-triple-record = [
  $domain-type-choice
  [ + $domain-type-choice ]
]
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-domain-membership">
            <name>Domain Membership Triple</name>
            <t>A Domain Membership triple assigns domain membership to environments.  The
subject identifies a domain (<xref target="sec-comid-domain-type"/>) that has a predicate
relationship to the object containing one or more environments.  Endorsed
environments (<xref target="sec-comid-triple-endval"/>) membership is conditional upon
successful matching of Reference Values (<xref target="sec-comid-triple-refval"/>) to
Evidence.</t>
            <sourcecode type="cddl">
domain-membership-triple-record = [
  $domain-type-choice
  [ + environment-map ]
]
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-coswid">
            <name>CoMID-CoSWID Linking Triple</name>
            <t>A CoSWID triple relates reference measurements contained in one or more CoSWIDs
to a Target Environment. The subject identifies a Target Environment, the
object one or more unique tag identifiers of existing CoSWIDs, and the
predicate asserts that these contain the expected (i.e., reference)
measurements for the Target Environment.</t>
            <sourcecode type="cddl">
coswid-triple-record = [
  environment-map
  [ + concise-swid-tag-id ]
]

concise-swid-tag-id = text / bstr .size 16
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-series">
            <name>Conditional Endorsement Series Triple</name>
            <t>A Conditional Endorsement Series triple uses a stateful environment, (i.e., <tt>stateful-environment-record</tt>),
that identifies a Target Environment based on an <tt>environment-map</tt> plus the <tt>measurement-map</tt> measurements
that have matching Evidence.</t>
            <t>The stateful Target Environment is a triple subject that MUST be satisfied before the series triple object is
matched.</t>
            <sourcecode type="cddl">
; an environment with a set of measurements that must match evidence
stateful-environment-record = [
  environment-map,
  measurement-map
]
</sourcecode>
            <t>The series object is an array of <tt>conditional-series-record</tt> that has both Reference and Endorsed Values.
Each <tt>conditional-series-record</tt> record is evaluated in the order it appears in the series array.
The Endorsed Values are accepted if the series condition in a <tt>conditional-series-record</tt> matches the ACS.
The first <tt>conditional-series-record</tt> that successfully matches an ACS Entry terminates the matching and the corresponding Endorsed Values are accepted.
If none of the series conditions match an ACS Entry, the triple is not matched,
and no Endorsed values are accepted.</t>
            <t>The <tt>authorized-by</tt> value in <tt>measurement-map</tt> in the stateful environment, if present,
applies to all measurements in the triple, including <tt>conditional-series-record</tt> records.</t>
            <sourcecode type="cddl">
conditional-endorsement-series-triple-record = [
  stateful-environment-record
  ; order matters: the first matching record wins and halts matching
  [ + conditional-series-record ]
]
</sourcecode>
            <sourcecode type="cddl">
conditional-series-record = [
  ; reference values to be matched against evidence
  refv: measurement-values-map
  ; endorsed values that apply in case revf matches
  endv: measurement-values-map
]
</sourcecode>
          </section>
          <section anchor="sec-comid-triple-cond-endors">
            <name>Conditional Endorsement Triple</name>
            <t>The semantics of the Conditional Endorsement Triple is as follows:</t>
            <ul empty="true">
              <li>
                <t>"IF accepted state matches all <tt>conds</tt> values, THEN every entry in the <tt>endorsements</tt> is added to the accepted state"</t>
              </li>
            </ul>
            <sourcecode type="cddl">
conditional-endorsement-triple-record = [
  conditions: [ + stateful-environment-record ]
  endorsements: [ + endorsed-triple-record ]
]
</sourcecode>
            <t>A <tt>conditional-endorsement-triple-record</tt> has the following parameters:</t>
            <ul spacing="normal">
              <li>
                <tt>conditions</tt>: all target environments, along with a specific state, that need to match <tt>state-triples</tt> entries in the ACS for the endorsement(s) to apply</li>
              <li>
                <tt>endorsements</tt>: endorsements that are added to the ACS <tt>state-triples</tt> if all <tt>conds</tt> match.</li>
            </ul>
            <t>The order in which Conditional Endorsement triples are evaluated is important: different sorting may produce different end-results in the computed ACS.</t>
            <t>Therefore, the set of applicable Conditional Endorsement triples MUST be topologically sorted based on the criterion that a Conditional Endorsement triple is evaluated before another if its Target Environment and Endorsement pair is found in any of the stateful environments of the subsequent triple.</t>
            <t>Notes:</t>
            <ul spacing="normal">
              <li>In order to give the expected result, the condition must describe the expected context completely.</li>
              <li>The scope of a single Conditional Endorsement triple encompasses an arbitrary amount of environments across all layers in an Attester.</li>
            </ul>
            <t>There are scope-related questions that need to be answered.  (<cref anchor="tracked-at_2">Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/176)</t>
          </section>
        </section>
      </section>
      <section anchor="sec-extensibility">
        <name>Extensibility</name>
        <t>The base CORIM schema is described using CDDL <xref target="RFC8610"/> that can be extended
only at specific allowed points known as "extension points"</t>
        <t>The following types of extensions are supported in CoRIM</t>
        <section anchor="map-extensions">
          <name>Map Extensions</name>
          <t>Map Extensions provides extensibility support to CoRIM Map structures.
CDDL map extensibility enables a CoRIM profile to extend the base CoRIM definition.
CDDL map extension points have the form <tt>($$NAME-extension)</tt> where "NAME" is the name of the map
and '$$' signifies map extensibility. Typically, map extension requires a convention
for code point naming that avoids code-point reuse.
Well-known code points may be in a registry, such as CoSWID <xref target="IANA.coswid"/>.
Non-negative integers are reserved for IANA to assign meaning globally.</t>
        </section>
        <section anchor="data-type-extensions">
          <name>Data Type Extensions</name>
          <t>Data type extensibility has the form <tt>($NAME-type-choice)</tt> where "NAME" is the type name
and '$' signifies type extensibility.</t>
          <t>Schema extensions (Map or Data Type) should be documented to facilitate interoperability. CoRIM profiles are best used to document vendor or industry defined extensions.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-cobom">
      <name>CoBOM</name>
      <t>A Concise Bill of Material (CoBOM) object represents the signal for the
Verifier to activate the listed tags. Verifier policy determines whether CoBOMs are required.</t>
      <t>When CoBOMs are required, each tag MUST be activated by a CoBOM before being processed.
All the tags listed in the CoBOM MUST be activated atomically. If any tag activated by a CoBOM is not available to the Verifier, the entire CoBOM is rejected.</t>
      <t>The number of CoBOMs required in a given supply chain ecosystem is dependent on
Verifier Owner's Appraisal Policy for Evidence. Corresponding policies are often driven by the complexity and nature of the use case.</t>
      <t>If a Verifier Owner has a policy that does not require CoBOM, tags within a CoRIM received by a Verifier
are activated immediately and treated valid for appraisal.</t>
      <t>There may be cases when Verifier receives CoRIMs from multiple
Reference Value providers and Endorsers. In such cases, a supplier (or other authorities, such as integrators)
may be designated to issue a single CoBOM to activate all the tags submitted to the Verifier
in these CoRIMs.</t>
      <t>In a more complex case, there may be multiple authorities that issue CoBOMs at different points in time.
An Appraisal Policy for Evidence may dictate how multiple CoBOMs are to be processed within the Verifier.</t>
      <section anchor="structure-1">
        <name>Structure</name>
        <t>The CDDL specification for the <tt>concise-bom-tag</tt> map is as follows and this
rule and its constraints MUST be followed when creating or validating a CoBOM
tag:</t>
        <sourcecode type="cddl">
concise-bom-tag = {
  &amp;(tag-identity: 0) =&gt; tag-identity-map
  &amp;(tags-list: 1) =&gt; [ + tag-identity-map ],
  &amp;(bom-validity: 2) =&gt; validity-map
  * $$concise-bom-tag-extension
}
</sourcecode>
        <t>The following describes each member of the <tt>concise-bom-tag</tt> map.</t>
        <ul spacing="normal">
          <li>
            <tt>tag-identity</tt> (index 0): A <tt>tag-identity-map</tt> containing unique
identification information for the CoBOM. Described in <xref target="sec-comid-tag-id"/>.</li>
          <li>
            <tt>tags-list</tt> (index 1): A list of one or more <tt>tag-identity-maps</tt> identifying
the CoMID and CoSWID tags that constitute the "bill of material", i.e.,
a complete set of verification-related information.  The <tt>tags-list</tt> behaves
like a signaling mechanism from the supply chain (e.g., a product vendor) to
a Verifier that activates the tags in <tt>tags-list</tt> for use in the Evidence
appraisal process. The activation is atomic: all tags listed in <tt>tags-list</tt>
MUST be activated or no tags are activated.</li>
          <li>
            <tt>bom-validity</tt> (index 2): Specifies the validity period of the CoBOM.
Described in <xref target="sec-common-validity"/></li>
          <li>
            <tt>$$concise-bom-tag-extension</tt>: This CDDL socket is used to add new
information structures to the <tt>concise-bom-tag</tt>.  See <xref target="sec-iana-cobom"/>.
The <tt>$$concise-bom-tag-extension</tt> extension socket is empty in this
specification.</li>
        </ul>
      </section>
    </section>
    <section anchor="sec-common-types">
      <name>Common Types</name>
      <t>The following CDDL types may be shared by CoRIM, CoMID, and CoBOM.</t>
      <section anchor="sec-non-empty">
        <name>Non-Empty</name>
        <t>The <tt>non-empty</tt> generic type is used to express that a map with only optional
members MUST at least include one of the members.</t>
        <sourcecode type="cddl">
non-empty&lt;M&gt; = (M) .and ({ + any =&gt; any })
</sourcecode>
      </section>
      <section anchor="sec-common-entity">
        <name>Entity</name>
        <t>The <tt>entity-map</tt> is a generic type describing an organization responsible for
the contents of a manifest. It is instantiated by supplying two parameters:</t>
        <ul spacing="normal">
          <li>A <tt>role-type-choice</tt>, i.e., a selection of roles that entities of the
instantiated type can claim</li>
          <li>An <tt>extension-socket</tt>, i.e., a CDDL socket that can be used to extend
the attributes associated with entities of the instantiated type</li>
        </ul>
        <sourcecode type="cddl">
entity-map&lt;role-type-choice, extension-socket&gt; = {
  &amp;(entity-name: 0) =&gt; $entity-name-type-choice
  ? &amp;(reg-id: 1) =&gt; uri
  &amp;(role: 2) =&gt; [ + role-type-choice ]
  * extension-socket
}

$entity-name-type-choice /= text
</sourcecode>
        <t>The following describes each member of the <tt>entity-map</tt>.</t>
        <ul spacing="normal">
          <li>
            <tt>entity-name</tt> (index 0): The name of entity which is responsible for the
action(s) as defined by the role. <tt>$entity-name-type-choice</tt> can only be
text.  Other specifications can extend the <tt>$entity-name-type-choice</tt> (see
<xref target="sec-iana-comid"/>).</li>
          <li>
            <tt>reg-id</tt> (index 1): A URI associated with the organization that owns the
entity name</li>
          <li>
            <tt>role</tt> (index 2): A type choice defining the roles that the entity is
claiming.  The role is supplied as a parameter at the time the <tt>entity-map</tt>
generic is instantiated.</li>
          <li>
            <tt>extension-socket</tt>: A CDDL socket used to add new information structures to
the <tt>entity-map</tt>.</li>
        </ul>
        <t>Examples of how the <tt>entity-map</tt> generic is instantiated can be found in
<xref target="sec-corim-entity"/> and <xref target="sec-comid-entity"/>.</t>
      </section>
      <section anchor="sec-common-validity">
        <name>Validity</name>
        <t>A <tt>validity-map</tt> represents the time interval during which the signer
warrants that it will maintain information about the status of the signed
object (e.g., a manifest).</t>
        <t>In a <tt>validity-map</tt>, both ends of the interval are encoded as epoch-based
date/time as per <xref section="3.4.2" sectionFormat="of" target="STD94"/>.</t>
        <sourcecode type="cddl">
validity-map = {
  ? &amp;(not-before: 0) =&gt; time
  &amp;(not-after: 1) =&gt; time
}
</sourcecode>
        <ul spacing="normal">
          <li>
            <tt>not-before</tt> (index 0): the date on which the signed manifest validity period
begins</li>
          <li>
            <tt>not-after</tt> (index 1): the date on which the signed manifest validity period
ends</li>
        </ul>
      </section>
      <section anchor="sec-common-uuid">
        <name>UUID</name>
        <t>Used to tag a byte string as a binary UUID defined in <xref section="4.1.2." sectionFormat="of" target="RFC4122"/>.</t>
        <sourcecode type="cddl">
uuid-type = bytes .size 16
tagged-uuid-type = #6.37(uuid-type)
</sourcecode>
      </section>
      <section anchor="sec-common-ueid">
        <name>UEID</name>
        <t>Used to tag a byte string as Universal Entity ID Claim (UUID) defined in
<xref section="4.2.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
        <sourcecode type="cddl">
ueid-type = bytes .size 33
tagged-ueid-type = #6.550(ueid-type)
</sourcecode>
      </section>
      <section anchor="sec-common-oid">
        <name>OID</name>
        <t>Used to tag a byte string as the BER encoding <xref target="X.690"/> of an absolute object
identifier <xref target="RFC9090"/>.</t>
        <sourcecode type="cddl">
oid-type = bytes
tagged-oid-type = #6.111(oid-type)
</sourcecode>
      </section>
      <section anchor="sec-common-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> and is interpreted according to the <xref target="IANA.named-information"/> registry.
Specifically, <tt>int</tt> values are matched against "ID" entries, <tt>text</tt> values are matched against "Hash Name String" entries.
Whenever possible, using the <tt>int</tt> encoding is RECOMMENDED.</t>
        <sourcecode type="cddl">
digest = [
  alg: (int / text),
  val: bytes
]

digests-type = [ + digest ]
</sourcecode>
        <t>A measurement can be obtained using different hash algorithms.
A <tt>digests-type</tt> can be used to collect multiple digest values obtained by applying different hash algorithms on the same input.
Each entry in the <tt>digests-type</tt> MUST have a unique <tt>alg</tt> value.</t>
      </section>
      <section anchor="sec-common-tagged-bytes">
        <name>Tagged Bytes Type</name>
        <t>An opaque, variable-length byte string.
It can be used in different contexts: as an instance, class or group identifier in an <tt>environment-map</tt>; as a raw value measurement in a <tt>measurement-values-map</tt>.
Its semantics are defined by the context in which it is found, and by the overarching CoRIM profile.
When used as an identifier the responsible allocator entity SHOULD ensure uniqueness within the context that it is used.</t>
        <sourcecode type="cddl">
tagged-bytes = #6.560(bytes)
</sourcecode>
      </section>
    </section>
    <section anchor="sec-appr-corim-inputs">
      <name>Appraisal of CoRIM-based Inputs</name>
      <t>Inputs to a Verifier are mapped from their external representation to an internal representation.
CoRIM defines CBOR structures and content media types for Conceptual Messages that include Endorsements and Reference Values.
CoRIM data structures may be used by Evidence and Attestation Results that wish to describe overlapping structure.
CoRIM-based data structures define an external representation of Conceptual Messages that are mapped to an internal representation.
Appraisal processing describes both mapping transformations and Verifier reconciliation <xref target="sec-verifier-rec"/>.
Non-CoRIM-based data structures require mapping transformation, but these are out of scope for this document.</t>
      <t>If a CoRIM profile is specified, there are a few well-defined points in the procedure where Verifier behaviour depends on the profile.
The CoRIM profile MUST provide a description of the expected Verifier behavior for each of those well-defined points.</t>
      <t>Verifier implementations MUST exhibit the same externally visible behavior as described in this specification.
They are not required to use the same internal representation or evaluation order described by this specification.</t>
      <section anchor="sec-appraisal-procedure">
        <name>Appraisal Procedure</name>
        <t>The appraisal procedure is divided into several logical phases for clarity.</t>
        <ul spacing="normal">
          <li>
            <strong>Phase 1</strong>: Input Validation and Transformation</li>
        </ul>
        <t>During Phase 1, Conceptual Message inputs are cryptographically validated, such as checking digital signatures.
Inputs are transformed from their external representations to an internal representation.
Internal representations are staged for appraisal processing, such as populating an input queue.</t>
        <ul spacing="normal">
          <li>
            <strong>Phase 2</strong>: Evidence Augmentation</li>
        </ul>
        <t>During Phase 2, Evidence inputs are added to a list that describes the Attester's actual state.
These inputs are added with the Attester's authority.</t>
        <ul spacing="normal">
          <li>
            <strong>Phase 3</strong>: Reference Values Corroboration and Augmentation</li>
        </ul>
        <t>During Phase 3, Reference Values inputs are compared with Evidence inputs.
Reference Values inputs describe possible states of Attesters.
If the actual state of the Attester is described by the possible Attester states, then the overlapping (corroborated) actual states are added to the Attester's actual state.
These inputs are added with the Reference Value Provider's authority.</t>
        <ul spacing="normal">
          <li>
            <strong>Phase 4</strong>: Endorsed Values Augmentation</li>
        </ul>
        <t>During Phase 4, Endorsed Values inputs containing conditions that describe expected Attester state are processed.
If the comparison is satisfied, then additional Claims about the Attester are added to the ACS.
These inputs are added with the Endorser's authority.</t>
        <ul spacing="normal">
          <li>
            <strong>Phase 5</strong>: Verifier Augmentation</li>
        </ul>
        <t>During Phase 5, the Verifier may perform consistency, integrity, or additional validity checks.</t>
        <t>These checks may result in additional Claims about the Attester that are added to the ACS.
These Claims are added with the Verifier's authority.</t>
        <ul spacing="normal">
          <li>
            <strong>Phase 6</strong>: Policy Augmentation</li>
        </ul>
        <t>During Phase 6, appraisal policies are processed that describe Attester states that are desirable or undesirable.
If these conditions exist, the policy may add additional Claims about the Attester, to the ACS.
These Claims are added with the policy author's authority.</t>
        <ul spacing="normal">
          <li>
            <strong>Phase 7</strong>: Attestation Results Production and Transformation</li>
        </ul>
        <t>During Phase 7, the outcome of Appraisal and the set of Attester Claims that are interesting to a Relying Party are copied from the Attester state to an output staging area.
The Claims in the output staging area and other Verifier related metadata are transformed into an external representation suitable for consumption by a Relying Party.</t>
      </section>
      <section anchor="sec-verifier-abstraction">
        <name>Verifier Abstraction</name>
        <t>This document assumes that Verifier implementations may differ.
To facilitate the description of normative Verifier behavior, this document uses an abstract representation of Verifier internals.</t>
        <t>The following terms are used:</t>
        <dl newline="true">
          <dt>Claim:</dt>
          <dd>
            <t>A piece of information, in the form of a key-value pair.</t>
          </dd>
          <dt>Environment-Claim Tuple (ECT):</dt>
          <dd>
            <t>A structure containing a set of values that describe a Target Environment plus a set of measurement / Claim values that describe properties of the Target Environment.
The ECT also contains authority which identifies the entity that authored the ECT.</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <t><em>[Ned] Suggest we use Environment-Properties Tuple (EPT) since the use of claim here is more focused than what is possible given the definition above.</em></t>
          </li>
        </ul>
        <dl>
          <dt>reference state:</dt>
          <dd>
            <t>Claims that describe various alternative states of a Target Environment.  Reference Values Claims typically describe various possible states due to versioning, manufactruing practices, or supplier configuration options.  See also <xref section="2" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
          </dd>
          <dt>actual state:</dt>
          <dd>
            <t>Claims that describe a Target Environment instance at a given point in time.  Endorsed Values and Evidence typically are Claims about actual state.  An Attester may be composed of multiple components, where each component may represent a scope of appraisal.  See also <xref section="2" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>.</t>
          </dd>
          <dt>Authority:</dt>
          <dd>
            <t>The entity asserting that a claim is true.
Typically, a Claim is asserted using a cryptographic key to digitally sign the Claim. A cryptographic key can be a proxy for a human or organizational entity.</t>
          </dd>
          <dt>Appraisal Claims Set (ACS):</dt>
          <dd>
            <t>A structure that holds ECTs that have been appraised.
The ACS contains Attester state that has been authorized by Verifier processing and Appraisal Policy.</t>
          </dd>
          <dt>Appraisal Policy:</dt>
          <dd>
            <t>A description of the conditions that, if met, allow acceptance of Claims. Typically, the entity asserting a Claim should have knowledge, expertise, or context that gives credibility to the assertion. Appraisal Policy resolves which entities are credible and under what conditions.  See also "Appraisal Policy for Evidence" in <xref target="RFC9334"/>.</t>
          </dd>
          <dt>Attestation Results Set (ARS):</dt>
          <dd>
            <t>A structure that holds results of Appraisal and ECTs that are to be conveyed to a Relying Party.</t>
          </dd>
        </dl>
        <section anchor="sec-ir-cm">
          <name>Internal Representation of Conceptual Messages</name>
          <t>Conceptual Messages are the inputs to a Verifier and may include Evidence, Reference Values, Endorsed Values, or Appraisal Policy.
Internal representations of Conceptual Messages are defined by <xref target="sec-ir-evidence"/>, <xref target="sec-ir-ref-val"/>, and <xref target="sec-ir-end-val"/>.
The internal representation of Conceptual Messages are constructed from a common building block structure called Environment-Claims Tuple (ECT).
Additionally, ECTs define an internal representation of the ACS and ARS. See <xref target="sec-ir-acs"/> and <xref target="sec-ir-ars"/>.</t>
          <t>ECTs have six attributes:</t>
          <ol spacing="normal" type="1">
            <li>The environment.</li>
            <li>The properties of the environment.</li>
            <li>The authority.</li>
            <li>The name space.</li>
            <li>The Conceptual Message type.</li>
            <li>The profile.</li>
          </ol>
          <dl>
            <dt>Environment (label 1):</dt>
            <dd>
              <t>Identifies the Target Environment. Environments are identified using instance, class, or group identifiers. Typically,  composite Attester's are composed of components, each having an environment identifier.</t>
            </dd>
            <dt>Properties (label 2):</dt>
            <dd>
              <t>Properties of the Target Environment.</t>
            </dd>
            <dt>Authority (label 3):</dt>
            <dd>
              <t>Identifies the entity that issued the tuple. A certain type of key material by which the authority (and corresponding provenance) of the tuple can be determined, such as the public key of an asymmetric key pair that is associated with an authority's PKIX certificate.</t>
            </dd>
            <dt>Name Space (label 4):</dt>
            <dd>
              <t>Identifies the name space from which the tuple was created.</t>
            </dd>
            <dt>CM Type (label 5):</dt>
            <dd>
              <t>Identifies the type of Conceptual Message that originated the tuple.</t>
            </dd>
            <dt>Profile (label 6):</dt>
            <dd>
              <t>The profile that defines this tuple. If no profile is used, this attribute is omitted.</t>
            </dd>
          </dl>
          <sourcecode type="cddl">
ECT = {
  ? e: environment-map
  ? c: claims-map / [ + local-claim ]
  ? a: [ + $crypto-key-type-choice ]
  ? ns: text
  ? cm: cm-type
  ? p: $profile-type-choice
}
local-claim = {
  le: local-environment
  c: claims-map
}
local-environment =  bstr / tstr
cm-type =  &amp;(
  reference-values: 0
  endorsements: 1
  evidence: 2
  attestation-results: 3
  verifier: 4
  policy: 5
)
</sourcecode>
          <t>Although all of the ECT attributes are optional, the Conceptual Message type implies certain attributes are mandatory.
See <xref target="sec-ir-evidence"/>, <xref target="sec-ir-ref-val"/>, and <xref target="sec-ir-end-val"/>.</t>
          <section anchor="sec-ir-evidence">
            <name>Internal Representation of Evidence</name>
            <t>An internal representation of attestation Evidence uses the <tt>ae</tt> relation.</t>
            <t>The <tt>addition</tt> is a list of ECTs with Evidence to be appraised.</t>
            <t>A Verifier may maintain multiple simultaneous sessions to different Attesters.
Each Attester has a different ACS. The Verifier ensures the Evidence inputs are associated with the correct ACS.
The <tt>addition</tt> is added to the ACS for a specific Attester.</t>
            <sourcecode type="cddl">
ae = [
  addition: [ + ECT ]
]
</sourcecode>
            <table anchor="tbl-ae-ect-optionality">
              <name>Mandatory fields for Evidence tuples</name>
              <thead>
                <tr>
                  <th align="left">Type</th>
                  <th align="left">e</th>
                  <th align="left">c</th>
                  <th align="left">a</th>
                  <th align="left">ns</th>
                  <th align="left">cm</th>
                  <th align="left">p</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">addition</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                </tr>
              </tbody>
            </table>
            <t>'T' means mandatory.</t>
          </section>
          <section anchor="sec-ir-ref-val">
            <name>Internal Representation of Reference Values</name>
            <t>An internal representation of Reference Values uses the <tt>rv</tt> relation, which is a list of ECTs that contains possible states and a list of ECTs that contain actual states asserted with RVP authority.</t>
            <t>The <tt>rv</tt> relation is a list of condition-addition pairings where each pairing is evaluated together.
If the <tt>condition</tt> containing reference ECTs overlaps Evidence ECTs then the Evidence ECTs are re-asserted, but with RVP authority as contained in the <tt>addition</tt>.</t>
            <t>The reference ECTs define the matching conditions that are applied to Evidence ECTs.
If the matching condition is satisfied, then the re-asserted ECTs are added to the ACS.</t>
            <sourcecode type="cddl">
rv = + {
  condition: ECT
  addition: ECT
}
</sourcecode>
            <table anchor="tbl-rv-ect-optionality">
              <name>Mandatory fields for Reference Values tuples</name>
              <thead>
                <tr>
                  <th align="left">Type</th>
                  <th align="left">e</th>
                  <th align="left">c</th>
                  <th align="left">a</th>
                  <th align="left">ns</th>
                  <th align="left">cm</th>
                  <th align="left">p</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">condition</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                </tr>
                <tr>
                  <td align="left">addition</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="sec-ir-end-val">
            <name>Internal Representation of Endorsed Values</name>
            <t>An internal representation of Endorsed Values uses the <tt>ev</tt> and <tt>evs</tt> relations, which are lists of ECTs that describe matching conditions and the additions that are added if the conditions are satisfied.</t>
            <t>The <tt>ev</tt> relation compares the <tt>condition</tt> ECTs to the ACS and if all of the ECTs are found in the ACS then the <tt>addition</tt> ECTs are added to the ACS.</t>
            <t>The <tt>evs</tt> relation compares the <tt>condition</tt> ECTs to the ACS and if all of the ECTs are found in the ACS then each entry in the series list is evaluated.
The <tt>selection</tt> ECTs are compared with the ACS and if the selection criteria is satisfied, then the <tt>addition</tt> ECTs are added to the ACS and evaluation of the series ends.
If the <tt>selection</tt> criteria is not satisfied, then evaluation procedes to the next series list entry.</t>
            <sourcecode type="cddl">
ev = [
  condition: [ + ECT ]
  addition: [ + ECT ]
]
evs = [
  condition: [ + ECT ]
  series: + {
    selection: [ + ECT ]
    addition: [ + ECT ]
  }
]
</sourcecode>
            <table anchor="tbl-ev-ect-optionality">
              <name>Mandatory fields for Endorsed Values tuples</name>
              <thead>
                <tr>
                  <th align="left">Type</th>
                  <th align="left">e</th>
                  <th align="left">c</th>
                  <th align="left">a</th>
                  <th align="left">ns</th>
                  <th align="left">cm</th>
                  <th align="left">p</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">condition</td>
                  <td align="left">F</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                </tr>
                <tr>
                  <td align="left">selection</td>
                  <td align="left">F</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                </tr>
                <tr>
                  <td align="left">addition</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="sec-ir-policy">
            <name>Internal Representation of Policy Statements</name>
            <t>The <tt>policy</tt> relation compares the <tt>condition</tt> ECTs to the ACS.
If all of the ECTs are found in the ACS then the <tt>addition</tt> ECTs are added to the ACS with the policy author's authority.</t>
            <sourcecode type="cddl">
policy = [
    condition: [ + ECT ]
    addition: [ + ECT ]
]
</sourcecode>
            <table anchor="tbl-policy-ect-optionality">
              <name>Mandatory fields for policy tuples</name>
              <thead>
                <tr>
                  <th align="left">Type</th>
                  <th align="left">e</th>
                  <th align="left">c</th>
                  <th align="left">a</th>
                  <th align="left">ns</th>
                  <th align="left">cm</th>
                  <th align="left">p</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">condition</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                </tr>
                <tr>
                  <td align="left">addition</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="sec-ir-ar">
            <name>Internal Representation of Attestation Results</name>
            <t>The <tt>ar</tt> relation compares the <tt>acs-condition</tt> to the ACS.
If the condition is satisfied, the <tt>ars-additions</tt> are copied from the ACS to the ARS.
If any of the <tt>ars-additions</tt> are not found in the ACS then these ACS entries are not copied to the ARS.</t>
            <sourcecode type="cddl">
ar = [
    acs-condition: [ + ECT ]
    ars-addition: [ + ECT ]
]
</sourcecode>
            <table anchor="tbl-ar-ect-optionality">
              <name>Mandatory fields for Attestation Results tuples</name>
              <thead>
                <tr>
                  <th align="left">Type</th>
                  <th align="left">e</th>
                  <th align="left">c</th>
                  <th align="left">a</th>
                  <th align="left">ns</th>
                  <th align="left">cm</th>
                  <th align="left">p</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">acs-condition</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                </tr>
                <tr>
                  <td align="left">ars-addition</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">T</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                  <td align="left">F</td>
                </tr>
              </tbody>
            </table>
          </section>
        </section>
        <section anchor="sec-ir-acs">
          <name>Internal Representation of ACS</name>
          <t>An ACS is a list of ECTs that describe an Attester's actual state.</t>
          <sourcecode type="cddl">
ACS = [ + ECT ]
</sourcecode>
        </section>
        <section anchor="sec-ir-ars">
          <name>Internal Representation of Attestation Results Set (ARS)</name>
          <t>An ARS is a list of ECTs that describe ACS entries that are selected for use as Attestation Results.</t>
          <sourcecode type="cddl">
ARS = [ + ECT ]
</sourcecode>
        </section>
      </section>
      <section anchor="sec-phase1">
        <name>Input Validation and Transformationn (Phase 1)</name>
        <t>During the initialization phase, the CoRIM Appraisal Context is loaded with various conceptual message inputs such as CoMID tags <xref target="sec-comid"/>, CoSWID tags <xref target="RFC9393"/>, CoBOM <xref target="sec-cobom"/> and cryptographic validation key material (including raw public keys, root certificates, intermediate CA certificate chains, and Concise Trust Anchor Stores (CoTS, <xref target="I-D.ietf-rats-concise-ta-stores"/>)).
These objects will be utilized in the Evidence Appraisal phase that follows.
The primary goal of this phase is to ensure that all necessary information is available for subsequent processing.</t>
        <t>After context initialization, additional inputs are held back until appraisal processing has completed.</t>
        <section anchor="sec-phase1-valid">
          <name>Input Validation</name>
          <section anchor="corim-selection">
            <name>CoRIM Selection</name>
            <t>All available CoRIMs are collected.</t>
            <t>CoRIMs that are not within their validity period, or that cannot be associated with an authenticated and authorised source MUST be discarded.</t>
            <t>Any CoRIM that has been secured by a cryptographic mechanism, such as a signature, that fails validation MUST be discarded.</t>
            <t>Other selection criteria MAY be applied.
For example, if the Evidence format is known in advance, CoRIMs using a profile that is not understood by a Verifier can be readily discarded.</t>
            <t>The selection process MUST yield at least one usable tag.</t>
            <t>Later stages will further select the CoRIMs appropriate to the Evidence Appraisal stage.</t>
          </section>
          <section anchor="tags-extraction-and-validation">
            <name>Tags Extraction and Validation</name>
            <t>The Verifier chooses tags from the selected CoRIMs - including CoMID, CoSWID, CoBOM, and CoTS.</t>
            <t>The Verifier MUST discard all tags which are not syntactically and semantically valid.
In particular, any cross-referenced triples (e.g., CoMID-CoSWID linking triples) MUST be successfully resolved.</t>
          </section>
          <section anchor="cobom-extraction">
            <name>CoBOM Extraction</name>
            <t>This section is not applicable if the Verifier appraisal policy does not require CoBOMs.</t>
            <t>CoBOMs which are not within their validity period are discarded.</t>
            <t>The Verifier processes all CoBOMs that are valid at the point in time of Evidence Appraisal and activates all tags referenced therein.</t>
            <t>A Verifier MAY decide to discard some of the available and valid CoBOMs depending on any locally configured authorization policies.
(Such policies model the trust relationships between the Verifier Owner and the relevant suppliers, and are out of the scope of the present document.)
For example, a composite device (<xref section="3.3" sectionFormat="of" target="RFC9334"/>) is likely to be fully described by multiple CoRIMs, each signed by a different supplier.
In such case, the Verifier Owner may instruct the Verifier to discard tags activated by supplier CoBOMs that are not also activated by the trusted integrator.</t>
            <t>After the Verifier has processed all CoBOMs it MUST discard any tags which have not been activated by a CoBOM.</t>
          </section>
        </section>
        <section anchor="sec-ev-coll">
          <name>Evidence Collection</name>
          <t>During the Evidence collection phase, the Verifier communicates with Attesters to gather Evidence.
The first part of this phase does not require any cryptographic validation.
This means that Verifiers can use untrusted code to discover Evidence sources.
Attesters are Evidence sources.</t>
          <t>Verifiers may rely on conveyance protocol specific context to identify an Evidence source, which is the Evidence input oracle for appraisal.</t>
          <t>The collected Evidence is then transformed to an internal representation, making it suitable for appraisal processing.</t>
          <section anchor="sec-crypto-validate-evidence">
            <name>Cryptographic Validation of Evidence</name>
            <t>If Evidence is cryptographically signed, its validation is applied before transforming Evidence to an internal representation.</t>
            <t>If Evidence is not cryptographically signed, the security context of the conveyance protocol that collected it is used to cryptographically validate Evidence.</t>
            <t>The way cryptographic signature validation works depends on the specific Evidence collection method used.
For instance, in DICE, a proof of liveness is carried out on the final key in the certificate chain (a.k.a., the alias certificate).
If this is successful, a suitable certification path is looked up in the Appraisal Context, based on linking information obtained from the DeviceID certificate (see Section 9.2.1 of <xref target="DICE.Layer"/>).
If a trusted root certificate is found, the usual X.509 certificate validation is performed.</t>
            <t>As a second example, in PSA <xref target="I-D.tschofenig-rats-psa-token"/> the verification public key is looked up in the appraisal context using the <tt>ueid</tt> claim found in the PSA claims-set.
If found, COSE Sign1 verification is performed accordingly.</t>
            <t>Regardless of the specific integrity protection method used, the Evidence's integrity MUST be validated successfully.</t>
            <ul empty="true">
              <li>
                <t>If a CoRIM profile is supplied, it MUST describe:</t>
                <ul spacing="normal">
                  <li>How cryptographic verification key material is represented (e.g., using Attestation Keys triples, or CoTS tags)</li>
                  <li>How key material is associated with the Attesting Environment</li>
                  <li>How the Attesting Environment is identified in Evidence</li>
                </ul>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="sec-phase1-trans">
          <name>Input Transformation</name>
          <t>Inputs, whether Endorsements, Reference Values, Evidence, or Policies, are transformed to an internal representation that is based on ECTs.</t>
          <t>The following mapping conventions apply to all forms of input transformation:
The <tt>e</tt> field is populated with a Target Environment identifier.
The <tt>c</tt> field is populated with the measurements collected by an Attesting Environment.
The <tt>a</tt> field is populated with the identity of the entity that asserted (e.g., signed) the Evidence.
The <tt>ns</tt> field is populated with the namespace context if supplied. For example, the Attester's manufacturer may have a URI that identifies the manufacturing series, family or architecture.
The <tt>cm</tt> field is set based on the type of Conceptual Message inputted or to be outputed.</t>
          <section anchor="appraisal-context-construction">
            <name>Appraisal Context Construction</name>
            <t>All of the extracted and validated tags are loaded into an <em>appraisal context</em>.
The Appraisal Context contains an internal representation of the inputted Conceptual Messages.
The selected tags are mapped to the internal representation, making them suitable for appraisal processing.</t>
            <t><cref anchor="issue">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/96</t>
          </section>
          <section anchor="reference-and-endorsed-values-tranformation">
            <name>Reference and Endorsed Values Tranformation</name>
            <t>The Reference Values ECT fields are populated as described above <xref target="sec-phase1-trans"/> and {#sec-ir-ref-val}.</t>
            <t>The Endorsement Values ECT fields are populated as described above <xref target="sec-phase1-trans"/> and {#sec-ir-end-val}.</t>
          </section>
          <section anchor="evidence-tranformation">
            <name>Evidence Tranformation</name>
            <t>Evidence is divided up into one or more <tt>ev</tt> relations where the <tt>condition</tt> ECT identifies the Attester from which Evidence was collected. If the Verifier maintains multiple Attester sessions, the Verifier session may be identified using an ECT.</t>
            <t>Evidence information is mapped to an <tt>addition</tt> ECT that populates each of the ECT fields. If the Evidence doesn't have a value for the mandatory fields, the Verifier MUST NOT process the Evidence.</t>
            <t>The Evidence ECT fields are populated as described above <xref target="sec-phase1-trans"/> and <xref target="sec-ir-evidence"/>.</t>
            <t>Evidence transformation algorithms may be well-known;
may be defined by a CoRIM profile (<xref target="sec-corim-profile-types"/>); or may be supplied dynamically.
The handling of dynamic Evidence transformation algorithms is out of scope for this document.</t>
          </section>
        </section>
      </section>
      <section anchor="sec-phase2">
        <name>Evidence Augmentation (Phase 2)</name>
        <section anchor="sec-acs-initialization">
          <name>Appraisal Claims Set Initialization</name>
          <t>The ACS is initialized by copying the internal representation of Evidence claims to the ACS.
See <xref target="sec-add-to-acs"/>.</t>
          <section anchor="sec-authorized-by">
            <name>The authorized-by field in Appraisal Claims Set</name>
            <t>The <tt>a</tt> field in an ECT in the ACS indicates the entity whose authority backs the claim.</t>
            <t>An entity is authoritative when it makes Claims that are inside its area of
competence. The Verifier keeps track of the authorities that assert Claims so
that it can filter out claims from entities that do not satisfy appraisal
policies.</t>
            <t>When adding an Evidence Claim to the ACS, the
Verifier SHALL set the <tt>authorized-by</tt> field in that Claim to the trusted
authority keys at the head of each key chain which signed that Evidence. This
key is often the subject of a self-signed certificate.
The Verifier has already verified the certificate chain (see <xref target="sec-crypto-validate-evidence"/>).</t>
            <t>If multiple authorities approve the same Claim, for example if multiple key chains
are available, then the <tt>authorized-by</tt> field SHALL be set to include the trusted
authority keys used by each of those authorities.</t>
            <t>When adding Endorsement Claims to the ACS that resulted
from CoRIM processing (see <xref target="sec-add-to-acs"/>) the Verifier SHALL set the
<tt>authorized-by</tt> field in that Evidence to the trusted authority key that is
at the head of the key chain that signed the CoRIM.</t>
            <t>When searching the ACS for an entry which matches a Reference
Value containing an <tt>authorized-by</tt> field, the Verifier SHALL ignore ACS
entries if none of the keys present in the Reference Value <tt>authorized-by</tt> field
are also present in the ACS <tt>authorized-by</tt> field.</t>
            <t>The Verifier SHOULD set the <tt>authorized-by</tt> field in ACS entries
to a format which contains only a key, for example the <tt>tagged-cose-key-type</tt>
format. Using a common format makes it easier to compare the field.</t>
          </section>
          <section anchor="appraisal-claims-set-augmentation-using-comid-triples">
            <name>Appraisal Claims Set augmentation using CoMID triples</name>
            <t>In the ACS augmentation phase, a CoRIM Appraisal Context and an Evidence Appraisal Policy are used by the Verifier to find CoMID triples which match the ACS.
Triples that specify an ACS matching condition will augment the ACS with Endorsements if the condition is met.</t>
            <t>Each triple is processed independently of other triples.
However, the ACS state may change as a result of processing a triple.
If a triple condition does not match, then the Verifier continues to process other triples.</t>
          </section>
          <section anchor="ordering-of-triple-processing">
            <name>Ordering of triple processing</name>
            <t>Triples interface with the ACS by either adding new ACS entries or by matching existing ACS entries before updating the ACS.
Most triples use an <tt>environment-map</tt> field to select the AES entries to match or modify.
This field may be contained in an explicit matching condition, such as <tt>stateful-environment-record</tt>.</t>
            <t>The order of triples processing is important.
Processing a triple may result in ACS modifications that affect matching behavior of other triples.</t>
            <t>The Verifier MUST ensure that a triple including a matching condition is processed after any other triple that modifies or adds an ACS entry with an <tt>environment-map</tt> that is in the matching condition.</t>
            <t>This can be acheived by sorting the triples before processing, by repeating processing of some triples after ACS modifications or by other algorithms.</t>
          </section>
        </section>
      </section>
      <section anchor="sec-phase3">
        <name>Reference Values Corroboration and Augmentation (Phase 3)</name>
        <t>Reference Value Providers (RVP) publish Reference Values triples that are matched against ACS entries.
Reference Values may describe multiple acceptable states for Attesters; hence "matching" determines that Evidence (contained in the ACS) satisfies an appropriate subset of the available Reference Values.
If the appropriate subset matches, the authority of the RVP is added to the appropriate ACS entries.</t>
        <t>The Verifier compares each <tt>reference-triple-record</tt> against ACS entries as described in <xref target="sec-match-one-se"/>, where the <tt>reference-triple-record</tt> takes the place of a <tt>stateful-environment-record</tt>.
If all fields of the <tt>reference-triple-record</tt> match the ACS, then the Verifier MUST add the RVP authority to each matching ACS field.</t>
        <t>If any <tt>reference-triple-record</tt> in the Reference Value triple does not match the ACS then the entire triple is ignored.</t>
      </section>
      <section anchor="sec-phase4">
        <name>Endorsed Values Augmentation (Phase 4)</name>
        <t><cref anchor="issue_1">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/179</t>
        <ul empty="true">
          <li>
            <t>[Ned] <em>The following sections should describe augmentation in the context of the <tt>ev</tt> and <tt>evs</tt> relations containing ECTs staged for ACS augmentation</em></t>
          </li>
        </ul>
        <section anchor="processing-triples-representing-conditional-endorsements">
          <name>Processing triples representing Conditional Endorsements</name>
          <t>An Endorser may use CoMID tags to publish Conditional Endorsements, which are added to the ACS only if specified conditions are satisfied.
This section describes the process performed by the Verifier to determine which Conditional Endorsements from the candidate CoMIDs should be added to the ACS.</t>
          <t>The verifier checks whether Conditional Endorsements are applicable by comparing ACS entries against expected values provided in <tt>stateful-environment-record</tt> object which are part of the triple.</t>
          <section anchor="processing-conditional-endorsement-triple">
            <name>Processing Conditional Endorsement Triple</name>
            <t>For each Conditional Endorsement Triple the Verifier compares each of the <tt>stateful-environment-record</tt> fields from the <tt>cond</tt> field in the triple against the ACS (see <xref target="sec-match-one-se"/>).</t>
            <t>If every stateful environment matches a corresponding ACS entry, then the Verifier MUST add an Endorsement entry to the ACS (see <xref target="sec-add-to-acs"/>) for each <tt>endorsed-triple-record</tt> in the <tt>endorsements</tt> field.
Each Endorsement from the <tt>endorsed-triple-record</tt> includes the authority which signed the Conditional Endorsement Triple.</t>
          </section>
          <section anchor="processing-conditional-endorsement-series-triple">
            <name>Processing Conditional Endorsement Series Triple</name>
            <t>For each Conditional Endorsement Series Triple the Verifier iterates over the <tt>conditional-series-record</tt>s within the triple, stopping if it finds a match.</t>
            <t>For each iteration, the Verifier creates a temporary <tt>stateful-environment-record</tt> by merging the <tt>stateful-environment-record</tt> in the triple with the <tt>refv</tt> field in the <tt>conditional-series-record</tt>. It compares this temporary record against the ACS (see <xref target="sec-match-one-se"/>).</t>
            <t>If one of the temporary records matches then the Verifier MUST add the <tt>endv</tt> Endorsement entry to the ACS.
This Endorsement includes the authority which signed the Conditional Endorsement Series Triple.</t>
          </section>
          <section anchor="sec-match-one-se">
            <name>Processing a stateful environment against the Appraisal Claims Set</name>
            <t>This section describes how a stateful environment is matched against an ACS entry.
If any part of the processing indicates that the stateful environment does not match then the remaining steps in this section are skipped for that stateful environment.</t>
            <t>The Verifier initializes a temporary "candidate entries" variable with all entries in the ACS where the stateful enviromnment <tt>environment-map</tt> is a subset of the ACS <tt>environment-map</tt>.</t>
            <t>A stateful environment <tt>environment-map</tt> is a subset of an ACS entry <tt>environment-map</tt> if each field (for example <tt>class</tt>, <tt>instance</tt> etc.) which is present in the stateful environment <tt>environment-map</tt> is also present in the ACS entry, and the CBOR encoded field values in the stateful environment and ACS entry are binary identical.
If a field is not present in the stateful environment <tt>environment-map</tt> then the presence of, and value of, the corresponding ACS entry field does not affect whether the <tt>environment-map</tt>s are subsets.</t>
            <t>Before performing the binary comparison, a Verifier SHOULD convert <tt>environment-map</tt> fields into a form which meets CBOR Core Deterministic Encoding Requirements <xref target="STD94"/>.</t>
            <t>If the stateful environment contains an <tt>authorized-by</tt> field then the Verifier SHALL remove all candidate entries whose <tt>authorized-by</tt> field does not contain one of the keys listed in the stateful environment <tt>authorized-by</tt> field (see <xref target="sec-authorized-by"/> for more details).</t>
            <t>If there are no candidate entries then the triple containing the stateful environment does not match.</t>
            <t>The stateful environment entry is compared against each of the candidate entries.</t>
            <t>For each of the candidate entries, the Verifier SHALL iterate over the codepoints which are present in the <tt>measurement-values-map</tt> field within the stateful environment <tt>measurement-map</tt>.
Each of the codepoints present in the stateful environment is compared against the candidate entry.</t>
            <t>If any codepoint present in the stateful environment <tt>measurement-values-map</tt> does not match the same codepoint within the candidate entry <tt>measurement-values-map</tt> then the stateful environment does not match.</t>
            <t>If all checks above have been performed successfully then the stateful environment matches.
If none of the candidate entries match the stateful environment entry then the stateful environment does not match.</t>
          </section>
        </section>
      </section>
      <section anchor="sec-phase5">
        <name>Verifier Augmentation (Phase 5)</name>
      </section>
      <section anchor="sec-phase6">
        <name>Policy Augmentation (Phase 6)</name>
      </section>
      <section anchor="sec-phase7">
        <name>Attestation Results Production and Transformationn (Phase 7)</name>
      </section>
      <section anchor="sec-add-to-acs">
        <name>Adding to the Appraisal Claims Set</name>
        <section anchor="sec-acs-reqs">
          <name>Appraisal Claims Set Requirements</name>
          <t>At the end of the Evidence collection process Evidence has been converted into an internal represenetation suitable for appraisal.
See <xref target="sec-ir-cm"/>.</t>
          <t>Verifiers are not required to use this as their internal representation.
For the purposes of this document, appraisal is described in terms of the above cited internal representation.</t>
          <t><cref anchor="issue_2">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/232</t>
          <t>The ACS contains the actual state of Attester's Target Environments (TEs).
The <tt>state-triples</tt> field contains Evidence (from Attesters) and Endorsements
(e.g. from <tt>endorsed-triple-record</tt>).</t>
          <t>CoMID Reference Values will be matched against the ACS, as per
the appraisal policy of the Verifier.
This document describes an example evidence structure which can be easily
matched against these Reference Values.</t>
          <t>Each entry within <tt>state-triples</tt> uses the syntax of <tt>endorsed-triple-record</tt>.
When an <tt>endorsed-triple-record</tt> appears within <tt>state-triples</tt> it
indicates that the authority named by <tt>measurement-map</tt>/<tt>authorized-by</tt>
asserts that the actual state of one or more Claims within the
Target Environment, as identified by <tt>environment-map</tt>, have the
measurement values in <tt>measurement-map</tt>/<tt>mval</tt>.</t>
          <t>ECT authority is represented by cryptographic keys. Authority
is asserted by digitally signing a Claim using the key. Hence, Claims are
added to the ACS under the authority of a cryptographic key.</t>
          <t>Each Claim is encoded as an ECT. The <tt>environment-map</tt> and a
key within <tt>measurement-values-map</tt> encode the name of the Claim.
The value matching that key within <tt>measurement-values-map</tt> is the actual
state of the Claim.</t>
          <t>This specification does not assign special meanings to any Claim name,
it only specifies rules for determining when two Claim names are the same.</t>
          <t>If two Claims have the same <tt>environment-map</tt> encoding then this does not
trigger special encoding in the Verifier. The Verifier follows instructions
in the CoRIM file which tell it how claims are related.</t>
          <t>If Evidence or Endorsements from different sources has the same <tt>environment-map</tt>
and <tt>authorized-by</tt> then the <tt>measurement-values-map</tt>s are merged.</t>
          <t>The ACS must maintain the authority information for each ECT. There can be
multiple entries in <tt>state-triples</tt> which have the same <tt>environment-map</tt>
and a different authority (see <xref target="sec-authorized-by"/>).</t>
          <t>If the merged <tt>measurement-values-map</tt> contains duplicate codepoints and the
measurement values are equivalent, then duplicate claims SHOULD be omitted.
Equivalence typically means values MUST be binary identical.</t>
          <t>If the merged <tt>measurement-values-map</tt> contains duplicate codepoints and the
measurement values are not equivalent then the verifier SHALL report
an error and stop validation processing.</t>
        </section>
        <section anchor="sec-acs-aug">
          <name>ACS Augmentation</name>
          <t>The ordering of ECTs in the ACS is not significant.
Logically, new ECT entries are appended to the existing ACS.
But implementations may optimize ECT order to achieve better performance.
Additions to the ACS MUST be atomic.</t>
        </section>
      </section>
      <section anchor="sec-ect-compare">
        <name>ECT Comparison</name>
        <t><cref anchor="issue_3">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/71</t>
        <t>This specification defines the comparison algorithm for the codepoints and CBOR tagged values described in sub-sections below.
A CoRIM profile may define additional tags and their matching algorithms.
Specifications that extend CoMID MUST also define comparison algorithms for the extended values.
Any new codepoints requiring non-default comparison MUST add a CBOR tag to the extension that describs the desired behaviour.</t>
        <section anchor="sec-compare-env">
          <name>Environment Comparison</name>
        </section>
        <section anchor="sec-compare-claims">
          <name>Claims Comparison</name>
          <section anchor="sec-match-one-codepoint">
            <name>Comparison of measurement-values-map</name>
            <t>This section describes the algorithm used to compare the <tt>measurement-values-map</tt> codepoints of an ECT with another ECT.
The comparison algorithm performed depends on the value of the codepoint being compared.</t>
            <t><cref anchor="issue_4">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/203</t>
            <t>If the <tt>measurement-values-map</tt> value has an associated CBOR tag.
The comparison algorithm should comprehend the structure identified by the CBOR tag.</t>
            <t>If the stateful environment <tt>measurement-values-map</tt> value is tagged with a CBOR tag <xref target="STD94"/> then the Verifier MUST use the comparison algorithm associated with that tag.</t>
            <t>If the value is not tagged then the Verifier MUST use the comparison algorithm associated with the <tt>measurement-values-map</tt> codepoint for the entry.</t>
            <t>If the Verifier does not recognize the stateful environment CBOR tag value then the stateful environment does not match.</t>
            <t>If the stateful environment is not tagged and the <tt>measurement-values-map</tt> key is a value with handling described in the sub-sections below, then the algorithm appropriate to that key is used to match the entries.</t>
            <t>If the stateful environment is not tagged, and the <tt>measurement-values-map</tt> key is not a value described below, then the entries are compared using binary comparison of their CBOR encoded values.
If the values are not binary identical then the stateful environment does not match.</t>
            <section anchor="comparison-for-svn-entries">
              <name>Comparison for svn entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 1 is an SVN, which must
have type UINT.</t>
              <t>If the Reference value for <tt>measurement-values-map</tt> key 1 is an untagged UINT or
a UINT tagged with #6.552 then an equality comparison is performed. If the value
of the SVN in ACS is not equal to the value in the Reference
Value then the Reference Value does not match.</t>
              <t>If the Reference value for <tt>measurement-values-map</tt> key 1 is a UINT tagged with
#6.553 then a minimum comparison is performed. If the value of the SVN in
ACS less than the value in the Reference Value then the
Reference Value does not match.</t>
            </section>
            <section anchor="sec-cmp-digests">
              <name>Comparison for digests entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 2,
or a value tagged with
#6.TBD is a digest entry.
It contains one or more digests, each measuring the
same object. A Reference Value may contain multiple digests, each with a
different algorithm acceptable to the Reference Value provider. If the
digest in Evidence contains a single value with an algorithm and value
matching one of the algorithms and values in the Reference Value then it
matches.</t>
              <t>To prevent downgrade attacks, if there are multiple algorithms which are in
both the Evidence and Reference Value then the digests calculated using all
shared algorithms must match.</t>
              <t>If the CBOR encoding of the <tt>digests</tt> entry in the Reference Value or the
ACS value with the same key is incorrect (for example if fields
are missing or the wrong type) then the Reference Value does not match.</t>
              <t>The Verifier MUST iterate over the Reference Value <tt>digests</tt> array, locating
hash algorithm identifiers that are present in the Reference Value and
in the ACS entry.</t>
              <t>If the hash algorithm identifier which is present in the Reference Value
differs from the hash algorithm identifier in the ACS entry then the Reference Value does not match.</t>
              <t>If a hash algorithm identifier is present in both the Reference Value and
the ACS, but the value of the hash is not binary identical
between the Reference Value and the ACS entry then the
Reference Value does not match.</t>
            </section>
            <section anchor="comparison-for-raw-value-entries">
              <name>Comparison for raw-value entries</name>
              <ul empty="true">
                <li>
                  <t>[Andy] <em>I think this comparison method only works if the entry is at key 4 (because
there needs to be a mask at key 5). Should we have a Reference Value of this
which stores <tt>[expect-raw-value raw-value-mask]</tt> in an array?</em></t>
                </li>
              </ul>
              <t><cref anchor="issue_5">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/71</t>
            </section>
            <section anchor="sec-cryptokeys-matching">
              <name>Comparison for cryptokeys entries</name>
              <t>The value stored under <tt>measurement-values-map</tt> key 12 is an array of <tt>$crypto-key-type-choice</tt> entries. <tt>$crypto-key-type-choice</tt> entries are CBOR tagged values.
The array contains one or more entries in sequence.</t>
              <t>The CBOR tag of the first entry of the Reference Value <tt>cryptokeys</tt> array is compared with
the CBOR tag of the first entry of the ACS <tt>cryptokeys</tt> value.
If the CBOR tags match, then the bytes following the CBOR tag from the Reference Value entry
are compared with the bytes following the CBOR tag from the ACS entry.
If the byte strings match, and there is another array entry,
then the next entry from the Reference Values array is likewise
compared with the next entry of the ACS array.
If all entries of the Reference Values array match a corresponding entry in the ACS array, then the <tt>cryptokeys</tt> Reference Value matches.
Otherwise, <tt>cryptokeys</tt> does not match.</t>
            </section>
            <section anchor="sec-cmp-integrity-registers">
              <name>Comparison for Integrity Registers</name>
              <t>For each Integrity Register entry in the Reference Value, the Verifier will use the associated identifier (i.e., <tt>integrity-register-id-type-choice</tt>) to look up the matching Integrity Register entry in Evidence.
If no entry is found, the Reference Value does not match.
Instead, if an entry is found, the digest comparison proceeds as defined in <xref target="sec-cmp-digests"/> after equivalence has been found according to <xref target="sec-comid-integrity-registers"/>.
Note that it is not required for all the entries in Evidence to be used during matching: the Reference Value could consist of a subset of the device's register space. In TPM parlance, a TPM "quote" may report all PCRs in Evidence, while a Reference Value could describe a subset of PCRs.</t>
            </section>
          </section>
        </section>
        <section anchor="sec-compare-auth">
          <name>Authority Comparison</name>
          <t>The <tt>a</tt> field comparison tests for trust path termination.
If the authority of the first ECT is a trust anchor for the authority of the second ECT, the second ECT is valid.
If the authority values are identical, then the second ECT is valid.</t>
        </section>
        <section anchor="sec-compare-ns">
          <name>Name Space Comparison</name>
          <t>The <tt>ns</tt> field comparison tests equality where the text values are identical.</t>
        </section>
        <section anchor="sec-compare-cm">
          <name>Conceptual Message Type Comparison</name>
          <t>The <tt>cm</tt> field comparison tests equality of one or more bits.</t>
        </section>
        <section anchor="sec-compare-profile">
          <name>Profile-directed Comparison</name>
          <t>A profile may specify handling for new CBOR tagged Reference Values.
The profile must specify how to compare the CBOR tagged Reference Value against the ACS.</t>
          <t>Note that the verifier may compare Reference Values in any order, so the comparison should not be stateful.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol
defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>. The description of
implementations in this section is intended to assist the IETF in its decision
processes in progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here
that was supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalogue of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to
assign due consideration to documents that have the benefit of running code,
which may serve as Evidence of valuable experimentation and feedback that have
made the implemented protocols more mature.  It is up to the individual working
groups to use this information as they see fit".</t>
      <section anchor="veraison">
        <name>Veraison</name>
        <ul spacing="normal">
          <li>Organization responsible for the implementation: Veraison Project, Linux
Foundation</li>
          <li>Implementation's web page:
<eref target="https://github.com/veraison/corim/blob/main/README.md">https://github.com/veraison/corim/README.md</eref></li>
          <li>Brief general description: The <tt>corim/corim</tt> and <tt>corim/comid</tt> packages
provide a golang API for low-level manipulation of Concise Reference
Integrity Manifest (CoRIM) and Concise Module Identifier (CoMID) tags
respectively.  The <tt>corim/cocli</tt> package uses the API above (as well as the
API from the <tt>veraison/swid</tt> package) to provide a user command line
interface for working with CoRIM, CoMID and CoSWID. Specifically, it allows
creating, signing, verifying, displaying, uploading, and more. See
<eref target="https://github.com/veraison/corim/blob/main/cocli/README.md">https://github.com/cocli/README.md</eref> for
further details.</li>
          <li>Implementation's level of maturity: alpha.</li>
          <li>Coverage: the whole protocol is implemented, including PSA-specific
extensions <xref target="I-D.fdb-rats-psa-endorsements"/>.</li>
          <li>Version compatibility: Version -02 of the draft</li>
          <li>Licensing: Apache 2.0
<eref target="https://github.com/veraison/corim/blob/main/LICENSE">https://github.com/veraison/corim/blob/main/LICENSE</eref></li>
          <li>Implementation experience: n/a</li>
          <li>Contact information:
<eref target="https://veraison.zulipchat.com">https://veraison.zulipchat.com</eref></li>
          <li>Last updated:
<eref target="https://github.com/veraison/corim/commits/main">https://github.com/veraison/corim/commits/main</eref></li>
        </ul>
      </section>
    </section>
    <section anchor="sec-sec">
      <name>Security and Privacy Considerations</name>
      <t><cref anchor="issue_6">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_7">Content missing. Tracked at:</cref> https://github.com/ietf-rats-wg/draft-ietf-rats-corim/issues/12</t>
      </section>
      <section anchor="sec-iana-cbor-tags">
        <name>New CBOR Tags</name>
        <t>IANA is requested to allocate the following tags in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably with the specific CBOR tag value requested:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">500</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-concise-rim-type-choice, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">501</td>
              <td align="left">
                <tt>map</tt></td>
              <td align="left">A tagged-corim-map, see <xref target="sec-corim-map"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">502</td>
              <td align="left">
                <tt>tag</tt></td>
              <td align="left">A tagged-signed-corim, see <xref target="sec-corim-signed"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">503-504</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">505</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-swid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">506</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-mid-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">507</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">508</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">A tagged-concise-bom-tag, see <xref target="sec-corim-tags"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">509-549</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">550</td>
              <td align="left">
                <tt>bytes .size 33</tt></td>
              <td align="left">tagged-ueid-type, see <xref target="sec-common-ueid"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">552</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">553</td>
              <td align="left">
                <tt>uint</tt></td>
              <td align="left">tagged-min-svn, see <xref target="sec-comid-svn"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">554</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">555</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">556</td>
              <td align="left">
                <tt>text</tt></td>
              <td align="left">tagged-pkix-base64-cert-path-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">557</td>
              <td align="left">
                <tt>[int/text, bytes]</tt></td>
              <td align="left">tagged-thumbprint-type, see <xref target="sec-common-hash-entry"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">558</td>
              <td align="left">
                <tt>COSE_Key/ COSE_KeySet</tt></td>
              <td align="left">tagged-cose-key-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">559</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-thumbprint-type, see <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">560</td>
              <td align="left">
                <tt>bytes</tt></td>
              <td align="left">tagged-bytes, see <xref target="sec-common-tagged-bytes"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">561</td>
              <td align="left">
                <tt>digest</tt></td>
              <td align="left">tagged-cert-path-thumbprint-type, see  <xref target="sec-crypto-keys"/></td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">562-599</td>
              <td align="left">
                <tt>any</tt></td>
              <td align="left">Earmarked for CoRIM</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
        <t>Tags designated as "Earmarked for CoRIM" can be reassigned by IANA based on advice from the designated expert for the CBOR Tags registry.</t>
      </section>
      <section anchor="sec-iana-corim">
        <name>New CoRIM Registries</name>
        <t><cref anchor="issue_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>
            <seriesInfo name="DOI" value="10.17487/RFC4122"/>
            <seriesInfo name="RFC" value="4122"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <seriesInfo name="DOI" value="10.17487/RFC7468"/>
            <seriesInfo name="RFC" value="7468"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <seriesInfo name="DOI" value="10.17487/RFC8610"/>
            <seriesInfo name="RFC" value="8610"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9090">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Object Identifiers</title>
            <seriesInfo name="DOI" value="10.17487/RFC9090"/>
            <seriesInfo name="RFC" value="9090"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR), defined in RFC 8949, is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.</t>
              <t>This document defines CBOR tags for object identifiers (OIDs) and is the reference document for the IANA registration of the CBOR tags so defined.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <seriesInfo name="DOI" value="10.17487/RFC9052"/>
            <seriesInfo name="RFC" value="9052"/>
            <seriesInfo name="STD" value="96"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="STD" value="94"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="STD66">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <seriesInfo name="DOI" value="10.17487/RFC3986"/>
            <seriesInfo name="RFC" value="3986"/>
            <seriesInfo name="STD" value="66"/>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9393">
          <front>
            <title>Concise Software Identification Tags</title>
            <seriesInfo name="DOI" value="10.17487/RFC9393"/>
            <seriesInfo name="RFC" value="9393"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay"/>
            <author fullname="C. Schmidt" initials="C." surname="Schmidt"/>
            <author fullname="D. Waltermire" initials="D." surname="Waltermire"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles. SWID tag representations can be too large for devices with network and storage constraints. This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags. CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <seriesInfo name="DOI" value="10.17487/RFC9334"/>
            <seriesInfo name="RFC" value="9334"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="IANA.language-subtag-registry" target="https://www.iana.org/assignments/language-subtag-registry">
          <front>
            <title>Language Subtag Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology -- ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <seriesInfo name="ITU-T" value="Recommendation X.690"/>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
        </reference>
        <reference anchor="IANA.named-information" target="https://www.iana.org/assignments/named-information">
          <front>
            <title>Named Information</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <seriesInfo name="DOI" value="10.17487/RFC7942"/>
            <seriesInfo name="RFC" value="7942"/>
            <seriesInfo name="BCP" value="205"/>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.fdb-rats-psa-endorsements">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Verifier Endorsements</title>
            <seriesInfo name="Internet-Draft" value="draft-fdb-rats-psa-endorsements-04"/>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   PSA Endorsements include reference values, cryptographic key material
   and certification status information that a Verifier needs in order
   to appraise attestation Evidence produced by a PSA device.  This memo
   defines such PSA Endorsements as a profile of the CoRIM data model.

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

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

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

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-endorsements">
          <front>
            <title>RATS Endorsements</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-01"/>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
         </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="12" month="June" year="2024"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture, a
   Verifier accepts Evidence and, using Appraisal Policy typically with
   additional input from Endorsements and Reference Values, generates
   Attestation Results in formats needed by a Relying Parties.  This
   document explains the purpose and role of Endorsements and discusses
   some considerations in the choice of message format for Endorsements.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="DICE.Layer" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Layering-Architecture-r19_pub.pdf">
          <front>
            <title>DICE Layering Architecture</title>
            <seriesInfo name="Version 1.0, Revision 0.19" value=""/>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
        </reference>
        <reference anchor="IANA.coswid" target="https://www.iana.org/assignments/coswid">
          <front>
            <title>Concise Software Identifier (CoSWID)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="SPDM" target="https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.3.0.pdf">
          <front>
            <title>Security Protocol and Data Model (SPDM)</title>
            <seriesInfo name="Version 1.3.0" value=""/>
            <author>
              <organization>Distributed Management Task Force</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
        </reference>
        <reference anchor="CE.SPDM" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-DICE-Concise-Evidence-Binding-for-SPDM-Version-1.0-Revision-54_pub.pdf">
          <front>
            <title>TCG DICE Concise Evidence Binding for SPDM</title>
            <seriesInfo name="Version 1.00, Revision 0.54" value=""/>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
        </reference>
        <reference anchor="DICE.AA" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-17_1August2023.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <seriesInfo name="Version 1.1, Revision 0.17, public review" value=""/>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-29"/>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Mediatek USA</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="8" month="July" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine the type
   and degree of trust placed in the entity.

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

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

              </t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <?line 2678?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

unprotected-corim-header-map = {
  * cose-label =&gt; cose-value
}

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

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

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

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

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

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

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

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

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

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

COSE_KeySet = [ + COSE_Key ]

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

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

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

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

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

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

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

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

conditional-endorsement-triple-record = [
  conditions: [ + stateful-environment-record ]
  endorsements: [ + endorsed-triple-record ]
]

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

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

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

$entity-name-type-choice /= text

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

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

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

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

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

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

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

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

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

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

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

non-empty&lt;M&gt; = (M) .and ({ + any =&gt; any })

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

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

raw-value-mask-type = bytes

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

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

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

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

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

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

tag-version-type = uint .default 0

tagged-bytes = #6.560(bytes)

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

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

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

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

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

digests-type = [ + digest ]

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

integrity-registers = {
  + integrity-register-id-type-choice =&gt; digests-type
}

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

payload-or-evidence //= ( payload =&gt; payload-entry )
payload-or-evidence //= ( evidence =&gt; evidence-entry )

any-uri = uri
label = text / int

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

any-attribute = (
  label =&gt; one-or-more&lt;text&gt; / one-or-more&lt;int&gt;
)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

integer-time = #6.1(int)

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

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

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

abandon=1
private=2
shared=3

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

optional=1
required=2
recommended=3

</sourcecode>
      <t># Contributors
The authors would like to thank the following members for their valuable contributions to the specification.</t>
      <t>Andrew Draper</t>
      <t>Email: andrew.draper@intel.com</t>
      <t>Dionna Glaze</t>
      <t>Email: dionnaglaze@google.com</t>
    </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:
H4sIAHU7jGYAA+y97XbcRpIo+B9PgaV92qS6qiRKlGyxxz1NU3SbO6akK9L9
sX08Q7AKZGFUBdQAKFJsW3PuQ+yf/Xd/7JPcfZP7JBufmZEJoEjK7nv27Lln
zrTFApAZGRkZGd8xHo+T6/30WZK0RbvI99PDqpwWTZ6+yy/zOi+neXpctvlV
XbS36UlWFpd50ybZxUWdX+PL745Pklk1LbMlfDurs8t2XOTt5bjO2mY8repi
OX7yPJlmMERV3+6nTTtLplXZ5GWzbvbTtl7nSbO+WBZNU1Rle7uCYY6Pzr5N
kmJV0/OmffrkycsnT5OszrP9dOs0n64Rmq3kpqrfX9XVegW/vsuXVZunB2ct
wJe1MFb6tq6m+Wxd56dbyfv8Ft6e7acA7yh9d3B2Okqz1r07Sq/zurgs8nqU
NuvVanGbTudZUSYJvFDO/i1bVGUu0K6K/SRN22q6n97mDfyzqeq2zi8b9/ft
0v4Jb87yVTvfT18kSbZu51W9n4zTooQ3vpuk3xT1+3m1+Du8yUj8Li/f21+r
+mo//bbO1uW8gi1JT4/P4Nd8mRWL/XQOL08u5OU/IOYngN02m7Y6xdkk/bZq
Glimm+FsXi2zxvwMU8DO/p1QsZ9+X5RZXfk5+PWJvP6HBT2ewDc6xV8n6au8
ma8AU7mb5K/VFfwWPAinyeqln+OW3p7M9O0/wFNYyVKneD1JT5dFO3fDv85n
7hfCEFLpwg9Y5rNJg8//UOADO9afJ+nbrHQj/Tkv5G8a57t1dgO/nOXTeVkt
qquCNlFGvSkWiyJbTgBGeOkPc3qXxkaibuviYt3i9qapzHUIG1zVy6zE8XXG
w6xu2rwMntDcP5QF0GFTtP/P/92m39T5El46+z+O6YUGaCxv99O3VdNeZtN5
+uzZk729J/RsCsdhXz7gH6oZzPNq/PSrZ89fyi9rgA/e+mOOk97Sj6s5kfVv
916O957ujp/ufjV+8ezl0116KEueZhfVH9q/F7ThPJIslHbx9/RbGq/JvwX7
1FZpO8/Tw1evvk+bVT6FgzYlImhS2Gt6dnzw+gC/aYpZXvOzSZKUOFgLOEGM
vvv2cG/36dP9dL0uZvz3l3svvtpPV++LD+M2/9Dyj1+92H0CYM9mC/77JTAP
+PuiqsdVMcPNPD179fLFPgE+hidVk9O/v97n158/lXf2/DvwtXnnq5d7L/md
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
8TAnIpy12FG4HaadWAmZ0XiuHNgvpYxg4/sk9v6NvOPNeEfSExN/niT2L1NR
PKPV5NroBWBXwQ+XodW6TZpSoh3kJGAJK81g++MMJB6sggGyR1WDKHCJGcOj
9PhNWktPAf/ViNvvZYuEOveY4bBIC+UWkT8/hJkj0/O0zm5c5BzXdqJcpARV
89A10lUQMXDVhh9yjD6ZACQ1H3gw8XbN1EdUca2UZCZJRLOgKzoOpbeIjmEC
HliNnKVBH+7EDBAvU+cb1I2pHZdEhGA8rc9hctK28w+zrv5FE9xeScJaRZCg
kFFZYZYhcCyJFrbM1vUKkuhaHAR7QQmAPcPxkjtVqX3lvdDyEfoOxTxgmQUh
JpjHGXN8g3UyVhBsYT5WNHr/BdE/Q5KZUu48BwUVqW7JKVmdysy3hrt1gmw1
dHXOQlOYLYLSSTfhCj6MUp12ML7o4lbrXZpcNUlB5m5Q/qrPfaAIC5lSQFwL
N1vKlkNGEVHn/nXgNOcmB09rRa+lW6HQyLkZSZ3bnu1FD022wRIuI6fdyWuz
sRysjmd+CTCqhmfHZNCNVSUA32YhDNyB6Y+f4tGP18z6Fi4pjDc1hVl7DRiG
INBkyobqUACNjRlLY8FHrIQOlJjA+kwz3Vk2WWmWxpcS0YZ1pKBhIZCB4k6Z
GHgGlCddhrv5zCj2Sogz5YvjZRy1dC4CVhbJ0LY1cnTO2BwKulV+ReMKCdcq
AwdXKCa+hWYawviwDGEniiTQNyplkhpbEEv2EsEmou+1L9zzAyNK3PUFGTm8
KBEiQphRgAokBio52n8ITWjARjJ0TTeSyH2AlmhuqK4VGoZt0dxn/BLFyFHi
bmQuQzQIXlYak7rofP6isvwKrpXXVStxpVQRRSjLTUV3iLtcpHsmyEaTQApT
awEqt0h5Vd1SPPI0w1IrF/ltBaKmb0im/QwnibG3ZEFX8VtrbkN7pA9T8U0Q
kfXjWSKhJ+G6jjmpoLiG8D1tQBuVFk0l6CiYezLA3T2Wew16Lu6fOb4G/Jri
F9cuKQD+2WPmExFQebr8yYTOb1DzIrXr0R9u/G3yvuNNAlIlw6qGvs/dL0Fc
pnzwz/YTGK55r7XWw18VjjTd0Qsum2LXv1rCFlL9u2dpxUre/JLeTOXvvmIT
lC8yZk1ICwJJoh4+R+VxHz1laMF0iqQ8W+OzXSkCuw4fcsGL3d14QGbq6I2G
p8/ucZuqKVXSfsdajhG/39M6SfEziXXop6dfGPYwwArUFhjmblDcg5OzNXwS
9c9cC04pT408XliBbDUjy9rwZWpTOTAe7brsXN/O8KWxyKL1th2oSA1j1bjH
YNZqdHchFQ40BrQH/MgnHnk0AUoXMsCHLrj6nZOGbm96YbvZiaWbyFgIcgIz
IyeVoOScczU7LMTrqzjF5eqQb6HEctxysSraZMsNzsNovE01fmFJ0vHMWEC9
0bWLU+zrlWnvoWomljyyfoocYrls5BMtOAHyYk2hAfmI/MnUl4j/RDPx5Rq2
mL3y0r+df+dWI/xviiW8NfW7gE/j751ce6TFMwra1GVKFoPLkpDKwfGqohIS
0fWNuWZ3U1FAQzS9otxxzsCOG9CRtKLcxmXhnuWzHZuP4S5hJAQrZZ+HXNlE
j3QWfVG0qugiggxQjCSuliz7jqKejc+ZUOmt5j2ZVrCTGdmat3a3dhg5Ehtp
5rhjhkl6osYFkRfItEBRLN64gEZ5SXESC0MwrHM9sIdO7P9eWIDRKCsI1MBs
+t6bM2TGwHQRDOwrWjKPQhtbSoMg/2U7jKtPw0npUkEBHrsyD9oyraPvctam
fOJivQg/gMHxDVqD0CyUkTAzsDg5cdzjj437AW4kWydsJB/Ti4bX81UdRPgc
pEc/HI/3viLtHP71Yi89OThE4aumBOqupvUJ50RG0xYV4vNYhdB8yarl8dvr
PQQG/vtiExhWw/wlYASyR1SGjqR0sYk6+VrNHuK5SnkAgIKHkLKTuXFQvsTg
9yM0v25YRtpRkJOoLhiOqVCjoOMvWYqu/+GXT7D2EwR1u3bxGs/Yj3/vKSRH
RAUtP9gzG5rQbCy90qkQ2uNnCYwJTn7DAtcuJY31E9Zt4Uw3wl99DSRr/Q/O
HsBBEIXAYCFA0Bp8QShTWoXGdu3bmbvKUGL+R2nOtTW3GBqJo4/KRGmqZsxX
NAr8RJ8XTa9k4IYd60g+KKUjqfrN4fqOLlDEWps5+OlOQ8w9D2MPFASg6uxh
lmUoaJKubpQto6BzAzzbDNTkKnNwjfKNkFid+mfGdfk2kZ5nNAl9m0NlXNRT
+POnGOPs8vYHpXqzQGFU9lWZPpDGMyNXiPDgM7w8rlhY047HVlj1cJiLGfbZ
FM/X+ph7k12OO/TxnhyrRzVlqN77ijR0rNfLwQg0Z5GzXdpblcIFSd4bXfRw
Dkssd1lMOVPuPm+Om/XlZfGB0uV6P8gWK1AzdNhnA2/N8mmxRAvu3sALTb68
RoV298Wzr/rf8T2eA4PVqYroegpes7pkDwMqMF2SYupvN6hc26Sg7TjRAVhd
sVwvN7wPb4z5G2c3p54TQ1+Ykn7UQtUm7PmoGsnBdv0Gsa9odo3FvyiYIsX6
s1hCicIoUEIacRPkyH3HzrYdf2d01JtJ8g4QdIGASEDssE5paqxw+g4WA25b
/PYagMYmrBn2SJvOR0PLJyfYFy33UJoyp8TAlOP+uUGHuCEeLu1c/UHrqesk
FaYkAxt0GLhbPmjDSVa85WaxxQEpg1vBQIpB1yEH5GowhqaQN0PhDB6/BffT
kIbEFGXCrYWPL02gipPC/ch0Q3hfjgG3GYmyLHnsYk3FalB1sCyAOqEyBrek
Gl64+B3BKvDTVru1s/WQxWrxO/GX6izK7iL9hNOJHf0jbtiNxsIIwtcEC3Ee
MwnCpnKGdqEejbCFWFiyYs+oydz200mMFXkOFncsc2AW5qx+yKy+G2VuEeuy
yS7Z41ei4LTAjdcM6siceR54DGywZ+Y6vRMEMJj+7aCS2J0zSSt17yK5d16m
sgM2EqbxsocsH1vNP3/+VAagP56dG1vMIrD36kqkRAP+Df/UXxOZ2P7kYZRm
b8+foqV3Jwlh1YfPtuWHnSTCmm+Miq8/TsPvgyvh24XtlOatD7IdzjAcbsTM
hNr5QBPgr4ucBIHY7sNcyo7m+AmRohaZogMrVQaiQZhyKNTSYtkNabylBfbJ
VouQClcInH/Ol4PKVeEzNTSp8Tx8SiYptZvHH6KpaWw6K+z1vOUlVPPi877h
1iVywDEiXu3i0VDLJd9hagwPH7fTC1cGP3hA2JF8rQiQl/Z1NDM7BP+yInF+
61nqDPYojLnlL/ADum/qtYRGDtiS2QpobICWszgqmuisvPNhQOtDZvyi8dIC
Ooscx2vytqVIIXK0rbl8Lr4yc3MrZQUm4QevtyidLZSCzt3wRJphfOonjK1W
VwE+nCIm8TC49IGz+ZYRHPgpplqKctGyLCmIwle5RvLjJd/4KFExuvI7Dsae
AxYkxv1SMNeliRJhN4bHjzmzgUHswTvh9ElOC7rI8YyR8CphUxxT5letvCCw
fD2cAHQYNzBwkcB+9eAhM06FzDH9fLlak2UEU8smASPoY0eBqetB8yaFHFM/
rLXzh1Vfh50vgcQhQXwJa0ElliK/NuZgec5SGLdF8sktn6XvQB4XC27YIJEq
sAReVbx932k8X2QZqXMjgTuzLivJsZQG6uD0PRu51EvdJKIO46qo+C86xkam
3lc3lhyxLdGcQHZuJCfzE0w3lbRQJEHfWIo5f2gUxX5wuRJvMkB7MktqGrRV
9yGAQLnkToPnNsTz/K7gUtObw4/MESoSqyVY5Epf2lvdhkWrRR7W2Yg+ZpOL
EluvBeNHkXsFnRwJbO2tSIslr8iGmAJjETSxDm/Ql0majVsJ+U5IXg1N9mfv
fjjiWegNiQmEMWGy2Zos0Gbg5M8SO5zfRFhic6AgSIJN1IpDkT3a3bu1q8I0
CvkqitAImykazV7KIwcQcDk5GtUWxPdmnN6ghE4UcNIThABSYxwi/Fl6IO6B
7jkNTf02zAlxYMsn84txJUMufd7HaLjsiltST1ADgFqs9vzPINcXqxf+7yR8
KgtLJw22F99Lgnejp7svkqQv4gJey9fF3lfBpPDLCzNREr8RDv0iid6Pnn9l
g7MPybocBJUZyzuaZ7upAxq17ftwepFU7PKuGhXSwup98WGM1w8ApQEZ5/vp
2yPfnO2Ueya8pYagAAy2e+Gwvx5j5C5366Fh0eBmSgjF02EYV998f5k8f/JS
+o/ymnzL48F5nz9s2lXWznVuns9MIuG57C1VLsSmWnzs04MzDI8ob3ugt12a
TXPvVFzqwWNTeViG58Vx7pOyWdIiZgUW+Vk4lJBbltTDkirbTHNkc8HSqWOJ
2dmgqxo1HsRq/XBe9d+neTuI5S9NK6Z++pNGyg8lQ9+fWeHMNDDjnM0byP48
TbDBSSbzVqvUpr9fFmJ7NaQEwk1QCCmTEp2pEfIUcUSed8IVEWcfWL1AWXp7
KFRMvQ8ADfcOP/pkCPHju8E09fn6Q7z8HdTHdx74meMfn/KdYwD3+Dg4Qvd4
P9qZ+8zQQ2v3/ayPGJJkA5rVYLa3jbmUO32vOtTqu8/veNehUz94EX4Qwadv
fSmRme69ANX6FjduFd4EV67+5b/qQZ9+/LIzxRDS5IsXu+4Lcxcfu/iod+pI
jTIdu45Wyizq+xDtc6QIND6YrZtxBIdsi704zdaEOzy5B6bGfl/CHJX2NgMa
D7JEu00S36ZK+rNzsWZtLakVckmWMyEatnsJYW2J1YFqV+Mg/h5uZva7gCA4
NSmtNupj6/mWaDsMHLk+org8rzpsD0blBVlz3R2J8+KkWLB4Bns+aMSK+tue
uNPOYFFYsRgFDyQ/Kto5Ni0NU4d0TIJrq8DrXiqiCGOOkqI5nN01J2KVgxqE
FLX3zmHHcEVvN6Q+JixTOqY0bhZ2TbqQD355woov/MjWA+eUctNxWAe6g0Rd
6ozIPVqLmluOjSXqZ5L0pDqHwkQPAllxoB7ssyK7SnAHn+ynf4P/ezJK5188
efJF+mP6I0Zp75qfd3fh5xH8tUt/PaWXdBvJDn9RtXMhsO7gfmg3sB9Wh8Fg
tQHger73gLjv6y7uUPfrI6Oo0Q4VCCDkvT18J5bNs7cn1PgF/jvy9ITJBZx2
E1T/Zt8hj87Z4JS9zKnpWAmUlHq2wYxdHlxM9y72RDsYdbVKKaGFp4iETP6b
TWea1IEUeLEuZwspRv2pPZf622Z7273MTYyOD3qoahtY49SYgWfEa4aedZJw
Nr7nsnuc++EcZ1aPHkx0Luo4qRiv35yxLxc2EE53q0KcVK/nlFGpwN4Js+Tq
WT1VPrVGH+7UQIs42RDfSTDOnvTOcFuKiu2ScWCW9gbkkLOodEjTO9DIMKv+
JKOR462uC6B0+ZPcTnjUiGlvbnrZSYUIt66dcGHKJ3vWZohoqDwodzOPiiz5
uFD3y49eTum0whveNql0SDJKfwM9DKxYZHVYy7Y/sZbbEWDwbtIb1oByygUa
AyVSD+6yK9yEdoAkODI+BKt/502TCZkXcN4bcsiW6odSge9RqeIHbuq8urGj
KX1LmoQAF1b86i3h+ilbHLcAHN5iV1YSz2Z/50ApS+dWYIXGvpDRyvcE1NGl
cFr3ZYqM0EINxiDopY6hAJjClVxryQSO86k53MxNN5Nor2oX7g/p+aLpqZZX
dT7mTD0ip2iRpqLniAKTqG1HqPxvQINtfmnu5KAntF1qMtDnkTIGMZwe5nZW
cQzJ54a+ZOLQNm7YUgE9Ho0HuM6vq6lUV+ho99wsbs236G+CjAW66EEmw1DV
y3RVYUGwhrzIZ9Y8f/rdmx++f+WAqS4vsaFIWJsUviesBIaEgdVONtCtHCjh
QYg7GvYm19g07GVJQicCKmFycw2v7SlvGLQrD8JbMe2B267fZE0wZlVziSj1
hwo58c2B3tCGeZApjKlb0S1mS7tuclilmwyqV9QLJmzncj5gHeDwZr8nCFKb
vc9NSBgIcKR4potqqv3OTddNtK4lHKGCICDrXjfodIabgHrFcAAbd9VdFi11
GkSFjdwV0amZZwssgIKxZ85TpnRC1EnsFOehEXDQ66JiXtSdFeB6s4mookQb
+Z2GDoA/Ofir5nxraLkv+DmbeWo5ODwFwliAwIRGXwxpsuvAYUBRwqRcOnh2
apgP1KAmcFmVVJy9lm/IFLoup3Fvi4Fy3UNXxeaMSntx8K1IzVmH7wxT6pdE
A/PRJ98YAzkAGznmDWY5uSoc/TkE0ieRRP8oaZzMDL1lTIcmRauFb+ybdNb9
/1fe210oNdfurF741afx221TV4UqBfZUr90ZopL/xZgNY74/X24sY/Z5dEDm
BPX/Ysf3Y8eDzQ9+OUMWC8gr33p6mC93y56TcNQZwalurLZw1XX3VZH7npeG
XybcSKSRvJFetVosIUFHSGup+SjJAUCXSWYUqKCHj+xjqITxsfK3iELbJrYq
vFshZ8haJZBf+x//9f+S9d7Ads4LauwHZIWt1gsyPixuE6kNUtkPMeM8/m6e
XVNcFiLKdqK9IDMn+YM3TKW1IQP4tMiloa27umIwifUYgZTMesxDvSR24tuE
30lipnS9IbGTuNE4MlPgJc5EZjuRV1GHAfJ6/1KqSg1VJQ+nqggitS0kgZGw
r2+3toTYsUvkeDp3L61XVQkLnGJ9ASz87tIKgRI6RrG+SbTRxQ62qfRSSIdU
Btue3EUqccnxkEyCRujfSxOnYUqRPDMkD+16fi9DXyB42M3hUZpkIC1mMsyW
ui/TPZsIMdhJxE0W9g3lsq1hfwVvCEr6zYEpmwO1fdBmk2CywSSYDpgEe9vT
bLpwtOk4f0aNtGiLk74HbIROH6cXcAn7mCdLDr1tHdJTbnKwiTB8hwamjo0D
CdVQKY7+thAjxee5Ph1bBDBmzndGUgd2M2X4Dg598me6WqylIkhcoi2g4kQY
0nXuj7k5sUSpupIeGCQCmBauFE0jahhQA4yt4QqE7rLR9hLynVbMbhKCICyO
/jtu5ednFGMb9h6lsN3YgEvBnTRQmss6kg3Y7qfD0bDV8szD7wAnt2JdZ1Ti
LejiId1IZGc990fnm+GleEAjs7X4yDeNJitAqzHGvmiklXGqtuJJdaU3BHIC
lnWu2FrunXI42qX9ymd7cWmxDaDxTjZeziW/VFFj6ttd+PE3DxZXlYFQbT48
xZ6eNYiFlGzvmts6wu2vbLFphaSClCawK15qI7Rk55dur0y9kuUkpDui+mJl
5Se97puU3VtREUGf3985sbp7vTwFNknc2zA7xRo3Wss0OB7aBY/gHpmat3fT
WBOy8we0BuPjteEAwtPfCblK7AVnqDOxuK2V4W6oBwageJ6hAqSPk24/sWAd
XkDoXUX4LoP8u06LLzF3y047n4/jMil+cb0/XJXzd3EPL1EMqYgqhmhKY+ZL
pXpiTLPhIX+8xy13x/UmjXmUr9mA9nl+16AFqaDsbsZAhd+nW8ffeu7BwRDu
BAM9EqU1PoP37Luj12lOhZ8o6MXVCzB01XBnBas5hzNs3YM2+4jSn/F9op5N
t8SPvBUOpv3NrQx/1O7xd7R0csdsLr3XveseS/wsc4kAsb2hGoyNxDgcvo2t
xA+S3qKCb/WO1LAFWtmIqU3bTDJbY0HEN5jCXShyxyuQ5amMZ6AnHbNiwjWt
7Hi39gNEDds+OnMXlwGNEIDCKqMYoSGyVOseOan8lYiJT2gUAdretwYqsZNI
fjcZbGzZ4NlY7SyF1uDEDCcYkW40GyfEN4emcmiLrbvAVBnJdG4DRtBw2Zmg
PxcmXAOP0jzr7I6hQ5FABC9tIAxoRlPaQKUAO9gqK8jySIVFOcTLFbHtu4qs
qcA1fCeAAFtYQZRJ+ViDwYEWMAgq1DgY5y4PRQSOJRt+OJAl/ECDaHB3FnBg
MFH7EatYXIf00lfyugNtGEi+XFGHIBbpLoq2zjDtawkoaKOeGJixj/FdRLXU
PkTj4MJeDZJFRdCMNZoHsNMYG6dp/pqVDdqhMbx++2//SsUwgMNk7Y/pvG1X
zf7jx1dwvNcXE4D1cZG3l+M6a5vxzdXjWZ1dtmP/E7CWAl5pGpjr8e6XL3bw
qkiPONP3oqC8Ob4XcvubXAZIgOnhG6qsjbVHsrBqEBudKcDop5/GyHw/fhQf
Bodq0Zhw5BOqzpi1nh1lyONgiFVVIBa5ww4wwC3fQ50fbcXxTJKOc+m7rfNh
99WaYAMo/Yjb+Z5kK10vvJqEf/ruxsHyXWla2A7OZMLPXN03EIVo0Wh2CL/j
nNqmkwCFBiTCBdEto5Ve8L2qu2M6HLBuxndDvUzPtz///PXByZFP2N45l7Y0
W/j7lga3UeEtLT0JsgIe7i8+//wLtpmTVtlZwsR2NgqBqeE8FxQ9Y7LDJN9w
ljOs2syHedR1Vcwaejrmp3VOpSD+7Lsq+U8bdWqQZsGBeShoqx9DDDNIaWxM
gFcwK+Z1VY5LLGZdXOc+xpfLCYJUdy0J48cHrw/oxiIrHxldEVDtbyfNn19l
bUYRfJZmEvqVQubC7fZXNm8L7YoxVQ3sC41UcmsO3BG7Id1ZALJTPnyG4reR
IGFVDt6dtJlr+4VZNV1z3RZKf8imOA4FpWKkHKXM62YHZCoRLugoc+l6MpSm
olJ56Nkad8b5iDxYiEQY8ps3J07YvKiWajhBs036TYEFIi/hQLVUAC/dpvd3
OnG6YhHnIiYigCTWTZlhTQ6NM1lgFOdMuoi6t+BOLaZBgWgtSEqTKpUQWc80
PbLnkTQUQkObXtg6uzRt4EXLNcu53FKdFQfWmGmqOiKgikDBH3ZHzVqQ0+kY
cjeD8pam751W9M/sOisWJHWIhKV4GInw1hZ17j+p83/nbGnmsL7MhyBAFy8x
lRSqHHZ7gHN4C2tZ8q0gPg6QV/w2vbkp8/qLxlS2e8tbghvqbEwwo1XWadcK
ocbqssVuujVNL+mzfM1/wBNIqnZGjbmE0Wk1cQ35CGFRuztDIS3J8kYqydKC
ef0jXyKG1s8HBRPSimvFvg4tUcy6M8Vymc8wLGzB8LWSdscxhZJN61Jyz2xd
JS6DTjVDHdwyZ8MgSCSAhqQncTSpXGh1Y0W5Gg7FccmclKag+llS+J96jbJc
qD0Gitz4+TlTAMu9NTuJwGn6EgCtkXhhJSykMHtCM0v/IBkui7b1ioBDIx8J
vRs5DJzaWtZuzwl8LXgowLjwfAO+ht0hYHqgWyPay42DM1IRKgwM2USjNNes
mBIbRTe9m9SwCxbe3Lm3IX+6Rrpm0lOVJKTdJV78KhplLueatGA1dwMfRWv3
uWZCeKVbTF5Fk9TrBdsRC3ZNYGM5WqayF/4i16q0SJfk06ldnAcFn9OSMLto
P1SrLSCuxiGb4DnCxxU6NL+J4YNebMbI/LQqD6rP8ZucLPCbbZyFYKJRuU6P
/i0jYvGaCKhfVsKmD9UuVdFBGfY0CZ8FRSVxwk6HRtlemzOuW01Y39QCmyYy
ecCMzaDSzQHdLnEFzg6MqGkzQLdsOeP5T6TVl7rA8LRKSBLQUtGu5bLdupBL
fCmX+NYoJacGdoJ1SphqwzZswek+tl8V++jtii5ylHjR9rUo3jNnQTGANPUc
q+4VzdInXgWXkisPqHV2WXAhN2QaBDqRhCocqvHsCY2vBhTcHbxS5BwfeUuf
Y+KuDjutQ4akXW7kGldrTXD7m1lgtK4EQEWOfNky94D33x6QoNzQqdTa4iXp
KxhHVVQzb9RDWhvsdINpaPol5kXDfBvO2vk+d+ViNlaBrtraig/ZbIblHvAQ
GKr3ypReA53zF/T7KbIyE3Hyoyb9bgTKKC4eJmrDwXtJTQoCpivSK3XUipJ4
qOSIqQkRpdewTqq1EedUfQMkBLrGRnywRnKyCO94B6DackTg8CyuS4iWZnM/
nHODMuzBJZU6FLXSyFEtQsg/ye5H6rbWXknExS6tT9t0kWdN6xodG8eHvMiG
fmH7vnnJye+B52+DpD7BlWz/BNwbpVJgzPifj5Rc+p9sXuBY2QB7LnD/jG27
nl2S/zBYoW1oX4bdkaKWYomYiFo1PSESQJMCFWaCPREK7YXdFio0M7cgHZVr
2lgTK/DzulrkUZgbO2zR4WhzsqqFihm0Gh8mQ5RuJuVcq4x6xxVLmga9tUqe
YyZPM489SNac4rcdTQnCtje0Ho/g6kLFqXuczqEb8k8xAkZpDOrv3eUvn3G/
FGlfZn7r6dkCSjt1smYRYF0XNA7OafuTxTCQ8f1RBxC45ZOh+Vxq2id0gXfE
ybzWzBD2RjE2FokPZ+N0T+87pouMyAdt52GMJc6La54ATxtYD7dropN9gUPh
2oBDviHBPeBjnClp7E0bxtxuTD134bFLlDJ2pDsFbVckY/zw7ri3hHe3j1l1
w5Ft5DohBJHZg0auTCmzp1w33yclimFMCg6Zs6aaLLXzQw8OniksEcJXAr6J
6HeN+Vjd01Ou5WdR6O9sNoymbCjiG0IG8YlFmO1ZjW684ftOjm5EaUecFkzH
lTpTxJxyADplD2qjT/Qer4ul8t2PdP1YcVIf8G30J5UTAqbtZACunG7k7/PY
UEMYJfvSNYY1c+kpl84tjRmTG4w6cC6hAkM50EWNWgplxBqE+Urs0uJUHQuU
jJ/E1aCV7e+o1hiCO+Jwi1ySepkbCrBS0I3qxwC55KtqOqdaELMEa/89pqVh
nC1W0naVY55N9iZPuXrMRVUTHn0teDO1qVtaVu2YTUROUSqW3NIRH1EhQOWM
9ESUGOyr4D7t1HFHGNFJFCF75lASC4FUVOaqQMOmjEwzB4f8UwdGBBNBUV+J
gJioTUSS/KAlvtGaFbQPpqMKtz56W+jz2UBx+MnTCdaH940nHOJdonG3AFac
iszFMZ59ue1+ceUxuOtGCHx+N/A/lAUWgia/EjEoGISiv9NtXM6OWU9i1/OU
yt2nY9DGo9Xk/at59sytJg9W8/z5k233k1/Om3g11d2Lwe3+5uid6yEDO/CX
yYuXT4CTcKh5dtFUC9QI+SQmJoMRTfRYDwCt/+GKqmhBuo4qWMbu7u521VnF
Ky7xEyzE1MqgxHp+JWJNrlVSRt2TyOKhZWN7em/1NNyauEJwyjxkJv+aWb46
vziN95wS2Kl8NeWvk32mCZLWsylGANBlx6oQIJDSTMbIEAHj6gyZJKd60ZN/
hsc24UVxYMrW8astdeiPFIJN73+Hi3+NMs0pkYL7ekLGcer7hik7BRXWZwcg
3VMEiSMWWOC7o8M3JydHr18dvQrCfhlxHH4B6NtHrqMlS3bQgkDNbZk6fkwS
W4IEvwLhUIZwARZBBXEp03UhYbkMobf7hZtL7QiisiyRrC3ZWHENEEWim+ji
1tdIHJxOfflU/b4oV+tWQvzCyJcQIFLbuBm3Rvyew5Cu/DmejTOuYPkNMQly
X4Wqq62WSVlwXO9z1OnqbrjAJDkONY+iNCsTl3uzT2zbt5Ue+T6iUT/5Wjzj
nTjV3zHnHygIuqmDKYJoM9mzOo+lag0NcIEjReviGVgnlxex3nJWc6RZ4BVj
ymcUyFr9kkg6NaI++rW5NYoIqZKLBILj2kVsU3aFMQ4rjCoUiYZvj43dQS3r
9GSb/lQOaQzY5MSBJbAUkx4jpak1A81WIhsSBSJByAsUrO5rkxJ/WK3ymTO1
FTWpFTVVWVUm6ytflszVuk8nifF2oycDS/YZiRi3QbT4lHwnYlFBxQkdh/mK
GuCdAN6yK2fcFwNGkPSGI8X5CW529JWaWW2ZOCACZ+rHMTh8g5f2TkKAaNab
Ak40JQZLIArSzQLQhHTjO8MlFv/xxFIDVZS0PmzSBg6s2+zLHUg/iC2Uoe5L
EvFSQG9BLm+c9M2ItC4otLMtCoaO1QipfFFjAJv64TetWt1r/TNyWd7WVSVB
4R8LGFD8jut4re5ode51ysyGnQYk7CZLL0Ebu8GgA+UOxv8zF5fNDA8ou+vd
wskQXVTrWvybjoM73kD+mwAK4te+WQjje6XbGsQtxfPUvtMXvVoBMnrAhtW7
LwtUGZe652Lkyz/Mi4vCdFpROsOa0gVzKjdlFjUCI0RHhtEzbTBt/KREfmup
rCQ32gA11xqKxn/NqByFTkn8tzslXmvGJed2yHMxejJ2eye2xcgsT99QvTaq
1sWl1bV9jUTcpas5+V0plGWR1Rx08dv00aO3+CDdffRon5ko68mioMIJOQto
OElesd4rn416DjFf+1Kp2SZt8+bw8Ei+6n6lLFaWKq6KFssakeeVw5CO/WDu
ON2LXzd38Y7j/gcSawXXUR65sg2P8cCvqtV6IW7FkpeOYW8ktnj8PkX8OvZ7
sL5y9Bxh9OnIv2bw6MJKM3Z/sVvf8TkKNpVwvC8a7aZK0YtE2U3PYE4bsB+K
ezkkjmcIfCclDiMaKtCBPKlsWNazUXcASyZa0JuAihAwiSMA3KfuhlJ5Xaqr
IWvRVTXafinAivIpfSuM+hN5yY3q3uLhbYsXczVuTx1GsH2tna7piQ3+1O2K
wyHeSjjE4PbtEe1F6SEb9mpv1HlboDFuX5M6EtCi5/wh0rSgoMYLyZ7wxhcN
uxJdGpVg2NSwkhxzbzJzw/dnnN+FRQ0bGcTac8Sau4M2oOt5T5EALelguhSM
fD1KKg9h1uZsTFx/giNmGml+wEIcxwuTqnAfnGxIxeeh9dMuYnQdg4h5gYiR
+JENaHkxsozTxjv56JGQcqJT5heBoTjUqQbxBkqN/qlU1OSWHCkxdCQHmKBE
BKLB+j6oGz0IWTIBI2oQY18ixvrE7bfswL/XVfulVMRbt9OK/TFedNCMMAlH
cIiMCzPQVSjlOugueZezOv82q9tb4cTUd9JFHkSnWPoUrlu85vCOpHuvzjMR
E3lCTc/rvsZVbslqZERvDphY5m1GEnV813Of6mFVolkXXFtTG4OslyyMUghb
sEZxBbhjjdm07LESqcuJ/Jl/RGKXEc3RMwT/EMQOyqkcT4XWBEBOEKRK5rVQ
aC5526+7kjnFNtrZ1xq4LxD2aFYeJpFxukUzMV6UaRq1w/0k+Wk/vW5W2TT/
euvJ1seEtnI/QQcQUMSUKM44L0a6yVK6hiucsOWCUirQ22OsIGwlPlujfWn7
6PBsB2bEsZ32ZC8Xl/hqE8gcn+hNE6ZE4L6EWaw9TXP3jtUtADFUfghg5m4g
rgyhO+xqdvGZzMaFx4ePXs35lMJIE8wie/S31/nsx/R0fUXmthsO7LRIe+uh
U8y9PdsxnW7wA4CbPISpdkimgKhLoBZhsWgW4gJ9TqDxVXl9dD4yw+t88ijx
xS350CMRWE7ikKcdYjJf3cUIYP1FAXrkSBnatQTqjB9LdzNu4+Nb8mIYf7mG
AwbExHHJeHCnKKkBR3BRoGGLVA4eaSQEh7bWuyzY7UX5JTbPi0z9VlwbxE0v
kaoFMaVYFt4EzhrQKM20m8eLMa4qEHskUZtHe4kFQqRp4u3LLaKsVVG6lan3
TD+WnFbHlgHSzd3PIn24ytIm3chF+D4Ygwd6chB9Z/6scL0Gn1whhC2tsuL+
O/osqhCV9XS4QGsW65aYeobJEa3eVpN0Q0sWirH7wHGyWTpfLylYJ4gCyBYC
Pa7L3ciyNVj7fhskiZ39iNlxiny1mDXIDoR4yAJO5WsEt+qWwTxCx3biG9kl
29OHvq2baZlljWOkqEVxwAHo/BMD3GPZiQR/rh6etyPOd9JK1yVfGIyGIOGm
7dtu3U1J8CBEYPLMIp9dUXQOsUEMi+Yb3tuSryhuHCt9asaKZs/y4Bh82Ql7
BmKuFtcUhl5MTRARWyxwKIkyRmGzZvbp123pfWtjSPUW+3X5FKDlnam/RxJk
Qnm3kVA0T7Mj+nkK8iHalL50qzaDrgzE3RFImnp3L8Msi0dFPZ5itkvfG1pp
ueg1tZdc0c2ZtAVFXbtAR/ukTe+S7KD5ZmABkedE4oHqsWa2f/w48j/CFTim
4j4jE1WCL5cz/p0P5qA5cBgEVzZQpWwKJ8aAzIt1sSDX4sWimr63khEW5Jyl
HXGqsfKUrbmH54yIwpvhN0Aq2g5zhnenExuSCnLwtAlCa/Cnmtk4TUFntSk+
mCg9EO12J8LXjRT1lH/rilzBW88kxthrUnsTH4ZGAuokec4/9dge0asySV64
qdiEbUXRdHuRXeQLjAFBEfQ4lNr6ZJajIBu2NqWM9c6JXIOjPt9gyAblNi7a
0BJUh9e0vZ3pXpYaZ1G1GD8JLNUIjbLSp7zSt/eSdf3lrJ8/60WUFW8pCYWF
2xYpku5UmMqV4ZcqghpMj+fPh9x4OXqbvWRBplQNQmmZUZ12gZqm8C0PJfHN
2JNJM/f9oySYo7ldwj1Vy4+U9e16ksdVrksPFOzK2385/ktYNjrh+AEkRsXS
Xi+WPNHyYfer5lVgEUzpWQajHp6wZ1uGfN47pCK0j/gpILEGSUcSl9yGEFmQ
70bGfsFjm1OiAqwUIUSVUzaTisfEnQ5FK3WnnvpactaT9eqi2qThYfl+TyWs
f06n+yzncQ/sxxQAgS7mxZjFvx/prWz/jiqN+BIWuaCIWBp3CQMvudsC/r3a
Tz+XRQRRux8TOxsDi7G6/KvtyJqGsLov7Vn8OuUSXY9TbKaUCAD482+2uXiK
NA5gfXQ/fdIpurGLv8ittJ8+xSgSLzJouYb99BlGksj9up/uwV9sjtpPnyc7
2skGqHh9NafkDDk+pMiaiGr0REocPUtnA1yV7BtUNUhOdjQIyMYzDAvAEB57
gXzq/Zp8doeU4rQiJ5q4qSgAZMOVZ/Dph1k3csLOs/zc1cB0ZYzkdpVofk1C
ojsw9FpIgQMvwicHoXXYBYM6Lawp8J9ZmXPD1aZR/5WPRjH+DIqncWoAp3ua
Fw9P+fZzc3JkBq+t17nUE+hMXHja+rJWEQLiMiesIbniB6Y2hK/KmmtMlIzE
Jxrp0dWS+ZkZ4M/pOWwB/O+U/jej/y0b/mlJ/1nB/yY/j8dj+EYHhN/PzP9/
6/+L1q3P2ovFOMvHsKyxUjxdYUW7yL/eOlH6TS+xjnUTJkcSK2y2gLK+OPtC
6pkair+TWDtmD0e0ehTuotnOCJ5e62tPryMfoB9Rqea5sRoZG1WonfHwB7E7
S3VuIph3f3obmL7PYqBCaJwqNXYbh9cxNSozNgj5LSzzosGMzoPkSwYFaYne
hkVLET9d4zdUVpiHSW/8MyfGj3WRHLjRXSn5rm15zDY4J4KICBIRyfFVV/Yr
dqbRoZToflsIGgdwC+9+3edC4+gttxS/vq5nyHS3uYaT+lu6CN3g+/hpcHjx
74+/5Nh6wMMza/7/YYe7vn7Q4e62PnKH/M67J7LS+StILrC7TnM8gD/M+bU0
g8qvG3+CGj3XuHcL7efuj6kzPPYRlfqHFJWdelVFx7ZDMRBKS3qkc3ukxWff
dE4hA+WvBgoHvoxEEJ7B1VzSdx3NmutmE8kKWM3/FLjyThyr1FEkxmbZlFyZ
LpvOLCIMdYhg4TE1BU/qYWVD5/o+OKKRbWhSUAAS4708JzXg2qkxICqe3ozI
MUg+ybWkJpEGMYSxoLHSdVybzkoCQ/IB7PLmz3jOfWFcqUdk+Fr/+Gn68ZfJ
IJaZfTvIzPzmbnrrASwvfxjL63QNuzfHE/PmKd7/bAlxPI/VDk185b8+4UBy
o4RfnUvcz1vviFNeYkobpLV/gBAbE1DP/z+MNHglDyIPLRpzb6ros2U7ushq
pYmsHqSHbNqMDU1E5BDcSl0+iCM3TooE1PaGMCDFyLDvhMp8ib++EZDjDRJd
w39K0oh7X2a1ExnVp3YEFay3Q1QGll9PO7IzbiYuM30PgX0bEVhWP4i4egPO
LaVtJDRAuSesqeR44K8Dio73xJbDsXZ+h3Ckrw3GteTsQ4nfOXLsMVBo390N
rSUtJ6TxrSHhqOjzz5q+yYP1vOtdz31ifMt0W6J7dREUPLz70UUksZenwM56
mgtNr6j9CGPFjS9U81NAHqgyFz+l3v2pNzctwwBiXxbvRGu1mPRetB3ZMi6u
ah4/oAptP/kKbezDCD29pvVTYJ7e9lWjMWXH25JBCq8rPOzeGNxwYF8tBbHS
w4OgVRSVbGm0NAYXiDujBi8H5RRuH7hQK+SF24fV2SkayMZtNm7wt48fd3Y0
Ak0bUFMuMSZ0tMWCnLxRzRaDddoQJiGposRC6aoulph+elVlctNiYAi9XDTc
BqRxjke8jcscXccZCb0+dxnp2BVju6QoC1cN1Xub0faFibcmR8lSzciG5BmD
1DzHKn/Z9H26LmGlvRHYZPfSQjwz59OMqNvSL+d6f3SVpJFKT1Ue467ffklS
iYzvk8VCy8jJz+5kIuf3aU5FHecLkydIC1zgyxddc5t4G3JpKsk9w0U2QVGN
G/248jmzoplm9YwNi6WUYInCALi7l9RwC2neVReyPTFdwL2UT76kjl3mePRN
LnUZuuoKNnW6cBaMqCG4aDmOYpmkkJ64WiaFuF6zM02wrXEdgaNCFBPy0MN5
qaKCdeofqvNsVmBQkQH8LNCyhKR4ibd4XfkKMlg5Zt1wwcEMqfn7TCIv0J1L
p/FyXRs8eAbYENVWcNwkbnLgnNJYakA8Q0Z29MHFJFKKktuFJGwfB+yjIqsB
fuRLReldIVCMTQl8KdPDXHOkVQCZNZ2pOu3GJ4QI3nx1J2+FIL3wFu5DjLXi
oCQYSVMVfbIHuuqpg1cxXS+yekTSF/eMd7axmSsXLeUOgu42C+luI+/s+L4b
tomCRHXMJu6E4x3gsSlRnI3su5aU9JWshTR9zEIYv3w7UEexIb5AJfJC5Gxi
DByOEBFlHK8j9eRl8Khzs9T5COLHArdIGCTi64C5rbTYR7NrUYa+CjzHs3yK
SV7kimBKaCpfctfzS+p7R3AJtDPbfg93nFxlWMRMovByx+RUhJAg8UmyfYqc
yQWNL6tZLtUV6ea0jaR8b7Rg67gSptq94IMcWErrQgHlQjZZeHR0NLSN8CoR
by4fbyfkY5nx4EsL1W1bOuOZj3/jyJ8dEoCK91gzk11ETLZB2ompuYinV7z+
UpSCGJyp7C6LofPlCl+O+hDBkTfSCjN4bjaW67DZ6qsucjKmQDo4GP8UvO52
iGO2paSmkwGCeefc/VESAQyVF23EeLgsrJ4tCjfhizQve2vFiijgjsEhX99e
Gsivx3ilh+Kse33qXzcyrWe61XK5Llny4+vbOeao0ntGl4HvLYTHmpt8+G7X
TuDq8BPmjP0i6oTZl7bSM5HnXA0J9QIQlwT/VHRaNhedH6abpPQNTDzguKXd
54kfn4NAseJaKZFlFOGHzTorQJj3+7nYvMqVX0T5Jhrc+Ki6PkmQmLKpCJVR
FVkviplv1ItjEgY2Jv5hsDDdJkUbZg70SZnuLgk2xQiYXT+0BChonqN1Sh9f
BnB3kyP5oI+ouqmRvorGuYO0v5Su1nayuivhMZ6fzBaDMLAwAXIkZSbJvvog
0A4N2M6+yACCConDeaBxH66bLD4CTji1KLmp6vdNnLLsyLDvNC9zuGxmUnbg
W6ryrUFb2I7z+PBIampy194FRmejXIgbldU1Ip/uCkl7KBDDqDVqhYNY6Uu3
s8n7STZhTALkWWNf2hH7VtFwMS8VZLhusZClf5+dpO2ctejqPYaerZx5Kta1
R76xhspOVnlzJT2c1Mgd20HUssvAymmp3mgvtYjPTz8hribfYysIKqJGaerK
d2L12FSiwHnWDer5f5k8f/IyeCskdkmfYxWH0zrQgGWUiDJ9e3qA2vKqycYt
oKOkvgxRU1sTBNaHNn/glbxNtRcsMnQuAeiBLRAnlhigJm9p+bLAwzenR+kp
UOtuCIZdka+EQwX53+VXcMktkM5UCFEadumC2hM5IuJRwDu/aMwHKh67XOtA
UKbkk4HaAlJTbuSvYZFO9pPfY8pK+l11E99QdqmBGYVqBAoLAhhEsmccW/PV
v1DTcZbtSWFGbYQu/R03ZzxwX8xKby9qN8LgG1SryEd0Fv66skaF0EYWGhaI
G7siIyNXgt/W7egNdHZB0LDotyLujjr5bxvZutOG3YnnKIEo3UtLUvi2Fo20
5JImajhXw0leuNywdMW+OFrP2Z7LuUSU9+6MGL35LiYulQaYDg9AIQ1h41G9
Sjb0k9fYpM3jamFoH3BsUrM0MkLIk6+/neBwySxoYt80DQZ7cqynM3dduiM1
SQP1wVMjmaU1fwlWz9K6VEPCOpRxm0wO/tD3qShLztWvLrMl2jpQlsEyP8g0
qFIL435poMc8uaD30oaoUiIIKdfMigsndnpNu2vrPdQod2dac4VBSB0XK5dn
UK4ItJiINefzUYdJP5KcmM6cPjHvznB3t6SeKP2JsQ9ZwHxBGh5hs3AJ7yzv
JV7+7V8pevoX9j16+UK2YmO3TWJiJsEYF9oJgkF/gXhtKFvb0XlQRYWSBcXA
HnBByRWIo9uEIdl2VP+Q+TT+RknTSYLR0q0crIVTSDKA/Q0Ky9uYFw1P63Fk
xwfUhWeasG83J0V9O6tyehzZnTQ+tPHmAJ/0JcGhkVoqP7v+QnGCQlZK2qnR
tQJjflBuKXSrMwPSfWlM8Z7cbJ5bhpsBtdvyi1ZZGacGayuAZeQhjNZDssfr
N2fOOhuyY6YlExb3K1BQN17Zoiu8D23BO0H5jWv49DvfQsRlG8Wy1rYtYGuD
0gGcnd8R9Umpda3yO7vFvlPcLoeWPweoF9KvXB6m9wAXw/TvKjxlz40t8aCO
waeBY/CpeG97sx+PQzehlDaaNuPQEySBAuLPdc8YeQDnrXc7DofUOaVPEnJN
KIGPSAfSBoWB05qc2X2ep0GbWr0oy/5FySrsFy7S4dx/y4fOxhAU5UxMR0YM
uaEiWD6qFB1f/AIthNw8viC0e5HzranNSYFpuu9NLrUv+NCg9bZgv1qGJWXR
apm33JQosDm/z/MViuHodlPzbtxthoUlnaapEq3nhwYooGHkUEhdsgPE+1x2
pbQiMvFkt/5STLz1l4sRIgsSxuUseaSM+W3lrvFuAaffHXz/PUk2HNcR9h12
u0JgBEOJ7pr4LUBXrxrY53lGuVjE9ig3mLR7ZulimaUxfbMnNNQlonVydyfS
7KRzOLdqzBeXY/k6SC0K9oRi+xfow7rVVI/ZkLWhcSQ+aIGikufHl/3thMhd
dW1qnRGORlyvjcVWyvXVbx0qGm4Opa6AIECxbw94ny64XAkaCiUldMNWaAHD
sG6cgT6iGitmHMbcgHeL02hgKiJSx53Vu2zQaTnGTnhNBSSXbCY5a6WzlvJg
qarNJRHx4b897XEDcSU9cRYoCppca3zqekn6LCVylenWtSv28l/C5aRsGY6y
fwdHfUgAaFBegvkSjV8pwqbjtJPqVhGmGBez6p2P6QvdDdHX1F+374vYnyYl
Su/kDSb6JqH8ZfFOM9KcgsG9PnFB4fGgsaWO6RQo1GWpnSc80CT9QWsUcM6v
jM/cG/goKMDilZEoOTE28ppiZcvfSJm9paVpKUfNsFmFKsYryoKXxcmhAkpX
rSJHWdnnVpSQUK0hoy4g61sCAWgWQmIJ0N/PZ/KQKZtMYLfajb4n0YE877IM
tyzOwrKlUuOwdhJ00WbHKVS+jbD3RGF9eGnztyB7ARcrEuAnyXfVDVZWHLlZ
tf03nc3yKpdKv1yvq7oMSi+4PsFiMpUKHAqdcwfRig0fNd4nuExL6dKuonEE
IVPJGyxBKdKhTOQhSRy+SZy6RJNFEI6OrJZrewtDxV4PNjQNiP7i1u8M1dwi
s555R1wV65V0XXObfVI1vj00hbP1lEyWQ0mlLF1kxcGRiY7T7t6kqs2AYMRD
xh+6oicmP4dqSKG7v2h7qMoHxJxvaJKuaT1c49Nht7EbbXtxT5K3XQqIaroR
leMSXHsTlrYuL6kut0Lq6pl2ybInciOI43K07mJBsoEEIuOUJa8thcqayXhA
hpYJAUik0bMqd4yENXU3VY2VwsC7IEwkSkMLsMAtpd0otZM5X56MdKExW5jz
gurVSN8/symo8WDogmufTsvrop5JW7pFmjLqSWBduVcRTNWXngX60rOPSaen
5VvX03L73Z/e7rDnopn3pChZRtlX396cwJ7CmVSTzKUKOTGQi7aYbEAfrwsw
/Q7EEBxjS7dry/abDYWb7U5CHJa/cWHbXLjMBEZR2KDzK/p4km6Fa63i2f1Y
hJlRoLM4Yy+m7MUZq3aQAGFRhJVGqpPcee5zt3kXlCP04b5Tc5hlSQJ1DELR
uKGEaGNPGhy9JeEA31ktsqm0ebiDRUkmhVhFNNR9cIrgNu67eLix2mzmMOrR
jCGjmd7oegeoxCKx9sMzD8iBwmvCG9EI8AJfzg1//UXOUuhMbBgbap7q0dwL
jubex1/LILv75Ut0s3GJt0ehL0Yi0Botd+RD1S2AUeV817qrPz3Qyu0UVm4K
GMcy3yO215h7SbmKM6qwAFm64FwrVpE9QuunEkdZN9pbkxtqVo5/DY1hsxk7
CTskXqPrRCudb0hMDEL6woLIKh9532uPgOoYmQA0BLB3lcPNNOPIBVpyY7qS
DyQoXjt+wgVdfYfugblc/i/HJZIJjOrkRhKW8h1Xc1dqHEppdu7BuYlRaEty
vxk+Sil30ipLlIZcBgBPWapMOFAuG8amvBjLtpbZKrlvhF6TS3RryCYf6N2O
NyiqlMaMfh/yZDGRoJB/m+rsQbUdrzuHpWqc/LORgWZlgAkWmAzxDxoeXN38
c6kWMhvgpee2mohTiEnjsTN7rA2PR4aZJrpXI8tXfscuP4B+Tjlr9N5kFLwf
4htD0bkS5XXu+0zrKGP2mOpKg1YljARQBtqKXebAiUBfQE22Ual5YoDjmUh/
COmZyvrgJ22OygBmUGwmZ9So8vrKhaBsfDkkb6e94U17HR2BDSunFqImIQ+j
6Ry0/M6Dj44x+cRjNe7w3CFiIE3CMjadFOH99pVfSrABPfXQbdbPEAIEDfsL
AmQlQzcXtkUcmKdoOtK+VbtcZqPl4VYrNc6HzPcd7EzTFbq0jMRSBAzQClaN
b6Qha6Cb+X3B7XQ07aVvhljM9u6e8LRs+atWbrwt181JdMzFwl2Gxibopepo
+iWvsKuXUlpeqIuQcTF+kQLke7F255iBhtzztngY+ORuW7PiORWVO6dmaByy
eJ7m7XSy48NoI8PoAyAcMKvKRaYR9NTOSDtIMojX2hpgeEbSh92akT6k9yH7
p6cY10umMBeXgmT3aWtxZMqfk5400iCTNf/F8nTvnS0gONoX24uKasKTwjlF
GKUdRt3xGzFGsLypbFyW7DsdjGyaklimKSyr7luXyDgcD8PVtsWCmsOsvDGH
OO0rkWTREjcFtiZ96t5xaLmk7P/kW3mKPt2LXhtK028s7/JvdgPATOhEwoPZ
Ob3i6ewf0GFeCw7FngPfVn6YKnpHthJV4LL9SGyKwjxADcCUtx2HF+mrVFY9
y3Br9xZcVb3uyVQ1Ca3vTSbHovGVQpyYbwTjDlRWJBl6p99xw5KSF5TwkEvz
KKMXhIdyqF2doNyIU/0bZT9nvnpkAfcQ3IcZ9OGqu/5bb45w49+P1wyttcc6
QY5TP7ztgBcCMzyqo6770ZFYekS15CAXX0ja675BqtzmOURGI95sHXjdk2AW
PkzKD1xQ0J+hx2LzPLDYPKfgk75+JPr+i+D9F/z+g7txuOG+DIb7Uoab2d6m
m2JGvEq3IWgm5NkuZKbO/4MqCWiLcOcZ7k1eEuuHe+aSg+WuMUGWnaCavK+z
hknGCQo8Tpd0n/hsIc0Q63ZRo8BtBLmou5Nqmsq3EiK2WtcrSnDVpCmNULKd
ZYq4tVsuYcykAtBpmBaakNafFfPrGPyePnvqY5jc/UlQRH2nTNhvN2a6SbfP
jpodLSCF34ha7oKP3eDe6E66vLPX79jYTzbZUXAzq/xD6v4OpbGiEa/jNdCy
A7H24QzG3Do8UdN6kDRbhdGNk6iXitd8yDvHEq9GrJgi2OKCl8bDWVMsbpMe
eJo+14HtQCssOUatq79GGc0fEOohREm3VPZv9VtOMJgyq5uhyYo26VHGvMJK
nZHRHNC5Jx9HIk7CEVl2lIjabDCrsBh/KyVdAqTNNPGjFz3KyohvGBzAdlrx
GkEP3Et4es5Fw81KoxSRizj3CyW/SepKUie23cPFbdTUwXYS8Jk8MMQk/Y7T
LHwnp6RjdeZa/x0XUk87CSUo14FCFSPunYuBthRa1xXmKZaCIsOUMoakAB6S
wKEa0nKKuGUFW5W5kbB6XYgA7jNyYblSEnTDk9HFNGGbVRrFqKH+GfSUSrZk
JRXupJvkVnCCII+SomVTvtrxYa/XC3Euqt0dQacYxvamMh/7bgIoUYlUrm80
jvxY3uri2XXpFtmDGA4vIIFTeHWFIdOyAt/RO1RoovBIKaLi0qjRGZHIJxw6
Q4G9UuA7B4ZZtGTMmfruYdLpKsrErOoeT4NJ8+Z8XLq/h5eckE8o0n+c5DVE
DJLZkAMT0Jgpcohjlr2rUhweCRs37kzSSvK11mVPnG/ZmGdiNmgyuu9YmE17
N+XiBxU7r8fJ4oaPg7tNZ2tyuLSB+iH2jz42h5hDAQf+JLZJyDaDiDjH+j0m
zWhx9CP9KGjow3ndMrYm8HXNJf9TloXn3C/Nk9F1rOtjjEuC93ZdV1xuAa3m
NpszTqUm+grEdC/fZuurjya4RoI2yJtpY6ilIiUyfGRPaE/8nrvcYmMFjFTC
O8b5yNiXhiFdjt3bcKVJ8s267e3dhnXNlkBSNByH+yCTA3abk3rVYvyIKFgZ
pSUc+Pqq/l7RvcxaoICpeKZhxEPf+lLqEkzbseixv5ob+svdfm7uqvwHLThd
uItL04hohqxNHOCo9BJI3836Yuy82xc5MExASpT6wCEo3JfEV3/iNCsmy6L2
15qNwDm1axCRB3sCuhBDdiGgRVMm6Ftb4xbH37qlTKicEtKPWTXrMBQCV5XY
pDrDmC0zrnfsOex4MoPxG5ejKZhirFMTS8rnl/bbWrbCqMYdChHqQH+QqI9y
H5o3o1eZDfmiV+69sEue4R0db4XDxrDTgq4IRzwu6d+EsG5gVA7XbCTHsyEB
ZByERYlLZ0OU6i0cUTEANfuGdAwI53gzthf9eurfk2eONw+ulUGas5hoMpiV
cDYsU4IM8Fmdz3Nt+OnUo1BidyZ7rlq1ydR7B7BFo+dd0nwdkTtb8pAvTxun
966nm7+N+ouF1s2P3F5g+HVmug81eibhTYfBxKZ2y7SCq+jvvQ4nOciKM17T
wy18m0yfBj3qrRlcnuSkaDIe4cPlkYV2lHnew81NZINBcFznTBQRU/7D2wm9
tfreyxrde12kn8jaTFmlCHIrGTi7MeuLHV+N8A+4kQIPmF4YllS96BRLbQ+3
gEa8muorXpcuNcHof1QqUhvVbcTPLu18mZ7+6bVGX6Gcn7D8jenfPxy/PvMb
480oPnPzXhOsSyFHHA8EpyTjf1k+8tmLyfPnTxkxKD/+x5rrx4b9wH0dkNRi
OhGmDivR6GnZfBpHr19hIFGAoaS5uC2JIw+Hjt8noqOz9ISW/kyWnqIKvFwv
77fwNFg41axdcHJsVm5YchouuRN8fD8CnBXYprZxx0fkjOVqLE8+fhpdPh0l
1DtGeGOIqbNvXjEaeQ4X6GBclNbAJZBI2TSeVcwACamXHO+G/cliJFAGRxX1
5QnH4xswMaqo54E+glqoLx5fYvJq3dFEVmTKjRi3K/b4vVrklk9nwaWmfu3E
ScrGUWNkXfdis5EsijZxXh9sVg1CxjXzppvyqs5mqL60mJeqBTzFP+pDyP2U
3mkINHpRyZXrFokQDZGmIzLgmlNJ4pYE9sUiaebs4jO512yoCA6qZ9Sa/oI3
hwx8HvZviOHgO58OlsG8M07INVOU2h0pCNMAxLCznvLVloWkHbAYcQPc/orY
7M4DeE9ggSJRp+Ot7WTQuZVmdZ2BQox1F1HZBUbfzA0Jmc6EqcsmuCM9D/Yu
iYNEPOYHJxiMU4nGl6NlIjqHh4zBeBhHzzaNHIDpCLgPF606QLBBUIdN0xRy
M8UyQWLLVvYMPbC4/7e9J+1t40j2e/+KfoqQJR2NJJ6WuJEdxceusbZj2AL2
g+F9osiRTJjX45BStLb8219dfU4PSTnG7nvACkjM6av6qK6uqq6u+kbavejf
SGh2y0I80u9Pp8PbD/oBepgZTT+xmtQ7h8TXFKlw2d3ayLrPYQsFYfTaunaR
D/rA7CmmDNM8HxYmDhr0rPhkinbq+/odizI3ufEMUdqFfN+nxG6PHWSfv2cr
58yNxf7KEMSHc3niRXj/+MH3VKEkJ5XvBcg2JToTbUZmqPM3no2NpvBUNCa6
lKoIgHhuOevNRTh4eEmVw9InQ0qerp4ql119W1ccVsARzGePl4wns5h/Ejrl
ZklIVWDHQQzAcrumyVLPb47Gsx8cCKRfit9VXtzyWyfzMCOAZ2lQ3HOCrdKx
fLZrMTTZNPVQmqerFOmmUIFFzjggL9Joptg6T9mBUMwdsWOr6HbhJhmd0N6M
YLeW++815EcGxpr2UZFBg/TCGjgs8sU28sHpa5v2XQb461jm0YRFIdfjNxQQ
PKiwHTV8YR3lvc2vRuwC1XGz1o1etjC5d55tVbnyWpYiMrmim3SjrvA0E97x
Uxvt5/tk6xn3IxsNg/1cRxKLXg3RcxE2aHnBdZ10XnQ4rqul5p6bxk2nzIsp
tNkfEjNoPQuETQh7650ndBWAB0O/sK5x7MM4X464k7eZuXdRYq1X2Bej9aKI
U+AFhUiu3t2+ej1bGr/xVrtgzVPIuGU8DpQDPlvOBxnpMoYsT5iJ7iVnayCq
umkhcT5i02L2F/0n1C7L6nBca1g3ffbmFRpwj9kzaZ++d/5nBf3fkVfDeOlC
/X3z5G3QURLrx6kTdRC9M/P6g42Yqxl7s1atT8aLtpKvG2+Rl8S+k/KMfHWT
z1K+6hV7G/OOM36nyYSdHOYUxqEoIBcFyTDKuFIlcQwKtfaib2zFuJ+PIXr6
GsuQeTQo2QjNkBf2uXqKpkYS9hwGlmbIajycrTo980t1TYAnXPNROKA1yv+J
6Ylz/lfdk8hY5GK0NIghsaNhgy5MbIGKmwm55EErteDCx7h0sMpGXFG8avHZ
kLLhDvbdNoP4YNtBh57hDcOalmKDJQzgbQnC0r/YZC0AN1o62EbsyJ6uAvd0
MYt1zqKjlzAfRteHc6hfBPeLFEVtVUTXKeaJjFEUruiIlagY0f2ke91BzpeV
52psWb7uk1GaCAHzGd9+Grs6DnGUL7OnyAfv0Y2771CUvCJDJUC86Enz2+dP
Hh63m0BhyViCc+fikEvFnY4fjIzY/4S5mUXLElmjF8/OnmNxdFyFEQjwEk25
oAgjOkyuFvKwhdh3kjegP8AA6zcYvYN0sd4aj0d21LCKZIAFdBN3U9hPTRvS
nniYiQyXeyUk9yvYx331nMN/4I7Zo9P08hLJs4vEMqcb9BmjGNf0TSic7ROC
ZX9a6B7Q+n0DaDQbyJFTuG3oBwzxTBxHUxfNJPYlrgFtFbR1YQcYeEvEU3zB
gQv6y/54dsWSlntyX8Kxhai+L3Nyv03+BPpDY+HZH16PRL3vJpqZ1NRtOt25
4/OZ8OS2GLSndwg52LUL8s+wIa5H+Q3Bg0GhCIrVrhazFToqmykxRRqy1yL0
dCZ+GPBdr9gXim7DGplc5FPYKnTyLVbTKd8FDvM9ZdzS3KI31Wty4+IsdC6J
LtMsoRQK0qHFFuzaJbA1FK7IwlKTvlhv2bmAqTLbtWAKO6FphcV8wb7S5865
qMVNGbWyo3aWtD4asW0Q9h0P0uWOtaPuI2VS6oH+bXHVnxo3fMyRc/xnc7aG
i9azlZH6o9J0T78cTVe/K62fIwsmfjQfRKQNmJqb/AKO/au8B0XfJ0Tva2n4
gMXst89On756tj8ZfqhtLnwxnl0coGWSq1bHTvwKTNulvoLFXVgqNedx8PlH
ten/8nzepEzQzTec6J/Q9yv0WPS0sE2uZsCEXenTNy9ojgAjs3F+nY/Rd+WI
XEyK40ET18vdMWiPA38FpS+RFa6RHUQ9CAX2ajZcwRq88Nh/MmWok8AK7eBK
IbkEuLe07b3BDMYj23VnwIr9ZcPnWr8gt5SCHdAajcW++7Vzi1HTbEt18S0k
s7AqJOoFdhuObmzGeQ3CiTEbk4RIGqOE75GRYgiffW2NN8hKZ7TkPY5DpIey
5LpFjDj3hFjSz+GomI/7/Hs1R+/A9JPI3Ax3z7s8r0A0mqFvxa+oMr2/Bjgm
3JM8GNpP7gBGE7SwwB0OSNCD0c4/9qn0E1Td4vZgvfDH2dgLosCegwzB2PP8
9bx5d5qZUx36YW1LCuMF33/1TQb5D3ALk/kJ8SjL0cVoTH0xydlh00okeIRi
lZcgmEwLEm1O5+h9Rzf3D7fbyG7uXr548uz1u2f3m3CpVC/PqNBc3Fk9PT3o
8yxS4CmfCAb0xoDZ/+dqPJoPgC4jdNejdD4Bf4mRv8hrVT7ckobh/gBehQay
zaj98nXkD9+ZQBuI128WIPYObsmJtj3UjIoC/vt+TkoaxJuevj5Nwxr1p30M
Hcr2Q/o18usY4+CvxAboN/0FyEMoYn+3DjUdIGTnKR6a35eL2SJDyojO9rHb
I7bQyulpIHuyn5GxI0mUTg2H7YiCZse2vCPy9+IW9tB/YXv7DgAwJHPyWgOn
/q13D2TCM0Q2HbYXPQzTin8AQX/RT4HXgvM9n2j39wWWm4OkFfoP/H3xJJQv
AjTLMkjPzF9QOpX6DUBdMwZo5/AQY87CZJyXSp9q6w+RTrwMHR57Sqw97fkt
JW/IPPtRM58///ju2cvnkO6ANhAoqcrXAMUWoUwZDCRGUErNpIA2N4+UHQ0w
mDJczq0CHQPtHLayzmGbwvxOb8tAn/WB+C0+iRKLDS3v/ZceaQeBkj77PCpd
WlPkH3DdtlrMtUC72wOd3B9mBdCH/47pPdp+pBezyR8eaefwOOu0j/8NI+0c
2pHq/QLt5Fqtcy4t48RQO0QTwhGig1TK+4Z92qF9ugJG9TwubXbp9TQCN6LE
9cDWA21tAjoZTf8A4DRQIg6oO6wCOv80+j1DZU63ba8Egx7Y28IUMqWBdu4D
FJ1V3w9qGmj33kBR+7w15DRQIg7vYU0PJLAWIvKHcwcU2JzJxXwBJapwGO0A
Mroj2XakRByQ1frvv+W3B9r8epfT0L84AuH5GN5+SSuAEnHgO5jzsLQBR+u4
Zrj3R6SuIw7nOgmU8hKT6mdXb5000MZWI2XkSQ33nojU6TazzvG/lPYq4pzx
kQHGzuOniTsJODtenOTChRkl3trpf4cU3tQqDrxmSTJzxtKOaTec9b5j6Glc
fB/pGUuIjAHH2fcTa9oeUH7QnAY6oXDg3wloxwOKgYergGIw+u8FtO2AvsL4
83QhFMCjsPQSWaRKZhKfW16wMGqLKhmV5I7X/o4qyU0+GNQ9fOGrsi/6LAdR
HgWyWFrxueGfUOyCEuLzEEXQg1S+xfA9439sGXPVrunVdFPjcYnq5k1JAvC5
p39YXoy9qcXojlfTk51xfrnc0cvRcpyf7ESLsiMvdsrjkvc20VAUwCG9zWB5
p+ieD9/F9lQPiIgbyblS71YXyyC7BOEc/Q3LXffcyuxYlpQpv83lDVaYtyMX
bzuiuHRxAqdiqaKNU3v9G/rBDJ5iDGf42DHDy5tJf6w03hHwBXBdKeucKFDb
E1S2k4NReZFHoyK8NqgHueN4lLJq6OMeOj+bo8w+Gqcr04jfsHdS9Iri35Nx
47a1UzfNcotgVe9ug2Ad35mI9YKxZ12kFqHJaxbaA0vTaDKHdxpaQvege1AX
TvJmweGZZCH6t6gHFd+Gfz07e1N7V0ed6yn/QHB0EWNaQ4sBchC06LPLfM/c
pGKKXvWvRgM9hcMvX9SKOiHW02MNQvfzrn7aRGdk8tnWfjoAGY29p29SV9oc
oMeR4iM/lSasxcsXv8wbmBGYxh81OpsbI21akIX7jE3SBnzWGC1soP3r6ben
Z+/03/+CT5fpkhmv/HQNyeYvSED3Z4urOmMJXZetCrql6MFMv3r122vcJYjY
8uCFAilIAfSCAwhBBgQHT9jPP13Iob+VBZbAOzqlyI13wbtJaCR17jGUeNW/
vch9GhCSn4gKWIrzR+lAAOU/lOD/JSVYTSUE7P8VEtBJ7f/Ofzb/5s1PS8Sx
VUCkeE4DKAyvKHeqSS7NmoqRJcfNzGPXwtZkxYy+W+2kIO7Q4z7Dxu35jsp2
OHYn+/B/++zd2eVqrEIPRYCDz+qe+n/HDMBTpM/QGsiWuLsjvbjpBdEx+wn/
Eg34ooFXj/jELMvUZsYQld5nvz5tlESvzUyfVG1GVT/3Kpm6eCqBQKA2HA0A
8Drl135hPII8efr0pTWQQuCD4XAMxb9+/arxp6JUfbJBR67UbkWOPjgpqbq3
KeyrqJWK9IzQn89ANn6swe/MhM7t6cO6Pnmk/TSCJgWLDPdbTzeo1Hv9U6mk
/rBHhREK2dRRq00qb76lxQd6dzfqVGaJirrz5gNzquYj1E3fp87k/lWkm4qX
NPOGfYK3tfbz510uAMQjD+9Bdnfjqm7Mj2jImBuaAFNHYN9V565WkmZ6Rvdj
swV3TRb64yK/NAsMZy2kPcZVtaoPs6ysMsEFsNhm2xgNTQvJvlg88VGkcn4/
SBdsLCbE5cJgC1YtD8bUEeakh1FXsDd+dE3XGSyJLThMbKcwEYvlEsCwh64H
A/A+clu0lYkJEVaS82U/mDTahwszcR5lW3jwWdmyAnrqOtsod/bO4kiMW4gH
P9YmYoeSkb3FbIGNmI45mFHXMuImzcLKeDEtMZ1SAxDI9I9xyU2LAxPODko6
GUk6maGI79kUh5keYAYByTXdzrpUIXkf6TJa5svjlHr+R6qs8FBB4yViqrWd
fi6oPsA8J3CKNttipCszpemZ3Y/VnbOL0B9fmbmEbUhJAzl9iOUUHN/ZcMzt
UM1PuEUZy2kg3JrBy54+slkyGSHS0kqSxnncv8jHjLBFzm+WcBX9QwVG8EN3
v3FUi5cWUC6eYy7bOWzUbBKUUuvPRFPpsFZ13DlI5Y51Dps1P7VeAmeODVO+
U5MbLJmZsFS5/iSs3k1Wn1TVdicx1T5K1pZCUHsdogsurV86n5BIBdzRIKll
HGHLHv+jCZNyzKJXGgY/KefOMRNuAkxraE23IsMnaQtoQILPaFTxGSEt9o8C
hBXRYgI4mn7KqReF2SlY3iXb0tAHdkpmNoh8JvgRGVdIwPj5N84+udvJ8G2F
JaS+0zMzduxH2nmk7b0dva3qDs4oL64Ki0uIaSq6ucqvsyDTr4mjTAwkGilJ
uHzpFLTAJDvy3obWU3TOJx8kAlQkpuTdPsXYRARzU0HH6mwqSbsJUJVKMcqj
d6d8Ml/e/mzQ1bTh2JpEo1L2mtbS4i5TV8yYgIQ7NgvgpY/7t7h1GClXTNtp
0YHb+d0gIaXfPcI9FWF4mafEAmmeMqwa85SpeswvIJJbVuGwvr6wz1OsLWi8
CuLom8R/uNAkngWjCVOSwrE1YVEg98/iqm2CmLooet7bIvs8Tpq7YQ/3Q/2x
j/6fTbYgbWXQFEbb6mzu5Z+1jXlmHvXwO7LYaa3xdUvGvpfXvQq3XNSkIRm2
RXq3P8cXCiC9D1DyXOTXl+ahJGHJsLrJD8x6ydUydhzGbVK0lyvETOuGwWN9
IBwJ4m3TMg6S0AqLmeQ2kaGfdM1l1Yn0YGbHY0w2nVd+HgE44M3lSkE6vvJQ
SWq3jlbFRztseLvgpYwTfrR1IFwTWbc0urix0gTPkaCUUcY9q1mzim+pZy0j
tqgcmBlsUT66M98GQsKyYNtqqWt6y1Clplm4qk6b0LCeKmqn1pTtbChrp9NU
6IYVov6ZUg9rLFLXVWqqTSnmos0udeYgrlZi+kzl4xKIqkmTGt2GraGGM6TX
mRHDB+lDf1eKheciHfzlHN5Mkj7JSVX5cTS/Z8PR3i2TZP8sSTXtIgr2qME1
hwpRKN+6vreefUOeJjFulA+RZFbkETdclVdicNaWcyJmRR+r6F/ktRtH4nEZ
ZfbC8hJZMRt8ypePLNPraQq21B4s8ititnzNAaTOUJPj+NcSU8GMa9wRUoZU
wLOTrWIkquQCrYLGMIyWW+NwTKbXuyYhzSXSGy4zml36igsit3c5RnVqKImN
0PBjejm6guWxHOnFbDZ2+QXek9muhHm47hjQ0AAPc4f5xerKMKNxRXx8k3lK
lXailHt07xXspJpbTVFOzBDRehiZo9zUZLIiP1o9jLRRyl4OLqyiIsig2SGp
iB4z+x059oujkGMnOFIqp1Ykvf02lBT5okJK+3ZJqQK9/D7mto9bFF5tU7ii
S9sAMPMwx7gni0h9M5q3XTIyg/Ou+1Zh7on27YfbKigb5SL/FYn4hip5yZ5c
x58pZTWs2NjubfkOt6tSk/4gNbp8NWofBeODlK43JhWXCEfRVVH5KP8I0EHI
NYh3YznoNgjQW1bw8GJTDTrRVHRueHRrAlhjJ3pdYzTlGCPCzHelFITNBu7e
/fOhev/chd30/B2nyP41P5EzXZdPXyl/PTU9hZ8JYi/OTEzn5JOnlUsQGTJk
19IkyqwpNuqEA9D4uDKUd9d5vfLPYqnw2K9CbrEMIQ5TTT+0rpuVEjw2ZDmF
14bczqUkU2id2N9mlkAwBmaMb6QN4Ra9H+YjuTIE2pEuyVsROyC3UqswkxmL
RiNu0DkDgtzWFmhhDvKS1xio3zaK9zhPzpE0PvmHCpzmDrdeIXtUe1XX+6hz
qH2GfqE7CQCB/9wBu212qtnrKtrBolVvNGomBSqlEaJMhRMIYOGoivjs9+EU
13HQyWb2KtqR7aSFuqDj2xO7yZQ8ofCT3IsOI/Q0cX9aicdVYd+rNUmoq2jr
upt4LH4QvdqAqS4fFe4GNp3n3b+WLsTDe/b159FjKWcJk1OTG+JEUO6kl9FJ
xco3ciphZBhU6VWWJL5vwEpn7rkPRZZG7xt/+IdW4OYzSiTJQ763wBacPj1J
b2P8Myw3kShi/CsQ1OzgSNIx2nJb/97K9mZQfYPCvaQVN3TdNlCpN4+vugde
E+2giU3CuGmpJFSbm+u4pUrpu+oeoRu0UnmRwFW30OsWciR4Td5DG7wJlMOE
w62ApG9EPMyNKLs9sCLWrNVSMTduSM9hzSbhtd0q3QBwsDEnxg20HtZsCtT3
uBJLSyLGxTsaTeli8DGfOJE1TEb6IZ7bmGbTDXRNVKzQWB2pNrFpfHJ8MOUL
009CMG4CMjd6sTO05ECE8sRxK4P7KXEUlxqLOK27st5WWjMa3EdJFe6elJDZ
sXxAvtij6QQUma8KI1dy2pw8HgZJjuD2x35OMbtc3pCvMHwlIX2QKibLA+1y
w9VKLCAXY6vUdLt4n49ZGNoDTWdmi/znIJOfqj3as3dMcWkhha7YY7pTjYth
WlBIDC6wgLn02LO3q7Q8doNh+tV4dgFbFCgn+T3Kiz1czkQj+gDOrJppHrth
CrFjwvqaSvYTapnftpoCxgztWTSZdihz4SAIQ6JPNP14erJP7P5iCWwv0K3B
NmWyYnV5Ofo9VZQ8h6xpyhhWJ7KAsEFiKsffcThIO8nIosLc23sXf0Gx+COo
5qdBQ48Usq5e2hkyumdQ8L1uPoAfQAZKaylwAHPQx46HqQ900J89bNw9oBSq
RAlAmohtgi7smTQRlfjRoKe/NJU/u4vT8tZjFaQw5LjumIwax3gidjFRkNop
0bGU66nBbNOBzZhNrQrfbm5eXaLdoqUcOCqg52HakJ6ekbcwlzgm3y5+iruN
dWk+argtbGV6wNnRJZpie1OH9oPRtCVp0OxmyvwGES77RdPM6LYL/3rV5Uzx
20DLeywI/5op5l5uMcEOPk4oeZOPEufoemWZR6n9C5DY4NQPU/2Jwn5TSSAf
BU86J+DTDUAd1PtLinhTs9+kRhuzNykatM0Rh0xSIF94GQu/xbnc9ppvcWzq
Eoo8zzAslktYzXPkhv0y3lFlE7Nmp7u/3223W103VFwByJvJYxGbYPypegn4
VpfM7W2aP2mJU8ehGfq8ojnJxBdigAUDIIlTEVyiHDSLh47A8idPUN9HYZCR
M1MYJU7J8Jv4w2EfemmdxgbnvF8M/XYHbbBXMkAKUpZUcRuPMegHOkDENhxj
IlkcmjqZmF32J6PxbUzK+ClCxAOsJhP0Qh9uqGkxLwYU5SuZkZhF3HTR4m1z
cC8/Gs1fkZEGHQ8BXBJyKzpblBgNm+GxEem/x/yqJKpPZpjrq9ZR98EhNjMv
ejafToku26mn4NoRPEkOmB7TelzWQnWFcVoTnfEnF7rrBiWbBROKW0CcSTaC
/8lSI2aJDRGnUL3klqA4BcnDi2FtXttoodZ1LJhThPo5Nc36znTBa3oLHPMX
QHph0srn/Zy3mcfYI0DbxmZw4RoawSIiScGqbtFoNGuWURK64ogOB/YIF/My
Nc7FbOaRjrrjof1uJxDPzogpvrnzEQu9tmnY+Pgw3K1AhneDhkqjy4ESHUwN
mZgsC3ZzF31golBF+bZuFHSQdqgiAU03lBGFdFM5mUG3FEs+uq0iAUt3lBVI
dJeDr5zoh8pIjvpIicCoj5XwSroBkAORUTcaKpBDdaOpyiKibrRULBrqRlsx
c60bHeXRWNQvMLXUjYfKkjLdOFKOWOnGsWIaopuHKqQdutmgGNbwo6nckuhm
S1n80822YrzTzY6KNr1udlW4LXUTekJz3zxSokhoHquAVdethjIsum41FXPm
pG7xeHDdaivGK92CYTs80q2ucsyrbj1UzLbq1pHyGFPdOlbEjOr2ofKZUN1u
KGI+dbupEuyJbrdUyJbodlul2BHdxo55bIhud5VlP3T7oVrDduj2kSqxG7p9
rDw2Q3cOVcRN6E5DWS5Cd5oq5h50p6Uc16A7gNCGW9Cdjgq4BN3pqpg70J2H
SsViLe2cClmXtpIv3NJ2EmmWdxSJr4SwraM270+Rfk4aKhaITqA1KwmdQEtO
BDqBnSCyz0lHOaHnpAvSL/P2Jzg9xPtDOywaQBvK8POQbTl5KCA8PJQoce8A
K+bbT3ADIMcO8IRXP3moDJd+cqQMf35yrBxnfgLEQBkm+6Rhyg8BvMdYYye/
fv2qyD28dRDNkVzokrTQN+SVHIN+SHhGivUT+vvgF6OX1uWzdXds3U6PvLDG
wVtp9Ok8HS7yG/100YfOK/UMn+D20LIWUveHlPoLkt0xujdR6inUmvb1X8b9
f+a29JASrzDtl6vZ7Gqcc+Ef9OkAfaCP8yE9XC7U595qyjeK/Dz+8+cn/cVY
/x2XYZDf3d1xyCNyHk3mvTxZS4kMS7Hg2Tk0dF29/wdhff6hp2tnHAGJH6X6
QYy4yHDfusmElMns2jqynxEgYjH55sT6w+2jm/NileNj9/f/WM6GMwT0GtrO
hxaUxArzmsfIyBj1TGrjCclTv1wAcuWLuvMg07PPaG0zZ1RoqPvLHkHlTzgI
obCf979wLVxf8AUCAA==

-->

</rfc>
