<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-birkholz-scitt-receipts-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="SCITT Receipts">Countersigning COSE Envelopes in Transparency Services</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-scitt-receipts-02"/>
    <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="Riechert" fullname="Maik Riechert">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>Maik.Riechert@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>A transparent and authentic Transparent Registry service in support of a supply chain's integrity, transparency, and trust requires all peers that contribute to the Registry operations to be trustworthy and authentic. In this document, a countersigning variant is specified that enables trust assertions on Merkle-tree based operations for global supply chain registries. A generic procedure for producing payloads to be signed and validated is defined and leverages solutions and principles from the Concise Signing and Encryption (COSE) space.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a method for issuing and verifying countersignatures on COSE_Sign1 messages included in an authenticated data structure such as a Merkle Tree.</t>
      <t>We adopt the terminology of the Supply Chain Integrity, Transparency, and Trust (SCITT) architecture document (An Architecture for Trustworthy and Transparent Digital Supply Chains, see <xref target="I-D.birkholz-scitt-architecture"/>): Claim, Envelope, Transparency Service, Registry, Receipt, and Verifier.</t>
      <ul empty="true">
        <li>
          <t>[TODO] Do we need to explain or introduce them here? We may also define Tree (our shorthand for authenticated data structure), Root (a succinct commitment to the Tree, e.g., a hand) and use Issuer instead of TS.</t>
        </li>
      </ul>
      <t>From the Verifier's viewpoint, a Receipt is similar to a countersignature V2 on a single signed message: it is a universally-verifiable cryptographic proof of endorsement of the signed envelope by the countersigner.</t>
      <t>Compared with countersignatures on single COSE envelopes,</t>
      <ul spacing="normal">
        <li>Receipts countersign the envelope in context, providing authentication both of the envelope and of its logical position in the authenticated data structure.</li>
        <li>Receipts are proof of commitment to the whole contents of the data structure, even if the Verifier knows only some of its contents.</li>
        <li>Receipts can be issued in bulk, using a single public-key signature for issuing a large number of Receipts.</li>
      </ul>
      <section anchor="requirements-notation">
        <name>Requirements Notation</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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="mybody">
      <name>Common Parameters</name>
      <t>Verifiers are configured by a collection of parameters
to identify a Transparency Service and verify its Receipts.
These parameters <bcp14>MUST</bcp14> be fixed for the lifetime of the Transparency Service
and securely communicated to all Verifiers.</t>
      <t>At minimum, these parameters include:</t>
      <ul spacing="normal">
        <li>a Service identifier: An opaque identifier (e.g. UUID) that uniquely identifies the service and can be used to securely retrieve all other Service parameters.</li>
        <li>
          <t>The Tree algorithm used for issuing receipts, and its additional parameters, if any. This document creates a registry (see <xref target="tree-alg-registry"/>) and describes an initial set of tree algorithms.  </t>
          <ul empty="true">
            <li>
              <t>[TODO] The architecture also has fixed TS registration policies.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="generic-receipt-structure">
      <name>Generic Receipt Structure</name>
      <t>A Receipt represents a countersignature issued by a Transparency Service.</t>
      <t>The Receipt structure is a CBOR array with two items, in order:</t>
      <ul spacing="normal">
        <li>
          <tt>protected</tt>: The protected header of the countersigner.</li>
        <li>
          <tt>contents</tt>: The proof as a CBOR structure determined by the tree algorithm.</li>
      </ul>
      <sourcecode type="cddl">
Receipt = [
  protected: bstr .cbor {
    * label =&gt; value
  },
  contents: any
]
label = tstr / int
value = any
</sourcecode>
      <t>Each tree algorithm <bcp14>MUST</bcp14> define its contents type and procedures for issuing and verifying a receipt.</t>
    </section>
    <section anchor="cose_sign1_countersign">
      <name>COSE_Sign1 Countersigning</name>
      <t>While the tree algorithms may differ in the way they aggregate multiple envelopes to compute a digest to be signed by the TS,
they all share the same representation of the individual envelopes to be countersigned (intuitively, their leaves).</t>
      <t>This document uses the principles and structure definitions
of COSE_Sign1 countersigning V2 (<xref target="I-D.ietf-cose-countersign"/>).
Each envelope is authenticated using a <tt>Countersign_structure</tt> array, recalled below.</t>
      <sourcecode type="cddl">
Countersign_structure = [
    context: "CounterSignatureV2",
    body_protected: empty_or_serialized_map,
    sign_protected: empty_or_serialized_map,
    external_aad: bstr,
    payload: bstr,
    other_fields: [
        signature: bstr
    ]
]
</sourcecode>
      <t>The <tt>body_protected</tt>, <tt>payload</tt>, and <tt>signature</tt> fields are copied from the COSE_Sign1 message being countersigned.</t>
      <t>The <tt>sign_protected</tt> field is provided by the TS, see <xref target="countersign_headers"/> below. This field
is included in the Receipt contents to enable the Verifier to re-construct <tt>Countersign_structure</tt>, as specified by the tree algorithm.</t>
      <t>By convention, the TS always provides an empty <tt>external_aad</tt>: a zero-length bytestring.</t>
      <t>Procedure for reconstruction of Countersign_structure:</t>
      <ol spacing="normal" type="1">
        <li>Let Target be the COSE_Sign1 message that corresponds to the countersignature. Different environments will have different mechanisms to achieve this. One obvious mechanism is to embed the Receipt in the unprotected header of Target. Another mechanism may be to store both artifacts separately and use a naming convention, database, or other method to link both together.</li>
        <li>Extract body_protected, payload, and signature from Target.</li>
        <li>Create a Countersign_structure using the extracted fields from Target, and sign_protected from the Receipt contents.</li>
      </ol>
      <section anchor="countersign_headers">
        <name>Countersigner Header Parameters</name>
        <t>The following parameters <bcp14>MUST</bcp14> be included in the protected header of the countersigner (sign_protected in <xref target="cose_sign1_countersign"/>):</t>
        <ul spacing="normal">
          <li>Service ID (label: TBD): The Service identifier, as defined in the Transparency Service parameters.</li>
          <li>Tree Algorithm (label: TBD): The Tree Algorithm used for issuing the receipt, as defined in the Transparency Service parameters.</li>
          <li>Issued At (label: TBD): The time at which the countersignature was issued as the number of seconds from 1970-01-01T00:00:00Z UTC, ignoring leap seconds.</li>
        </ul>
      </section>
    </section>
    <section anchor="ReceiptVerification">
      <name>Receipt Verification</name>
      <t>Given a signed envelope and a Receipt for it,
