<?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.7.1 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-lamps-csr-attestation-14" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Remote Attestation with CSRs">Use of Remote Attestation with Certification Signing Requests</title>

    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Siemens</organization>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="M." surname="Wiseman" fullname="Monty Wiseman">
      <organization>Beyond Identity</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>monty.wiseman@beyondidentity.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>ned.smith@intel.com</email>
      </address>
    </author>

    <date year="2024" month="October" day="21"/>

    
    
    <keyword>PKI</keyword> <keyword>PKCS#10</keyword> <keyword>CRMF</keyword> <keyword>Attestation</keyword> <keyword>Evidence</keyword> <keyword>Certificate Signing Requests</keyword>

    <abstract>


<?line 113?>

<t>A PKI end entity requesting a certificate from a Certification Authority (CA) may wish to offer trustworthy claims about the platform generating the certification request and the environment associated with the corresponding private key, such as whether the private key resides on a hardware security module.</t>

<t>This specification defines an attribute and an extension that allow for conveyance of Evidence in Certificate Signing Requests (CSRs) such as PKCS#10 or Certificate Request Message Format (CRMF) payloads which provides an elegant and automatable mechanism for transporting Evidence to a Certification Authority.</t>

<t>Including Evidence along with a CSR can help to improve the assessment of the security posture for the private key, and can help the Certification Authority to assess whether it satisfies the requested certificate profile. These Evidence Claims can include information about the hardware component's manufacturer, the version of installed or running firmware, the version of software installed or running in layers above the firmware, or the presence of hardware components providing specific protection capabilities or shielded locations (e.g., to protect keys).</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://lamps-wg.github.io/csr-attestation/draft-ietf-lamps-csr-attestation.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-csr-attestation/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/csr-attestation"/>.</t>
    </note>


  </front>

  <middle>


<?line 122?>

<section anchor="introduction"><name>Introduction</name>

<t>When requesting a certificate from a Certification Authority (CA), a PKI end entity may wish to include Evidence of the security properties of its environments in which the private keys are stored in that request.
This Evidence can be appraised by authoritative entities, such as a Registration Authority (RA) or a CA, or associated trusted Verifiers as part of validating an incoming certificate request against given certificate policies. Regulatory bodies are beginning to require proof of hardware residency for certain classifications of cryptographic keys. At the time of writing, the most notable example is the Code-Signing Baseline Requirements <xref target="CSBR"/> document maintained by the CA/Browser Forum, which requires compliant CAs to "ensure that a Subscriber’s Private Key is generated, stored,
and used in a secure environment that has controls to prevent theft or misuse".</t>

<t>This specification defines an attribute and an extension that allow for conveyance of Evidence in Certificate Signing Requests (CSRs) such as PKCS#10 <xref target="RFC2986"/> or Certificate Request Message Format (CRMF) <xref target="RFC4211"/> payloads which provides an elegant and automatable mechanism for transporting Evidence to a Certification Authority and meeting requirements such as those in the CA/B Forum's <xref target="CSBR"/>.</t>

<t>As outlined in the RATS Architecture <xref target="RFC9334"/>, an Attester (typically
a device) produces a signed collection of Claims that constitute Evidence about its running environment(s).
While the term "attestation" is not defined in RFC 9334, it was later defined in <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>, it refers to the activity of producing and appraising remote attestation Evidence.
A Relying Party may consult an Attestation Result produced by a Verifier that has appraised the Evidence in making policy decisions about the trustworthiness of the
Target Environment being assessed via appraisal of Evidence. <xref target="architecture"/> provides the basis to illustrate in this document how the various roles
in the RATS architecture map to a certificate requester and a CA/RA.</t>

<t>At the time of writing, several standard and several proprietary remote attestation technologies
are in use.
This specification thereby is intended to be as technology-agnostic as it is feasible with respect to implemented remote attestation technologies. Hence, this specification focuses on (1) the conveyance of Evidence via CSRs while making minimal assumptions about content or format of the transported Evidence and (2) the conveyance of sets of certificates used for validation of Evidence.
The certificates typically contain one or more certification paths
rooted in a device manufacturer trust anchor and the end-entity certificate being
on the device in question. The end-entity certificate is associated with key material that takes on the role of an Attestation Key and is used as Evidence originating from the Attester.</t>

<t>This document specifies a CSR Attribute (or Extension for Certificate Request Message Format (CRMF) CSRs) for carrying Evidence. Evidence can be placed into an EvidenceStatement along with an OID to identify its type and optionally a hint to the Relying Party about which Verifier (software package) will be capable of parsing it. A set of EvidenceStatement structures may be grouped together along with the set of CertificateChoice structures needed to validate them to form a EvidenceBundle. The id-aa-evidence CSR Attribute (or CRMF Extension) contains one EvidenceBundle.</t>

<t>A CSR may contain one or more Evidence payloads, for example Evidence
asserting the storage properties of a private key, Evidence
asserting firmware version and other general properties
of the device, or Evidence signed using different cryptographic
algorithms.</t>

<t>With these attributes, additional
information is available to an RA or CA, which may be used
to decide whether to issue a certificate and what certificate profile
to apply. The scope of this document is, however,
limited to the conveyance of Evidence within CSR. The exact format of the
Evidence being conveyed is defined in various standard and proprietary
specifications.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>This document re-uses the terms defined in <xref target="RFC9334"/> related to remote
attestation. Readers of this document are assumed to be familiar with
the following terms: Evidence, Claim, Attestation Results (AR), Attester,
Verifier, Target Environment, Attesting Environment, Composite Device,
Lead Attester, Attestation Key, and Relying Party (RP).</t>

<t>The term "Certification Request" message is defined in <xref target="RFC2986"/>.
Specifications, such as <xref target="RFC7030"/>, later introduced the term
"Certificate Signing Request (CSR)" to refer to the Certification
Request message. While the term "Certification Request"
would have been correct, the mistake was unnoticed. In the meanwhile
CSR is an abbreviation used beyond PKCS#10. Hence, it is equally
applicable to other protocols that use a different syntax and
even a different encoding, in particular this document also
considers messages in the Certificate Request Message Format (CRMF) <xref target="RFC4211"/>
to be "CSRs". In this document, the terms "CSR" and Certificate Request
message are used interchangeably.</t>

</section>
<section anchor="architecture"><name>Architecture</name>

<t><xref target="fig-arch"/> shows the high-level communication pattern of the RATS
background check model where the Attester transmits the Evidence in the
CSR to the RA and the CA, which is subsequently forwarded to the Verifier.
The Verifier appraises the received Evidence and computes an Attestation
Result, which is then processed by the RA/CA prior to the certificate
issuance.</t>

<t>In addition to the background check model, the RATS architecture also
specifies the passport model and combinations. See <xref section="5.2" sectionFormat="of" target="RFC9334"/> for a description of the passport model. The passport model
requires the Attester to transmit Evidence to the Verifier directly in order
to obtain the Attestation Result, which is then forwarded to the Relying
Party. This specification utilizes the background check model since CSRs are
often used as one-shot messages where no direct real-time interaction
between the Attester and the Verifier is possible.</t>

<t>Note that the Verifier is a logical role that may be included in the
RA/CA product. In this case, the Relying Party role and Verifier role collapse into a
single entity. The Verifier functionality can, however,
also be kept separate from the RA functionality, such as a utility or
library provided by the device manufacturer. For example,
security concerns may require parsers of Evidence formats to be logically
or physically separated from the core RA and CA functionality. The interface
by which the Relying Party passes Evidence to the Verifier and receives back
Attestation Results may be proprietary or standardized, but in any case is
out-of-scope for this document.</t>

<t>The diagram below shows an example data flow where Evidence is included in a
CSR. The CSR is parsed by the Registration Authority (RA) component of a
Certification Authority which extracts the Evidence and forwards it to a
trusted Verifier. The RA receives back an Attestation Result which it uses
to decide whether this Evidence meets its policy for certificate issuance
and if it does then the certificate request is forwarded to the Certification
Authority for issuance. This diagram overlays PKI entities with RATS roles in
parentheses.</t>

<figure title="Example data flow demonstrating the architecture with Background Check Model." anchor="fig-arch"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="552" viewBox="0 0 552 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,176 L 8,256" fill="none" stroke="black"/>
<path d="M 112,176 L 112,256" fill="none" stroke="black"/>
<path d="M 216,32 L 216,96" fill="none" stroke="black"/>
<path d="M 216,176 L 216,256" fill="none" stroke="black"/>
<path d="M 256,104 L 256,192" fill="none" stroke="black"/>
<path d="M 320,96 L 320,192" fill="none" stroke="black"/>
<path d="M 360,32 L 360,96" fill="none" stroke="black"/>
<path d="M 360,176 L 360,256" fill="none" stroke="black"/>
<path d="M 496,176 L 496,256" fill="none" stroke="black"/>
<path d="M 544,176 L 544,256" fill="none" stroke="black"/>
<path d="M 216,32 L 360,32" fill="none" stroke="black"/>
<path d="M 216,96 L 360,96" fill="none" stroke="black"/>
<path d="M 8,176 L 112,176" fill="none" stroke="black"/>
<path d="M 216,176 L 248,176" fill="none" stroke="black"/>
<path d="M 264,176 L 312,176" fill="none" stroke="black"/>
<path d="M 328,176 L 360,176" fill="none" stroke="black"/>
<path d="M 496,176 L 544,176" fill="none" stroke="black"/>
<path d="M 112,192 L 208,192" fill="none" stroke="black"/>
<path d="M 224,192 L 256,192" fill="none" stroke="black"/>
<path d="M 320,192 L 352,192" fill="none" stroke="black"/>
<path d="M 368,192 L 488,192" fill="none" stroke="black"/>
<path d="M 8,256 L 112,256" fill="none" stroke="black"/>
<path d="M 216,256 L 360,256" fill="none" stroke="black"/>
<path d="M 496,256 L 544,256" fill="none" stroke="black"/>
<polygon class="arrowhead" points="496,192 484,186.4 484,197.6 " fill="black" transform="rotate(0,488,192)"/>
<polygon class="arrowhead" points="360,192 348,186.4 348,197.6 " fill="black" transform="rotate(0,352,192)"/>
<polygon class="arrowhead" points="328,168 316,162.4 316,173.6 " fill="black" transform="rotate(90,320,168)"/>
<polygon class="arrowhead" points="264,104 252,98.4 252,109.6 " fill="black" transform="rotate(270,256,104)"/>
<polygon class="arrowhead" points="216,192 204,186.4 204,197.6 " fill="black" transform="rotate(0,208,192)"/>
<g class="text">
<text x="400" y="52">Compare</text>
<text x="468" y="52">Evidence</text>
<text x="292" y="68">(Verifier)</text>
<text x="400" y="68">against</text>
<text x="472" y="68">Appraisal</text>
<text x="396" y="84">Policy</text>
<text x="212" y="132">Evidence</text>
<text x="376" y="132">Attestation</text>
<text x="356" y="148">Result</text>
<text x="404" y="148">(AR)</text>
<text x="32" y="212">HSM</text>
<text x="156" y="212">Evidence</text>
<text x="244" y="212">Reg.</text>
<text x="304" y="212">Authority</text>
<text x="416" y="212">Attestation</text>
<text x="516" y="212">CA</text>
<text x="60" y="228">(Attester)</text>
<text x="132" y="228">in</text>
<text x="160" y="228">CSR</text>
<text x="260" y="228">(Relying</text>
<text x="324" y="228">Party)</text>
<text x="396" y="228">Result</text>
<text x="448" y="228">Meets</text>
<text x="388" y="244">Cert</text>
<text x="440" y="244">policy?</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                          .-----------------.
                          |                 | Compare Evidence
                          |    (Verifier)   | against Appraisal
                          |                 | Policy
                          '------------+----'
                               ^       |
                      Evidence |       | Attestation
                               |       | Result (AR)
                               |       v
.------------.            .----|-------|----.                .-----.
|            +----------->|----'       '--->|--------------->|     |
| HSM        | Evidence   | Reg. Authority  | Attestation    | CA  |
| (Attester) | in CSR     | (Relying Party) | Result Meets   |     |
|            |            |                 | Cert policy?   |     |
'------------'            '-----------------'                '-----'
]]></artwork></artset></figure>

<t>As discussed in RFC 9334 <xref target="RFC9334"/>, different security and privacy aspects need to be
considered. For example, Evidence may need to be protected against replay and
<xref section="10" sectionFormat="of" target="RFC9334"/> lists approach for offering freshness. There are also
concerns about the exposure of persistent identifiers by utilizing attestation
technology, which are discussed in <xref section="11" sectionFormat="of" target="RFC9334"/>. Finally, the keying
material used by the Attester needs to be protected against unauthorized access,
and against signing arbitrary content that originated from outside the device.
This aspect is described in <xref section="12" sectionFormat="of" target="RFC9334"/>. Most of these aspects are,
however, outside the scope of this specification but relevant for use with a
given attestation technology. The focus of this specification is on the
transport of Evidence from the Attester to the Relying Party via existing
CSR messages.</t>

</section>
<section anchor="information-model"><name>Information Model</name>

<section anchor="interaction-with-an-hsm"><name>Interaction with an HSM</name>

<t>This specification is applicable both in cases where a CSR
is constructed internally or externally to the Attesting Environment, from the
point of view of the calling application.</t>

<t>Cases where the CSR is generated internally to the Attesting Environment
are straightforward: the HSM generates and embeds the Evidence and the corresponding
certification paths when constructing the CSR.</t>

<t>Cases where the CSR is generated externally may require extra round-trips of communication
between the CSR generator and the Attesting Environment, first to obtain
the necessary Evidence about the subject key, and then to use
the subject key to sign the CSR; for example, a CSR generated by
a popular crypto library about a subject key stored on a PKCS#11 <xref target="PKCS11"/> device.</t>

<t>As an example, assuming that the HSM is, or contains, the Attesting Environment and
some cryptographic library is assembling a CSR by interacting with the HSM over some
network protocol, then the interaction would conceptually be:</t>

<figure title="Example interaction between CSR generator and HSM." anchor="fig-csr-client-p11"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="384" viewBox="0 0 384 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,176 L 8,208" fill="none" stroke="black"/>
<path d="M 160,32 L 160,80" fill="none" stroke="black"/>
<path d="M 184,176 L 184,208" fill="none" stroke="black"/>
<path d="M 200,88 L 200,304" fill="none" stroke="black"/>
<path d="M 240,32 L 240,80" fill="none" stroke="black"/>
<path d="M 328,32 L 328,80" fill="none" stroke="black"/>
<path d="M 352,88 L 352,304" fill="none" stroke="black"/>
<path d="M 376,32 L 376,80" fill="none" stroke="black"/>
<path d="M 160,32 L 240,32" fill="none" stroke="black"/>
<path d="M 328,32 L 376,32" fill="none" stroke="black"/>
<path d="M 160,80 L 240,80" fill="none" stroke="black"/>
<path d="M 328,80 L 376,80" fill="none" stroke="black"/>
<path d="M 208,128 L 344,128" fill="none" stroke="black"/>
<path d="M 208,160 L 344,160" fill="none" stroke="black"/>
<path d="M 8,176 L 184,176" fill="none" stroke="black"/>
<path d="M 8,208 L 184,208" fill="none" stroke="black"/>
<path d="M 208,256 L 344,256" fill="none" stroke="black"/>
<path d="M 208,288 L 344,288" fill="none" stroke="black"/>
<polygon class="arrowhead" points="352,256 340,250.4 340,261.6 " fill="black" transform="rotate(0,344,256)"/>
<polygon class="arrowhead" points="352,128 340,122.4 340,133.6 " fill="black" transform="rotate(0,344,128)"/>
<polygon class="arrowhead" points="216,288 204,282.4 204,293.6 " fill="black" transform="rotate(180,208,288)"/>
<polygon class="arrowhead" points="216,160 204,154.4 204,165.6 " fill="black" transform="rotate(180,208,160)"/>
<g class="text">
<text x="196" y="52">Crypto</text>
<text x="352" y="52">HSM</text>
<text x="200" y="68">Library</text>
<text x="264" y="116">getEvidence()</text>
<text x="32" y="196">CSR</text>
<text x="56" y="196">=</text>
<text x="120" y="196">assembleCSR()</text>
<text x="192" y="196">-</text>
<text x="248" y="244">sign(CSR)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                   +---------+          +-----+
                   | Crypto  |          | HSM |
                   | Library |          |     |
                   +---------+          +-----+
                        |                  |
                        | getEvidence()    |
                        |----------------->|
                        |                  |
                        |<-----------------|
+---------------------+ |                  |
| CSR = assembleCSR() |-|                  |
+---------------------+ |                  |
                        |                  |
                        | sign(CSR)        |
                        |----------------->|
                        |                  |
                        |<-----------------|
                        |                  |
]]></artwork></artset></figure>

</section>
<section anchor="encoding-strategy"><name>Encoding Strategy</name>

<t>To support a number of different use cases for the transmission of
Evidence and certificate chains in a CSR the structure
shown in <xref target="fig-info-model"/> is used.</t>

<t>On a high-level, the structure is composed as follows:
A PKCS#10 attribute or a CRMF extension contains one
EvidenceBundle structure. The EvidenceBundle contains one or more
EvidenceStatement structures as well as one or more
CertificateChoices which enable to carry various format of
certificates.</t>

<t>Note: Since an extension must only be included once in a certificate
see <xref section="4.2" sectionFormat="of" target="RFC5280"/>, it is <bcp14>RECOMMENDED</bcp14> to include the PKCS#10 attribute
 or the CRMF extension only once in a CSR.</t>

<figure title="Information Model for CSR Evidence Conveyance." anchor="fig-info-model"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="488" viewBox="0 0 488 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 8,240 L 8,272" fill="none" stroke="black"/>
<path d="M 80,96 L 80,240" fill="none" stroke="black"/>
<path d="M 160,144 L 160,240" fill="none" stroke="black"/>
<path d="M 168,32 L 168,96" fill="none" stroke="black"/>
<path d="M 176,240 L 176,272" fill="none" stroke="black"/>
<path d="M 272,128 L 272,208" fill="none" stroke="black"/>
<path d="M 272,240 L 272,336" fill="none" stroke="black"/>
<path d="M 432,240 L 432,336" fill="none" stroke="black"/>
<path d="M 480,128 L 480,208" fill="none" stroke="black"/>
<path d="M 8,32 L 168,32" fill="none" stroke="black"/>
<path d="M 8,96 L 168,96" fill="none" stroke="black"/>
<path d="M 272,128 L 480,128" fill="none" stroke="black"/>
<path d="M 160,144 L 272,144" fill="none" stroke="black"/>
<path d="M 272,160 L 480,160" fill="none" stroke="black"/>
<path d="M 272,208 L 480,208" fill="none" stroke="black"/>
<path d="M 8,240 L 176,240" fill="none" stroke="black"/>
<path d="M 272,240 L 432,240" fill="none" stroke="black"/>
<path d="M 176,256 L 272,256" fill="none" stroke="black"/>
<path d="M 8,272 L 176,272" fill="none" stroke="black"/>
<path d="M 272,272 L 432,272" fill="none" stroke="black"/>
<path d="M 272,336 L 432,336" fill="none" stroke="black"/>
<g class="text">
<text x="48" y="52">PKCS#10</text>
<text x="120" y="52">Attribute</text>
<text x="76" y="68">or</text>
<text x="36" y="84">CRMF</text>
<text x="96" y="84">Extension</text>
<text x="172" y="132">(1</text>
<text x="196" y="132">or</text>
<text x="232" y="132">more)</text>
<text x="356" y="148">CertificateChoices</text>
<text x="328" y="180">Certificate</text>
<text x="388" y="180">OR</text>
<text x="372" y="196">OtherCertificateFormat</text>
<text x="28" y="212">(1</text>
<text x="52" y="212">or</text>
<text x="48" y="228">more)</text>
<text x="204" y="228">(1</text>
<text x="228" y="228">or</text>
<text x="224" y="244">more)</text>
<text x="84" y="260">EvidenceBundle</text>
<text x="352" y="260">EvidenceStatement</text>
<text x="300" y="292">Type</text>
<text x="320" y="308">Statement</text>
<text x="300" y="324">Hint</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
 +-------------------+
 | PKCS#10 Attribute |
 |       or          |
 | CRMF Extension    |
 +--------+----------+
          |
          |          (1 or more)  +-------------------------+
          |         +-------------+ CertificateChoices      |
          |         |             +-------------------------+
          |         |             | Certificate OR          |
          |         |             | OtherCertificateFormat  |
   (1 or  |         |             +-------------------------+
    more) |         |    (1 or
 +--------+---------+-+   more)   +-------------------+
 |  EvidenceBundle    +-----------+ EvidenceStatement |
 +--------------------+           +-------------------+
                                  | Type              |
                                  | Statement         |
                                  | Hint              |
                                  +-------------------+
]]></artwork></artset></figure>