the following steps must be followed to verify this Receipt.</t>
      <ol spacing="normal" type="1">
        <li>Decode the protected header of the Receipt and look-up the TS parameters using the Service ID header parameter.</li>
        <li>Verify that the Tree Algorithm parameter value in the receipt protected header matches the one in the TS parameters.</li>
        <li>Construct a <tt>Countersign_structure</tt> as described in <xref target="cose_sign1_countersign"/>, using the protected header of the Receipt as <tt>sign_protected</tt>.</li>
        <li>CBOR-encode <tt>Countersign_structure</tt> as To-Be-Included, using the CBOR encoding described in <xref target="deterministic-cbor"/>.</li>
        <li>Invoke the Tree Algorithm receipt verification procedure with the TS parameters and To-Be-Included as inputs.</li>
      </ol>
      <t>The Verifier <bcp14>SHOULD</bcp14> apply additional checks before accepting the countersigned envelope as valid, based on its protected headers and payload.</t>
    </section>
    <section anchor="ccf-tree-algorithm">
      <name>CCF Tree Algorithm</name>
      <t>The CCF tree algorithm specifies an algorithm based on a binary Merkle tree over the sequence of all ledger entries, as implemented in the CCF framework (see <xref target="CCF_Merkle_Tree"/>).</t>
      <section anchor="parameters">
        <name>Additional Parameters</name>
        <t>The algorithm requires that the TS define