<t>A conformant implementation of an entity processing the CSR structures <bcp14>MUST</bcp14> be prepared
to use certificates found in the EvidenceBundle structure to build a certification
path to validate any EvidenceStatement.
The following use cases are supported, as described in the sub-sections below.</t>

<section anchor="case-1-evidence-bundle-without-certificate-chain"><name>Case 1 - Evidence Bundle without Certificate Chain</name>

<t>A single Attester, which only distributes Evidence without an attached certificate chain.
In the use case, the Verifier is assumed to be in possession of the certificate chain already
or the Verifier directly trusts the Attestation Key and therefore no certificate chain needs
to be conveyed in the CSR.
As a result, an EvidenceBundle is included in a CSR that contains a single EvidenceStatement
without the CertificateChoices structure. <xref target="fig-single-attester"/> shows this use case.</t>

<figure title="Case 1: Evidence Bundle without Certificate Chain." anchor="fig-single-attester"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="184" viewBox="0 0 184 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 176,32 L 176,96" fill="none" stroke="black"/>
<path d="M 8,32 L 176,32" fill="none" stroke="black"/>
<path d="M 8,96 L 176,96" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="92" y="68">....................</text>
<text x="88" y="84">EvidenceStatement</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
  +--------------------+
  |  EvidenceBundle    |
  +....................+
  | EvidenceStatement  |
  +--------------------+
]]></artwork></artset></figure>

</section>
<section anchor="case-2-evidence-bundle-with-certificate-chain"><name>Case 2 - Evidence Bundle with Certificate Chain</name>

<t>A single Attester, which shares Evidence together with a certificate chain.
The CSR conveys an EvidenceBundle with a single EvidenceStatement
and a CertificateChoices structure. <xref target="fig-single-attester-with-path"/>
shows this use case.</t>

<figure title="Case 2: Single Evidence Bundle with Certificate Chain." anchor="fig-single-attester-with-path"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="224" viewBox="0 0 224 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,112" fill="none" stroke="black"/>
<path d="M 216,32 L 216,112" fill="none" stroke="black"/>
<path d="M 8,32 L 216,32" fill="none" stroke="black"/>
<path d="M 8,112 L 216,112" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="112" y="68">.........................</text>
<text x="88" y="84">EvidenceStatement</text>
<text x="92" y="100">CertificateChoices</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
 +-------------------------+
 |  EvidenceBundle         |
 +.........................+
 | EvidenceStatement       |
 | CertificateChoices      |
 +-------------------------+
]]></artwork></artset></figure>

</section>
<section anchor="case-3-evidence-bundles-with-multiple-evidence-statements-and-complete-certificate-chains"><name>Case 3 - Evidence Bundles with Multiple Evidence Statements and Complete Certificate Chains</name>

<t>In a Composite Device, which contains multiple Attesters, a collection of Evidence
statements is obtained. In this use case, each Attester returns its Evidence together with a
certificate chain. As a result, multiple EvidenceStatement structures and the corresponding CertificateChoices structure with the
certification chains as provided by the Attester, are included in the CSR.
This approach does not require any processing capabilities
by a Lead Attester since the information is merely forwarded. <xref target="fig-multiple-attesters"/>
shows this use case.</t>

<figure title="Case 3: Multiple Evidence Structures each with Complete Certificate Chains." anchor="fig-multiple-attesters"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="560" viewBox="0 0 560 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,128" fill="none" stroke="black"/>
<path d="M 216,32 L 216,128" fill="none" stroke="black"/>
<path d="M 8,32 L 216,32" fill="none" stroke="black"/>
<path d="M 8,128 L 216,128" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="112" y="68">.........................</text>
<text x="88" y="84">EvidenceStatement</text>
<text x="176" y="84">(1)</text>
<text x="260" y="84">Provided</text>
<text x="308" y="84">by</text>
<text x="356" y="84">Attester</text>
<text x="400" y="84">1</text>
<text x="88" y="100">EvidenceStatement</text>
<text x="176" y="100">(2)</text>
<text x="260" y="100">Provided</text>
<text x="308" y="100">by</text>
<text x="356" y="100">Attester</text>
<text x="400" y="100">2</text>
<text x="92" y="116">CertificateChoices</text>
<text x="276" y="116">Certificates</text>
<text x="364" y="116">provided</text>
<text x="412" y="116">by</text>
<text x="460" y="116">Attester</text>
<text x="504" y="116">1</text>
<text x="528" y="116">and</text>
<text x="552" y="116">2</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
  +-------------------------+
  |  EvidenceBundle         |
  +.........................+
  | EvidenceStatement (1)   | Provided by Attester 1
  | EvidenceStatement (2)   | Provided by Attester 2
  | CertificateChoices      | Certificates provided by Attester 1 and 2
  +-------------------------+
]]></artwork></artset></figure>

</section>
</section>
</section>
<section anchor="asn1-elements"><name>ASN.1 Elements</name>

<section anchor="object-identifiers"><name>Object Identifiers</name>

<t>This document references <spanx style="verb">id-pkix</spanx> and <spanx style="verb">id-aa</spanx>, both defined in <xref target="RFC5911"/> and <xref target="RFC5912"/>.</t>

<t>This document defines the arc depicted in <xref target="code-ata-arc"/>.</t>

<figure title="New OID Arc for PKIX Evidence Statement Formats" anchor="code-ata-arc"><artwork><![CDATA[
-- Arc for Evidence types
id-ata OBJECT IDENTIFIER ::= { id-pkix (TBD1) }
]]></artwork></figure>

</section>
<section anchor="sec-evidenceAttr"><name>Evidence Attribute and Extension</name>

<t>By definition, attributes within a PKCS#10 CSR are
typed as ATTRIBUTE and within a CRMF CSR are typed as EXTENSION.
This attribute definition contains one
Evidence bundle of type <spanx style="verb">EvidenceBundle</spanx> containing
one or more Evidence statements of a type <spanx style="verb">EvidenceStatement</spanx> along with
optional certificates for certification path building.
This structure enables different Evidence statements to share a
certification path without duplicating it in the attribute.</t>

<figure title="Definition of EvidenceStatementSet" anchor="code-EvidenceStatementSet"><artwork><![CDATA[
EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
   ... -- None defined in this document --
}
]]></artwork></figure>

<t>The expression illustrated in <xref target="code-EvidenceStatementSet"/> maps ASN.1 Types for Evidence Statements to the OIDs
that identify them. These mappings are used to construct
or parse EvidenceStatements. Evidence Statements are typically
defined in other IETF standards, other standards bodies,
or vendor proprietary formats along with corresponding OIDs that identify them.</t>

<t>This list is left unconstrained in this document. However, implementers can
populate it with the formats that they wish to support.</t>

<figure title="Definition of EvidenceStatement" anchor="code-EvidenceStatement"><artwork><![CDATA[
EvidenceStatement ::= SEQUENCE {
   type   EVIDENCE-STATEMENT.&id({EvidenceStatementSet}),
   stmt   EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}),
   hint   UTF8String OPTIONAL
}
]]></artwork></figure>

<t>In <xref target="code-EvidenceStatement"/>, type is an OID that indicates the format of the value of stmt.</t>

<t>Based on the responsibilities of the different roles in the RATS architecture,
Relying Parties need to relay Evidence to Verifiers for evaluation and obtain
an Attestation Result in return. Ideally, the Relying Party should select a Verifier
based on the received Evidence without requiring the Relying Party to inspect the
Evidence itself. This "routing" decision is simple when there is only a single
Verifier configured for use by a Relying Party but gets more complex when there
are different Verifiers available and each of them capable of parsing only certain
Evidence formats.</t>

<t>In some cases, the EvidenceStatement.type OID will be sufficient information
for the Relying Party to correctly route it to an appropriate Verifier,
however since the type OID only identifies the general data format, it is possible
that multiple Verifiers are registered against the same type OID in which case the
Relying Party will either require additional parsing of the evidence statement, or
the Attester will be required to provide additional information.</t>

<t>To simplify the task for the Relying Party an optional field, the hint, is available
in the EvidenceStatement structure, as shown in <xref target="code-EvidenceStatement"/>. An
Attester <bcp14>MAY</bcp14> include the hint to the EvidenceStatement and it <bcp14>MAY</bcp14> be processed
by the Relying Party. The Relying Party <bcp14>MAY</bcp14> decide not to trust the information
embedded in the hint or policy <bcp14>MAY</bcp14> override any information provided by the Attester
via this hint.</t>

<t>When the Attester populates the hint, it <bcp14>MUST</bcp14> contain a fully qualified domain
name (FQDN) which uniquely identifies a Verifier.
The problem of mapping hint FQDNs to Verifiers, and the problem of FQDN collision
is out of scope for this specification; it is assumed that Attester and Verifier
makers can manage this appropriately on their own FQDN trees, however if this
becomes problematic then a public registry may be needed.</t>

<t>In a typical usage scenario, the Relying Party is pre-configured with
a list of trusted Verifiers and the corresponding hint values can be used to look
up appropriate Verifier. Tricking an Relying Party into interacting with an unknown
and untrusted Verifier must be avoided.</t>

<t>Usage of the hint field can be seen in the TPM2_attest example in
<xref target="appdx-tpm2"/> where the type OID indicates the OID
id-TcgAttestCertify and the corresponding hint identifies the Verifier as
"tpmverifier.example.com".</t>

<figure><artwork><![CDATA[
EvidenceBundle ::= SEQUENCE {
   evidences SEQUENCE SIZE (1..MAX) OF EvidenceStatement,
   certs SEQUENCE SIZE (1..MAX) OF CertificateChoices OPTIONAL
      -- CertificateChoices MUST only contain certificate or other,
      -- see Section 10.2.2 of [RFC5652]
}
]]></artwork></figure>

<t>The CertificateChoices structure defined in <xref target="RFC6268"/> allows for carrying certificates in the default X.509 <xref target="RFC5280"/> format, or in other non-X.509 certificate formats. CertificateChoices <bcp14>MUST</bcp14> only contain certificate or other. CertificateChoices <bcp14>MUST NOT</bcp14> contain extendedCertificate, v1AttrCert, or v2AttrCert. Note that for non-ASN.1 certificate formats, the CertificateChoices <bcp14>MUST</bcp14> use <spanx style="verb">other [3]</spanx> with an <spanx style="verb">OtherCertificateFormat.Type</spanx> of <spanx style="verb">OCTET STRING</spanx>, and then can carry any binary data.</t>

<figure title="Definitions of CSR attribute and extension" anchor="code-extensions"><artwork><![CDATA[
id-aa-evidence OBJECT IDENTIFIER ::= { id-aa 59 }

-- For PKCS#10
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundle
  COUNTS MAX 1
  IDENTIFIED BY id-aa-evidence
}

-- For CRMF
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundle
  IDENTIFIED BY id-aa-evidence
}
]]></artwork></figure>

<t>The Extension variant illustrated in <xref target="code-extensions"/> is intended only for use within CRMF CSRs and is <bcp14>NOT RECOMMENDED</bcp14> to be used within X.509 certificates due to the privacy implications of publishing Evidence about the end entity's hardware environment. See <xref target="sec-con-publishing-x509"/> for more discussion.</t>

<t>The <spanx style="verb">certs</spanx> field contains a set of certificates that
is intended to validate the contents of an Evidence statement
contained in <spanx style="verb">evidences</spanx>, if required. For each Evidnece statement the set of certificates should contain
the certificate that contains the public key needed to directly validate the
Evidence statement. Additional certificates may be provided, for example, to chain the
Evidence signer key back to an agreed upon trust anchor. No specific order of the certificates in <spanx style="verb">certs</spanx> <bcp14>SHOULD</bcp14> be expected because the certificates needed for different Evidence statements may be contained in <spanx style="verb">certs</spanx>.</t>

<t>This specification places no restriction on mixing certificate types within the <spanx style="verb">certs</spanx> field. For example a non-X.509 Evidence signer certificate <bcp14>MAY</bcp14> chain to a trust anchor via a chain of X.509 certificates. It is up to the Attester and its Verifier to agree on supported certificate formats.</t>

<t>By the nature of the PKIX ASN.1 classes <xref target="RFC5912"/>, there are multiple ways to convey multiple Evidence statements: by including multiple copies of <spanx style="verb">attr-evidence</spanx> or <spanx style="verb">ext-evidence</spanx>, multiple values within the attribute or extension, and finally, by including multiple <spanx style="verb">EvidenceStatement</spanx> structures within an <spanx style="verb">EvidenceBundle</spanx>. The latter is the preferred way to carry multiple Evidence statements. Implementations <bcp14>MUST NOT</bcp14> place multiple copies of <spanx style="verb">attr-evidence</spanx> into a PKCS#10 CSR due to the <spanx style="verb">COUNTS MAX 1</spanx> declaration. In a CRMF CSR, implementers <bcp14>SHOULD NOT</bcp14> place multiple copies of <spanx style="verb">ext-evidence</spanx>.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to open two new registries, allocate a value
from the "SMI Security for PKIX Module Identifier" registry for the
included ASN.1 module, and allocate values from "SMI Security for
S/MIME Attributes" to identify two attributes defined within.</t>

<section anchor="module-registration-smi-security-for-pkix-module-identifier"><name>Module Registration - SMI Security for PKIX Module Identifier</name>

<t><list style="symbols">
  <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
  <t>Description: CSR-ATTESTATION-2023 - id-mod-pkix-attest-01</t>
  <t>References: This Document</t>
</list></t>

</section>
<section anchor="object-identifier-registrations-smi-security-for-smime-attributes"><name>Object Identifier Registrations - SMI Security for S/MIME Attributes</name>

<t><list style="symbols">
  <t>Evidence Statement
  <list style="symbols">
      <t>Decimal: IANA Assigned - This was early-allocated as <spanx style="verb">59</spanx> so that we could generate the sample data.</t>
      <t>Description: id-aa-evidence</t>
      <t>References: This Document</t>
    </list></t>
</list></t>

</section>
<section anchor="smi-security-for-pkix-evidence-statement-formats-registry"><name>"SMI Security for PKIX Evidence Statement Formats" Registry</name>

<t>IANA is asked to create a registry for Evidence Statement Formats within
the SMI-numbers registry, allocating an assignment from id-pkix ("SMI
Security for PKIX" Registry) for the purpose.</t>

<t><list style="symbols">
  <t>Decimal: IANA Assigned - <strong>replace TBD1</strong></t>
  <t>Description: id-ata</t>
  <t>References: This document</t>
  <t>Initial contents: None</t>
  <t>Registration Regime: Specification Required.
Document must specify an EVIDENCE-STATEMENT definition to which this
Object Identifier shall be bound.</t>
</list></t>

<t>Columns:</t>

<t><list style="symbols">
  <t>Decimal: The subcomponent under id-ata</t>
  <t>Description: Begins with id-ata</t>
  <t>References: RFC or other document</t>
</list></t>

</section>
<section anchor="attestation-evidence-oid-registry"><name>Attestation Evidence OID Registry</name>

<t>IANA is asked to create a registry that helps developers to find
OID/Evidence mappings.</t>

<t>Registration requests are evaluated using the criteria described in
the registration template below after a three-week review period on
the [[TBD]] mailing list, with the advice of one or more Designated
Experts <xref target="RFC8126"/>.  However, to allow for the allocation of values
prior to publication, the Designated Experts may approve registration
once they are satisfied that such a specification will be published.</t>

<t>Registration requests sent to the mailing list for review should use
an appropriate subject (e.g., "Request to register attestation
evidence: example").</t>

<t>IANA must only accept registry updates from the Designated Experts
and should direct all requests for registration to the review mailing
list.</t>

<section anchor="registration-template"><name>Registration Template</name>

<t>The registry has the following columns:</t>

<t><list style="symbols">
  <t>OID: The OID number, which has already been allocated. IANA does
not allocate OID numbers for use with this registry.</t>
  <t>Description: Brief description of the use of the Evidence and the
registration of the OID.</t>
  <t>Reference(s): Reference to the document or documents that register
the OID for use with a specific attestation technology, preferably
including URIs that can be used to retrieve copies of the documents.
An indication of the relevant sections may also be included but is not
required.</t>
  <t>Change Controller: For Standards Track RFCs, list the "IESG".  For
others, give the name of the responsible party. In most cases the
third party requesting registration in this registry will also be the
party that registered the OID.</t>
</list></t>

</section>
<section anchor="initial-registry-contents"><name>Initial Registry Contents</name>

<t>The initial registry contents is shown in the table below.
It lists entries for several evidence encoding OIDs including an entry for the Conceptual Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.</t>

<texttable title="Initial Contents of the Attestation Evidence OID Registry" anchor="tab-ae-reg">
      <ttcol align='left'>OID</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Change Controller</ttcol>
      <c>2 23 133 5 4 1</c>
      <c>tcg-dice-TcbInfo</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 3</c>
      <c>tcg-dice-endorsement-manifest-uri</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 4</c>
      <c>tcg-dice-Ueid</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 5</c>
      <c>tcg-dice-MultiTcbInfo</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 6</c>
      <c>tcg-dice-UCCS-evidence</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 7</c>
      <c>tcg-dice-manifest-evidence</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 8</c>
      <c>tcg-dice-MultiTcbInfoComp</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 9</c>
      <c>tcg-dice-conceptual-message-wrapper</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 11</c>
      <c>tcg-dice-TcbFreshness</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 20 1</c>
      <c>tcg-attest-tpm-certify</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>1 3 6 1 5 5 7 1 35</c>
      <c>id-pe-cmw</c>
      <c><xref target="I-D.ietf-rats-msg-wrap"/></c>
      <c>IETF</c>
</texttable>

<t>The current registry values can be retrieved from the IANA online website.</t>

</section>
</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>A PKCS#10 or CRMF Certification Request message typically consists of a
distinguished name, a public key, and optionally a set of attributes,
collectively signed by the entity requesting certification.
In general usage, the private key used to sign the CSR <bcp14>MUST</bcp14> be different from the
Attesting Key utilized to sign Evidence about the Target
Environment, though exceptions <bcp14>MAY</bcp14> be made where CSRs and Evidence are involved in
bootstrapping the Attesting Key.
To demonstrate that the private
key applied to sign the CSR is generated, and stored in a secure
environment that has controls to prevent theft or misuse (including
being non-exportable / non-recoverable), the Attesting Environment
has to collect claims about this secure environment (or Target
Environment, as shown in <xref target="fig-attester"/>).</t>

<t><xref target="fig-attester"/> shows the interaction inside an Attester. The
Attesting Environment, which is provisioned with an Attestation Key,
retrieves claims about the Target Environment. The Target
Environment offers key generation, storage and usage, which it
makes available to services. The Attesting Environment collects
these claims about the Target Environment and signs them and
exports Evidence for use in remote attestation via a CSR.</t>

<figure title="Interaction between Attesting and Target Environment" anchor="fig-attester"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="328" viewBox="0 0 328 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,240 L 8,544" fill="none" stroke="black"/>
<path d="M 40,80 L 40,144" fill="none" stroke="black"/>
<path d="M 48,288 L 48,352" fill="none" stroke="black"/>
<path d="M 96,152 L 96,280" fill="none" stroke="black"/>
<path d="M 120,152 L 120,280" fill="none" stroke="black"/>
<path d="M 120,448 L 120,512" fill="none" stroke="black"/>
<path d="M 152,32 L 152,80" fill="none" stroke="black"/>
<path d="M 168,352 L 168,440" fill="none" stroke="black"/>
<path d="M 200,152 L 200,280" fill="none" stroke="black"/>
<path d="M 232,448 L 232,512" fill="none" stroke="black"/>
<path d="M 240,280 L 240,352" fill="none" stroke="black"/>
<path d="M 264,80 L 264,144" fill="none" stroke="black"/>
<path d="M 304,240 L 304,472" fill="none" stroke="black"/>
<path d="M 304,488 L 304,544" fill="none" stroke="black"/>
<path d="M 320,112 L 320,480" fill="none" stroke="black"/>
<path d="M 40,80 L 264,80" fill="none" stroke="black"/>
<path d="M 272,112 L 320,112" fill="none" stroke="black"/>
<path d="M 40,144 L 264,144" fill="none" stroke="black"/>
<path d="M 8,240 L 88,240" fill="none" stroke="black"/>
<path d="M 128,240 L 192,240" fill="none" stroke="black"/>
<path d="M 208,240 L 304,240" fill="none" stroke="black"/>
<path d="M 48,288 L 240,288" fill="none" stroke="black"/>
<path d="M 48,352 L 240,352" fill="none" stroke="black"/>
<path d="M 120,448 L 232,448" fill="none" stroke="black"/>
<path d="M 72,480 L 112,480" fill="none" stroke="black"/>
<path d="M 232,480 L 320,480" fill="none" stroke="black"/>
<path d="M 120,512 L 232,512" fill="none" stroke="black"/>
<path d="M 8,544 L 304,544" fill="none" stroke="black"/>
<polygon class="arrowhead" points="280,112 268,106.4 268,117.6 " fill="black" transform="rotate(180,272,112)"/>
<polygon class="arrowhead" points="208,280 196,274.4 196,285.6 " fill="black" transform="rotate(90,200,280)"/>
<polygon class="arrowhead" points="208,152 196,146.4 196,157.6 " fill="black" transform="rotate(270,200,152)"/>
<polygon class="arrowhead" points="176,440 164,434.4 164,445.6 " fill="black" transform="rotate(90,168,440)"/>
<polygon class="arrowhead" points="160,32 148,26.4 148,37.6 " fill="black" transform="rotate(270,152,32)"/>
<polygon class="arrowhead" points="128,152 116,146.4 116,157.6 " fill="black" transform="rotate(270,120,152)"/>
<polygon class="arrowhead" points="120,480 108,474.4 108,485.6 " fill="black" transform="rotate(0,112,480)"/>
<polygon class="arrowhead" points="104,280 92,274.4 92,285.6 " fill="black" transform="rotate(90,96,280)"/>
<g class="text">
<text x="168" y="52">CSR</text>
<text x="204" y="52">with</text>
<text x="188" y="68">Evidence</text>
<text x="112" y="116">CSR</text>
<text x="160" y="116">Library</text>
<text x="32" y="180">Private</text>
<text x="156" y="180">Public</text>
<text x="248" y="180">Signature</text>
<text x="16" y="196">Key</text>
<text x="144" y="196">Key</text>
<text x="248" y="196">Operation</text>
<text x="44" y="212">Generation</text>
<text x="156" y="212">Export</text>
<text x="108" y="244">--</text>
<text x="268" y="260">Attester</text>
<text x="256" y="276">(HSM)</text>
<text x="84" y="308">Target</text>
<text x="160" y="308">Environment</text>
<text x="80" y="324">(with</text>
<text x="120" y="324">key</text>
<text x="184" y="324">generation,</text>
<text x="88" y="340">storage</text>
<text x="136" y="340">and</text>
<text x="180" y="340">usage)</text>
<text x="128" y="388">Collect</text>
<text x="132" y="404">Claims</text>
<text x="56" y="468">Attestation</text>
<text x="168" y="468">Attesting</text>
<text x="48" y="484">Key</text>
<text x="176" y="484">Environment</text>
<text x="172" y="500">(Firmware)</text>
<text x="268" y="500">Evidence</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                   ^
                   |CSR with
                   |Evidence
     .-------------+-------------.
     |                           |
     |       CSR Library         |<-----+
     |                           |      |
     '---------------------------'      |
            |  ^         ^              |
 Private    |  | Public  | Signature    |
 Key        |  | Key     | Operation    |
 Generation |  | Export  |              |
            |  |         |              |
 .----------|--|---------|------------. |
 |          |  |         |    Attester| |
 |          v  |         v    (HSM)   | |
 |    .-----------------------.       | |
 |    | Target Environment    |       | |
 |    | (with key generation, |       | |
 |    | storage and usage)    |       | |
 |    '--------------+--------'       | |
 |                   |                | |
 |           Collect |                | |
 |            Claims |                | |
 |                   |                | |
 |                   v                | |
 |             .-------------.        | |
 |Attestation  | Attesting   |        | |
 |   Key ----->| Environment +----------+
 |             | (Firmware)  |Evidence|
 |             '-------------'        |
 |                                    |
 '------------------------------------'
]]></artwork></artset></figure>