additional parameters:</t>
        <ul spacing="normal">
          <li>Signature Algorithm: The ECDSA signature algorithm used to sign the Merkle tree root (see <xref target="sig-alg-registry"/>).</li>
          <li>Service Certificate: The self-signed X.509 certificate used as trust anchor to verify signatures generated by the transparency service using the Signature Algorithm.</li>
        </ul>
        <t>All definitions in this section use the hash algorithm required by the signature algorithm set in the TS parameters (see Section <xref target="parameters"/>). We write HASH to refer to this algorithm, and HASH_SIZE for the fixed length of its output in bytes.</t>
      </section>
      <section anchor="cryptographic-components">
        <name>Cryptographic Components</name>
        <t>Note: This section is adapted from <xref section="2.1" sectionFormat="of" target="RFC9162"/>, which provides additional discussion of Merkle trees.</t>
        <section anchor="merkle-tree-def">
          <name>Binary Merkle Trees</name>
          <t>The input of the Merkle Tree Hash (MTH) function is a list of n bytestrings, written D_n = {d[0], d[1], ..., d[n-1]}. The output is a single HASH_SIZE bytestring, also called the tree root hash.</t>
          <t>This function is defined as follows:</t>
          <t>The hash of an empty list is the hash of an empty string:</t>
          <artwork><![CDATA[
MTH({}) = HASH().
]]></artwork>
          <t>The hash of a list with one entry (also known as a leaf hash) is:</t>
          <artwork><![CDATA[
MTH({d[0]}) = HASH(d[0]).
]]></artwork>
          <t>For n &gt; 1, let k be the largest power of two smaller than n (i.e., k &lt; n &lt;= 2k). The Merkle Tree Hash of an n-element list D_n is then defined recursively as:</t>
          <artwork><![CDATA[
MTH(D_n) = HASH(MTH(D[0:k]) || MTH(D[k:n])),
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>|| denotes concatenation</li>
            <li>: denotes concatenation of lists</li>
            <li>D[k1:k2] = D'_(k2-k1) denotes the list {d'[0] = d[k1], d'[1] = d[k1+1], ..., d'[k2-k1-1] = d[k2-1]} of length (k2 - k1).</li>
          </ul>
        </section>
        <section anchor="merkle-inclusion-proofs">
          <name>Merkle Inclusion Proofs</name>
          <t>A Merkle inclusion proof for a leaf in a Merkle Tree is the shortest list of intermediate hash values required to re-compute the tree root hash
from the digest of the leaf bytestring. Each node in the tree is either a leaf node or is computed from the two nodes immediately below it (i.e., towards the leaves). At each step up the tree (towards the root), a node from the inclusion proof is combined with the node computed so far. In other words, the inclusion proof consists of the list of missing nodes required to compute the nodes leading from a leaf to the root of the tree. If the root computed from the inclusion proof matches the true root, then the inclusion proof proves that the leaf exists in the tree.</t>
          <section anchor="verifying-an-inclusion-proof">
            <name>Verifying an Inclusion Proof</name>
            <t>When a client has received an inclusion proof and wishes to verify inclusion of a leaf_hash for a given root_hash, the following algorithm may be used to prove the hash was included in the root_hash:</t>
            <artwork><![CDATA[
recompute_root(leaf_hash, proof):
  h := leaf_hash
  for [left, hash] in proof:
    if left
      h := HASH(hash || h)
    else
      h := HASH(h || hash)
  return h
]]></artwork>
          </section>
          <section anchor="generating-an-inclusion-proof">
            <name>Generating an Inclusion Proof</name>
            <t>Given the MTH input D_n = {d[0], d[1], ..., d[n-1]} and an index i &lt; n in this list,
run the MTH algorithm and record the position and value of every intermediate hash
concatenated and hashed first with the digest of the leaf, then with the resulting intermediate hash value. (Most implementations instead record all intermediate hash computations, so that they can produce all inclusion proofs for a given tree by table lookups.)</t>
          </section>
        </section>
      </section>
      <section anchor="encoding-signed-envelopes-into-tree-leaves">
        <name>Encoding Signed Envelopes into Tree Leaves</name>
        <t>This section describes the encoding of signed envelopes and auxiliary ledger entries
into the leaf bytestrings passed as input to the Merkle Tree function.</t>
        <t>Each bytestring is computed from three inputs:</t>
        <ul spacing="normal">
          <li>
            <tt>internal_hash</tt>: a string of HASH_SIZE bytes;</li>
          <li>
            <tt>internal_data</tt>: a string of at most 1024 bytes; and</li>
          <li>
            <tt>data_hash</tt>: either the HASH of the CBOR-encoded Countersign_structure of the signed envelope, using the CBOR encoding described in <xref target="deterministic-cbor"/>, or a bytestring of size HASH_SIZE filled with zeroes for auxiliary ledger entries.</li>
        </ul>
        <t>as the concatenation of three hashes:</t>
        <artwork><![CDATA[
LeafBytes = internal_hash || HASH(internal_data) || data_hash
]]></artwork>
        <t>This ensures that leaf bytestrings are always distinct from the inputs of the intermediate computations in MTH, which always consist of two hashes, and also that leaf bytestrings for signed envelopes and for auxiliary ledger entries are always distinct.</t>
        <t>The <tt>internal_hash</tt> and <tt>internal_data</tt> bytestrings are internal to the CCF implementation. Similarly, the auxiliary ledger entries are internal to CCF. They are opaque to receipt Verifiers, but they commit the TS to the whole ledger contents and may be used for additional, CCF-specific auditing.</t>
      </section>
      <section anchor="ReceiptContents">
        <name>Receipt Contents Structure</name>
        <t>The Receipt contents structure is a CBOR array. The items of the array in order are:</t>
        <ul spacing="normal">
          <li>
            <tt>signature</tt>: the ECDSA signature over the Merkle tree root as bstr. Note that the Merkle tree root hash is the prehashed input to ECDSA and is not hashed twice.</li>
          <li>
            <tt>node_certificate</tt>: a DER-encoded X.509 certificate for the public key for signature verification.
This certificate <bcp14>MUST</bcp14> be a valid CCF node certificate
for the service; in particular, it <bcp14>MUST</bcp14> form a valid X.509 certificate chain with the service certificate.</li>
          <li>
            <t><tt>inclusion_proof</tt>: the intermediate hashes to recompute the signed root of the Merkle tree from the leaf digest of the envelope.
            </t>
            <ul spacing="normal">
              <li>The array <bcp14>MUST</bcp14> have at most 64 items.</li>
              <li>The inclusion proof structure is an array of [left, hash] pairs where <tt>left</tt> indicates the ordering of digests for the intermediate hash compution. The hash <bcp14>MUST</bcp14> be a bytestring of length <tt>HASH_SIZE</tt>.</li>
            </ul>
          </li>
          <li>
            <t><tt>leaf_info</tt>: auxiliary inputs to recompute the leaf digest included in the Merkle tree: the internal hash and the internal data.
            </t>
            <ul spacing="normal">
              <li>
                <tt>internal_hash</tt> <bcp14>MUST</bcp14> be a bytestring of length <tt>HASH_SIZE</tt>;</li>
              <li>
                <tt>internal_data</tt> <bcp14>MUST</bcp14> be a bytestring of length less than 1024.</li>
            </ul>
          </li>
        </ul>
        <t>The inclusion of an additional, short-lived certificate endorsed by the TS enables flexibility in its distributed implementation, and may support additional CCF-specific auditing.</t>
        <t>The CDDL fragment that represents the above text follows.</t>
        <sourcecode type="cddl">
ReceiptContents = [
    signature: bstr,
    node_certificate: bstr,
    inclusion_proof: [+ ProofElement],
    leaf_info: LeafInfo
]

ProofElement = [
    left: bool
    hash: bstr
]

LeafInfo = [
    internal_hash: bstr,
    internal_data: bstr
]
</sourcecode>
      </section>
      <section anchor="receipt-contents-verification">
        <name>Receipt Contents Verification</name>
        <t>Given the To-Be-Included bytes (see <xref target="ReceiptVerification"/>) and the TS parameters,
the following steps must be followed to verify the Receipt contents.</t>
        <ol spacing="normal" type="1">
          <li>Verify that the Receipt Content structure is well-formed, as described in <xref target="ReceiptContents"/>.</li>
          <li>
            <t>Compute <tt>LeafBytes</tt> as the bytestring concatenation of the internal hash, the hash of internal data, and the hash of the To-Be-Included bytes.  </t>
            <artwork><![CDATA[
 LeafBytes := internal_hash || HASH(internal_data) || HASH(To-Be-Included)
]]></artwork>
          </li>
          <li>
            <t>Compute the leaf digest.  </t>
            <artwork><![CDATA[
 LeafHash := HASH(LeafBytes)
]]></artwork>
          </li>
          <li>
            <t>Compute the root hash from the leaf hash and the Merkle proof using the Merkle Tree Hash Algorithm found in the service's parameters (see <xref target="parameters"/>):  </t>
            <artwork><![CDATA[
 root := recompute_root(LeafHash, inclusion_proof)
]]></artwork>
          </li>
          <li>Verify the certificate chain established by the node certificate embedded in the receipt and the fixed service certificate in the TS parameters (see <xref target="parameters"/>). TBD needs more details</li>
          <li>Verify that <tt>signature</tt> is a valid signature value of the root hash, using the public key of the node certificate and the Signature Algorithm of the TS parameters.</li>
        </ol>
      </section>
      <section anchor="receipt-generation">
        <name>Receipt Generation</name>
        <t>This document provides a reference algorithm for producing valid receipts,
but it omits any discussion of TS registration policy and any CCF-specific implementation details.</t>
        <t>The algorithm takes as input a list of entries to be jointly countersigned, each entry consisting of <tt>internal_hash</tt>, <tt>internal_data</tt>, and an optional signed envelope.
(This optional item reflects that a CCF ledger records both signed envelopes and auxiliary entries.)</t>
        <ol spacing="normal" type="1">
          <li>For each signed envelope, create the countersigner protected header and compute the <tt>Countersign_structure</tt> as described in <xref target="cose_sign1_countersign"/>.</li>
          <li>For each item in the list, compute <tt>LeafBytes</tt> as the bytestring concatenation of the internal hash, the hash of internal data and, if the envelope is present, the hash of the CBOR-encoding of <tt>Countersign_structure</tt>, using the CBOR encoding described in <xref target="deterministic-cbor"/>, otherwise a HASH_SIZE bytestring of zeroes.</li>
          <li>Compute the tree root hash by applying MTH to the resulting list of leaf bytestrings,
  keeping the results for all intermediate HASH values.</li>
          <li>Select a valid <tt>node_certificate</tt> and compute a <tt>signature</tt> of the root of the tree with the corresponding signing key.</li>
          <li>
            <t>For each signed envelope provided in the input,  </t>
            <ul spacing="normal">
              <li>Collect an <tt>inclusion_proof</tt> by selecting intermediate hash values, as described above.</li>
              <li>Produce the receipt contents using this <tt>inclusion_proof</tt>, the fixed <tt>node_certificate</tt> and <tt>signature</tt>, and the bytestrings <tt>internal_hash</tt> and <tt>internal_data</tt> provided with the envelope.</li>
              <li>Produce the receipt using the countersigner protected header and this receipt's contents.</li>
            </ul>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="deterministic-cbor">
      <name>CBOR Encoding Restrictions</name>
      <t>In order to always regenerate the same byte string for the "to be included" and "to be hashed" values, the core deterministic encoding rules defined in <xref section="4.2.1" sectionFormat="of" target="RFC8949"/> <bcp14>MUST</bcp14> be used for all their CBOR structures.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="new-entries-to-the-cose-header-parameters-registry">
          <name>New Entries to the COSE Header Parameters Registry</name>
          <t>IANA is requested to register the new COSE Header parameters defined below in the "COSE Header Parameters" registry.</t>
          <section anchor="cosesign1-countersign-receipt">
            <name>COSE_Sign1 Countersign receipt</name>
            <t>Name: COSE_Sign1 Countersign receipt</t>
            <t>Label: TBD (temporary: <tt>394</tt>, see also <xref target="I-D.birkholz-scitt-architecture"/>)</t>
            <t>Value Type: [+ Receipt]</t>
            <t>Description: One or more COSE_Sign1 Countersign Receipts to be embedded in the unprotected header of the countersigned COSE_Sign1 message.</t>
          </section>
          <section anchor="issued-at">
            <name>Issued At</name>
            <t>Name: Issued At</t>
            <t>Label: TBD</t>
            <t>Value Type: uint</t>
            <t>Description: The time at which the signature was issued as the number of seconds from 1970-01-01T00:00:00Z UTC, ignoring leap seconds.</t>
          </section>
        </section>
      </section>
      <section anchor="new-scitt-related-registries">
        <name>New SCITT-Related Registries</name>
        <t>IANA is asked to add a new registry "TBD" to the list that appears at https://www.iana.org/assignments/.</t>
        <t>The rest of this section defines the subregistries that are to be created within the new "TBD" registry.</t>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>IANA is asked to establish a registry of tree algorithm identifiers, named "Tree Algorithms", with the following registration procedures: TBD</t>
          <t>The "Tree Algorithms" registry initially consists of:</t>
          <table>
            <name>Initial content of Tree Algorithms registry</name>
            <thead>
              <tr>
                <th align="left">Identifier</th>
                <th align="left">Tree Algorithm</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">CCF</td>
                <td align="left">CCF tree algorithm</td>
                <td align="left">This document</td>
              </tr>
            </tbody>
          </table>
          <t>The designated expert(s) should ensure that the proposed algorithm has a public specification and is suitable for use as [TBD].</t>
        </section>
        <section anchor="sig-alg-registry">
          <name>Signature Algorithms</name>
          <t>IANA is asked to establish a registry of signature algorithm identifiers, named "Signature Algorithms", with the following registration procedures: TBD</t>
          <t>The "Signature Algorithms" registry initially consists of:</t>
          <table>
            <name>Initial content of Signature Algorithms registry</name>
            <thead>
              <tr>
                <th align="left">Identifier</th>
                <th align="left">Signature Algorithm</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">ES256</td>
                <td align="left">Deterministic ECDSA (NIST P-256) with HMAC-SHA256</td>
                <td align="left">
                  <xref target="RFC6979"/></td>
              </tr>
            </tbody>
          </table>
          <t>The designated expert(s) should ensure that the proposed algorithm has a public specification and is suitable for use as a cryptographic signature algorithm.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="STD" value="94"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9162" target="https://www.rfc-editor.org/info/rfc9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <seriesInfo name="DOI" value="10.17487/RFC9162"/>
            <seriesInfo name="RFC" value="9162"/>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="E. Messeri" initials="E." surname="Messeri">
              <organization/>
            </author>
            <author fullname="R. Stradling" initials="R." surname="Stradling">
              <organization/>
            </author>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962.  It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6234"/>
            <seriesInfo name="RFC" value="6234"/>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8032"/>
            <seriesInfo name="RFC" value="8032"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA).  The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves.  An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6979" target="https://www.rfc-editor.org/info/rfc6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6979"/>
            <seriesInfo name="RFC" value="6979"/>
            <author fullname="T. Pornin" initials="T." surname="Pornin">
              <organization/>
            </author>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-cose-countersign" target="https://www.ietf.org/archive/id/draft-ietf-cose-countersign-10.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-cose-countersign-10"/>
            <author fullname="Jim Schaad" initials="J." surname="Schaad">
              <organization>August Cellars</organization>
            </author>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="20" month="September" year="2022"/>
            <abstract>
              <t>   Concise Binary Object Representation (CBOR) is a data format designed
   for small code size and small message size.  CBOR Object Signing and
   Encryption (COSE) defines a set of security services for CBOR.  This
   document defines a countersignature algorithm along with the needed
   header parameters and CBOR tags for COSE.  This document updates RFC
   9052.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.birkholz-scitt-architecture" target="https://www.ietf.org/archive/id/draft-birkholz-scitt-architecture-01.txt">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-scitt-architecture-01"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <date day="7" month="September" year="2022"/>
            <abstract>
              <t>   Traceability of physical and digital artifacts in supply chains is a
   long-standing, but increasingly serious security concern.  The rise
   in popularity of verifiable data structures as a mechanism to make
   actors more accountable for breaching their compliance promises has
   found some successful applications to specific use cases (such as the
   supply chain for digital certificates), but lacks a generic and
   scalable architecture that can address a wider range of use cases.

   This memo defines a generic and scalable architecture to enable
   transparency across any supply chain with minimum adoption barriers
   for producers (who can register their claims on any Transparency
   Service (TS), with the guarantee that all consumers will be able to
   verify them) and enough flexibility to allow different
   implementations of Transparency Services with various auditing and
   compliance requirements.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="CCF_Merkle_Tree" target="https://microsoft.github.io/CCF/main/architecture/merkle_tree.html">
          <front>
            <title>CCF - Merkle Tree</title>
            <author initials="" surname="Microsoft Research">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAMHzVmMAA81c63bbRpL+j6folX9YnCFhSXGSMXPZkUU51lnf1qIzO2Pr
SE2gKfYSBBgAFM3YyrPss+yTbV36hotsT3J2z/rknAhAo7u6uuqrr6obHI1G
Ua3rTI3FSbHJa1VW+jrX+bU4eXl+Kk7zG5UVa1UJnYtpKfNqLUuVJztxrsob
nagqkrNZqW7G4vzkbDoVr1Wi9LquorRIcrmCbtNSzuvRTJfLRZH9OqoSXdej
0jQbHRxFVS3z9FJmRQ6t63KjIr0u6a+qPjo4eARNYEwJI6hkU+p6F22vx2L6
eBItt2NxhjLnqh5NcJwokfVYVHUarfU4EqIukrHYgZRCVEVZl2peuevdyl9G
clMvinIcjWCicO9pLB4biaEpT+Spypfh3aIEMZ6UcpMvirkqxfnZFO5adXQe
qJXU2VgsoJfYauOvla7juWsZpwoFAzEVzOL1QoEsdSmrSolvv4YnSZGCHPe/
eXj06Ov7eA3KGIuJLFegw7SmFrCGJdz8SZUrme/sfJ7H4rVWyUKVtZvPc6mX
4V2Yj8z1r7LWRQ5PdVIWVTGvvej4Qmxf+OvKNoiTYhUO/ebf7KjHsZioDOxJ
1qNn8kZuUjf4cV4XOlc9zz8rhszrNPuS4U9i8aTYoHG4YU9UWuokuP3Z0ebc
9JPjRXkB2q71jUKbe/3k5C+PHj4yfz46/ObI/PnN0VcPbYODr9zdR99C20jn
87CTs9Ek1qqej5KiUqPEu6Z92HIoWSYLXauk3pT0/snJk8vnqlxm6nIK5oS3
wBtkeY2WtajrdTV+8MDP6VrXi80s1sUDePEBzDx/EPb4YMVdoWXGi3qVcXcG
N06eiJHgwQQORg+tQwn6x0ZohwOUqBT2H0Wj0QhcBq08qaPoGLzeYkwNC51S
N/A3rNk0ePJaXWt4ZycqRiFEp2qzXoOLi2IuJF1kO5EsYCb3EbxqdY3QMQwG
SOAKhyCgEaX6ZaNLADqZZWKtQNmiXsga1hmWWc82tQIwgVvKDw64WJLhVPho
prinLQix2DWFjwGm4F1dCYDFzQruwdAiaQLujSw12LaAVtVaJXquVcoyqFzO
MhCNJUU8KHnYIjd6H+HKiJms4JVALDApcZ0VM5k1NAKTpSloVcXiWFyrXKFX
rMsiUSksN70HV+kmQcHWcpcVMrWzRHlhGJzgjcx0Kmu4wqmpubYPMnUDQlyD
zFWRbVgYvL8udZ7oNU5mXhYr0udJAbcA4s6NHrDdaZ6UuzW+J/YxEA1AJTJR
MRvMSqdppqLoHqI/iYkto2gaatjIA+OKlQJbTGlWuqo2dhAQUc93eBWshER7
J83iuJco1CF0UFU0G5A+26Q43xy68AtMOgBNSETvDfkMaDxZwGLB+IFvwAz+
poRMi3VNk4dRVzovsuJ6h5aLt855pU5opc685U47ljsle9inyDsQocN6Lewf
5+I4fIJamLYMNfStiQYwAIMJxaiG4GlKfPjwGeS5vR0AHmRSr4aOOgx7ecPQ
udHQcgae08+4KBpiYRT9KN5OX05eXohJIbZK5Ar9oRDq/TpD1eBqmuVXqLgV
xNZS/asA/a4kzCurCmMDpHmxD0guqgXOGgdCPXxq/QYgWFGAAhFNEnCEBMFg
tdI16dWAAfY8FCq+jtGjseMBTWMDBn0GtqZQyKpWMsXlnZ7DtJ5Yw7dTBYC6
0Wq7hoBIuGD0QUCgVzqTJY4mO1Yqfj5COwX5wIYz55jGWMdCUxdSbHIIKmUF
wLYbkc1rhBNBHlZcl3K9YOcHAeE/ladFWSmapLFI07EyKypmO7odyEPrdVKs
cJVTsYVo0u9TRlLilra7aghe7Yhj+B6N4kaFJUcwVu9BSSDtjU7Jkf0SIlrM
ChjaiO3exAWBexp6B0eDpoDwBVAvfEHzKJ+yhDgUDyboddW1hy14hmI5c2ht
JGn2B/Zyo2DkecMKxDIvtqgkcLqqWCkrse2rIUUC4ANQjGjGYDTbZMshWB2p
xKp5vZllOhkt1U54o2mgoMiQEoh8s5qBBDCiHQGW8949uKKguKK5vChqaXFW
CewUEASiwt7zN+fTvSH/X7x4SX+/Pv33N2evTyf49/nT42fP3B+RaXH+9OWb
ZxP/l3/z5OXz56cvJvwy3BWNW9He8+O/7zFY7L18NT17+eL42R6vYwj/uFAc
sDD6l+tS4cpKyExUlUBEZ709Pnn13/91+BCg7V+Aix0dHj66vTUXfzn89iFc
bMEueDRaGr6EhdtFcr0GFkOhADhDIteImwCVgPkAM9uc8AgU+ae3qJmLsfh+
lqwPH/5obuCEGzetzho3SWfdO52XWYk9t3qGcdps3G9puinv8d8b11bvwc0o
+jAW91a7WZHubjE2AxyswMFeyRKoN3p0FFlbZzcCy57r6w0iBiAK4luWKQrl
aIlr/x4so07RO+fYrC+cBPGcnMabMdgqQLHvTJDqwSrm+r3iKIBemOm5qjV7
HeN6d5AIB6kwCVXIpGB6gKwMGIjPYANufrDqxzXwlFyvNisyl6YQhkeMEfmk
m4SZJHSACRIQOfnLJrwr9jHQiDdvziYDZoYgADQBaVyjihE7UIvBik3FcroJ
gEMAA7xRJDnAJmaq5jUvKTIuMTWBDlpeF0BGFivuLYQSm9Gzq+AayDQliEW0
df0NEfYgMY1Fk6wlkOHXRNZKS6/3mXIgsx3BwCP7AEgGjWH9GJklKBTGQpqr
OGo1pMVZCOHoBE6nQZaIKizAbdkmpudWCI4p6wJQFLkyWvVPhizbIH1uUR2z
F3uzVAA3FaFmT9g2qD27y5hjRljbmWeUFM1PHr98DeKXQHEozgKPA3WrFaoW
SVEK1oOLdgVRCieo0qsxTdldAy7JlOG+L4zDqzbm+Dcxq3Kje4lSxQSWp0OE
tqF56O63334TCfD1yM7nB/EWVsNJMxaY/ok4mYE1faB88U8QlmYqEz/8iBnG
BhPK2yHl3CwW1gB20UVkWokaO3iAOB9Re7iFDWDkKDqVwMKbQjEEGGoYhlhR
7wxbcKlQ9YmsQVqjJ8MI0oVWJQ3+fbiHefwl3jm8DBQOQPm3hc5Uj+oqYrGp
ns+JQzK7kKRkMJzrazBR8Bix2mQ1JlSeTqGTAzitMWWV0AHkLXUzdTNLNT0f
RtwbAEC1oICJ2AGu6i1YWjzGRzpPNfCuDThaY7hZ04pSsQ9rsdFYzMh2BH+6
hJxQ3qhqELfzNIASBq0gOSSkDaxsTv4NWWQEkgSabqXQQIj3OUnprZ0AcsRs
EJ5UVi3qZynUVbCIl06UK/a8Ia48aA11Cf1sQzPvfc8YvbAMdiz2TLtzCws/
H+0NqQkG0MvAPdRqXe8ui/ISQB0gTv+q0suVXHNjGuZLG8PAqgQ8vpTSuB3f
Nwl+eIviwSXEkywFd3tryjjC80huTPcvwBXJ1xArrpriXw0BiLj7Kw4NV66L
K8H9GzKwxnqHrwp0sm9QdStXV6mByqumGkzHuLicKDRs3qSyQT+XDIgVsD1e
Tg5O1Emkm1l/HSCzx43C1GiajB5ul2iAOdvBXTbFjNGVfO4C0sfIOcBuc3SE
oZkNtABQcPOkWEg2IK7C1QYgl+JXVRajTOXXEDVmO4i2EP/za+j5VaPwA6Zt
JTau3ys2BJnDWDyDeDulsiIVwPoXzhTSSkCUdZFzIakVecggYjEhuENUAA/V
ZZFz6rHVgFALgA+Dh9hgpRJIt3W1ou7AqYnLYA4Qi5cA7MXsRhebyrdDc8CF
Ws2oruaX0azqJu+LkDy5GPgYUyTfHcLzjHKMqi5Ad5R6yhJYmExA5koh66mR
admCgMQqNNuwX0fMDbFwN8SChh2D6lXQc6bzJXcMmbrCh7BcR7E4fU8V0xZW
DK0ns6cFOR96lZlJFH0VixOiWxjPe9GKQZByaB4IPZN9NejKj+JF8A7cdhLO
KE9CsiGespp9imBjZdc12dHnkCIUWy5Kdhh9202/iPAAzWxOAF5GcOiN1rcD
olaWJp9NxD5xENqOGjBZ6pJ58m9bHTWy9SYxbdqNCHDsWEt3qFaDDifHgUpX
XPtdMpwxV4Vkpjs85Uvg2duFRo7V49BAWCpLdyUHeV9qqBBnrEUdPvr2YHRw
CP9NDw7G9N8/xJvpCZDa67xAnEL+sLYvEeOyFsZ4awpAH+6Z2+FdsJ6fNNZc
ZKeWRXV61xVpryZaFNhaVas1AAkWW2f2PidTJuWkysNrRwYPcd8LN+s+aYZ2
TKqXF8VytFlbUA+M27tiYHWmI9eMQeFnK4ysXW0yMA/Xmkm1tQJjIF0xV7JO
FoaaFblr3xDPoImLcJ/gTZVoFF7u9rFhMOfP6q7qxH4Q6WFMecoIDBsX4RMi
TYvRYzU6M8ARjkyJDnWAd1qi27QHckSdjDBzub2Fcb/GfZ6bYqn61G/1fBNa
q99y4Vyus/xUnW8IiWLrHNh9ZciPoxum3iOpbh9k37CKybIC051jmJJJota1
nWaTtnuvqHhvZ2j3lHJKlNrLYTZ1OOhwFnTypDVxFhLvt7Iwy3iIs/jbbkAp
ZjqX5c5un9DrxY0qTYXjlw0sDxVsMH8BLn4Nj1RO21oEd3oFuQQSCA95KMYc
lbstyqWtMLT2SilLwFh17FXYjFAcpfwqmeAkg7U2m4neF88N+ka9ZREOKw42
nfIYaE9PJufHQThvlWGQgdhqeairkrYveI7QoF1EicNQdoJbimSWisesVDYf
GbP4j/jrg0ci8U14XOl2JPNkUZQBHgZFf9pcpMzK8dog6tg6VYByXSVgMQ1W
OMgCXbW3MvVCZFf49kJWi+46uLH7VIgVoz5oY82dmwE+fAiWG3SHu0xb6ECJ
p8fnT5npz5nyk2CufyZJ2Ojy/Owfp67gyKUmw8ZNqb/Y1ODXVM5Hem4YU2Ob
BvdYAIyBT0XRi4IXK9ADjpzKtSNiHz7YCRzFh1Tf5xMJiLIctn3i4O0y1VWy
qSrD/gOTYpHuiccNx0SnqcAhVn4regSLZbyCsMridvCGeIprtf98+nQg5pvc
yw+kt6IX8iBLAY9GdQOTFJPLHNLpdx/Sd28P3l0AgX739hD/H8cxXeQjuHx3
G5MZW5VWflfEr4Xvfsg1QJPTu/SLPAhtyhYtQkHdfndlKAF68dQaIcKSTcVo
QrryFho+ZAHGVEGIQBv7H24HMD+Uch981CXW7kXujuIFhmVEvJ3YJ/lxCynn
Qh2wpTm9M4CRw97TtwcXfgS8sqM8AdPMxY/icAhv12JpMzraI4Ih18B6OAJv
AXFWqCu0ZZhJLvZ1rED9S/E9XHz/gzhaDngBOivOc89HirGZZ4NrygrKnV5L
LFRXVEKCKQVTgMZOfrp+ezBeXgzEx4+CL5fj/GIwGPKstrgLQ/j67uO7j9A7
JHKKan6IZDlvaY3EuP8JiosSVtBk8u7t8nC8PHp3AaNP7l/uL49Gy8OBe5H3
EWA2YJv3yTihXYovkZneJzu1t/4c2Cw8oa5G/vkRGzENzxgBo4mRgPGMDxrF
Ei0gV32FVdoKy9DmkXaPuIBLO95sGLhn1VgaY520PY5rbX2Q9s5WKtWI+mSC
RB4rD622yMEFx67rRC4jNKVIAwUkR1CGEFSYy5GwGTiujWBKU1ZsRKcWlOTY
KmeQdKJlYgMM/kbqbMdFHdwON1ZaF1uJO5dGDKpKYoqjUAIk+8JQcZJgP2yO
0xrgJj2J4cZtq5qFm5EdO2ZHrziZwV3nsqSTQZz1027qsLc7LMigETrdmdVZ
QW6FgZOnHC5JuB78FCZKVJZkNro0dRhaK9M1HfESZ3P/oKvltnhhpoAHOOm9
IXtzX3uMOSE5IlnUe5phsPZs6PdMXsP197a9Y/2c8rok04gmuItDTPuGTiJ1
hsZgvNXVguvWdsfQNWJ8BXEuydbZY64pdcQ50V1eIp8deiphKkKWlNE0PehT
LtwqUbhOxxGVUrH2Rtq+xCf7TpIhiz+w5+kWYvyDl9PcRGnfZmoOqse7FzgI
vTZ25VuNcELHG+0/6omglIQEDF0M3GOVVaq/LTXE6GIelwpoVS4WZsl+YtZ3
15pxMk6EYPrUMIQvDOucsOPCpuq90BRvLBtEtxhG5cZ37dcGX0Ptlhze3fkP
c4xtQ4kEnlrbdTEv8iHBnG/Du1QTK20o7gc44wSuBTBi3K8BtdwBrDEwogLZ
gs1dpCW8fIjITAEznm4PbDv8xhABxnrYjjaB1+asFL/c8IuqYep8mBAoM5W0
sTaxWVfxgOjoqU2Jzzk3CE+Ig81TMHlGmGook6WmfruW6oq2GywENZPPypyd
fK8zjSyzmdlFNExPAIHsFE9G+vzYolsY5ix/i83GoH+9L55Q/KFUm3dUSeNY
UUdtU0ndvAuTaLHK7xrtscbbag8Ls8KFPjw4emhewXnja9jaDmFiH86DEg1j
W0F5I72jhtt/dusPlTioRC1DpdHq/Rpy6rkmCk0WjxsOZgf1ruWEhTCFwQ7t
Yv2Tp1n2B4Y1f4yjA1I0FgPhiICpoXKihE6blkojo8irjUvPO3YkKT+kbZUU
p48n/4LYh/bgN0QDHwzdD5UIAGSzLNOdieOWQ/PcOEMk/t4vD+qv10c+pdi+
WdjdsqYd865c01Y7+rCPrVNhIaWJUTEgAh1WNDu+n5Ys7A/6olxhR0/MqRei
lWF9lw6PzDYWz+jknc3aG4fvzGhucw6nF0Zm0ppLdoc4/MjUohIQGh/Qrtg9
X2E+sX250x6+zmyf3TZPbbjh7zy+wfkRHd2w5sTHOuwxDlQHA4/fMh1Tu3ZB
yFXFOuUfcC7cp43x9J7yjKvTjpxI2314ZeKbw1EekE72VMAnaxsA6y2fVwEZ
kWVeBjUiwrvJqYepbhXJ1kL4nCIdKbS2zvMKa6UxMA1y3rAHu/UjuVxJZsk0
2zeK7DCm2PQd8SLcqEs2YK5DTAyoH/wAw/XUlZaPzrtQbktXQZPYRAkTWi8p
tJol60RrZqCO8IVgHfLxcKUcCBFENNmGRQZU08gccUJjopnR1qmNON88ZKPz
LdskuWmyuekJHrwL6CWkqmsJ/EdQgi2u8MkVnRBJpM2GyYxNnGBxK7fod9EX
ghJX8PAL3Iw6Jim+coHnipVPnBi/pUHzcwBkQLuj71CPbWoeKD5YQYQsLjLm
afMu4iartI2vXz6H71rvMxZ/5v1MVRWXYZBLxLbqFqY0eQPwKMkfZZQihQZu
Tn4HZyXclyfzDNKzGWizJnjCYmVKX5DMiC81I8HQQa79JieoLd6FtrRJMJk8
w/L8NZ+oRrAKTtIRQM4opVLva1tz6zlh5tDaHrppHVrhEy5tvAqftVx4LN7+
mVOXU57mBTdzxjZGyjs/g7+iCzpO4Vo6GdA9YIii4G+nKOfjIzTwhn3btW5Y
UFOywDRcB8Rs+uJVuAkapl2tLSWyK7tV0Ld/ao5cdorkv2OntPdkwGF397I1
lyYobVWWjRCvcdOuu7XYDs23vEF6Ylz/yvHIK7stHXhWDxFtOf+wUcltIMDQ
6ck+vkvdceQya09rx1/Oa+l2s+OB2Y3tBbjWeFSLtem8E2DAm6dBD54dNKNP
AwQNVnL08AlGp/brd0PnkLM4qDWh9H7V2X5pbbuM/RxILpC/VTGxUxu2fXhA
27M/eyvshnZQEqCdJmJjILDNJfj0UFjACTbx/bZODzf4xB5TZ29p+nhCXzuB
JxV8yFbqDPLpb5peEp6kI27JzCWgT7au0VjIxv66Z16mWWfGdmY9G3POvFtH
AgIksoWg7ud5fuOJt85oM1cGBhJ+gsgzc2fMI8wDgLYVKzponu9aW1a9J7jN
N5nQuBGDmrHLKjtub+nWcomy2tqC36WyWQ0fg/1P/IiLvg4I9tWHXFnmnRqT
A5oY3uIKw3bwH9p6V7E2AbSVCcbRPunVPUduhxrFTylMhiuJF5u8iCtIFZ8q
+0zpxSbpA0Jo3B/iEnm7psCn900aHx6u6pzfoA8SAnj548dFGNqdbDR942tU
D3TD/S+iPk5raD/oCs8WG/Iy7EQEX8CxhnDX2dA/Vq/B6tFW09nDvn1PHJmr
NHEndrSSQ/xcAU+W4FtYWrV7B66iaR2iXb9A4rJUau1PpOEbpizUrmNSkYu3
mPggz7lCQ3bg1k0zGyYlG6AYIl+wveFzOH8mlciLOUUOaMhj32Xw/lSxthsc
MPqQg9MIlJixzHk3GUQ1VjSlTxSBqxanIdYb2+5f+U9eXfhx1QZrLWB7nbGH
QYS6Q4+B9jyTCWtBX1I7ctpxevZg9Yk5eEP/AgyhGZo374cfSeIZJPQTV6d+
TbInXJWjgzs9rhJFZ7boQp9yUdkMQog5vMIsBb+LQF3YKq7NZPfsZ4bMwvb4
00S+yXWSPbeuxur8lzMkhPfqcoPpVnBQ05/geBj7Mxz4AxO3ty4z9HUt8Kea
vrZofqjDinlV6hsJcRDP68ECmV8JgEj3eIKP7e+r3PX87PjFcedZcE6KYuDp
exPcXrvfGOD96hdqC4viYiUBGn4G3D0DbL8Mh0XBETXvbMIy2t1mfGwKXjn0
GnYTcCurRLP7y5661z/mnvvszG469n/OY00uil7w74l8ptUzd2ZW7ENggmRY
4m+GXH316OEVf4hAdd8v+bA+in4mOjfdrWHgd5CRGo71DhLICWHFmn/FhE6/
l8wd7xDQfUjMVtpmtf1H4duumfac9bfqc+eGraaCG14pzTlt8AOu5lSQg3WP
Gf/fnC9mk6UfVxi9Vhnt/YVGbY1TVkvzBWiKR4nRIt03jHswyT1r7hQgmZDR
l8MVzsr+Fst2u421zGVclNcPZIVTpG8fHhgmWrpaX2NPjX/igpSymfmf9TDD
uE+gmaAxIps1RjlZvKbpt45vGszsfoXZowCXQIWfcXa+xgxOxgMg4u/yAFq2
Bt0b+uDhqwtNTu8+0TOmhFrq9OPlMF+IZrvwNAUklB/Fmf/A9mP71C7/+wgL
b1MUuoa3kFK7xz3HW/F2M+P5iF9I04/m/LB3Zr5XNYGLkpaW3q3ke2ZnAfgA
2T0SkfdriNz71QBreZssNRtavngCylkXtBnq5FnQsTCT8NnsR7o9cLSqjeYd
X4wk9L1KJd6Cai+MYfRkgJU5C9s5XvpPWEffocw+E+kb/nfbSW9n/7Sx9OXE
oa2gnZyeH339jbWTSSPq867K/osziOKvRtBswLN5+vz4ZHT+9Bhf/IjlLP6V
KAj4nzGh3hX6f2FHsvVzIz2Lbn7cZyaTZRT9D59CyYiYTgAA

-->

</rfc>