<t><xref target="fig-attester"/> places the CSR library outside the Attester, which
is a valid architecture for certificate enrollment.
The CSR library may also be located
inside the trusted computing base. Regardless of the placement
of the CSR library, an Attesting Environment <bcp14>MUST</bcp14> be able to collect
claims about the Target Environment such that statements about
the storage of the keying material can be made.
For the Verifier, the provided Evidence must allow
an assessment to be made whether the key used to sign the CSR
is stored in a secure location and cannot be exported.</t>

<t>Evidence communicated in the attributes and structures defined
in this document are meant to be used in a CSR. It is up to
the Verifier and to the Relying Party (RA/CA) to place as much or
as little trust in this information as dictated by policies.</t>

<t>This document defines the transport of Evidence of different formats
in a CSR. Some of these encoding formats are based on standards
while others are proprietary formats. A Verifier will need to understand
these formats for matching the received claim values against policies.</t>

<t>Policies drive the processing of Evidence at the Verifier: the Verifier's
Appraisal Policy for Evidence will often be based on specifications by the manufacturer
of a hardware security module, a regulatory agency, or specified by an
oversight body, such as the CA Browser Forum. The Code-Signing Baseline
Requirements <xref target="CSBR"/> document
is an example of such a policy that has
been published by the CA Browser Forum and specifies certain properties,
such as non-exportability, which must be enabled for storing
publicly-trusted code-signing keys. Other
policies influence the decision making at the Relying Party when
evaluating the Attestation Result. The Relying Party is ultimately
responsible for making a decision of what information in the Attestation
Result it will accept. The presence of the attributes defined in this
specification provide the Relying Party with additional assurance about
an Attester. Policies used at the Verifier and the Relying Party are
implementation dependent and out of scope for this document. Whether to
require the use of Evidence in a CSR is out-of-scope for this document.</t>

<section anchor="freshness"><name>Freshness</name>

<t>Evidence generated by an Attester generally needs to be fresh to provide
value to the Verifier since the configuration on the device may change
over time. <xref section="10" sectionFormat="of" target="RFC9334"/> discusses different approaches for
providing freshness, including a nonce-based approach, the use of timestamps
and an epoch-based technique.  The use of nonces requires that nonce to be provided by
the Relying Party in some protocol step prior to Evidence and CSR generation,
and the use of timestamps requires synchronized clocks which cannot be
guaranteed in all operating environments. Epochs also require an out-of-band
communication channel.
This document only specifies how to carry existing Evidence formats inside a CSR,
and so issues of synchronizing freshness data is left to be handled, for example,
via certificate management protocols.
Developers, operators, and designers of protocols, which embed
Evidence-carrying-CSRs, <bcp14>MUST</bcp14> consider what notion of freshness is
appropriate and available in-context; thus the issue of freshness is
left up to the discretion of protocol designers and implementers.</t>

<t>In the case of Hardware Security Modules (HSM), the definition of "fresh" is somewhat ambiguous in the context
of CSRs, especially considering that non-automated certificate enrollments
are often asynchronous, and considering the common practice of re-using the
same CSR for multiple certificate renewals across the lifetime of a key.
"Freshness" typically implies both asserting that the data was generated
at a certain point-in-time, as well as providing non-replayability.
Certain use cases may have special properties impacting the freshness
requirements. For example, HSMs are typically designed to not allow downgrade
of private key storage properties; for example if a given key was asserted at
time T to have been generated inside the hardware boundary and to be
non-exportable, then it can be assumed that those properties of that key
will continue to hold into the future.</t>

</section>
<section anchor="sec-con-publishing-x509"><name>Publishing evidence in an X.509 extension</name>

<t>This document specifies an Extension for carrying Evidence in a CRMF Certificate Signing Request (CSR), but it is intentionally <bcp14>NOT RECOMMENDED</bcp14> for a CA to copy the ext-evidence extension into the published certificate.
The reason for this is that certificates are considered public information and the Evidence might contain detailed information about hardware and patch levels of the device on which the private key resides.
The certificate requester has consented to sharing this detailed device information with the CA but might not consent to having these details published.
These privacy considerations are beyond the scope of this document and may require additional signaling mechanisms in the CSR to prevent unintended publication of sensitive information, so we leave it as "<bcp14>NOT RECOMMENDED</bcp14>". Often, the correct layer at which to address this is either in certificate profiles, a Certificate Practice Statement (CPS), or in the protocol or application that carries the CSR to the RA/CA where a flag can be added indicating whether the RA/CA should consider the evidence to be public or private.</t>

</section>
<section anchor="type-oid-and-verifier-hint"><name>Type OID and verifier hint</name>

<t>The <spanx style="verb">EvidenceStatement</spanx> includes both a <spanx style="verb">type</spanx> OID and a free form <spanx style="verb">hint</spanx> field with which the Attester can provide information to the Relying Party about which Verifier to invoke to parse a given piece of Evidence.
Care should be taken when processing these data since at the time they are used, they are not yet verified. In fact, they are protected by the CSR signature but not by the signature from the Attester and so could be maliciously replaced in some cases.
The authors' intent is that the <spanx style="verb">type</spanx> OID and <spanx style="verb">hint</spanx> will allow an RP to select between Verifier with which it has pre-established trust relationships, such as Verifier libraries that have been compiled in to the RP application.
As an example, the <spanx style="verb">hint</spanx> may take the form of an FQDN to uniquely identify a Verifier implementation, but the RP <bcp14>MUST NOT</bcp14> blindly make network calls to unknown domain names and trust the results.
Implementers should also be cautious around <spanx style="verb">type</spanx> OID or <spanx style="verb">hint</spanx> values that cause a short-circuit in the verification logic, such as <spanx style="verb">None</spanx>, <spanx style="verb">Null</spanx>, <spanx style="verb">Debug</spanx>, empty CMW contents, or similar values that could cause the Evidence to appear to be valid when in fact it was not properly checked.</t>

</section>
<section anchor="additional-security-considerations"><name>Additional security considerations</name>

<t>In addition to the security considerations listed here, implementers should be familiar with the security considerations of the specifications on this this depends: PKCS#10 <xref target="RFC2986"/>, CRMF <xref target="RFC4211"/>, as well as general security concepts relating to evidence and remote attestation; many of these concepts are discussed in <xref section="6" sectionFormat="of" target="RFC9334"/>, <xref section="7" sectionFormat="of" target="RFC9334"/>, <xref section="9" sectionFormat="of" target="RFC9334"/>, <xref section="11" sectionFormat="of" target="RFC9334"/>, and <xref section="12" sectionFormat="of" target="RFC9334"/>. Implementers should also be aware of any security considerations relating to the specific evidence format being carried within the CSR.</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC9334">
  <front>
    <title>Remote ATtestation procedureS (RATS) Architecture</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="D. Thaler" initials="D." surname="Thaler"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="N. Smith" initials="N." surname="Smith"/>
    <author fullname="W. Pan" initials="W." surname="Pan"/>
    <date month="January" year="2023"/>
    <abstract>
      <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9334"/>
  <seriesInfo name="DOI" value="10.17487/RFC9334"/>
</reference>

<reference anchor="RFC6268">
  <front>
    <title>Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <date month="July" year="2011"/>
    <abstract>
      <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates some auxiliary ASN.1 modules to conform to the 2008 version of ASN.1; the 1988 ASN.1 modules remain the normative version. There are no bits- on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6268"/>
  <seriesInfo name="DOI" value="10.17487/RFC6268"/>
</reference>

<reference anchor="RFC5912">
  <front>
    <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="June" year="2010"/>
    <abstract>
      <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5912"/>
  <seriesInfo name="DOI" value="10.17487/RFC5912"/>
</reference>

<reference anchor="RFC4211">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="September" year="2005"/>
    <abstract>
      <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4211"/>
  <seriesInfo name="DOI" value="10.17487/RFC4211"/>
</reference>

<reference anchor="RFC2986">
  <front>
    <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
    <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
    <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
    <date month="November" year="2000"/>
    <abstract>
      <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2986"/>
  <seriesInfo name="DOI" value="10.17487/RFC2986"/>
</reference>

<reference anchor="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="RFC5911">
  <front>
    <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="June" year="2010"/>
    <abstract>
      <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5911"/>
  <seriesInfo name="DOI" value="10.17487/RFC5911"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>


<reference anchor="I-D.ietf-rats-msg-wrap">
   <front>
      <title>RATS Conceptual Messages Wrapper (CMW)</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Ned Smith" initials="N." surname="Smith">
         <organization>Intel</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <date day="20" month="October" year="2024"/>
      <abstract>
	 <t>   This document defines the RATS conceptual message wrapper (CMW)
   format, a type of encapsulation format that can be used for any RATS
   messages, such as Evidence, Attestation Results, Endorsements, and
   Reference Values.  Additionally, the document describes a collection
   type that enables the aggregation of one or more CMWs into a single
   message.

   This document also defines corresponding CBOR tag, JSON Web Tokens
   (JWT) and CBOR Web Tokens (CWT) claims, as well as an X.509
   extension.  These allow embedding the wrapped conceptual messages
   into CBOR-based protocols, web APIs, and PKIX protocols.  In
   addition, a Media Type and a CoAP Content-Format are defined for
   transporting CMWs in HTTP, MIME, CoAP and other Internet protocols.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-09"/>
   
</reference>


<reference anchor="I-D.bft-rats-kat">
   <front>
      <title>An EAT-based Key Attestation Token</title>
      <author fullname="Mathias Brossard" initials="M." surname="Brossard">
         <organization>arm</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
      <date day="3" month="September" year="2024"/>
      <abstract>
	 <t>   This document defines an evidence format for key attestation based on
   the Entity Attestation Token (EAT).

Discussion Venues

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

   Discussion of this document takes place on the Remote ATtestation
   ProcedureS Working Group mailing list (rats@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/rats/.

   Source for this draft and an issue tracker can be found at
   https://github.com/thomas-fossati/draft-kat.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-04"/>
   
</reference>

<reference anchor="RFC7030">
  <front>
    <title>Enrollment over Secure Transport</title>
    <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
    <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
    <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
    <date month="October" year="2013"/>
    <abstract>
      <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7030"/>
  <seriesInfo name="DOI" value="10.17487/RFC7030"/>
</reference>


<reference anchor="I-D.tschofenig-rats-psa-token">
   <front>
      <title>Arm&#x27;s Platform Security Architecture (PSA) Attestation Token</title>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
      <author fullname="Simon Frost" initials="S." surname="Frost">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Mathias Brossard" initials="M." surname="Brossard">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
         <organization>HP Labs</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <date day="23" month="September" 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&#x27;s architecture.  It is not a
   standard nor a product of the IETF.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-24"/>
   
</reference>


<reference anchor="TPM20" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
  <front>
    <title>Trusted Platform Module Library Specification, Family 2.0</title>
    <author >
      <organization>Trusted Computing Group</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CSBR" target="https://cabforum.org/uploads/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v3.7.pdf">
  <front>
    <title>Baseline Requirements for Code-Signing Certificates, v.3.7</title>
    <author >
      <organization>CA/Browser Forum</organization>
    </author>
    <date year="2024" month="February"/>
  </front>
</reference>
<reference anchor="TCGRegistry" target="https://trustedcomputinggroup.org/resource/tcg-oid-registry/">
  <front>
    <title>TCG OID Registry</title>
    <author >
      <organization>Trusted Computing Group</organization>
    </author>
    <date year="2024" month="October"/>
  </front>
</reference>
<reference anchor="TCGDICE1.1" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-18_pub.pdf">
  <front>
    <title>DICE Attestation Architecture</title>
    <author >
      <organization>Trusted Computing Group</organization>
    </author>
    <date year="2024" month="January"/>
  </front>
</reference>
<reference anchor="PKCS11" target="http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html">
  <front>
    <title>PKCS #11 Cryptographic Token Interface Base Specification Version 2.40</title>
    <author >
      <organization>OASIS</organization>
    </author>
    <date year="2015" month="April"/>
  </front>
</reference>
<reference anchor="SampleData" target="https://github.com/lamps-wg/csr-attestation-examples">
  <front>
    <title>CSR Attestation Sample Data</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>



<reference anchor="I-D.ietf-rats-tpm-based-network-device-attest">
   <front>
      <title>TPM-based Network Device Remote Integrity Verification</title>
      <author fullname="Guy Fedorkow" initials="G." surname="Fedorkow">
         <organization>Juniper Networks, Inc.</organization>
      </author>
      <author fullname="Eric Voit" initials="E." surname="Voit">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
         <organization>National Security Agency</organization>
      </author>
      <date day="22" month="March" year="2022"/>
      <abstract>
	 <t>   This document describes a workflow for remote attestation of the
   integrity of firmware and software installed on network devices that
   contain Trusted Platform Modules [TPM1.2], [TPM2.0], as defined by
   the Trusted Computing Group (TCG)), or equivalent hardware
   implementations that include the protected capabilities, as provided
   by TPMs.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-tpm-based-network-device-attest-14"/>
   
</reference>




    </references>


<?line 811?>

<section anchor="examples"><name>Examples</name>

<t>This section provides several examples and sample data for embedding Evidence
in CSRs. The first example embeds Evidence produced by a TPM in the CSR.
The second example conveys an Arm Platform Security Architecture token,
which provides claims about the used hardware and software platform,
into the CSR.</t>

<t>After publication of this document, additional examples and sample data will
be collected at the following GitHub repository <xref target="SampleData"/>:</t>

<t>https://github.com/lamps-wg/csr-attestation-examples</t>

<section anchor="extending-evidencestatementset"><name>Extending EvidenceStatementSet</name>

<t>As defined in <xref target="sec-evidenceAttr"/>, EvidenceStatementSet acts as a way to provide an ASN.1 compiler or
runtime parser with a list of OBJECT IDENTIFIERs that are known to represent EvidenceStatements
-- and are expected to appear in an EvidenceStatement.type field, along with
the ASN.1 type that should be used to parse the data in the associated EvidenceStatement.stmt field.
Essentially this is a mapping of OIDs to data structures. Implementers are expected to populate it
with mappings for the Evidence types that their application will be handling.</t>

<t>This specification aims to be agnostic about the type of data being carried, and therefore
does not specify any mandatory-to-implement Evidence types.</t>

<t>As an example of how to populate EvidenceStatementSet, implementing the TPM 2.0 and PSA Evidence types
given below would result in the following EvidenceStatementSet definition:</t>

<figure><artwork><![CDATA[
EvidenceStatementSet EVIDENCE-STATEMENT ::= {
  --- TPM 2.0
  { Tcg-attest-tpm-certify IDENTIFIED BY tcg-attest-tpm-certify },
  ...,

  --- PSA
  { OCTET STRING IDENTIFIED BY { 1 3 6 1 5 5 7 1 99 } }
}
]]></artwork></figure>

</section>
<section anchor="appdx-tpm2"><name>TPM V2.0 Evidence in CSR</name>

<t>This section describes TPM2 key attestation for use in a CSR.</t>

<t>This is a complete and canonical example that can be used to test parsers implemented against this specification. Readers who wish the sample data may skip to <xref target="appdx-tpm-example"/>; the following sections explain the TPM-specific data structures needed to fully parse the contents of the evidence statement.</t>

<section anchor="tcg-key-attestation-certify"><name>TCG Key Attestation Certify</name>

<t>There are several ways in TPM2 to provide proof of a key's properties.
(i.e., key attestation). This description uses the simplest and most generally
expected to used which is the TPM2_Certify and the TPM2_ReadPublic commands.</t>

</section>
<section anchor="tcg-oids"><name>TCG OIDs</name>

<t>The OIDs in this section are defined by TCG
TCG has a registered arc of 2.23.133</t>

<figure><artwork><![CDATA[
tcg OBJECT IDENTIFIER ::= { 2 23 133 }

tcg-kp-AIKCertificate OBJECT IDENTIFIER ::= { id-tcg 8 3 }

tcg-attest OBJECT IDENTIFIER ::= { tcg 20 }

tcg-attest-tpm-certify OBJECT IDENTIFIER ::= { tcg-attest 1 }
]]></artwork></figure>
<t>The tcg-kp-AIKCertificate OID in extendedKeyUsage identifies an AK Certificate in RFC 5280 format defined by TCG. This
certificate would be a certificate in the EvidenceBundle defined in <xref target="sec-evidenceAttr"/>. (Note: The abbreviation AIK was used in
TPM 1.2 specification. TPM 2.0 specifications use the abbreviation AK. The abbreviations are interchangeable.)</t>

</section>
<section anchor="appdx-tcg-attest-tpm-certify"><name>TPM2 AttestationStatement</name>

<t>The EvidenceStatement structure contains a sequence of two fields:
a type and a stmt. The 'type' field contains the OID of the Evidence format and it is
set to tcg-attest-tpm-certify. The content of the structure shown below is placed into
the stmt, which is a concatenation of existing TPM2 structures. These structures
will be explained in the rest of this section.</t>

<figure><artwork><![CDATA[
Tcg-csr-tpm-certify ::= SEQUENCE {
  tpmSAttest       OCTET STRING,
  signature        OCTET STRING,
  tpmTPublic       OCTET STRING OPTIONAL
}
]]></artwork></figure>

</section>
<section anchor="introduction-to-tpm2-concepts"><name>Introduction to TPM2 concepts</name>

<t>The definitions in the following sections are specified by the Trusted Computing Group (TCG). TCG specification including the TPM2 set of specifications <xref target="TPM20"/>, specifically Part 2 defines the TPM 2.0 structures.
Those familiar with TPM2 concepts may skip to <xref target="appdx-tcg-attest-tpm-certify"/> which defines an ASN.1 structure
specific for bundling a TPM attestation into an EvidenceStatement, and <xref target="appdx-tpm-example"/> which provides the example.
For those unfamiliar with TPM2 concepts this section provides only the minimum information to understand TPM2
Attestation in CSR and is not a complete description of the technology in general.</t>

</section>
<section anchor="tcg-objects-and-key-attestation"><name>TCG Objects and Key Attestation</name>

<t>This provides a brief explanation of the relevant TPM2 commands and data
structures needed to understand TPM2 Attestation used in this RFC.
NOTE: The TPM2 specification used in this explanation is version 1.59,
section number cited are based on that version. Note also that the TPM2
specification comprises four documents: Part 1: Architecture; Part 2: Structures;
Part 3: Commands; Part 4: Supporting Routines.</t>

<t>Note about convention:
All structures starting with TPM2B_ are:</t>

<t><list style="symbols">
  <t>a structure that is a sized buffer where the size of the buffer is contained in a 16-bit, unsigned value.</t>
  <t>The first parameter is the size in octets of the second parameter. The second parameter may be any type.</t>
</list></t>

<t>A full explanation of the TPM structures is outside the scope of this document. As a
simplification references to TPM2B_ structures will simply use the enclosed
TPMT_ structure by the same name following the '_'.</t>

<section anchor="tpm2-object-names"><name>TPM2 Object Names</name>

<t>All TPM2 Objects (e.g., keys are key objects which is the focus of this specification).
A TPM2 object name is persistent across the object's life cycle whether the TPM2
object is transient or persistent.</t>

<t>A TPM2 Object name is a concatenation of a hash algorithm identifier and a hash of
the TPM2 Object's TPMT_PUBLIC.</t>

<figure><artwork><![CDATA[
     Name ≔ nameAlg || HnameAlg (handle→publicArea)
     nameAlg is a TCG defined 16 bit algorithm identifier
]]></artwork></figure>

<t>publicArea is the TPMT_PUBLIC structure for that TPM2 Object.</t>

<t>The size of the Name field can be derived by examining the nameAlg value, which defines
the hashing algorithm and the resulting size.</t>

<t>The Name field is returned in the TPM2B_ATTEST data field.</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPM_GENERATED magic;
          TPMI_ST_ATTEST type;
          TPM2B_NAME qualifiedSigner;
          TPM2B_DATA extraData;
          TPMS_CLOCK_INFO clockInfo;
          UINT64 firmwareVersion;
          TPMU_ATTEST attested;
     } TPMS_ATTEST;
]]></artwork></figure>

<t>where for a key object the attested field is</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPM2B_NAME name;
          TPM2B_NAME qualifiedName;
     } TPMS_CERTIFY_INFO;
]]></artwork></figure>

</section>
<section anchor="tpm2-public-structure"><name>TPM2 Public Structure</name>

<t>Any TPM2 Object has an associated TPM2 Public structure defined
as TPMT_PUBLIC. This is defined below as a 'C' structure. While there
are many types of TPM2 Objects each with its own specific TPMT_PUBLIC
structure (handled by the use of 'unions') this document will specifically
define TPMT_PUBLIC for a TPM2 key object.</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPMI_ALG_PUBLIC type;
          TPMI_ALG_HASH nameAlg;
          TPMA_OBJECT objectAttributes;
          TPM2B_DIGEST authPolicy;
          TPMU_PUBLIC_PARMS parameters;
          TPMU_PUBLIC_ID unique;
     } TPMT_PUBLIC;
]]></artwork></figure>

<t>Where:
* type and nameAlg are 16 bit TCG defined algorithms.
* objectAttributes is a 32 bit field defining properties of the object, as shown below</t>

<figure><artwork><![CDATA[
     typedef struct TPMA_OBJECT {
          unsigned Reserved_bit_at_0 : 1;
          unsigned fixedTPM : 1;
          unsigned stClear : 1;
          unsigned Reserved_bit_at_3 : 1;
          unsigned fixedParent : 1;
          unsigned sensitiveDataOrigin : 1;
          unsigned userWithAuth : 1;
          unsigned adminWithPolicy : 1;
          unsigned Reserved_bits_at_8 : 2;
          unsigned noDA : 1;
          unsigned encryptedDuplication : 1;
          unsigned Reserved_bits_at_12 : 4;
          unsigned restricted : 1;
          unsigned decrypt : 1;
          unsigned sign : 1;
          unsigned x509sign : 1;
          unsigned Reserved_bits_at_20 : 12;
     } TPMA_OBJECT;
]]></artwork></figure>

<t><list style="symbols">
  <t>authPolicy is the Policy Digest needed to authorize use of the object.</t>
  <t>Parameters are the object type specific public information about the key.
  <list style="symbols">
      <t>For key objects, this would be the key's public parameters.</t>
    </list></t>
  <t>unique is the identifier for parameters</t>
</list></t>

<t>The size of the TPMT_PUBLIC is provided by the following structure:</t>

<figure><artwork><![CDATA[
     typedef struct {
          UINT16     size;
          TPMT_PUBLIC publicArea;
     } TPM2B_PUBLIC;
]]></artwork></figure>

</section>
<section anchor="tpm2-signatures"><name>TPM2 Signatures</name>

<t>TPM2 signatures use a union where the first field (16 bits) identifies
the signature scheme. The example below shows an RSA signature where
TPMT_SIGNATURE-&gt;sigAlg will indicate to use TPMS_SIGNATURE_RSA
as the signature.</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPMI_ALG_SIG_SCHEME sigAlg;
          TPMU_SIGNATURE signature;
     } TPMT_SIGNATURE;

     typedef struct {
          TPMI_ALG_HASH hash;
          TPM2B_PUBLIC_KEY_RSA sig;
     } TPMS_SIGNATURE_RSA;
]]></artwork></figure>

</section>
<section anchor="attestation-key"><name>Attestation Key</name>

<t>The uniquely identifying TPM2 key is the Endorsement Key (the EK). As this is a privacy
sensitive key, the EK is not directly used to attest to any TPM2 asset. Instead,
the EK is used by an Attestation CA to create an Attestation Key (the AK). The AK is
assumed trusted by the Verifier and is assume to be loaded in the TPM during the execution
of the process described in the subsequent sections. The description of how to create the AK is outside
the scope of this document.</t>

</section>
<section anchor="attester-processing"><name>Attester Processing</name>

<t>The only signed component is the TPM2B_ATTEST structure, which returns
only the (key's) Name and the signature computed over the Name but no detailed information
about the key. As the Name is comprised of public information, the Name can
be calculated by the Verifier but only if the Verify knows all the public
information about the Key.</t>

<t>The Attester's processing steps are as follows:</t>

<t>Using the TPM2 command TPM2_Certify obtain the TPM2B_ATTEST and TPMT_SIGNATURE structures
from the TPM2. The signing key for TPMT_SIGNATURE is an Attention Key (or AK), which is
assumed to be available to the TPM2 upfront. More details are provided in <xref target="attestation-key"/></t>

<t>The TPM2 command TPM2_Certify takes the following input:</t>

<t><list style="symbols">
  <t>TPM2 handle for Key (the key to be attested to)</t>
  <t>TPM2 handle for the AK (see <xref target="attestation-key"/>)</t>
</list></t>

<t>It produces the following output:</t>

<t><list style="symbols">
  <t>TPM2B_ATTEST in binary format</t>
  <t>TPMT_SIGNATURE in binary format</t>
</list></t>

<t>Then, using the TPM2 command TPM2_ReadPublic obtain the Keys TPM2B_PUBLIC structure.
While the Key's public information can be obtained by the Verifier in a number
ways, such as storing it from when the Key was created, this may be impractical
in many situations. As TPM2 provided a command to obtain this information, this
specification will include it in the TPM2 Attestation CSR extension.</t>

<t>The TPM2 command TPM2_ReadPublic takes the following input:</t>

<t><list style="symbols">
  <t>TPM2 handle for Key (the key to be attested to)</t>
</list></t>

<t>It produces the following output:</t>

<t><list style="symbols">
  <t>TPM2B_PUBLIC in binary format</t>
</list></t>

</section>
<section anchor="verifier-processing"><name>Verifier Processing</name>

<t>The Verifier has to perform the following steps once it receives the Evidence:</t>

<t><list style="symbols">
  <t>Verify the TPM2B_ATTEST using the TPMT_SIGNATURE.</t>
  <t>Use the Key's "expected" Name from the provided TPM2B_PUBLIC structure.
If Key's "expected" Name equals TPM2B_ATTEST-&gt;attestationData then returned TPM2B_PUBLIC is the verified.</t>
</list></t>

</section>
</section>
<section anchor="appdx-tpm-example"><name>Sample CSR</name>

<t>This CSR demonstrates a certification request for a key stored in a TPM using the following structure:</t>

<figure><artwork><![CDATA[
CSR {
  attributes {
    id-aa-evidence {
      EvidenceBundle {
        Evidences {
          EvidenceStatement {
            type: tcg-attest-tpm-certify,
            stmt: <TcgAttestTpmCertify_data>
            hint: "tpmverifier.example.com"
          }
        },
        certs {
          akCertificate,
          caCertificate
        }
      }
    }
  }
}
]]></artwork></figure>

<t>Note that this example demonstrates most of the features of this specification:</t>

<t><list style="symbols">
  <t>The data type is identified by the OID id-TcgCsrCertify contained in the <spanx style="verb">EvidenceStatement.type</spanx> field.</t>
  <t>The signed evidence is carried in the <spanx style="verb">EvidenceStatement.stmt</spanx> field.</t>
  <t>The <spanx style="verb">EvidenceStatement.hint</spanx> provides information to the Relying Party about which Verifier (software) will be able to correctly parse this data. Note that the <spanx style="verb">type</spanx> OID indicates the format of the data, but that may itself be a wrapper format that contains further data in a proprietary format. In this example, the hint says that software from the package <spanx style="verb">"tpmverifier.example.com"</spanx> will be able to parse this data.</t>
  <t>The evidence statement is accompanied by a certificate chain in the <spanx style="verb">EvidenceBundle.certs</spanx> field which can be used to verify the signature on the evidence statement. How the Verifier establishes trust in the provided certificates is outside the scope of this specification.</t>
</list></t>

<t>This example does not demonstrate an EvidenceBundle that contains multiple EvidenceStatements sharing a certificate chain.</t>

<figure><artwork><![CDATA[
-----BEGIN CERTIFICATE REQUEST-----
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
k6F7pHkwdzELMAkGA1UEBhMCWloxETAPBgNVBAgMCFByb3ZpbmNlMREwDwYDVQQH
DAhMb2NhbGl0eTETMBEGA1UECgwKaWV0Zi1sYW1wczEXMBUGA1UECwwOaWV0Zi1s
YW1wcy1jc3IxFDASBgNVBAMMC3Rlc3Qtcm9vdENBghR5pP+xxKsc67pLOqPiIZSU
4fgpzDAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDAQBgNVHSUECTAHBgVngQUI
AzAdBgNVHQ4EFgQUH4QfxvcmPg9x21uQW5cfGyfxbMcwDQYJKoZIhvcNAQELBQAD
ggEBAC3Zz6B+u1H+72CG0j/s6lRPX/YP/DPjh5IIt9HdOJaWc5lsbCvgHSED7N/+
voCfCRf7IU2Oh5+2q9+9N5ARinXPmrsPZNyLR8vWkb27/hl9OTi0Ly7DtJMtUJTR
zq53dZc7kdTDNYpPnbIbanSOW3lSL5E173C8wyTsp/vQKteYTfmsDKw9hXHIU2eS
eUpZmKcHShXlbDEEbTuYLJMDASKmMCmPjIgJrSX/18wEoAgo2BVjjzwfhoc2SLnQ
dikvN6oa6Ee0zYRiImXpM7cuErC88jOr0quURA1U8fsQd8hYGRUk/6oPMXzIfZKs
z/yzAUQ570+mkdd2iFVlqTCQ9eUwggN1MIICXQIUeaT/scSrHOu6Szqj4iGUlOH4
KcwwDQYJKoZIhvcNAQELBQAwdzELMAkGA1UEBhMCWloxETAPBgNVBAgMCFByb3Zp
bmNlMREwDwYDVQQHDAhMb2NhbGl0eTETMBEGA1UECgwKaWV0Zi1sYW1wczEXMBUG
A1UECwwOaWV0Zi1sYW1wcy1jc3IxFDASBgNVBAMMC3Rlc3Qtcm9vdENBMB4XDTI0
MTAyMTIwMTcwOFoXDTI0MTEyMDIwMTcwOFowdzELMAkGA1UEBhMCWloxETAPBgNV
BAgMCFByb3ZpbmNlMREwDwYDVQQHDAhMb2NhbGl0eTETMBEGA1UECgwKaWV0Zi1s
YW1wczEXMBUGA1UECwwOaWV0Zi1sYW1wcy1jc3IxFDASBgNVBAMMC3Rlc3Qtcm9v
dENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxPODF6ujxbdDWuXn
zlqzYIO4rpQKolKfKbOFUCB6SjdA5XzArLTSYKD3ZXhqm7unFkmHC2HtqArq5jgv
cQ2fzJeNGbcuyJYSwa9WJjJ5qY6gXEY+G7sFgZ5ZeEWGQ+zjrnuJh/PtlhJ2/R7w
tdC82DAULaxnFjOS6Xm6pUB8RaZEtZ6HwfPUXYgeK9IRG2CbEs8jkoBQTrSKpdpC
0myJrrS0PoTFClDpq61je7uQgU6b9IAOfXi1oX5NdYcfqxcPch4wqbkldKsjC/i7
xMcem8hnb3WUvAmbsLP1I0Fx8nb0ug/T2ED5U9tPBXbKgeD72aU2L9GNs+ypE9Az
bTB6cwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBFBMAGsP1xKq4R4bzbWnQ4K2H+
rYNi8UEQzxN6BiANi9+8hbLHfx6gFZlz+QxwVyH6oQnNrsVVDVjEYH4/yvy7NdOx
VitFfqOYwyaNeK5oXx1l5otOaObtwzB7RVQNSlipzEVW4RPsJmx/8F7yNLtdgooP
U0QzUSqDcoKK36E4O3s85xfyNlEdJ2vJcJ/ZZx5QQlnhNTf5bWlr3U9x6DebeAqs
+wvvepdaNzulHBXaKIqAgSx9N+Y22vj+vw8GO4L8HndDPMhdE/Ct1h1yygm65j6h
aCmQRUTKzj49q6W4NHG7iPea+7bgMq7G4LRo9DSFEfMWOkQeVUSPPiTsaAahMAsG
CSqGSIb3DQEBCwOCAQEA1aPYnm8suCRwMTC7kOdOjvVP2+2pHxsI5vnLfffFgsaN
yoOz97t6bAmQXPQCEcjCQZqAynuJQITBbf5OowrNCOL8YRLaFu2zUS8H+XJUIU0I
YSs3H8UyfeYo5VDKJClU/OcSzGgGm6J9JDQiHUuEFrqbpE19aSztpXrEH9YYP87A
NyW9vxpLse2rpE4akcp+V+C958KJEoYQc9EfjvM3LqLmzp7pvyUalv21BbOweK8V
IYVK7djq+LCmYwJwdKrOYWmrDyH8P+me8nPtk9BdcvW+sj2qu/opZmYEL4KAqAvi
BW5TzPFUgQhmMalis/J4WY3Q0tvOMXRQQZCmO2N4Pg==
-----END CERTIFICATE REQUEST-----
]]></artwork></figure>

</section>
</section>
<section anchor="psa-attestation-token-in-csr"><name>PSA Attestation Token in CSR</name>

<t>The Platform Security Architecture (PSA) Attestation Token is
defined in <xref target="I-D.tschofenig-rats-psa-token"/> and specifies
claims to be included in an Entity Attestation
Token (EAT). <xref target="I-D.bft-rats-kat"/> defines key attestation
based on the EAT format. In this section the platform
attestation offered by <xref target="I-D.tschofenig-rats-psa-token"/>
is combined with key attestation by binding the
key attestation token (KAT) to the platform attestation token (PAT)
with the help of the nonce. For details see <xref target="I-D.bft-rats-kat"/>.
The resulting KAT-PAT bundle is, according to
<xref section="5.1" sectionFormat="of" target="I-D.bft-rats-kat"/>, combined in a CMW collection
<xref target="I-D.ietf-rats-msg-wrap"/>.</t>

<t>The encoding of this KAT-PAT bundle is shown in the example below.</t>

<figure><artwork><![CDATA[
EvidenceBundle
   +
   |
   + Evidences
   |
   +---->  EvidenceStatement
        +
        |
        +-> type: OID for CMW Collection
        |         1 3 6 1 5 5 7 1 TBD
        |
        +-> stmt: KAT/PAT CMW Collection
]]></artwork></figure>

<t>The value in EvidenceStatement-&gt;stmt is based on the
KAT/PAT example from <xref section="6" sectionFormat="of" target="I-D.bft-rats-kat"/> and
the result of CBOR encoding the CMW collection shown below
(with line-breaks added for readability purposes):</t>

<figure><artwork><![CDATA[
{
  "kat":
    h'd28443A10126A058C0A30A5820B91B03129222973C214E42BF31D68
      72A3EF2DBDDA401FBD1F725D48D6BF9C8171909C4A40102200121
      5820F0FFFA7BA35E76E44CA1F5446D327C8382A5A40E5F29745DF
      948346C7C88A5D32258207CB4C4873CBB6F097562F61D5280768C
      D2CFE35FBA97E997280DBAAAE3AF92FE08A101A40102200121582
      0D7CC072DE2205BDC1537A543D53C60A6ACB62ECCD890C7FA27C9
      E354089BBE13225820F95E1D4B851A2CC80FFF87D8E23F22AFB72
      5D535E515D020731E79A3B4E47120584056F50D131FA83979AE06
      4E76E70DC75C070B6D991AEC08ADF9F41CAB7F1B7E2C47F67DACA
      8BB49E3119B7BAE77AEC6C89162713E0CC6D0E7327831E67F3284
      1A',
  "pat":
    h'd28443A10126A05824A10A58205CA3750DAF829C30C20797EDDB794
      9B1FD028C5408F2DD8650AD732327E3FB645840F9F41CAB7F1B7E
      2C47F67DACA8BB49E3119B7BAE77AEC6C89162713E0CC6D0E7327
      831E67F32841A56F50D131FA83979AE064E76E70DC75C070B6D99
      1AEC08AD'
}
]]></artwork></figure>

</section>
</section>
<section anchor="asn1-module"><name>ASN.1 Module</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

CSR-ATTESTATION-2023
  { iso(1) identified-organization(3) dod(6) internet(1) security(5)
  mechanisms(5) pkix(7) id-mod(0) id-mod-pkix-attest-01(TBDMOD) }

CsrAttestation DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS

Certificate, id-pkix
  FROM PKIX1Explicit-2009
    { iso(1) identified-organization(3) dod(6) internet(1) security(\
                                                                   5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51) }

CertificateChoices
  FROM CryptographicMessageSyntax-2010
    { iso(1) member-body(2) us(840) rsadsi(113549)
    pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }

EXTENSION, ATTRIBUTE, AttributeSet{}, SingleAttribute{}
  FROM PKIX-CommonTypes-2009 -- from [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1) security(\
                                                                   5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) }

id-aa
  FROM SecureMimeMessageV3dot1
    { iso(1) member-body(2) us(840) rsadsi(113549)
    pkcs(1) pkcs-9(9) smime(16) modules(0) msg-v3dot1(21) }
  ;

-- Branch for attestation statement types
id-ata OBJECT IDENTIFIER ::= { id-pkix (TBD1) }

EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
   ... -- None defined in this document --
}

EvidenceStatement ::= SEQUENCE {
   type   EVIDENCE-STATEMENT.&id({EvidenceStatementSet}),
   stmt   EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}),
   hint   UTF8String OPTIONAL
}

id-aa-evidence OBJECT IDENTIFIER ::= { id-aa 59 }

-- For PKCS#10
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundle
  COUNTS MAX 1
  IDENTIFIED BY id-aa-evidence
}

-- For CRMF
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundle
  IDENTIFIED BY id-aa-evidence
}

EvidenceBundle ::= SEQUENCE {
   evidences SEQUENCE SIZE (1..MAX) OF EvidenceStatement,
   certs SEQUENCE SIZE (1..MAX) OF CertificateChoices OPTIONAL
      -- CertificateChoices MUST NOT contain the depreciated
      -- certificate structures or attribute certificates,
      -- see Section 10.2.2 of [RFC5652]
}

END
]]></artwork></figure>

<section anchor="tcg-dice-example-in-asn1"><name>TCG DICE Example in ASN.1</name>

<t>This section gives an example of extending the ASN.1 module above to carry an existing ASN.1-based Evidence Statement.
The example used is the Trusted Computing Group DICE Attestation Conceptual Message Wrapper, as defined in <xref target="TCGDICE1.1"/>.</t>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

CsrAttestationDiceExample DEFINITIONS IMPLICIT TAGS ::= BEGIN

IMPORTS 

tcg-dice-conceptual-message-wrapper FROM TcgDiceAttestation
DiceConceptualMessageWrapper FROM TcgDiceAttestation
tcg-dice-TcbInfo FROM TcgDiceAttestation
DiceTcbInfo FROM TcgDiceAttestation
EvidenceStatementSet FROM CsrAttestation
;

tcgDiceCmwEvidenceStatementES EVIDENCE-STATEMENT ::= { 
  DiceConceptualMessageWrapper IDENTIFIED BY tcg-dice-conceptual-\
                                                    message-wrapper }

tcgDiceTcbInfoEvidenceStatementES EVIDENCE-STATEMENT ::= {
  DiceTcbInfo IDENTIFIED BY tcg-dice-TcbInfo }
-- where ConceptualMessageWrapper, tcg-dice-conceptual-message-\
                           wrapper, DiceTcbInfo, and tcg-dice-TcbInfo
-- are defined in DICE-Attestation-Architecture-Version-1.1-Revision\
                                                     -18_6Jan2024.pdf

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
  tcgDiceEvidenceStatementES, 
  tcgDiceTcbInfoEvidenceStatementES 
  ...
}
END

TcgDiceAttestation DEFINITIONS AUTOMATIC TAGS ::= BEGIN

EXPORTS ALL;

tcg OBJECT IDENTIFIER ::= { 2 23 133 }
tcg-dice OBJECT IDENTIFIER ::= { tcg platformClass(5) dice(4) }
tcg-dice-TcbInfo OBJECT IDENTIFIER ::= { tcg-dice tcbinfo(1) }
tcg-dice-endorsement-manifest-uri OBJECT IDENTIFIER ::= { tcg-dice \
                                                    manifest-uri(3) }
tcg-dice-Ueid OBJECT IDENTIFIER ::= { tcg-dice ueid(4) }
tcg-dice-MultiTcbInfo OBJECT IDENTIFIER ::= {tcg-dice multitcbinfo(5\
                                                                  ) }
tcg-dice-UCCS-evidence OBJECT IDENTIFIER ::= {tcg-dice uccs-evidence\
                                                                (6) }
tcg-dice-manifest-evidence OBJECT IDENTIFIER ::= {tcg-dice manifest-\
                                                       evidience(7) }
tcg-dice-MultiTcbInfoComp OBJECT IDENTIFIER ::= {tcg-dice \
                                                multitcbinfocomp(8) }
tcg-dice-conceptual-message-wrapper OBJECT IDENTIFIER ::= { tcg-\
                                                        dice cmw(9) }
tcg-dice-TcbFreshness OBJECT IDENTIFIER ::= { tcg-dice tcb-freshness\
                                                               (11) }

DiceConceptualMessageWrapper ::= SEQUENCE {
  cmw OCTET STRING
}

DiceTcbInfo ::= SEQUENCE {
  vendor [0] IMPLICIT UTF8String OPTIONAL,
  model [1] IMPLICIT UTF8String OPTIONAL,
  version [2] IMPLICIT UTF8String OPTIONAL,
  svn [3] IMPLICIT INTEGER OPTIONAL,
  layer [4] IMPLICIT INTEGER OPTIONAL,
  index [5] IMPLICIT INTEGER OPTIONAL,
  fwids [6] IMPLICIT FWIDLIST OPTIONAL,
  flags [7] IMPLICIT OperationalFlags OPTIONAL,
  vendorInfo [8] IMPLICIT OCTET STRING OPTIONAL,
  type [9] IMPLICIT OCTET STRING OPTIONAL,
  flagsMask [10]IMPLICIT OperationalFlagsMask OPTIONAL,
  integrityRegisters [11] IMPLICIT IrList OPTIONAL
}

FWIDLIST ::= SEQUENCE SIZE (1..MAX) OF FWID
  FWID ::= SEQUENCE {
  hashAlg OBJECT IDENTIFIER,
  digest OCTET STRING
}

OperationalFlags ::= BIT STRING {
  notConfigured (0),
  notSecure (1),
  recovery (2),
  debug (3),
  notReplayProtected (4),
  notIntegrityProtected (5),
  notRuntimeMeasured (6),
  notImmutable (7),
  notTcb (8),
  fixedWidth (31)
}

OperationalFlagsMask ::= BIT STRING {
  notConfigured (0),
  notSecure (1),
  recovery (2),
  debug (3),
  notReplayProtected (4),
  notIntegrityProtected (5),
  notRuntimeMeasured (6),
  notImmutable (7),
  notTcb (8),
  fixedWidth (31)
}

IrList ::= SEQUENCE SIZE (1..MAX) OF IntegrityRegister

IntegrityRegister ::= SEQUENCE {
  registerName IA5String OPTIONAL,
  registerNum INTEGER OPTIONAL,
  hashAlg OBJECT IDENTIFIER,
  digest OCTET STRING
}

EndorsementManifestURI ::= SEQUENCE {
  emUri UTF8String
}

TcgUeid ::= SEQUENCE {
  ueid OCTET STRING
}

DiceTcbInfoSeq ::= SEQUENCE SIZE (1..MAX) OF DiceTcbInfo

DiceTcbInfoComp ::= SEQUENCE SIZE (1..MAX) OF TcbInfoComp

TcbInfoComp ::= SEQUENCE {
  commonFields [0] IMPLICIT DiceTcbInfo,
  evidenceValues [1] IMPLICIT DiceTcbInfoSeq
}

UccsEvidence ::= SEQUENCE {
  uccs OCTET STRING
} 

Manifest ::= SEQUENCE {
  format ManifestFormat,
  manifest OCTET STRING
}

ManifestFormat ::= ENUMERATED {
  swid-xml    (0),
  coswid-cbor (1),
  coswid-json (2),
  tagged-cbor (3)
}

DiceTcbFreshness ::= SEQUENCE {
  nonce OCTET STRING
}
END
]]></artwork></figure>

</section>
<section anchor="tcg-dice-tcbinfo-example-in-csr"><name>TCG DICE TcbInfo Example in CSR</name>

<t>This section gives an example of extending the ASN.1 module above to carry an existing ASN.1-based evidence statement.
The example used is the Trusted Computing Group DiceTcbInfo, as defined in <xref target="TCGDICE1.1"/>.</t>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

﻿// SET of CSR Attributes
A0 82 00 8E
  // CSR attributes
  30 82 00 8A
    // OBJECT IDENTIFIER id-aa-evidence (1 2 840 113549 1 9 16 2 59)
    06 0B 2A 86 48 86 F7 0D 01 09 10 02 3B
      // SET -- This attribute
      31 79
        // EvidenceBundles ::= SEQUENCE SIZE (1..MAX) OF \
                                                       EvidenceBundle
        30 77
          // EvidenceBundle ::= SEQUENCE
          30 75
            // EvidenceStatements ::= SEQUENCE SIZE (1..MAX) OF \
                                                    EvidenceStatement
            30 73
              // EvidenceStatement ::= SEQUENCE
              30 71
                // type: OBJECT IDENTIFIER tcg-dice-TcbInfo (2.23.\
                                                           133.5.4.1)
                06 06 67 81 05 05 04 01
                // stmt: SEQUENCE
                30 4E
                  // CONTEXT_SPECIFIC | version (02)
                  // version = ABCDEF123456
                  82 0C 41 42 43 44 45 46 31 32 33 34 35 36
                  // CONTEXT_SPECIFIC | svn (03)
                  // svn = 4
                  83 01 04
                  // CONTEXT_SPECIFIC | CONSTRUCTED | fwids (06)
                  A6 2F
                  // SEQUENCE
                  30 2D
                    // OBJECT IDENTIFIER SHA256
                    06 09 60 86 48 01 65 03 04 02 01
                    // OCTET STRING
                    // fwid = 0x0000....00
                    04 20 00 00 00 00 00 00 00 00
                    00 00 00 00 00 00 00 00
                    00 00 00 00 00 00 00 00
                    00 00 00 00 00 00 00 00
                  // CONTEXT_SPECIFIC | vendorInfo (08)
                  // vendor info = 0x00000000
                  88 04 00 00 00 00
                  // CONTEXT_SPECIFIC | type (09)
                  // type = 0x00000000
                  89 04 00 00 00 00
                // hint: UTF8STRING "DiceTcbInfo.example.com"
                0C 17 44 69 63 65 54 63 62 49 6e 66 6f
                2e 65 78 61 6d 70 6c 65 2e 63 6f 6d

// BER only
A0 82 00 8E 30 82 00 8A 06 0B 2A 86 48 86 F7 0D 
01 09 10 02 3B 30 7B 31 79 30 77 30 75 30 73 30 
71 06 06 67 81 05 05 04 01 30 4E 82 0C 41 42 43 
44 45 46 31 32 33 34 35 36 83 01 04 A6 2F 30 2D 
06 09 60 86 48 01 65 03 04 02 01 04 20 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 88 04 00 
00 00 00 89 04 00 00 00 00 0C 17 44 69 63 65 54 
63 62 49 6e 66 6f 2e 65 78 61 6d 70 6c 65 2e 63 
6f 6d
]]></artwork></figure>

</section>
</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>This specification is the work of a design team created by the chairs of the
LAMPS working group. The following persons, in no specific order,
contributed to the work: Richard Kettlewell, Chris Trufan, Bruno Couillard,
Jean-Pierre Fiset, Sander Temme, Jethro Beekman, Zsolt Rózsahegyi, Ferenc
Pető, Mike Agrenius Kushner, Tomas Gustavsson, Dieter Bong, Christopher Meyer,
Michael StJohns, Carl Wallace, Michael Richardson, Tomofumi Okubo, Olivier
Couillard, John Gray, Eric Amador, Johnson Darren, Herman Slatman, Tiru Reddy,
Corey Bonnell, Argenius Kushner, James Hagborg, A.J. Stein, John Kemp, Ned
Smith.</t>

<t>We would like to specifically thank Mike StJohns for his work on an earlier
version of this draft.</t>

<t>We would also like to specifically thank Monty Wiseman for providing the
appendix showing how to carry a TPM 2.0 Attestation, and to Corey Bonnell for helping with the hackathon scripts to bundle it into a CSR.</t>

<t>Finally, we would like to thank Andreas Kretschmer, Hendrik Brockhaus, David von Oheimb,
and Thomas Fossati for their feedback based on implementation experience, and Daniel Migault and Russ Housley
for their review comments.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA9y92XLjWpYo9o6vwM0TcVMqiRTnQaerusBJoiSKEgdN51af
BEmQhEQSTAAkRWVmx31yhB89vPjN/+BHPzjCDv9I/4B/wWutPWADBJWZp6rv
vba6+qQEbOxx7TUPiURC821/Zp3qH/qepTtjvWPNHd/SDd+3PN/0bWehb2x/
qlct17fH9pA96tqThb2YQOvPK2jnfdDMwcC11tDP3g66HWgG31sTx92e6p4/
0rSRM1yYcxh+5JpjP2Fb/jgxM+dLLzH03IQZ9AFP8XfNWw3mtufBE3+7hO+a
9V5DW6zmA8s91UbQ5lQbOgvPWngr71T33ZWlwaSy2i+66VrmqW506gb8sXHc
l4nrrJan+v2Zfg9/4WrO8In2Ym3h9ehU0xP6zWWT/VPt/pJO4a/VTquB/yrr
wz/ra3tkLYYWNZFbZe1slLa2FiuY5C+6zse/Mlo3XfybLSg8F3g8N+0Z7NbS
9OZ/xf1JOu4En5vucHqqT31/6Z2enMDSTd81hy+WmxStTjaTE9rME3PgrPwT
DcaEk1gN4JTYJkODyD5/gEZsq6GR6Fw0TrLPk7YT/ezke+eXnPrz2QdNM1f+
1IGj0vUE/L+u2ws4plZSb68WHuy6P6WnDCZa9osVeQGrOtXrCzhXz9ev7Lnt
WyN6IcCPv6Nnnu9aFqwjk0+l9K4zMxcjX+845kj/t//8P+ndFXysp1Mpaju0
fYDJtu+bG/NYby9807Ud9sZZQZ/wsmouzJHJn41gfpeZSz17lqcnFjumOUw5
6Ygp/9Vis0kOnblcMVvbublYWJ7e84ZTZ2wt7IlYnrmw32jHTgF2rDkAsto/
+ywZfPbXyfw1ubD8aPfW4kWv2O7L1Jm9BTvXcM3VAr909W6zF9q4mFd8zCn0
lRzwvv7q2X5yLNsmR1ZoqztTC04UANEDbFLMK5v1sZDLlPMflc2ume4coGPk
h7f5zHLn5mK7AyH3tgcTWqjwgUgg9JwWWbG2zmKkN+E+Am7bhnvvd43QeWEX
yQ3r4q8D+tLmH4ZOjWZxndS7AHIqjF5bI+UZjd9c+NZMrzru0nE5fgjNYIFA
q3d9vGXqXBbWKOlhV3+1sQcaXls4sBu+vbbwynQa1XI2m+O/FjKFEv81X05n
+K+5TDrNf82USwXRIFNKnWqavRhH+iulM9SmmagR3kjAlL3E3JskNq65FG8G
cLfpxYvp8w+LqWxKvPYlOLJWS89M+M6LtcAGvZtWhloCrMnLLzerh/cDtqPq
zJcrP0B82IBTJtHkBvASTh/OfbSaWXD9B67pbvXu0hpKynSsN8y5PdvqmSS7
2HCRJwiZApf5rLehGI+wMGFL1/KclTu0TvzlPDFjnSc8tXPEoNVupbN3NVXj
pOI6Gw8uUcNxV3N1GRXTs2b2wiJSYLt4tX1PhwXB2kdWQhAKhXh4x/o6mU0W
qReibXrDGrgrXHSmdKxnUplc7BqH5mCMw9OyVssZoDzvRIyfUMdPQLuEP7US
Tc9bmUC/EoAkEy3AdBNqkHDGCXV6yTXMJ7kcjfFgq2cda2J7CNX7NuTDnvP9
oO7MB+hJbzdruujuwx8+ueEk4dijhMs7OlG2rj30HeAS5LbBoLVmtZ5Opv/O
2WMvIXbHAMoMd3zor1zrZ5eyWSaAf/Fh6+XBYf8Jpf+E2n/iznKRG0rAOuBk
1zb7o/T7Eug0OyexARfmAkFHbgAyNen9i28b3WY3tFD8QP8lndar7nbpOxNA
EFN7qPfwphPWc8fm0CJAD19KnU8SLmUu9UGZUjqnG0vXnsGU0vmdnUK2xhl6
Scf0bC/hLK0FbdHyZeil0/yfxABGO1ljxyeOpz5M0MOE4xHrAZ13gS+ZWTVg
lE5DywLGNHR8rJ2ODeNPj3NBcHon+9iohPVKvXialkgkgMgiTRz6mmYgS6lb
QJ8YkdFdxhgibJn6UOEcx64zh0dhvtugc8LvDqrGIfCGW2CuvanuO8C7I+0m
yCLmY6sPZ6Y993Ri/nS45PpSYNCJtbCQNsGg+HwYGoPPSAdMQG+txdp2nQWi
Ax3oujO0TbwTxNTT144LF3CJlBP6g+Nc4/SBiz7WvdVwCt/om6kFLV02iaAB
DOUBtfV0GNXUp6Y72gCXrnvWcEVrnBOiT2pab2p7eggV6yNrbCMHZcKnvu/a
gxX0iVOGB9YrXCACOH9qwqRnM2dDmBau1traIp5DUUfw7EDc3+XZYa9BdjmU
q+HSgI6oW/mMN9dblucB+kQKAKQWPgaJ4VBfmlu6zrAXNnSzdJ01LR2nO7OA
7WMbDhfRga/MAUDg3BpOgR305jR3AKAF7LJLpyanDge/F0Zg45qL4Ww1Cn1h
zhz4k07PRKFMH8IUptZsiX3Zc5yYRQeFPJzn0bHDZuETeTBLx0Pkw+YVPtNj
WkbQJ7zdB8I4dxpDwoft6x608sY27Ax+ymERwE29GjDHsQ2AofemFuAaubQq
A3gc3KaF49FyjgdBTF4ECWqIgZ0FLPGjB5dpsQIEhgsDKoHN1hxtwfKRqwU4
gonAkt3VggBkbLtz7GanteeMfeo/9jMAt5m5hdY4I77ZQVdyS2FpHFB3p+tx
AMLuxL3AR0gVcA5Dc2kO7Jnt40ZCj97UtmYjmMbMYccAQG0lJ8ljPAT+HZ6e
dwhAQyhrbo9GM0sDSRMwuwsXkTrWtHsQB/4upAUAEsWBKhoTBycPdQf2XKAE
LlsYnAtshYKgPNxcdsMicOnphFp8x4VdsDlm4OtIMgQjh0QAGsAFWC5dE0SD
kT7Ycgpp+8Q8s4nbyKEJpGAK7mVnzR1A1HAEsCsGna6CQzkfgPQRtosgAk7W
dOnGrc2ZPWJImgG0M8ff1e2WqHpiIqSBeL+G0wldFWdmD2GiSZzeCvC/A8zj
wBnh9uGGDGDSDCph713GGeIWw/gq4DFEvRhuGRqFAWBAJDCeJ8+ZzmMYYg1w
35NAXOkwfHtOp7mBbYEB2aWZAybRFw5DeJxo6ja7/CG+OJ59/vIF+fFv33Rg
FFaEqkCWWuDk2KlRNxGm/JgDCF+tR7dqZiMGrhoe7sMHVB+5Fqceenc18IZA
YSz33/7z/wLonwPVJRAwmCmnpdbomEPXsYYYcOUxODMZ5IbJKHU8NXFovFwz
j11Da81eWmMfAWVue9DLh/9m6d+XL1zIhP3/KVpIH6KgCh/+V6CL1OHcsugL
VwUnsUJo6FkMSzD4YZDzMQA4OBSAFaAnMwI13rRj9Loh9p8tFYX2b9+QMnJG
E0DxwN8uYWaz2VYz4TDX9tA6xNUDosXV6x4cApI9B6gHw+lwYpzA0amimhOQ
EB57QNuJwiFOFLRGgboDRO73UyCc7DpawAh+UFV/CM1wFTlo0aJg8jrO/hhJ
8wZ2BnWDrtriy5d/DusOUHpG/nuUWFjIib4k2Oo4e4z7YCPmHSO6g2MiVgNW
uMaTgTWyPWBYbyRwMDspUiwrM5YLTwJf3bFmW2x2A+iTkRTcodXMD7adfdSx
6Cnfa4bcJQYOrmaA/XGG6l2Zm6ShJdS6hb0YktClMtoBF4531OM0TOuRIKHX
FUwwsGilxAbBUGvbFAObM/WOJmGjTQWw8OaIq4IjDlBGIvo5m62ICnH4hacS
N04BDRCngsrNFQCJgxKKCrvqELDOJbtHMSQHdoqOB29Hx0CmYR+W9wCrubAY
2P7FCOgJfSceIjF3AXZQpRFzvjCT6cKZORMgVxrjpxCxJuMQIjKQ1oBQMurP
FsjtwOyRjntBR9uEOVkAzQHiBI8BEKH52ILNQ8RCTDHKMsgNMW54RpgBuvrO
7JKoch0SJ7gzszHsv8eknIP0IZeZYhExHj/iWkSGiOgYoAHZt+ewWQAlq/nS
V2CNqwoQ+zI2V3BLEinCzAPsABt/kImbgGf5jHoryidGwRDDCkaE4aDgzvVC
oiMCokBpNDHkEIBZJUrmuFEpc2n6U08DRsMXdJKhiRAbzi4STHw4dVxFIB0l
OOeoQiZdJY1BgugMOmacqrMgaWHft7a3I9qifDpHbGfD1hNW8M0XdookmcDd
we2IIBdkCnCeNt8/U2ErgfgAs8U4OmKUsR9BEASVl5eVwxARA66i4FT+APai
Lkn8+KdIL6PkxAuYrrtVaWZyhwFezswhnQ5igQDbkuqaqQMUWXJBKjy8NaQ/
H2+JDqFRizbEIcAl4ABR3174AveH8TaDa8YLSJx8IOWppTl8gUUdwpizGU6R
BB12EsA3E52wfWA5EaRVaA3mDMhxRdDlEZGAPkj7RthiwsRQZVlM9KCulE2u
Th2ELqWrhWVxhMNvCxHZOT4gjYspZ1JZLUZcdoWtSphmwpLy684x46EFZ30o
7pVHFyvSIyqXsAdO+nbunzxdwXIdExwIpltaMJEYuVI3hDwtglFY7DLDIn/M
t0KglWIxAQFtL+OYZ0qXGkdb7NaSlCRnyxmhFZ3tyEYtFx5jSNDQzNkEWbvp
3INtuOcH51kBawyLNUcjm8GgpmoF8OqvTXtGYMQAvWMQP2sISYHDCV5oDVog
xQcJVSq1AOQBM1sRQonr3RCjtqu5wF6AzM+2DAy8IWwEQ90qBrBh0kCykVQe
azNm7BS3Zg8BQZhFbr7b4ejuFTBpmDZosjHjPVhPFqEsha8TPEKIbCvkWgvR
ONz2X0BgW6AEwwgUNK9hd7TnnkbUAnEq2tY9/UOr3+19OGb/6tdt+r1Tv+03
O/Ua/t49N66u5C8ab9E9b/evasFvwZfVdqtVv66xj+GpHnqkfWgZjx+YbupD
+6bXbF8bVx92OSQEWMY0IA/hgkjmExLXgM8iEZD2plK9+T//13QOWLL/gBJQ
Ol0Gdoz9UUoXgdVH2Fiw0ZwFYDz2J2w+MPvLpWW6RPEAgwH6sn1zhtAJWw2H
jWozF+/yn37Dnfnbqf5Pg+EynfsLf4ALDj0UexZ6SHu2+2TnY7aJMY9ihpG7
GXoe2enwfI3H0N9i35WH//TPJNMn0qV//osWpYCulSC+SUgrXljukIIVNJyZ
/G4wNk1TPQ+AwpgjFDZ2LhieNjFVklUco/HQhvPBi6SRYs5B6ZmwIU7hVN61
YyaNHcfIFiAxG53DY0nbjzVByo71XRlAtCNarD5Gq5PjoZdCjeFF7QpWEvQa
ZTwYwIXp6UHn5jDJLh8T+MIyMWcWPoA4zLgFe3eTmYSf1EImHUXzRY3QHIyi
HZMPba4y5MITjqx9eEfFQBqGww/sAMcMp+5ojjXRmM81qUeF2fi1aRtnNRuB
TLdGlIf6MTRYDH2ugLI95OtIuAWZ2QHJwBol9Sbj8uaWuSBeXEPKajN1C3lM
2GwQYvKY34DQi0hRgEkXMAsm5QO+h6lxKsMoIWpenSHpf5BSrJBiKTTO2wIV
f8VT1VA1FHoHQzgjErDsBakM7eFqZrpRCJ95DjlE2XQD+M55UrXxR1Q2Grsq
H8ihi++UMuaxcl+xzQeCypiRNAFzeA25ugw+Q93OxIJ92hJNCWtTfgnJwJr2
5cvYniTwIaABxJ8MW0ztyTQxgz2boXJvvlooUgcMsRBiEsq82gB4SmQB0Wwx
tYYvaHaCDzeIiEMsOpOq5sTWRlQCSFcRQgRPa0hhJeAiUC5cDTxc/MKfkSYV
GKRRQNMFkmCSleR+hSJCWESGlr2OinXMkszUZqpnGsNHygx8VN8D2A2ZvoGr
SDvGSdVAls6RV0/hWjSbOweQQUnyUaJl/P4d71EqEEQGsg1p6QEHo6zKN56v
Z0CiErIWetdCRVqX68HyyQycnxag/zFp1xmFXgoxdbdjxhGFn2lSCRw+aEee
dUilqJ4S3EXEInCQyGfDObp4MZwB8d1BbypdiJ7DDgRw3K0R7sb57ugSVj7Q
pzep9ImFXOCUmTBBKn7grUF8kNIoSAQJuCh+gAsYoC8cviCAMHOWIDUO3UeT
GX4Glr9B5BnaJwHkck9gvkCySJsCwHLt+FyJHm1k6qg2GYIQQHI0teFcNjcA
CZ2qJmCTTFABuhmaHre7hQke9YfzksPRE9SjmktS6iLvraE0MeN2HM6Fyw/G
q8WQCQqkJjAXChuO4IuzfLGWgJ8tQLzS7MUvfuhr1T5ER4c6Tlfj3kVChSfv
YYwKJImIWAhpx5o0gwFShyu6YEKsNNyACMw5HQm2jPn3OIPDtx3oEfS6nG49
rrARSxkFaxmi0MgxWTWyLi6+Cp8PbbBVrG7hA1mScnP/NcLuOVLzCKK1OIaK
A4eqL0SzJhdO4EaMjvUB6r5R0NwSdACcac6KXJiYgMWs1Qqp4ozRyDZBjpxD
/2gnYVSErChMMEbXWn2Mr9hNCfC+FwJWU5NiF2cW6DgCJPuOfVAadkm41vYZ
LtgeW6/kTBKhQriPHKGQYpPAPGpgZNODQw3t+B4NOUdWxJd4cYJvyGiKBhWP
dD5cMS4shYGOjVERMo/ZaLqFg7A4KoyQHGnZtL1dLBnmCoPdwQElqWLIUxyt
A5d3Zm49bnlmxlum4SESRZpwOEQNjgxeo+4ARdp//dd/1U3TW0+4Y1TcTzIR
/Um+0/przBPk800FsL73+YE4zUN6Ioy/hrAb/OTwN3Rc73z0UV3cEf7n4zut
6edfRO97GkqoERP6Gnaof/8n+IhDKopbP/rRWgudWFJtQ2++8jdfd17LJnDE
oZ08Ujr8C333kb/5KJ+EmrAZQSfn3VYwQbkrbGmTpHL1wzvE2gNWpk4OBEE+
hIdM/cN7PAjh4sNgx1p0W8WufA0vZ/8f/AneQH7N/1npJAQoH9VPPiaiPx+j
vbImH/HOaV9O9V8EY8/89P78ob6Djkcg6y8YRuXKyhCnSbe7ErBIVWKRWsQK
fvhG9tuR7Q1Xnhe2dYZttoo0Jkgv04TZaxOQnEnGIqb/ZSRWilsoRqq0W0GV
QMyCD4T/DfJn/Cq71hKwFQl+Ad+LHmdjPWB7Zzba5lE6cEzYJsR+5APIzAuW
N0XTIyF8l8lYQhhkfENgrbRegWfDHUMlOmprPTIqcT0+uaUACWOcJ1krlZsa
GNYEc4sjhfZVWUE6tALYHpssAoyPe7GI95U2l5VCOyXHidvm7d231YK76bzh
wyEKOcwbQzTwuN7BdAe2TyyYMKERCyosNIINgh3Co1R4M256ZMfOtCWKYlBZ
aiay1BY6ujC5BKV8Djbo8aUJ5jI0XFgnHBYCkNFxLZBv0TsCzx0VB8wKozEX
oFgzJefayBy5p2db2Lc0aUEMM5NRs1W8FQftmNarTTotkouFsJFkDmWB9p2u
Izz8hTkQM2FDWpQAO8Y6v9gE90KdMnCgNbojmZ4UZ8hmptkec5NAM43QLzAb
FN1L+RdfxB49nFi0tnRsxqGtbWsjhEzknwmk2IRI5ahpVWUufsARSmchdS7v
ja4xrzUg7JOpzzmhU2qOlEN0x9Tt1nxAlyPKFfpRJ10txhRLOupgtwRGRZb2
B1aj7KUqjxCnqhP6TfggnDMjs6qRCcmV2C3vUzH37jsV2/WIy2UiNylrFxZe
ebzWEZcYulGrwTN3czwWnZMSA26PFmmAjxFXiGn9qprKjrlFNlj+AJ14ls6S
NHDMMqULGY9NwAz1zt0Qye2ZaQ3TgDuYQz46s3FUgyQqEESOma6anQyXqREI
0EzEfLvINHi8f9OIoHgOSPZhNz0xVWYFBzBiAE2LRI8KcTNVoyiOjFy1jv1p
3NVHKjSPA67eVu81aWKJBC19UosCHj/9Dp8dMFdH0YdHce2/8viEEOvCOK1Y
dvSrjCQKtWcszT9gPkp/4UfvNJ5YvoDgg8PvNN5hrf7yXs8/M41/2un6q3a0
84ztRGzPXwmE/iygyoK/YDlfE7GNf6rnf8wC6Y6T7eEHGv+X3eef6lnlmTES
ZTizMXhrCWglwj2rt1Gg3l20C3eFWGQgy3VuZ9C75FQ22QJBBty4WhJvYOos
9hrxesApIzvCiLEIEODaVI87yGth5bUi9w+n5N5ADkGkUJ8qbhYas5ASo4VL
RTN+gnSegDS5xw1gzTZFk0gTwHG4E91mHr8OV4gyA593SqE5zLE1cKhlftvo
hBH41Ko+GFrYByMYhbFakbch7w3uliF7iPVQwdgZazbjilv5zY4rinCftRbC
wETuPdKKLz0ANNVhi6toMdKYnYWyyjk6XpHxWtXJOtzeEXJ10LyQfj6XFLwv
Rp1yf0/YdMVMrDr64+HsbLwmwiAie08TCibBuBOFesThEEDKX+UIgXvNV03e
JRhLvaZfI243/LHs+yjUd+wFV27pQVoc26EeO7+YnuRv4fZHuz5I3ntjh3HF
z44d/vpryITX7nxv3dGv26gyVLrg5kX2NdujPzxztrmRr6nP2FM7IsLNT2Q/
yERvb6TtUYxv2dd4CFQZhX3jfffnq95DX7rwsx/6Lpjfz313biuf/PB38etT
KVSAtgV12pEImVcj4P8gtks6PDHlDSJT+gg1FcJPVzqpIipjXp7c1qnIMyp+
JZcaUiWg/YO5dxH1Ut1ax6Q+4la9fQifdBIrezYK4UaUcFC8CjkGooFiB3aY
0TfwNgloKEmAjN6ilcOM6By45JLwGPr1mBkDBW2g3ii46WklP4nO5418PMol
6qWuIu3FreXGscDRhBEXQr4jtGEwl7qw2xlJOaR5MIdTK4aqJzXuVCGWdrxr
Fgw546Bjg0Oe8YpNd6db3Zy5ljkig1a8fZaMIKqFN+yqi4jJGjvMBrrbPWmc
uM9D4Cu3CKRjFNLQa5wMvIqbLN/pqJWIszUsgoOxA6bY8R2o0MTORrw1BPJX
+A3GErGOeKyF5SpeEYw/oo2PWDbiUZamx+NAxAFHyZgf9sUuUmRfxI+hooXI
1AVuYCB8+uMQzDlXDvyZPcD/U5DvTU03bMPknsI8jDYG1oUZkIGMFwMY/Nu9
R8/jK37+0BPYcwLRzrdv2neP/13iGgsBghTEQoEAhVhIEF9+fY+ReW9C78BL
sOoQ5GSIu1V3+H0oCENPdhd6uNmwBdfdVv2mAzLLtHFo1ZtZvrU7hMfcaHb9
+zi0SbwwF2MIeEQ/0UhImDQaesHwqMUdsCDIwGEiwLoWmgukAte1AJQWzHK7
D8C1XQDXQ2hvHt2NeGkmThn5LoRLfVNEZcnFRNPbcaEIri6LFwo5kzCEzTT4
wm5CNmgMexNKSyTPCteghlJrFCsW8sLk3jZM0xXyKp8DWVHdvMRtFXslIdf7
kWv6HSb43Yv6/k2NvaoYqETGYWV75ZLT+z7KvPNRRtPfu/ehxDehUw2GJQDK
fGcvVBSxu9Uh3JA9jb3GEl7pojA0sf8yM4ShG93rZFqvMz7UI9WJ3mYa32Zg
SNt1cSaVCW7DJ3uUWL7Yr59olZ8oNOTTMTNuhFxy/wNL+ISKYmwpH2QoKjXc
v4gS5sZR+Htpc1MIfIiZuWBrTLSz0se4d4kE+lwSAx6gA5A8PA2n5Jt6u3JR
r/b0Zq1+3Ws2mvWOfnr6Z/2LzuevH/QqNYCeb/Ik1GHE/l9bG4oXEkPdXDYf
YlAp90L1hDJKNDBCIc+BpP7lF2CDZUANtoIPK1u2DzZLEBXEhIhwCVOqB5Bi
o88cLpi0Q0av12lW+r06i+cQ7UlBwBvrsnH9oVe/7jbb1wLHyFkG48erj0B0
oEuLTC5KeZ/Cl/mT+IpFuMXE9CjYn8Jzwr3I/fykxDZpIiQrKu24MaF6TLbB
DFDcHicxNFM5eYr6L25SaE+ZkhE6xvgkebnRitvQKIxLIG25jRxC63cIe9V6
otszevUWgCFBYO/xpp4IoFLb1ax10fE+/uMvKNkCPtQB/K9xh5UrF3apTiS0
CGjHjsPhPAiBiY1Gg5YI2ixUB1N+EBQHMbzqRY37GHDA3Fx6HPuggsAL39xu
6AhwN+HWgTiD8ocM1IPHc5FMBbpbwvZ7gVc2KhOFWZC8BtGrbXcpXjKeFWIX
hDsdKrvKPOAxf6d040NDFj2VD3iqimMcd20tRo4bcgEUvo1KwF6Yt8DF6jGL
5XgSXSiQVM8w48JqwZZpxp57Uj8XZvogLNilZDMas/yhi5sfGMik3yW31QUp
TrgwL6B5h4wiPHbrt30EUwaYPtP87MJu8j/ao4MvsZBxeIxfev7c3/MlQsue
b7/8FUfkXUyZGqjfa5SANtKu8kCe716EH7wFeAWa++EcVci0Ayz+gsJM6Ujh
jHngsdxvoSZYm7MVC22GDYCdxvQhIxm7SwDi2UGGHB5+KFGY8AeMd2I/1lR3
B9sK3H8wEmmrstFKaheyIOO8eDYiDA5jput490t7wXnzJHIQgZ9M2NUCGEe0
qXoWygRKIgNtEF5xNGpAoFzG9Qr1WLhv0tLzaHg1cBBEBWs25i6WH1yHcth9
kJkQKNKBLglzKiAFC3MtoehfJrjJmCjS5NmTlcvDzZH/JT47PBl0epmg0xoL
JieG7FUZQGOOR+IElZQ6MrqTnCSQp2PnPY+LHqY58gQ3wYr5ZWYBEMyCjrq5
45BKMNDlEbQinIowZW81HmMeHlRWBlKCJsxjO9vOQ5Rm6M++YoiFhaaS2AL4
D7GNDCoTHkSKLCJnQOuRrlzsqogAXOZKR7MRRhrhvc8ohBTrlN2kbEDoyYwe
btKxirSQ5lwZWCZiIl9s8uQPrZK2xrIJ30vRS4boBufBrqa1w1Og04MWckUS
m817G/HcVvil2rNyAElmzERY5aRB903vRY8/F9h+yTKNMZ8WO37Ej8ehMGIt
oiuOEYaVgM93KDw6jhkLTa6wZTyG7GZqHH1MdD5qrX36iHnLsaAfTfqjK4vj
juGh9eKH3OUb5WMKilnxs1ahmPyOFCGbZoWUmvmBYzfoKeLSOSy2ITl5n/iu
oQsZEWDsLcnzjoWOW1BdTz0Fn6n0Rfw7gPcKvUwwBg8BeAT0HDNEaZi9Vz9o
3NauDzmYrhb255UVvixmJCYLZgvHO0eg5HwSWyz244WwvfQwUr/BZqS+ITSJ
3mmIgZFIheMTQs5uv/KbKXXjeDFDETgS5c/NF86SYAgJhtb5UtXBcAZZT3Fa
tqsj7NGMMHdzEGqOrvn4mTawAMkyWRwXYGLOFPLqMfXlagBHq4s0qyI6gyVB
4FFigusDfI4z8YYgKLi2E0fDEO+4VkKhAySfmIw/QwywmyctVpVEh0Gk3xM5
LAQLO3OcF221jEWgAPyuPXzhmdYic1sQFYx4QEGz1eJlAVvIkn0tojNk9nNM
PrN2bLYpfdoHjs9opoRExEQ9dMXgNwhzJv/OdBZBUrSF9uULzH70iimWMizI
3I1g+zBLBE9QaO8NJwxemPJi+97mRShFEKXjaR9g2LXYMT4rTIL6IcLIcv3T
LhcrcLgXPO82n+r6QTqZbBkPh3q7sYvFiAVFevzeVzFaJcmjMv1SIhHXiHAF
o/gcYaiKTnSoRvJ0HPSBng6BP3Yyw1wdfkMFTCGf+RtniJny/z21ZjTGGnN5
oz6HXFHC6VlCwrktstuMTWQRH5L5VJn1wHwtJDV33EDGWjiLBGsZStXIWZo/
vi/7P8WsAOJLct6AG6C0PdbXadTN4COa6joj/kzqQdAgbgPOnQm3MXM/3mcW
o0kgH/mJ7cBv2b99khf3U7wrQhLloU94nJ/a1V69p3d7neb12SfFVxRvKvOr
QTKGAarwKzJR/AZE0rm8oygzTT1f1r9hqk2KERAFJlDVEXQQKJ+EigJ1HBFF
L+Ykb/evQUSB20CqWTlgTa88RnLMaMGYVMkCTicYT+qv5Hjdx+ue8bA74neG
CEmF0nvH2xUHSfQiPVpIoSc/EcqRQMOHHk1k84/VkQRjMY8wmQmMgFl1lccw
Ga7E80TGpkgyC26GJgrCP9m5Rp4+WsmYRhEUQvykkhSTyKU3DafhDcIvZCLU
j16QcVNJ3CcCoFG1CbcqEXSXeIXp8AhoEot44AVnbaHzT4Q6PwlSo1icWVKj
cP4uuHVaJH+ams5IBEt43MViV9Gn8RHYoXySGB9uEbAVgjHncTEoiWEX6LUd
dMFEiZjZcUmXj6BFnQHCJnU6DsaloMN1kJ5JegWoC9N2VwKMdyAyhOYRhKIS
53ocdg1H4W3KQ8CVbjGJkUtToYBLLsxNXNQbrJbIkymZzhAJBml9KbY8xv2B
qIE4X562ZUB6RBYUA/ybufKs3c/4ZuC031fa8pWGz5QNGJ+UlBKGoTUNVSxw
obmVEthR+zWau5ZsCuJe+VFQDYVOoZuppGHRPVX7RFGD7z7mLQxlj6PUivwt
bObuTU7qTWK0V8twRAbnstE+GmSJdNjh4dqkb04seSXzA8UmmD6PsWIej80H
rrWlLLoWz6PC7DjHXGeCiEDK4BuMX2XK2DXmptuxXAUnd8rc9kXub9kUxAyu
7voUojSfkAh/UmnBJ8Wmyxlq5ahCDrIS5zJKORYxXfFTiLNJKCZiYWFZ7JhA
mIQ6owQeIkPwkuxnJDCY28Dr9b2tgVMOeYspHAtB749sFsshEDIaKVTgk0qO
P6EEPTNdnoqoqRqPIprkIPPSOzMJnRGLpjKuDfSOo5hDkyfbooewSUH+dAyU
WaIIvXEAAWyE7EY5rJHtZDnL2FlrMszrQ7fVRIZ3JQOsCXB5BZbAsPkhkAW5
7kSTpncG5SyXPwMROR6HLBpuZyite9JqtuqBrc/7EEoviCtRbHmCpWYQlGQW
WD7RUOh9Qv/BRQGnpOs1wG9zc3bK9tnweDq6hP6nP3Usdk69Sq3Vrv3pT6y5
zEJyimecAB6ujkp34KoSmVQGHUqAXYLdIGMpN0wnUmn8uCOtwadMt1rjxoc9
5uTQury4he1sIa5p10yDZY72r5SmgvmRLNOdbRPi9Mjk+SlfhvvrMOq7QVBF
Gi0io4RaUMTtJvlAyh5FeEd8/8420D7sAcp3rMeyskxwM0zvhdu2XIuBfgiC
93fGAYz4D5hIggVAePJzeZ24OsGkjaQeCM6lmRyXoe0sI5jrYVBeYeViuELy
ewDpBgCZjgFHZr+PBTRh5cKXTWTNkenhzN4pGUTZZ8o1wj+wAla40ktHsHgo
M9dkUnakw4xVIDVqjBFWsZDDoYhkIjZVyNoFfG9qMl3vAH1zMULRma3mC+80
vEU95hsbZNeAxkg95EaE9qeCufC5e1f8XmGIuJB+gz1DoFTtNxJ21JpGPwR5
LPm0NVsiOltbM8yPSTQf9makQXcnSgw5s9PC2kPH4oqk7SREMHOTTJ9JrCCA
GwZYh7yINWYkUvoBoF+STZNlRTHHxAdBD8D1JDaW9aJjEjQgJDBF20EBi/r4
7TcAvr/9jaoW4oiowTsOjKLmiBLcYHUBxYsBTgGAGOep1V+XpOshZgiLk6EK
PDC9It2V2eypw5moaMFLJsDiNZnIikkAvDAYNg9G0sVIyOSSUnAd3gHN4baU
LfPA5nVJuAKWpfWJsL/CAMEFNNL6xR+OZwWKe3WraF18Y7m8g9GpEcOPCCXl
JTw+iNRtZIBkpplQkL7ArqeCof6AOQEJHoMwHwyXX/oBLK6WI+YPIniB3b0j
3SefJk8ehddSrpItRgUqh1sjaYF84RounPurh3arx0GQSbJyYlNTGHyFr/xQ
ufxwSdi9x8vHcLPwq6Ss7sxZnCUClJQsyZApugJqaOqQDErQiRcOtCfFupgS
IeYwKgHGahyXkmzlSREgGqOthbaKN4IJUO8SCx14h6fBX2JHpXeKE+Al7nog
IELj3UUSBgRyZnzOgGPOZGNCPi3g5/udpqhDENazuxYylWuVaVUnCPjKWAg1
tbJOmc5AhjHQveTZtiQvSSmeyF1Tk8oE3J4qJQ1ENhjLacws95Tkx670I+lh
bVTE38Du0kUj7rZZ7559APwCbTVC6vAWEyhwgW1uBdPjHgMzSrKF9jJg5al4
CQvSwPMDmHBH7LVaISd0rMKtREIz4QyxTuyFfR86Op5Gk8HCL5QrgZFoQVxo
4czvsEfGOfZaDiL1NrZidGTWTkqgwCJGQPxlOUWgKQoGBCkiU79UEorEk8y3
JoAIFnITCAA4Jx7mLXNK3ruY/tbVD6qte8wpGV91klwRvxKsRiKSlDsWF7Ck
XhLhVRoFDIxK3nUbjXn07uu4cGCM2v2qZ3Tg8dPZrJ7Xc3qa5oBVCUdYAaM3
HGCkU2TWX74olRS/faNnWJ0wsrpo39lw3+Qc5bGijXNzYY9RrADW8kcG2Ok7
F+67b9mj3d3+g/POh/smB9zIxvzhvguReVer3UC7/Xf2XQz3LfdY6f8P913a
vyfoefx3zbsc7jtIvpDgSVnozuGt/O4Qu/CdjsJ3QyQe+rvOMpOiq8P75jIy
FpYZcgvmvr739ZyG61KA/+bh/4r4Vx4zZYEkBhsy3+gxP1/fQU/wkvwWWe9o
6AA8mjAtrDsahDQyHFxVVOaBTvEdQUGYPEAuZK5oAomH7dqCzioJG4mHAV4O
M2pvrAFGlpCGSMqYUS2RESplSFqpuAzKMjl0qL6HR6SC0hWOWKafFfG8RDeP
AycBmW4lVAGCK/iV/PyaiGtZo5cCl2q5V4i1Uysz5ERMkYXCqYncDY4Dewwv
NSn4EzWriwz/DNTgMtdPkEAF4wR52tWghxg7DsvsrYWS1KCP3QQzNuKdY9pG
5o0zN1kiRdcKLFBBnxS5snZmayacDRzHRw6CeZwEUMRnl0QnpiAZmpJylW8A
lrRn+Yli9iBcwow4elkkTxQv0/5o8TL9QDIIGis3sKDiqKgwJ9bjhB6A6IAe
Qvjk8J38NRqx/o6IgIoWOEXmZrfWGpbRiDuasP8VZZuTQZMoHkWfKeml1SQa
Nl0ptbQXKaq12AUoCYDJfIRac1FvZreQzLEmLrm3W8t1N488U5DvLpVlhfPo
FojCrygPi8oerFodXRqR8ZM8iSJ1MTzLRdmdZZTbk1+IHwz6l6Mv+Q9MmgEc
wKPHPDIp1zmBhxKNJiQW8ojdKcPEDDs7qSB2f/4lNvsP3oGNKOAefRlOyRlO
9RkOQuJJP2PSsyiEKNQEBxaZh2STf5IRXd/rLNTnbn7F4OdjqGXw+b/IP/5F
D/1AS1HjkLX8qt8wXI7JBEgHgJeMtUTsGPT5Vf4N/PuSgxpveSZhj7Ws0zHv
rHJnnvuyQmBL5US+qmx6iDtPqrk+YvsUV/drpOVabbnG/xycd1ssyE203M3/
KkYVA4iWX+PgX1mW2vJA1qBSr2xcy51rfBjfZwREJPR+3GkZ+dl5ttOyyvHx
91uKCoY/0PKHRxc/6x9omYw9It4ylF/1q4LilFnIPhHOqZO/fA2dZzg5TDQL
ykGDl0U6VJDLzizDRyUzpe5Z984PtHsPHwQdh3OtRuLumzGZooItQWjbheYP
32LoJncKEPyGSDanJruMxNtrlCGeHDTCKV2jKaWtBQr1QfoMtX9Vf8TVfBon
1qT54A6brHICLgkDJqhMrulimLfk2Gn+xH7wB8ooSk3PKC0UvKVMyMQuifYj
RJG0y0zPrERS4RcsUSG/8nw+LHFqUKyOSwjIYia1RiQthuCMudt1YE8gVwnU
qGrMaCVqfzMnKMGv+qKM+z6eWqPgwCgDKetOi+rgqGVlzirkOpEMovWU/JCB
S7li52UcqnQY4GZfLbaUE5ZvESsICvJSmnbF10MLe7ououUYZCkdrERwSNwu
mdlMjNDHaBJXw8qotu/POFxJNV+o/DjGSA59kyWMDCozvxezG5+FNZRsjTua
aMHSuo5UXHqKvk4Gy7lULpQFB8lIO42VnGRaUGoTE2iHhfXkRpHmUgQ+kWGN
OuO8nxiNXNNMfzgVoosMRaKLIKRaEUei7MoN/1UfuUIlq4Tlq/sRKTBxGvrr
o6fJzOg813nYwkvrYEUyBurOhModCUlULc2gUaSt9NiT+aGlqwPK7qLmNtzX
xXBL3q6i+gkrPbvQHCqRN5n6GO2olIygG2XooeLVvL5AXGVs7f3K2JodqmqA
UQfMhsXDNIRYp5FpRJqwgira4YmweyjruIiS4EFNv2NNrEMV+WxWFYPX1eM+
8iyEmHmkIe5AaZFpD2bbRICoYc0ifzMrLE6OvJoAGbxsAEsiAkpGo/EqqhxI
IkFIUwvNYywoLyRbq6F4ccExiDxmvj2noApNtQ8wiGdjBrPAkrgsaFFJErFT
KEYTsX8+NwyQUY5XroFBxPWP4MRIsLIW8crjMVAxyyfBM/BzxBgT15RqDS0k
1cr7yErJRIq6iJiCSMiUa2mR7Fwja4nOpVz0iw+ACYJu72WRRWHwUc1oQUSi
SKzEYmrer/nxyy+6VFMqdEdN5xsq1c01S7NtKPs4pVhXQsw0FnIaLW8ShOSJ
8BZTOEUyKOUVX7Y6K3xF2ICqKCf1/bnfRYJ1NexeZDRhhhuNTSuUDP5YNdfg
tRxarFS3/PY4ZKSESQBczpfM0IvIY+kMp/wTMhFiyBRw0b3gI+rV05W6SgAp
C4fbKhW/WUyavAswNg+vFImEAR9Yy6AyVchmquQtRelIEyC4M/1gNt52MZwC
l0W6vCEwJS+ejFLkPIk2WZlwB3yLswtIHJgkGy6njvHuuB0e4zKD7DECAAdI
DMPlx/CIF9YsGaH4ZH8PcCmV6Ra+jCKN+m5BH6F5IldCZornlUiJdQ2WGoIB
FvQpYt7ZkcCsgOONeDJTBJ7KbLOQMpqwrFuX1GrST+WY75Mjot9GFnPR9XhZ
d/aJQP4UNShvX0LEuyRQHXoso/hIX80wJ9bmY4g0WAzgOtUxgsBUKq3sRYIM
n6/+rwAXK667o1Kt0U5YAgDp+IvXy7XEcBIWgwWRQ7DivMli3uiWmwz6zgVb
ILXvzL/QYyqEY3771bj4DzSlD2SkhTtAizbnA8AZmMKVEwu+Io3FTcBOUbly
O9DKjyxXpghHymuufGduRt2TA8mJFVZn/I8pgAYGPOaF2NQuGXNOJAUlQ0aL
qEwnf69RDDBeTKKC0oE1VNlnYW3gygBtcx2PHcrMHluicLyJxD2pfZAo+oNi
d6DICqxahFlx1ELFnBwRcKOrokTmGm5iwJ5gBv8EAAaOdqym1w3QJVNIYwEO
zq4kKd+uyWrPc3s/ImyqKMl3X62PDJM0gwz6Es4EAePII1QaBEAikipDABtx
18InZQM4Y7OYuCCMaQSYgX1jt05zKGc9hl+YOisOQVV4TY/vH9FyjXa/h2MF
dTLVYgVSbpbsLnneUYL7hah8Etbt8xzwtnQRCUWw+lPHi1aVphcwO414H4R0
e8FI6tSZ8TrktKUryn7H3EFvguAaS2UHRLCOFUkOFBdB807t9UWk1PpO2XRd
SQj0vQqnvEaZL0OTpEUsGnrEahoC002agyU3g6nBWsG65L4ETLty4ZLce8r0
+AqYYCq8d9TAEJMSK4jqNcKAF5JhOYkN1AYkt4hYvxFIi/aMAEb5hjQdEm6o
eg4KhDpl5w48hBgn5CyUSnIqgMM1gjE9tpyYUmFAJrhRCp3ruGICRmX3kCq1
8MnxkdQ5SgdF2HE8IrYsvHa8P34z+KX2LN6bp/r69eiFCAIbhoytTOpmdWJJ
hRNf8hs3Ry2gofDm5HxHjoJzC/kI25sHdVxZ6VFhhAOGQ0RwKR6QxBQgyKCJ
VV39MTIOG8DCFl59gE7Yxp0S2iBtIYk45lSA0lPogCPJ1VAcmYMTxixGEsh4
godIBCkvg07pDNVLcyPIipJTrnrTPRTxrFwHwKix46o1V4QzmuvairJR1mPF
GpKiMsx4Zk4kTuKJC0Yi7ZSq42KfBXFnjBmhm6hkeBnISDPKTkQQy6SMngjL
xmMVodMUZ82D82JiYbirmyBx+iefwlJFLybSE8YD6p+wJxHaRxAc3BwpvOA6
hQCoQnysiotdVdaLGuuExugXWixL/iQoydK2wgXogVSSKoRtGXq0mS/WgmVp
CWdi9jixZvIRJ99EhXzhcoty5nHwJ97GreWLjWSpLVEXo7QJSkIJtQXme5Ym
K7zaxOWzl8GL3bpGnJ8eioXMTZR+gS/CnCzMz34kpRXiCRhmYgWovI8cv0tE
i51HzpKfH/cAJC/rhd65YcZWMqgIvbuic5OnbDMjPCZOQDFHYH6mf6SK6Ih3
pvZSKdUt+2Hqa1vIZ2pt7PmSY3AJIjfh2kaRojS0MLYSxFxUTJuINIIoixNl
WSacnRQbWyXBRiSJN6OUfHgZoYWFaUZUY+gFs02wmjPILnmse8rIwFN8kB8K
TxQh05awfKVwVE018oqDq7AWDOEMqWqCyQrHKceGYXJsrVxvybEOq9wN/bh+
Ymi7w1WQvY6BK0dSVH41OI9PGFnx6Rj+Xc1m+G/NGqwm8Is1X6K/Tuteum4y
zaE9t7HEUGhwhp1kqKeafAr9ukyXIylmT6GraLOLQ2omk2U/ZZwYChFYJo80
8hjWoNAfpfJsONZstyT0nrbkXgqwhXg4EvwWYIyxCWu0TTegyft644xDRFHr
cNU7p/mobPJOpaOTUtH+mDFtSmXzkEAg/InCFXeXvscvF6IxJyAErIxt1Dnh
V5Sat4EyXvbxTpW8QkjVc6y8Ke59U977JlJz75jnDN1bp+69i2FumKhI6Q/2
nYq6O+rxBFvFM7UxfyBGsUdqdClz5UgkEqwcMLqw8fI1In8qdxIXhM0LvJR5
O4a+1YKRKApRniKVd9dYsUzu08IqigmBiVdTk9eJVaDm2kHM0BLJKUxw6lDy
AtaBkvnbAFR4A9tCOFEqBEKl7X0gsItjjeF2ua4dYyHpXkO8tAeiO/2x5AMc
a1IgYDtpUOxOhBMM8Z3HKqO5dw+RUGkDS1gyAyVwEIlxZvvnqwESSExsjXYP
ADXqogY9fPt2qmlT3196pycnEzjw1QATyJzMUEmX2ExOsHaRcnsSljx2yv5K
mUTU81OTFrKCnmpelZ1UsN+OY7/UqZgy1ejmYcQya9hCxGgzsuiirc9dLYhP
YcW2RRiFSFW0k/SDo2k8IUaeKEiCKfP93fl4mJ6DOD1XieUPcDkTbfeknONZ
yZQcr8TT0BKoAbMpS1wrDLiMq5MKFGF09TxnaLOAn53xKLEkC9XX6h6uhemg
BONvygxZuCmUhtPhHJ803kawTXTFSlpNqoMQ5CYVIQbhBMWS0bLDkoEIyyI1
J6WwjctdQBeNUUpzsnA8THcV3DvaPbS74gpCmEvmh2FFJDSZTzyId0SGZTEi
O2DCdxKS8EXmHy34h+NxXbDcijj4VUipUDohesokUzS1m64RzeTMuHcW2cdq
8rky52T4Qsfel0Btebonh+l3Mu0ibudThL++6L14L+9wlpk9ruDfMD1TMpk8
1njHsF7qVM3iE+nqy45DeLmsf9O/ifxNFGaME7zDTVQ1PShPfPlFScMVoUgi
qNKjHF6kuFB9FRVPRuGy2JMXZiiSjHMfCWdB+dMENMRFW1GGMIaIPIWhUvMy
RgEdXVxMNNYDK+jwnLTTUJQ28fHei03qcCXnmEDH3779GoESGbQF13dmBknM
EpL4R26+kpCFJegLMNAw4jC/m/mRB0Ghoz96Yan2Wp7hjMRrnj9DsAaUPgOm
Ruei4Hj4F8NRueL5o6foJJPagZ20ksfRYzwU1eWVcKQVjwLjmU89rsvBCDFp
P9RU7MbSCgl3YL5hmd+jOdroIZ4Yd8FEBTy885RNoIzOxIHwkCzdV0HSVPKN
Ae8CX2j4FUVDhlJ5ukPchkwyk02ms1l2s+HS7c1jJcM14BLg5XxZJozmZahM
2P4MWNhxSZff8mR3+z7A1plUuHEIC7zzoeg7zVPS40btmS5LWyoylgFwsZx9
akZI4AguQzorXjkc868Jzja82wxYQiU0NoIAhy1s8SWmvsPTJPUDVsSPtA+D
AQbXsssAqyPxjns+aYjQ0slMFB0IWhGRo4Q8Ge7yMrkzjsfjFQCKmAkblf/J
Qw6feNuUGxoo9iQWjT1QkfdrfwbVcDKrzyvpGrFxGF/inWo8Dz5TnFEmaJr9
R3z6MZoTy5/yjLmR8Fx+qDybKnpXWCx2O3bibARRVVyIqHLSLOSAUV6MAhB6
JO6FhnNUggRMEhhh6QvJt0t7MO2syksx9XPwRBN8D0fKgTcdJmcKCoAzNMFT
2CElRi5cvVs7mRzhZZedKfc4VUktkmNPdRKPawA99IRP+U6DaH5xHvLqkwAm
1Ay0fCFOM2AZKWnldhgZSaKIJqgeWIRluZNRVXqDnrnOaqkfwP1FbA/4MlKB
XDpSCCQtQpoi1+jLF3xJZTDlGyR4qHAFDKo6+8mLGBwqrAvNZGGdSGjp8cQ6
/k5945AlBpXijVJhVRBs5FSoKAVzFsG5qYwMS4EUI4gIBUMM16BHhFtm0mJ5
RLmfKi52tXhvuX6s/E8eFOSfBxAwX82jqu7APZG604zQUlgGQpYDkEytASsW
E8IfxMbjp5y4q+SYkjMw8TnCn3BuT04bRAlKFEA3dGGqo8iAeL58RvWZXwVm
JonlpSLLDLFGwv+VNhAoVlK7bvfqjGww+A0BeKi5Oj/4k/wVUXmUzJePNXEY
vBLw0Cb+U3UyJc6Vf8QTfJJKSSrG6UzC4+MJuDarIbxSkhqcspuTPg2pT37l
9+lUKd/zq0bPsqd4q2n3eKsctGI528hAS+nrZTFcLvOR8mbBRBxjNlNZV9hQ
N8gEjFOv/I7rBVnoT7rC5LLl2ay83xslL0BXLSVtLz4W581f2l443Z6ppwuJ
gQ3XarXg/gCk/E3CWIHOCrhnc24pidGoZ0x0B9xmwEpzBZVszWhV9KlI+4dy
KxJKFEuJS48DU8QLyt4w9zvpLBBv5WS1wzSedl0cuFIKiaN32NZQZjg8Bvxm
K3kTaD7DOs7I2vSU1tLAg94olMchIAT4/OPvH9mF5QwKTzB0jRYDjc5beeyJ
PCsvpM1zmTna4e9CHPwYVugFlFUF6MMk7CL1yr5k00JkgPfCI25B8YhhjT56
5BqjD7fDWdj9nm4M7wkHRz9xmycACXqko1NXKAaNYSzQkxlkQXM2cVwA7HnA
9bqcgaL3zliTFK8tJknbf9OvXDWrnI8goo77qf/bf/8/07DGbKJ//aqfi98P
mNfZv/13/yPTTBquZR6y70QTmiiiVMECpwv6AO3TMXNknELQlSJUiakp8MEU
SKavroNnTFUvJS0glKUbXaHWjG9A0kUVmaipmDPdzuMwodWY4wxzUgkmL0Q8
pnshJgXG5tNQhqZ0IVgIJODg2PVgueW4gpup4oLNp6pU1pgvmmXg5j/w9e9n
9et6x+jVa3DdJ/bw1/Dr5u/dnugeO4q8hrGvjVY9SKvfJb+43VY1o2egPOWa
qP+NvO/+Xr1qVy9/b1432swZExMeqI36zeteIYdIjoKm7hgJiXTTFxPlMUcj
/v4bG4O9/JXBB8O9zLkmuMVMzuFfy03/4b0Uu4Eg8L2Nug7a8PlV6x2QWB9p
F36V/C5HTJxHlkQN7jNgZfVGkxi/UHW16oc7GccxUkW9rbpQP0mZlaX7wpv3
sfpRrTV6TwEivqy1MhcEgjBeCGEGhfMwaypKPJKvVAYPeBiBDCQ/zl14P64W
yER/PIy4yTBaoLDTvLBU6LazU5ZqOEdc8h881ebvxtWZ6CvmDrD350b3XNz9
SAPjd66UYCMHORhjrknzjAB45U9ZhMoOiLN5/H5jdFrdgFRHu5LtQIxlxnYV
1sTOcCi7x5M8BT5CysgCh+HpclSrYl+JuTzkPqKrYtg6m6HP2B1iAhngtaib
n6BvShQ+wd3+w1H3Uz0oyRV1LAxQt0a/w/C/m/7vKf1UT/8a13Jsv1oj5Fv2
NfD86gxNLfveR4fKvj8U8JwIs3tHEy5ZiCHbrj0BFL+vLVwL9x5OwABA2dvI
HAFZwlY82OlHluHhOkrQNBPbdOHUjL39ABPmbpeAeWqrwObyw4OmM9A2F9tW
5JCGX/d1N7Jo7P2bi5GJ+16i6+e7DXYmmyGoyqiXSkAlv1R/Ui6xYEH4XzV7
ghqTQFpjrkLIbihZ4QSa+hPKKvyWM89g+ZJdWIlR49w0pd2KfKlptn8ij2OF
dT1mSFXqInnzj57oMUAzOB2GT8SaFOZwzGoC8qa7TJSKk+3dgr2KikaQg9Mf
Q9LIHaQL9CuOF8GFcsyAJ1TPDbBuCBsGNFdmOMC1kGAsH+jMz4eokiLHMSGM
4bwDhji9Q0VrrIWdzbzh1MLwnl6g/+Bkl6UYQS+wrqF8QCMxGafbPLs2ev1O
PfEXeI/ImmihqPvCDQuMs5Btf4fuNFNIhrzXn6WE0Nvv3ep5HbgZNvIO7ZHj
BYOEyY9s8Kv24+MShUXmeZdscmJ3WX/8nW9YmLUKbYB6zpFEK6iLVrwO4BJw
9fOOw5pUvOI94lehHmReo84O6OHlIYm5gTmc+wVrgQsuZUZijYXmSVYnEAY+
brsgZRtn/NBt30fnR+BWzdGxFvRAH6nBa9woZqjZZnfSzLAJG5eHPLPLJUXV
CF99rhjllzUU7ieLUnGz+cwxRyERRR+tZOCI9WoNVyyvKg+rZ+6goTS0DEJX
A6bPD5JBsplFdHEiTIqtyxdTFwoI7R0FRAgMYDU30jWVnTsLyGJEIEgerJjp
pOylFHRjIh8vp65JjeQB4dRDJtAJkS+42yz/AOrJ1ly0p4bMUzXWoV4LY3cG
ZfwzUh8xxdlIVh4J0YbjoDGWLiV3x9mQnAt2TxlnwQoIjoMXW/Jj8Sgyjg6S
xtDi6Q+lp6I9FZvNLKzCExjD+xh9Mz1OCjCPa98Lqda5+jNsIWXFM3ePhDfs
qfgoMIpIT1/8hivAgqBiImaRj1ncNE5/EVwZaAY3JjDVBBeGeZComZPkMlZL
GB31Xy2q1cIjCLjfMiOKZOSLIiOOjfZvhU/pmsLU1F4AXMFWAuGnD5mERQuU
lx5XzCcspF/fOYz7hF+vA48q0exM8FDD7KHcRS46E4CF0FTkScFieRElBjq8
QWjzo01wJwCIV+8AiGItV2DkErV3Kt1QZFtNyrbYLOCAVJjmCiDWY8xdIWUt
04Fr6GsQePnykHa0HhL0iZqldA5ooGUobMQZMq5+tec8yM6coZsiSdtAOFj1
WI+uPS1dgo4pdwFrPYiFh5NQsCG0mLTVoqxk4Li8Y0FAK4mMOkrug0ll9//B
YPlTICYYzh34IcwvTy2K+eULnmoOxFZy2oxyqoi1HFYLV2S08EJmY7IGcHy5
g6JC0KuAO/LZfU8FxA/CZeQD1wgK9CWPfR9IN8d7urBQGeWFJpT4i3KjUQ7F
IRaB1jG8pWyhMgyDWb6Yl2fUP0oa/7jli0qlBJkKvZADhB1kSFdUdGoyGeQp
gr3bLznQLIAVVFIkMN4yUqFNMJwRj4uADxUvvBBvuuuVoL5lbO3pHv+A41BL
tPef6v8kKzT2lnOO039Hre5fQo0x8OBU31uGUWn7Tf7+LRiPFVFUZ2q+qEX5
lBdDU3kR9KWp/+J/pcNcULSP2wu5N5l61OQLxZm/scUFqlhbCSVyJ46PQJGX
/pbylMS95K9D9S2rnitoYch8hq12o6ySLKCDq8wTkglAZYb09fOka/r+fvD4
Iv3EtGIBI9Lo+8eisA6En/eh9GcNMkuJYtHCi85mYf5qMUVaQRDI8l7tdPxU
xN9gEWigR6ziN/NYEumC+UfhumvjlUs2KuFHbMakEaLALRVOgjrKukdFrshL
Wfi1ByjPHL6gO9anvVfg087eRHeEn9KuUyGxeUNkns2FSM0Tcs5ilcOisMAw
RjJUZU8mlFA9NdcBKQiYf54EJMbFEUtehPmLIMjLU5NMKZQgXBvuPUts2AOM
42Z5aYUDs5pSVnH14EgyfO47JbcCh3YZhRuzn1wJQenoKvWz5rXOzCHNqtGr
6x10OgLqhD9aq9m8nr9Vq7Vmv2rcGptRr37VMl7OjHS/Xpm2qvcz57XeM24q
k+u7ijFpVRuV7SD7tBzMr2etTn2j1TaPtbvb2/OaMW0NMtfTwdksZfXqvRYM
jJ1UJ5tL8/4u9WSnvcf79Gb4Vn9oVfrs3WbT1kIvt+nnYbb5Wn82btmIrVb1
oTMbZm99M3OXb/WqVaPb3NRuHy8unafmdD281ozbeqVya9Qmk/qNUYMGt04V
fq8Y1yedtXd2Pc5m7gt+0+jnbp8mjRuvXHJv1jlrVLxdVMrm5Yl29FpaHaU/
T+3e9fK6mplbqYZ3W6+te06nfTZ9efVte+xnOpc35l0nM902Unnfnz5f1xbj
mtn6vH7Rrq8zOXf+1lvdPdWz7bdS4a17Xz+6esk+je/PO+27Qf6p16qf3LWf
Ro8tY73Z2plx59w8SQ8vy42TQlq73zSXj7nPrdmVZw66Xne+HZU6F0cnk6z1
Oq5a1ceLYra6Kqcaqc21/9juvd5d551c/Wp9MarPeuWydmtWs6VeY31xtL0v
5za3KzNzkrvyC8PXVPPo+q7WOL9q1a82je3obvTkLT83RvWzZe7hyM6Xp8+1
nKE1ajft7cXFhd0o5Z6c4tHtOO03B/3qoHF31JmvnUFxVbXbXqmdfapf5V6q
xqZuGGa1Wl3VN5OJO9IqE+/z9MU+K29SlWrHqLbfzqpVb4MvmwBk1cwznIz/
eFa5tyqVzm0Fn3mTbuVlXO7fpiyYwcawDcMrPhlO62jZflivat3s8Onhvnv2
sLx8q48X2eqJeT/NvDVn1/NRc31r1I2b8t3niQE/lbJWcNZz/PV6Y9CTZqVf
qW+Mu261aTQnxlXHu1nVB/f+jXE0fLDP794Kb6N5oTZuPz6UVq7b0e7XV/eG
U3+5L7Xog7vr7f392aA/v1o/LFYno7qzcUa9wejz5cXMnZqPzZ49yywfnKLj
1AHgDG262NydO1f1XLYyvts6b+3Pi9fy3dgbdYv93FP7JrfspnJrd3xWvbIm
zw/18+fXYWvbz9aGF/6o6K21503+pPm6uHq4qp3cPxhW+jz/MGi7VnvyeGc9
v7Xa6ULt5r5yl5kXr9r99XrT9Zqd6fmFeZXf9F/HK+3qybl/LPSXxdujScOv
rZ3zcce99AZWq+O07wEuZn3nJXUzfdqkOrmn223DHeZO3IpbfumW75ZzXzOO
ss3W6unk8+rZNW8+D6onb4t0u55JHRm+fdkvXJVfLvr+zHoelzrD6f0iNx7b
udXkMrcqdtat2652MjtbHOXP0s3x3e1jPm+3Lkezc7O82L69LG5vK4/OspG5
uDnyFn418zQu5Jumd7+tF6/v295td7B1tcJJu3s1mVjX4/ykX+q6nfGbaUy6
VaPzaACGujKMR2OIZ14xAADo8A38LVs+O9o8pk+08dPgc2pS6U0rc6N/9Jbd
ekcn03zWrw7P0457UjzfFov3n88uWpmX1JX5VLy9fzVu2+X2tJ4zz3pnGe3y
4gig3Ckv787N8+ZDb57JnLVS7VHp2tl+PrpNZQf2anDdzt+99IbFmzf3+uKx
l1v1RrPy46iev1trs1lr0yv387P0ZFM9qV1ePZXrI/fkbuOmHk7cu4Fhz55t
Z9tfvS79y9fLwUX2tb4oHtVGxUbpIncx0Rbr4WUxe/vQMzLpSf6m0c/Onye3
q9Is1b27yaYrztX4tXVfWhQvBtnnSjXvDk4mq+zy7fz2OZfut/ra0Nvcro2H
i/Rder6dO3epW3MxHReuFrCSm4nRb5WKzZeXefPhbTp/XucrJ/epqX974d09
5M/Mo+laW+Uum4W3TXH0cru2bzcPo/OKP5rfbc37p+XTQ3P19DCdDh4q3lM3
/zzIpOCaj+dwpesmYuj02UQzNk2gF83++CHnDIvQXX+wfSuk7/zb6/wkY2Ru
W7chNA5Y/KqCBOiNESDtRynQPgKk/SgFiiNAjZrR1SQFyjIKNJyX16P6daVV
yT3Ues1Uq2dsW73mptUbvrZmDn9W37Zq7JkGD3G0nyKo6nK0P0JQ1XeaJKg1
oy2WU+HLebz34NjqdstInVW7n8+6zUG2BrTUuO0bRq5ZqW2MjQYNLg0HjvK2
9vDcOHpopDfednPxmreAGKdv071aaWQ9fX59uX08e2qVe8v7I3fdeF50Rt3a
TanU0uyr9s3jsNO8uD2yxudrp5R2Cs2r4iLVT/W6c/OmkJ2YrepL+8rNwASX
lfOzl3F3cJ0ZpAsrr+LeasPH28aRU77u55u+f+IVXxbr2fTabg/a1n2nMvGv
bx4s+2V7vh0+Pg+fJs7Z6KRfW9907M5Fatl1V1q3UrO66dfUyul5a2uZuuh2
Kn37cloaFWup82y/On96eru7eburdNNPJ3ezrJk9bz/3J46xfmhW3lbay/Qk
X7kc3Xan+em4s3iw8+vC7OLMde4b92vv/K6Rubly2tWMYzbdq6ds/85M5S9z
m7veyeZyYKfa2rBjrcb1sntZqK7n53Wj/2Cnh97R83bxNH40AdYmLUBmZ8+T
sbGZWHCZnnJ4nKPmpluZPVcr2kuhUVyev8jL8bPApP1R7ky806KXY9/dmEw7
+eXN0evrpTcsFJdX7c83dvOp29dy48nyrWa08MPzDqx3XKobz4bRMjxaa21z
WweccT6pMdbvvAsz6BnnlcndYnLbb2rGmzGiF7e5egOenOdux6/r4fxmUn7N
pFe39/nh+Gw7fh20hnGIpaYRT1jNPr0VKker9PlRMVM9Sz2feIVZ5+bh5PHm
pHbzPM03m375fNS+MO+H+Zk3qK4n5916rXh9cqStneq42hkXm/1Me5o/ynwu
H5Wv80bHXjzczF3v5ul6e9Upre9fBpniyXRWbvfs1NW2WPMvWn7/otfR3j7n
s6OnYfFl1KtdPy5vFoPmwFx02/fZWfcqX08Dk1fabHve8mR9e+lbj73x3Ktd
bsrTh3MY0+pqVn/5NL8cnnenD7NBrV4f9FaPVxctOI/Leas6v3luTi7c7sNJ
urSpO8bEyVTunp/fNuOpM8x0rxa32sh+WV8XHLNQt1Jvjx27OX9YtorDVd2t
lkrPbTf1edXvwHGUxt7tqDR9POv0X04Kzk3r4a05frr0tLeT7ZvRv80XU0fz
l9EoYzfuZp971duy1Qdkcp1Gtu7httm3zN6JN+y65+1Vofv2+Tlnn/Vn7fOc
djncvIv3vwfa2vfw/vdAW/se3v8e2tcUvL9pN3bwPj57dznaz5CxuOVoP0PG
4paj0XqazUrz2YA7+yI5dziNhmG0QYYqGfi+OrmE3+vG60271iisnl8Ho9r9
6mGhvc0+vz022zl3eXvpzC7Hl4N2o1+tFLrPIyP/8Ga4V73u42UtC3zC53lx
tWi8zM+rmXP/s+F+zj9P1trwNjN+u7CuzwbD1fbisbsxy/cXzxf5z4+FyUP9
8eis6DUmT/knq35/dnv09uwuVhfTkxt/Nr3InHSKG80fVUuZmtG/Ml8Xjed2
t/AwLyz7lVLHfKr7T4Xzzfim//A4sS7Lzc5Zpjqoe6XnF6dy23O7l8vRsqql
5tsL1+2mbpxeozqrLT8X0s9WcXU76RcG5abRHgOWdh7y16PH4fjz6/BmOM1t
Pg9eZqNL77l6Yhe119bQmpemi0H2vr825gPv6ibdTDVeS4tBajU56WXqtXy/
7N9UHgaXE6tWzJj9zFX57No72i7rZeNNG/QqheGmCRjPqESpcHXDqDBgwwa8
PPNu0q+Xn3Od3OBtcL+4zV1mzo809/HaLvXrt2+v14WKbVzb5aPSdHB1Pn4t
TBpPs7ej29fN3fa84Nwurl3v7q5291x/PM+dbNfb4vWo/ard2X5j/Ln9uNma
19Zl3nl4Tc/yjt822wN/81Ypdu5ur7sze/lWv7vPdW68i/nrSalR3F5f+aOJ
49xo/dTtW7/7uTZ0Li+zhXqunfVK+dfx9npWH11k1hfDi5Onp9f87e1sMb3u
jfOD+5mb7ZdfCzVrYBmfPe1oswaiPDKv31az88qDedn8DNz+a/n66DGTWT8f
rTels3buqnS+GNVuWtNR/aTqp6fp7XYyL+SfC1PNrM5vO/3e5dtzrvy5cJ+7
Pj8r2jeWeVQcTFqfi2e5q45TrnUb9XHrvv1ya931uzc3ds8zDXOKxEcL73qb
4D1t3jwu5iVvVe3Ala4WX9qj9vP67iZzlFmev3rN/HpxNR6PGxPPvNa2Tvut
XPQLA2N++3BzW60Pn6u3T5+NLYDsbbNXGYzzbWfjXlfbV6XHzpXZWGVgz0rn
Rw8X/WY/1dQeu172vNTfjq1HJ39Xu7yozvon7WH37WxyNi9clC9qt/Z5f1Vv
uJ8Hy3q6bHbf/OWDWz8vPz7elIqGBoJqef26vPKsjLsEMeZluDy6O6qW86XL
i7rzeDss18fP61b26vPV/G1ZXK63fXO2zqQrg/bGuizdac3Hu8vi6Pnz0VV1
/ri52Iwu3fbj/dytbc9LN0dzq7S48V/KldFwfX/kPWc+r04coESP9avcpfHZ
WNta5T7fewNBZXI7nbfMme2dXOTuH7O3KX/dbj10bm+fqvN25jp3M/nzn5li
qn5d26+W4k4lFGWvGst6mM+DxxYx09J3EoAcQA+HcV14WigCFIuS+d5w6oyt
hT1hpcmWnpmgBCLfvoXzcotqA364jCZPIsGqaqnxSWzIg7rRO0zysQZjnw3y
YvqYeZjHjkVCojUl2MfS4fsdXa8IEyKVJd8KTQ0pozJFTPP63VVqzNFhICu+
70TaQy8DeyEi9LToa58t9BIWKpTwYlJx7W6gnSYTEmGFZqEsp9TGLJunMOgz
G/nu3olMjMLbHwZPQMcszA4tDsekgXbZpB0tyNKTT1IWn90uj4NdYCkFKGMU
q6MGh/Juhc3eVCkOIDTDO3MK1wsNuaslw8kfmF4YbUNUvojq+BwFFrTgGVVN
ibGiSUPTkfwtKAZ0BJ8wu5qoYYtrrQZrlZ9IK1Y0x0OvUtvTMTPDwdpPcO2R
jumG42axBN92TNBj4i+UDgV2S70GmuhQ7BpZMiKJnmKuGC+iIHJyYKbfSrsT
nBW+Cx90yIealQ7CigCJgWuZLx5PcsiqMZsjntVWVJX3DrnRFC2DH2AGH05p
b6YfR5lSLpc10ql0pmCk8qVqysimjHwpk6qU05VUNp0pZzKZMsgCmXSunstU
Gtl0rVDiO1vMGNl6I1Or1GpGLpVuVGrpRjGTr+VKtUKlUa6W0sV0OVWu5vBt
KpNJwTBp/i2O0Ug1Gg2jWDGy+XoR6HWuaqQb+VyuUMtmitVStpQx8vBpPd+A
KeTytQb/tpwrZXOFKjQpGXlom8HOitVKrporwVQrlUIjVS7mC5lGIV3DqP1i
oVTl39Yy1UY9m29UjHKxXi4X4W2tgjq7rNEoZxr1VAl3Q50wdM6/TdWK1Wqq
mKnV4VW+Uqum89mikc9la/lstZAyCgYwnZl6tVorlVPVYsOAVZSF/Tmbz6VK
5UqlnuYTbpRByqrlKqV82shUqyXcjFKxVqpnso1MxmhUimLcPPSfr+fT+VoK
1plN14tlI1uB8yimYR6lXCpfaORTtXQ23TBK2TK8racK/Nsc7mwxVasW8zD1
VKVQK5fTRr0K66w1yo1cumpUio10pVjPVHPFRqFYM6oG/7ZUqeTK9Ww6Xa7A
IdWLRfiuUC2V04VMMZ2tp6rVQi1VL8JhlWBShWIjC+DEv00bH9Hc/GH5DrRl
cvA7QVu+amSLsASjUcqUq9lUFdYJ51OrVYpl0WO5km7ABpSquJEAdbVSIZ8y
ajA8TKCebVQKOdyL8KL4t8rafnxRYheCtaWNuJ2O22K5C2ynP8o4dx6OzTKF
s1v55/CPzoJ2P/6njzqr8ymqQqJFFvNQlIrljB756M8aekQkmK+HgbH1iUwq
k6UsObbnHKQVZ+VRwnEn5sJ+I/p3kD3UR87ooHDIEjwsLB9bi9xvB3mM2Avy
0cLf+vLFfj0oYo+JOXyZEr8l8IVwiEilDwAbt9q1Q8zpUfVcle+p1RvN6yZO
s6s3WzdXzWqzp/eMsy5lIiAzoabVH27anV5XN66uftU0aIZ/aZrq0EAFXmFQ
mGKj027pN5fNh3T9FYMUbB92IMUO4u/dg/8UVznwZ3/yLPTxJ7Yyjam22VJS
mYN8mu1ksPzq1LEZ2aXFVzFOwpkAuEztIa/H3d0ufPMVdiKdCu/EHJPfuQks
R3OQOdRX3gHcnUPd9cyRZx+k04CuymzCy5ehh1/gv4nyQRn2ZW7PrYM07Bar
g+Mp8x7OPdr3g3yJplt/6NWvu3DQxzoAZ6dZ6ffqx7qMKepa/hdgcboA3zNL
Pv3yTT3QRJUy0mOqXda3nkgwQvsbXId8OZ352/+XT5mtjk64SFtGHkxiA0iS
sFqw4fxE77Ijx0//Ox8mcpFrGuggQ2Cn679ivka9grVjpsx3S7nPgY8Fyz6G
S/DN95ID4cp1xBAMqvdkEus93tQTwefaT6chw7RhCC6YhTVaQycINgQh71tM
37tpUZinkh4zYvI/2qODL3HT+3ZIflfEPsZ/iZC959svf8UReRfkPqPr/V6j
1PXJ30JJo6JFHN/e2XvT1PNl3HXYGJRqeOZUFNXcoAN5XeVm4mnoO7JAtd2/
BizdMh50BMtwGrbwpLRgTEzMqoWy3UtMIcfrPl73oNedEb83RMSNZfcULenz
J593m091/SCdTMI6DvV2IybtCX7JPOz2f7WLnYMzYggC1h/TSOY/Fnn2yUsL
c0iykN/gY9XBRsmdwC4kQ58hN6Hj4FOUWoNyQ8lMkjLDEhIt5AGJ4tZd16S+
AwNDa01YZV0UmODJZCIJ8SbkGRtOamjJRJ7kVk48D8Mv6Pu2toLqN/QdT3hE
7XjxIZmcKfCy09RwKpa9hMdr7MntQ7MP+TezHDMrc6ZzdKrfM183ilMNaWFg
+fh9OpkmWfofyamFmKEaAIDY4R/iizgnpLNMaSMbS+vIdSV4JfeE8OEjKtIb
TnAYVQ+EfwfbwXfj/jsfyQF7wwFG8r/b+/faxOJyxsmENkj7lVZKE55vdr6q
d/cSAB1g/9117qafjG7nH2MKoofwTa6Ab8rPrIIvQmznnjmL198Qw/Ky83uW
fRy7UjHnd1e8ET0oM+LpUSMToSS3bojo4nVKKAebULWjCZ76IQEXLtGxWOX0
P8iSJdKl3wsX5gJEoFxyORr/PN/ATyvmmI714PU7h6kR6wEoFTGqtgv9oatu
9HvtFkht1e/IQD+YqlEcxbu5FoUutDozPWJS8YuD3KHyvYSp91Iv0kD+cIA+
zwfp0OdWEDaZmAM3PEa5EHjt7/f3B2+dMgYy+8pU+pY9+v6wK2gV2YIWanK/
sw/ye3KRFXuR/0fIE+FFVKvd7zJ4wWKGwOKL1n//XFBsUuYi9/qH5yO/+MNz
waFsHOuguPeMkAX47lR+fgbqyaIH+UEpNIN36O97QPfHT4WWMZxvUIILX1hZ
VO2Hbm1C1i77uyEE5EwS5d4luDu8OKwhlBlS4z2IK7fzwZqwiv5b6m8BhxQj
ESHbCwynNdN/S3+/pUh391vm+229NbTLKu2a1736Geyu2oiVTfot951m9mJk
veq/5b/TbLyxR57+W0Fp1rhv1q6aIDSE2s3MCbQrKu3aS162wZw16G142biX
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
j09V/AEkYxlhVRwBAA==

-->

</rfc>

