<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sun-lamps-hybrid-scheme-01" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="Convertible Forms In Certificates">Convertible Forms with Multiple Keys and Signatures For Use In Internet X.509 Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-sun-lamps-hybrid-scheme-01"/>
    <author initials="S." surname="Sun" fullname="Shuzhou Sun">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>CN</country>
        </postal>
        <email>sunshuzhou@huawei.com</email>
      </address>
    </author>
    <author initials="Y." surname="He" fullname="Yidi He">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>Singapore</country>
        </postal>
        <email>heyidi@h-partners.com</email>
      </address>
    </author>
    <author initials="H. Y." surname="Lin" fullname="Hsiao Ying Lin">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>FR</country>
        </postal>
        <email>lin.hsiao.ying@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="April" day="22"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Hybrid Scheme</keyword>
    <keyword>Post-Quantum Migration</keyword>
    <abstract>
      <?line 76?>

<t>This document presents a hybrid key and signature solution, which allows to integrate two public keys and/or two signatures into a single certificate. The scheme enables a single certificate to be converted between different forms, allowing an alternative public key and/or an alternative signature to be transmitted either by direct inclusion or by referencing external data. This flexibility ensures that the scheme is backward-compatible with legacy devices, while also providing enhanced security support for upgraded devices. Four CSR attributes and two new X.509v3 certificate extensions are defined, and the procedures for signing and verifying certificates containing the defined attributes and extensions are described.</t>
    </abstract>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The advent of quantum computing poses a significant threat to the security of traditional cryptographic systems. Classical cryptographic algorithms, such as RSA, ECDSA, and their elliptic curve variants, rely on the computational difficulty of certain number-theoretic problems. However, these algorithms are vulnerable to attacks by adversaries with access to a Cryptograpically-Relevant Quantum Computer (CRQC), which can efficiently solve these problems and compromise the security of the entire system.</t>
      <t>To address this vulnerability, there is a pressing need to migrate to post-quantum cryptography (PQC), which employs algorithms resistant to quantum attacks. This transition presents unique challenges, as the security of PQC algorithms is not yet fully established and requires extensive evaluation. Additionally, during the migration period, systems must maintain compatibility with legacy devices that do not support PQC.</t>
      <t>This document introduces new Certificate Signing Request (CSR) attributes and X.509v3 certificate extensions to facilitate the migration of post-quantum signature algorithms while ensuring compatibility with existing systems. A key design requirement for this scheme is to enable the coexistence of two public keys and two signatures within a single certificate, and allowing for switching between four distinct certificate forms during transmission without impacting verification.</t>
      <t>By embedding an alternative public key and an alternative signature into extensions, multiple certificate chains can be effectively embedded within a single chain. This enables legacy devices to continue using traditional cryptographic algorithms, while upgraded devices can utilize PQC algorithms and remain interoperable with legacy devices. The scheme also allows for the flexible selection of certificate forms, including both "by reference" and "by value" options, to accommodate different device scenarios and optimize bandwidth usage.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</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?>

</section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>Alternative Subject Public Key: The keys, whose usage is profiled in this document, which can be used to verify a signature instead of, or in addition to, the traditional keys.</t>
        <t>Alternative Signature: The signature, whose usage is profiled in this document, which can be used to validate a certificate instead of, or in addition to, the traditional signature.</t>
        <t>Subscriber: An entity that applies a signed certificate.</t>
        <t>Relying Party: An entity that receives and verifies certificates.</t>
        <t>Issuer: An entity that signs and issues certificates;</t>
        <t>Upgraded Device: An entity which is capable of understanding and using the extensions introduced in this document.</t>
      </section>
    </section>
    <section anchor="design-overview">
      <name>Design Overview</name>
      <figure anchor="overview">
        <name>Design Overview</name>
        <artwork><![CDATA[
+------------+      CSR (pk_1, pk_2, sig_1, sig_2)        +------------+
| Subscriber | ---------------------------------------->  |   Issuer   |
| sk_1, sk_2 | <----------------------------------------  | sk_3, sk_4 |
+------------+   Certificate (pk_1, pk_2, sig_3, sig_4)   +------------+
  ^   ^   ^
  |   |   |
  |   |   | ByRef Certificate (pk_1, hash(pk_2), hash(sig_3), sig_4)
  |   |   +---------------------------------------------------+
  |   |                                                       |
  |   | ByVal Certificate (pk_1, pk_2, sig_3, sig_4)          |
  |   | or ByRef Certificate                                  |
  |   +------- ------------------------------+                |
  |                                          |                |
  v                                          v                v
+-------------+  Download data  +------------------+  +----------------+
|    Store    | <-------------> | Upgraded Devices |  | Legacy Devices |
| pk_2, sig_3 |                 |   pk_3, pk_4     |  |      pk_4      |
+-------------+                 +------------------+  +----------------+
]]></artwork>
      </figure>
      <t>To achieve hybrid signatures in a PKI system, a subscriber needs to apply a certificate that contains two public keys to use hybrid signature schemes. Meanwhile, the issuer needs to sign a certificate with two secret keys and include two signatures in the certificate.</t>
      <t>The design of this document is outlined as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>A subscriber selects two signature algorithms and generates two key pairs (pk_1, sk_1) and (pk_2, sk_2). It then uses sk_1 and sk_2 to generate sig_1 and sig_2, respectively. The signatures are proof-of-possession of the secret keys sk_1 and sk_2. The two public keys and signatures are included in a Certificate Signing Request as defined in <xref target="creating-csrs"/>.</t>
        </li>
        <li>
          <t>An issuer holds two key pairs (pk_3, sk_3) and (pk_4, sk_4). Upon receiving a CSR, the issuer uses its two secret keys to sign the information provided in the CSR and constructs a certificate as defined in <xref target="creating-certificates"/>. A certificate has at most four forms as defined in <xref target="form_table"/>. The issuer signs Form 4 of the certificate, which includes the values of pk_1 and sig_4, and the hashes of pk_2 and sig_3. The issuer converts the certificate to Form 1 as in <xref target="convert-certificates"/>, which includes all plain values, and sends the certificate in Form 1 to the subscriber.</t>
        </li>
        <li>
          <t>Upon receiving the certificate, a subscriber puts the alternative public key pk_2 and the alternative signature sig_3 into specific locaitons.</t>
        </li>
        <li>
          <t>For legacy devices that have not been upgraded, only traditional algorithms are used to establish communication with the subscriber. In this case, certificates in Form 4 are transfered, which only include pk_1, sig_4 and hashes of pk_2 and sig_3.</t>
        </li>
        <li>
          <t>For upgraded devices, both traditional algorithms and post-quantum algorithms can be used. In this case, the devices can select a proper certificate form base on their preferences.</t>
        </li>
      </ol>
    </section>
    <section anchor="alternative-public-key-algorithm-objects">
      <name>Alternative Public-Key Algorithm Objects</name>
      <section anchor="oids">
        <name>OIDs</name>
        <t>The following OIDs are used to identify the CSR attributes and X.509v3 extensions defined in the subsequent sections.</t>
        <artwork><![CDATA[
id-altSubPubKeyHashAlgAttr   OBJECT IDENTIFIER ::= {TBD}
id-altSubPubKeyLocAttr       OBJECT IDENTIFIER ::= {TBD}
id-altSigValueHashAlgAttr    OBJECT IDENTIFIER ::= {TBD}
id-altSigValueLocAttr        OBJECT IDENTIFIER ::= {TBD}

id-altSubPubKeyExt           OBJECT IDENTIFIER ::= {TBD}
id-altSignatureExt           OBJECT IDENTIFIER ::= {TBD}
]]></artwork>
      </section>
      <section anchor="csr-attributes">
        <name>CSR Attributes</name>
        <t>Four new CSR attributes are defined. The first two attributes are used to submit associated information about the alternative public key of the subscriber for certification. The latter two attributes specify parameters related to the alternative signature generated by the issuer. A CSR <bcp14>MAY</bcp14> include any one or multiple of these attributes.</t>
        <section anchor="alternative-subject-public-key-hash-algorithm-attribute">
          <name>Alternative Subject Public Key Hash Algorithm Attribute</name>
          <t>This attribute specifies the identifier for the algorithm used to hash the alternative public key of a subscriber. The AlgorithmIdentifier type is defined in Section 4.2 of <xref target="RFC2986"/>.</t>
          <t>This attribute is identified using the id-altSubPubKeyHashAlgAttr OID.</t>
          <artwork><![CDATA[
altSubPubKeyHashAlgAttr ATTRIBUTE ::=  {
     WITH SYNTAX AlgorithmIdentifier
     ID id-altSubPubKeyHashAlgAttr }
]]></artwork>
        </section>
        <section anchor="alternative-subject-public-key-location-attribute">
          <name>Alternative Subject Public Key Location Attribute</name>
          <t>This attribute specifies a URI indicating the location where the alternative public key will be stored. This attribute <bcp14>MAY</bcp14> be omitted, if the subscriber and the relying partiy wish to establish a mutually agreed-upon location through external means. The details of this negotiation are outside the scope of this document.</t>
          <t>This attribute is identified using the id-altSubPubKeyLocAttr OID.</t>
          <artwork><![CDATA[
altSubPubKeyLocAttr ATTRIBUTE ::= {
  location     URI 
  ID           id-altSubPubKeyLocAttr }
]]></artwork>
        </section>
        <section anchor="alternative-signature-value-hash-algorithm-attribute">
          <name>Alternative Signature Value Hash Algorithm Attribute</name>
          <t>This attribute specifies the identifier for the algorithm used to hash the alternative signature generated by an issuer.</t>
          <t>This attribute is identified using the id-altSigValueHashAlgAttr OID.</t>
          <artwork><![CDATA[
altSigValueHashAlgAttr ATTRIBUTE ::= {
     WITH SYNTAX AlgorithmIdentifier
     ID id-altSigValueHashAlgAttr }
]]></artwork>
        </section>
        <section anchor="alternative-signature-value-location-attribute">
          <name>Alternative Signature Value Location Attribute</name>
          <t>This attribute specifies a URI indicating the location where the alternative signature generated by the issuer can be stored. The subscriber will store the alternative signature once received from the issuer. This attribute <bcp14>MAY</bcp14> be omitted, if the subscriber and the relying party wish to establish a mutually agreed-upon location through external means. The details of this negotiation are outside the scope of this document.</t>
          <t>This attribute is identified using the id-altSigValueLocAttr OID.</t>
          <artwork><![CDATA[
altSigValueLocAttr ATTRIBUTE ::= {
  location     URI 
  ID           id-altSigValueLocAttr }
]]></artwork>
        </section>
      </section>
      <section anchor="x509v3-extension">
        <name>X.509v3 Extension</name>
        <t>Two new X.509v3 extensions are defined. One is designed to include a subscriber's alternative public key in the certificate, while the other is designed to include an issuer's alternative signature. Both extensions have a similar structure.</t>
        <section anchor="alternative-subject-public-key-extension">
          <name>Alternative Subject Public Key Extension</name>
          <t>This extension is identified using the id-altSubPubKeyExt OID.</t>
          <t>Conforming issuers <bcp14>MUST</bcp14> mark this extension as non-critical.</t>
          <t>This extension, containing the alternative public key and associated metadata, is the DER encoding of the following structure:</t>
          <artwork><![CDATA[
AltSubPubKeyExt ::= SEQUENCE {
  byVal BOOLEAN DEFAULT FALSE,
  plainOrHash BIT STRING,
  altAlgorithm AlgorithmIdentifier,
  hashAlg AlgorithmIdentifier OPTIONAL,
  location URI OPTIONAL }
]]></artwork>
          <t>The fields of extension AltSubPubKeyExt have the following meanings:</t>
          <ul spacing="normal">
            <li>
              <t>byVal is a boolean with a default value of FALSE. This field indicates whether the alternative public key is transferred by its actual value or by reference, and determines the content of the plainOrHash field.</t>
            </li>
            <li>
              <t>plainOrHash stores the alternative public key or its hash value. When byVal is FALSE, the plainOrHash field stores the hash value of the alternative public key. When byVal is TRUE, plainOrHash stores the actual value of alternative public key.</t>
            </li>
            <li>
              <t>altAlgorithm identifies the algorithm of the alternative public key.</t>
            </li>
            <li>
              <t>hashAlg and location fields are optional. hashAlg field indicates the algorithm used to hash the alternative public key and location field represents the location where the actual value of alternative public key is stored.</t>
            </li>
          </ul>
        </section>
        <section anchor="alternative-signature-extension">
          <name>Alternative Signature Extension</name>
          <t>This extension is identified by the id-altSignatureExt OID.</t>
          <t>Conforming issuers <bcp14>MUST</bcp14> mark this extension as non-critical.</t>
          <t>This extension contains the alternative signature generated by the issuer, which is the DER encoding of the following structure:</t>
          <artwork><![CDATA[
AltSignatureExt ::= SEQUENCE {
  byVal BOOLEAN DEFAULT FALSE,
  plainOrHash BIT STRING,
  altSigAlgorithm AlgorithmIdentifier,
  hashAlg AlgorithmIdentifier OPTIONAL,
  location URI OPTIONAL }
]]></artwork>
          <t>The fields of the AltSignatureExt extension have the following meanings:</t>
          <ul spacing="normal">
            <li>
              <t>byVal is a boolean with a default value of FALSE. This field indicates whether the alternative signature is transferred by its actual value or by reference, and determines the content of the plainOrHash field.</t>
            </li>
            <li>
              <t>plainOrHash stores the alternative signature or its hash value. When byVal is FALSE, the plainOrHash field stores the hash value of the alternative signature. When byVal is TRUE, plainOrHash stores the actual value of signature.</t>
            </li>
            <li>
              <t>altSigAlgorithm identifies the algorithm to generate alternative signature.</t>
            </li>
            <li>
              <t>hashAlg and location fields are optional. hashAlg field indicates the algorithm used to hash the alternative signature and location field represents the location where the actual value of alternative signature is stored.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="scheme-workflow-from-csr-to-signed-certificate">
      <name>Scheme Workflow: From CSR to Signed Certificate</name>
      <section anchor="creating-csrs">
        <name>Creating CSRs</name>
        <t>A Certificate Signing Request (CSR) has three fields, as defined in Section 4.2 of <xref target="RFC2986"/>.</t>
        <artwork><![CDATA[
CertificationRequest ::= SEQUENCE {
      certificationRequestInfo CertificationRequestInfo,
      signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
      signature          BIT STRING
}
]]></artwork>
        <t>The signature is the result of signing the ASN.1 DER encoding of the certificationRequestInfo field with a subcriber's private key.</t>
        <artwork><![CDATA[
CertificationRequestInfo ::= SEQUENCE {
      version       INTEGER { v1(0) } (v1,...),
      subject       Name,
      subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
      attributes    [0] Attributes{{ CRIAttributes }}
}
]]></artwork>
        <t>The syntax of CSR allows a subscriber to proof possession of one secret key. To prove possession of two secret keys, there are many possible ways. This document adopts the composite signature schemes as defined in a recent IETF draft <xref target="I-D.draft-ietf-lamps-pq-composite-sigs"/>. Namely, two public keys are concatenated to obtain a single public key, and two signatures are concatenated to obtain a single signature. So the syntax of CSR does not need to be changed. In the following description, the terms CompositeKeyGen, CompositeSign, and CompositeVerify refer to the KeyGen, Sign, and Verify algorithms defined in Section 4 of<xref target="I-D.draft-ietf-lamps-pq-composite-sigs"/>, respectively.</t>
        <t>At the same time, the subscriber is allowed to select one hash algorithm and a location for the alternative subject public key, and another hash algorithm and location pair for the alternative signature generated by the issuer. These four fields are included as additional CSR attributes.</t>
        <t>The process of generating a CSR is detailed as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Select two signature algorithms A1 and A2 and calls CompositeKeyGen algorithms to generate a key pair (pk, sk). Internally, pk consists of pk_1 and pk_2. sk consists of sk_1 and sk_2. Some combinations and their identifiers have already been defined in Section 7. of <xref target="I-D.draft-ietf-lamps-pq-composite-sigs"/>. Specially, pk_2 is the alternative public key.</t>
          </li>
          <li>
            <t>Construct a CompositeSignaturePublicKey object from the pk as defined in Section 5.2. of <xref target="I-D.draft-ietf-lamps-pq-composite-sigs"/>.  </t>
            <t>
CompositeSignaturePublicKey ::= SEQUENCE SIZE (2) OF BIT STRING</t>
          </li>
          <li>
            <t>Construct a SubjectPublicKeyInfo object from the CompositeSignaturePublicKey object and the algorithm identifier of the selected composite signature scheme.</t>
          </li>
          <li>
            <t>Select two hash algorithms: one for hashing alternative public key pk_2, specified in the altSubPubKeyHashAlgAttr attribute, and another for hashing alternative signature, specified in the altSigValueHashAlgAttr attribute. The subscriber <bcp14>MAY</bcp14> leave these two attributes empty, in which case the hash algorithm specified in the selected composite signature scheme will be used.</t>
          </li>
          <li>
            <t>Select two locations: one for storing the plain alternative public key pk_2, specified in altSubPubKeyLocAttr attribute, and another one for storing the alternative signature, specified in altSigValueLocAttr attribute. The subscriber <bcp14>MAY</bcp14> leave these two attributes empty.</t>
          </li>
          <li>
            <t>Construct a CertificationRequestInfo object from the constructed SubjectPublicKeyInfo object, the four new CSR attributes (AltPublicKeyHashAlgorithmAttr, altSigValueHashAlgAttr, altSubPubKeyLocAttr, and altSigValueLocAttr), and other attributes.</t>
          </li>
          <li>
            <t>Sign the CertificationRequestInfo object with the algorithm CompositeSign using the private key sk.</t>
          </li>
          <li>
            <t>Construct a CertificationRequest object from the CertificationRequestInfo object, the identifier of the compsite signature scheme, and the signature.</t>
          </li>
        </ol>
      </section>
      <section anchor="verifying-csrs">
        <name>Verifying CSRs</name>
        <t>An issuer verifies a CSR by verifying the composite signature using the algorithm CompositeVerify with the pk extracted from CSR.</t>
      </section>
      <section anchor="creating-certificates">
        <name>Creating Certificates</name>
        <t>An X.509 digital certificate is a sequence of three fields as defined in <xref target="RFC5280"/>.</t>
        <artwork><![CDATA[
Certificate  ::=  SEQUENCE  {
     tbsCertificate       TBSCertificate,
     signatureAlgorithm   AlgorithmIdentifier,
     signatureValue       BIT STRING }
]]></artwork>
        <t>The tbsCertificate field contains the subject and issuer names, a public key associated with the subject, a validity period, and other associated information and extensions.</t>
        <t>To include two subject public keys in a certificate, the AltSubPubKeyExt extension is used to hold the alternative public key.</t>
        <t>Meanwhile, if an issuer wants to use two different cryptographic algorithms to sign a certificate, the AltSignatureExt extension is used to hold the alternative signature.</t>
        <t>To facilitate understanding, a preTbsCertificate is defined, which has the same type as TBSCertificate:</t>
        <t>preTbsCertificate  ::=  TBSCertificate</t>
        <t>The preTbsCertificate is signed by the alternative private key to generate the alternative signature. This alternative signature is then used to construct the AltSignatureExt extension, which is appended to the end of the extension list in the preTbsCertificate, resulting the tbsCertificate object. In other words, tbsCertificate is essentially preTbsCertificate appended with the AltSignatureExt extension.</t>
        <t>After verifying a CSR, the issuer proceeds with the certificate creation process, which can be divided into 3 stages:</t>
        <ol spacing="normal" type="1"><li>
            <t>Creating AltSubPubKeyExt extension and preTbsCertificate.</t>
          </li>
          <li>
            <t>Creating AltSignatureExt extension and tbsCertificate.</t>
          </li>
          <li>
            <t>Creating certificates.</t>
          </li>
        </ol>
        <section anchor="creating-altsubpubkeyext">
          <name>Creating AltSubPubKeyExt extension and preTbsCertificate</name>
          <t>To create an AltSubPubKeyExt extension, an issuer does the following steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>Extract the two public keys pk_1 and pk_2 from the pk in CSR. Obtain the two component algorithm identifiers from the composite signature scheme as defined in Table 2. of <xref target="I-D.draft-ietf-lamps-pq-composite-sigs"/>.</t>
            </li>
            <li>
              <t>Construct a SubjectPublicKeyInfo object from pk_1 and the algorithm identifier of the first public key.</t>
            </li>
            <li>
              <t>Determinate the hash algorithm to be used to generate a hash of the alternative public key by checking the AltPublicKeyHashAlgorithmAttr attribute in the CSR. If this attribute is not present, use the hash algorithm defined in the composite signature scheme.</t>
            </li>
            <li>
              <t>Compute a hash by hashing pk_2 with the determined hash algorithm.</t>
            </li>
            <li>
              <t>Construct an AltSubPubKeyExt extension: a) Set the byVal field to FALSE. b) Set the plainOrHash field to the hash calculated in step 4. c) Set the altAlgorithm field to the algorithm identifier of the alternative public key. d) Set the hashAlg to the identifier of hash algorithm determinated by step 3. e) Set the location field to the location field given in the altSubPubKeyLocAttr attribute in the CSR. If this attribute is not present, leave the location field empty.</t>
            </li>
          </ol>
          <t>After creating an AltSubPubKeyExt extension, an issuer constructs a TBSCertificate object from attributes in the given CSR following existing standards, e.g., <xref target="RFC2986"/> and <xref target="RFC5280"/>. The constructed TBSCertificate object is the preTbsCertificate field, which <bcp14>MUST</bcp14> inlude the created AltSubPubKeyExt extension.</t>
        </section>
        <section anchor="creating-altsignatureext-extension-and-tbscertificate">
          <name>Creating AltSignatureExt extension and tbsCertificate</name>
          <t>To create an AltSignatureExt extension, an issuer does the following steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>Determine the hash algorithm to be used to generate a hash of the alternative signature by checking the altSigValueHashAlgAttr attribute in the given CSR. If this attribute is not present, use the hash algorithm defined in the composite signature scheme.</t>
            </li>
            <li>
              <t>Sign the preTbsCertificate constructed in <xref target="creating-altsubpubkeyext"/> with the issuer's alternative private key to obtain the alternative signature.</t>
            </li>
            <li>
              <t>Compute a hash by hashing the alternative signature (obtained in step 2) with the hash algorithm determined in step 1.</t>
            </li>
            <li>
              <t>Construct an AltSignatureExt extension: a) Set the byVal field to FALSE. b) Set the plainOrHash field to the hash calculated in step 3. c) Set the altAlgorithm field to the algorithm identifier of the alternative signature. d) Set the hashAlg field to the identifier of the hash algorithm determined in step 1. e) Set the location field to the location field given in the altSigValueLocAttr attribute in the CSR. If this attribute is not present, leave the location field empty.</t>
            </li>
          </ol>
          <t>After creating an AltSignatureExt extension, an issuer obtains a new TBSCertificate object by appending the created extension to the extension list of preTbsCertificate.</t>
        </section>
        <section anchor="creating-certificate">
          <name>Creating Certificate</name>
          <t>An issuer signs the tbsCertificate with its first private key and algorithm, and then constructs the digital certificate as defined in <xref target="RFC5280"/>.</t>
          <t>Note that the certificate has both the AltSubPubKeyExt and AltSignatureExt extensions with byVal fields set to FALSE, indicating that the certificate is signed with the hashes of the alternative public key and the alternative signature.</t>
        </section>
      </section>
      <section anchor="convert-certificates">
        <name>Converting Forms of Certificates</name>
        <section anchor="convert-extensions">
          <name>Converting Forms of Extensions</name>
          <t>The two newly introduced extensions, AltSubPubKeyExt and AltSignatureExt, are independent and each can exist in one of two forms:</t>
          <ul spacing="normal">
            <li>
              <t>ByValue: The extension provides the actual value of a public key or a signature. Namely, the plainOrHash field is set to the actual value, and the byVal field is set to TRUE.</t>
            </li>
            <li>
              <t>ByReference: The extension provides the hash of a public key or a signature. Namely, the plainOrHash field is set to the hash of the plain value, and the byVal field is set to FALSE.</t>
            </li>
          </ul>
          <t>The exact form of a given extension object can be determined by checking the byVal field.</t>
          <t>To convert a ByValue form to a ByReference form, an entity sets the byVal field to FALSE, computes the hash of the plainOrHash field, and replaces the plainOrHash  field with its hash.</t>
          <t>To convert a ByReference form to a ByValue form, an entity sets the byVal field to TRUE, replaces the plainOrHash field with the actual value. The entity <bcp14>MUST</bcp14> have the actual value of the alternative public key or the alternative signature.</t>
          <t>Note that the other fields in the extensions remain the same in both forms.</t>
        </section>
        <section anchor="converting-forms-of-certificates">
          <name>Converting Forms of Certificates</name>
          <t>A certificate contains the two proposed extensions can exist in 4 forms as follows.</t>
          <table anchor="form_table">
            <name>Form of Certificate</name>
            <thead>
              <tr>
                <th align="left"> </th>
                <th align="left">AltSubKeyValueExt</th>
                <th align="left">AltSignatureExt</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Form 1</td>
                <td align="left">ByValue</td>
                <td align="left">ByValue</td>
              </tr>
              <tr>
                <td align="left">Form 2</td>
                <td align="left">ByValue</td>
                <td align="left">ByReference</td>
              </tr>
              <tr>
                <td align="left">Form 3</td>
                <td align="left">ByReference</td>
                <td align="left">ByValue</td>
              </tr>
              <tr>
                <td align="left">Form 4</td>
                <td align="left">ByReference</td>
                <td align="left">ByReference</td>
              </tr>
            </tbody>
          </table>
          <t>To convert a certificate from one form to another form, an entity converts the included extensions from one form to another form following the <xref target="convert-extensions"/>.</t>
          <t>During the issuance of a certificate, Form 4 is the signed form. After constructing a certificate as in <xref target="creating-certificates"/>, an issuer <bcp14>MUST</bcp14> send the certificate in FORM 1 or FORM 3 to the subscriber. Otherwise, there is no way for the subscriber to obtain the value of the alternative signature.</t>
          <t>During the communication of a subscriber and a relying party, all of these forms <bcp14>MAY</bcp14> be used to transfer a certificate. However, all other forms <bcp14>MUST</bcp14> be converted to Form 4 before certificate verification. Meanwhile, an entity <bcp14>MAY</bcp14> fetch the alternative public key and/or the alternative signature from the given locations. The entity <bcp14>MAY</bcp14> also cache the alternative materials locally. <xref target="process1"/> shows the example process:</t>
          <figure anchor="process1">
            <name>Transmission and Verification of Different Certificate Forms</name>
            <artwork><![CDATA[
Issuer                   Subscriber             Relying Party              Location
  | <-------  CSR  --------- |                        |                        |
  |[Sign on Form 4]          |                        |                        |
  | Certificate /Form 1/3--> |                        |                        |
  |               [extract pk_2,sig_3]                |                        |
  |                          |     -------------Upload pk_2, sig_3-----------> |
  |              [Construct Form 1/2/3/4]             |                        |
  |                          |                        |                        |
  |                          |                        |                        |
  |                          | Certificate /Form 1--> |                        |
  |                          |               [Convert to Form 4]               |
  |                          |                     [verify]                    |
  |                          |                        |                        |
  |                          | Certificate /Form 2--> |                        |
  |                          |                        | <----Fetch sig_3-----> |
  |                          |               [Convert to Form 4]               |
  |                          |                     [verify]                    |
  |                          |                        |                        |
  |                          | Certificate /Form 3--> |                        |
  |                          |                        | <----Fetch pk_2------> |
  |                          |               [Convert to Form 4]               |
  |                          |                     [verify]                    |
  |                          |                        |                        |
  |                          | Certificate /Form 4--> |                        |
  |                          |                        | <--Fetch pk_2,sig_3--> |
  |                          |                     [verify]                    |
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="verifying-certificates">
        <name>Verifying Certificates</name>
        <t>Given a certificate, a relying party <bcp14>MAY</bcp14> download the actual value of a public key or a signature if a extension is given in ByReference form.</t>
        <ol spacing="normal" type="1"><li>
            <t>Retrieve the external reference address from the location field in the extension, and fetch the actual value from that address. If the location attribute is absent, the actual value can be obtained through other agreed-upon means, i.e., from previous local cache. If the actual value cannot be obtained, this procedure fails.</t>
          </li>
          <li>
            <t>Determine the hash algorithm by checking the hashAlg field in the extension.</t>
          </li>
          <li>
            <t>Compute the hash of the actual value and compare it with the plainOrHash field. If they do not match, this procedure fails.</t>
          </li>
        </ol>
        <t>To verify a certificate, a relying party <bcp14>MUST</bcp14> convert it into FORM 4 as described in <xref target="convert-certificates"/>. After the conversion, the relying party verifies the signature field using the issuer's public key following <xref target="RFC5280"/>. Meanwhile, the relying party <bcp14>MAY</bcp14> construct the PreTBSCertificate object by removing the AltSignatureExt from the extension list of the TBSCertificate object, and verify the altSignatureValue field using the issuer's alternative public key.</t>
      </section>
      <section anchor="revoking-certificates">
        <name>Revoking Certificates</name>
        <t>In certain situations, certificates must be revoked. This can occur due to various reasons, such as key compromise, CA compromise, or changes in affiliation. Generally, Certificate Revocation Lists (CRLs) are authenticated lists of revoked certificates, as defined in <xref target="RFC5280"/>.</t>
        <t>In the context of certificates with multiple keys and signatures, the compromise of any private key (whether traditional or alternative) <bcp14>MUST</bcp14> result in the revocation of the entire certificate. Conversely, if a certificate with multiple keys and signatures is revoked, both the traditional and alternative keys <bcp14>SHOULD</bcp14> be treated as revoked. This approach prevents the unnecessary complexity of managing a certificate where one key is compromised while the other remains secure.</t>
      </section>
    </section>
    <section anchor="use-case-post-quantum-migration">
      <name>Use Case: Post-Quantum Migration</name>
      <t>During the post-quantum migration, there is going to be a long period of time where legacy devices and upgraded devices coexist. In this scenario, when applying for a certificate, the subscriber selects a traditional signature algorithm for the first public key and a post-quantum signature algorithm for the alternative public key. The issuer also uses a traditional signature algorithm and a post-quantum signature algorithm for its first and alternative public keys, respectively.</t>
      <t>Assume that a device have some mechanisms to share its capabilities with a subscriber. For example, in TLS, the client sends a ClientHello message, which includes its supported algorithm list and a set of extension requests.</t>
      <t>Legacy devices only support traditional algorithms and do not recognize the AltSubPubKeyExt extension. In this case, the subscriber sends a certificate in Form 4 to legacy devices. Then, the legacy device ignores the proposed two extensions, verifies the certificate with the issuer's traditional public key, and retrieves the subject's traditional public key from the certificate. The legacy device can then use the subject's traditional public key to verify the identity of the subscriber. This allows legacy devices to continue using traditional algorithms as before, ensuring backward compatibility.</t>
      <t>Upgraded devices, which support both traditional and post-quantum algorithms, recognize the proposed two extensions. An upgraded device can request any form of a  certificate according to its preference. Given a certificate, the device determines its form and verifies the certificate follows <xref target="verifying-certificates"/>. After the verification, the device can use subject's one or two public keys to verify the identity of the subscriber.</t>
      <t>An upgraded device can obtain the actual value of the alternative materials by requesting a certificate in FORM 1 during the first communication with the subscriber and cache the alternative public key. Later the device can select certificates in other forms to save transmission overhead.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>TODO: ADD a table to include the required OIDs.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Many of the security considerations for this document closely follow those of <xref target="RFC5280"/> and <xref target="I-D.draft-truskovsky-lamps-pq-hybrid-x509"/>. However, the extension introduced in this document does bring rise to additional considerations.</t>
      <t>The certificate issued as in this document <bcp14>MAY</bcp14> has location fields to allow the relying party to download the alternative materials. It is possible that a malicious actor replaces the content at the refered location, but this action will be detected since the hash of the actual value is given in the certificate.</t>
      <t>This document uses the composite hybrid signature scheme in CSR follows the description in <xref target="I-D.draft-truskovsky-lamps-pq-hybrid-x509"/>. It achieves the Non-Separability security property, which is defined in Section 1.4.3. of <xref target="I-D.draft-ietf-pquip-hybrid-signature-spectrums"/>. So an attempt to remove any of the public key or signature of a subscriber will be detected.</t>
      <t>For the certificate issuance, the issuer uses the nested hybrid signature scheme to sign the information of a certificate with two private keys. To achieve backward-compatibility, the subscriber <bcp14>SHOULD</bcp14> use a traditional signature algorithm and a post-quantum signature algorithm for the outer and inner signature algorithms, respectively. One of the main drawback of nested hybrid signature is that the outer signature can be stripped. But in the case of a certificate, the strpping attack will be detected. Another problem is that if a malicious actor with a CRQC breaks the outer traditional signature algorithm, it can alter all the inner message, including the location, flag and hash for the inner signature. In this powerful attack, a relying party will download a forged signature from a location controlled by the attacker and passed the hash comparison. But when the relying party use the issue's alternative public key to verify the downloaded signature, the verification will certainly fail.</t>
      <t>For certificate transparency services, certificates in FORM 4 <bcp14>SHOULD</bcp14> be logged and monitored.</t>
      <t>For a legacy device, to achieve backward-compatibility, it uses the signature field to verify the certificate and the first public key of the subscriber to authenticate handshake transcripts. In this case, there is no post-quantum security.</t>
      <t>For an upgraded device, the situation is more complicated. It can only use the first public key or two public keys. It can only verify the signature field or verify two signatures. All these choices depend on the communication parties' preferences and/or configuration. The mechanism described in this document gives 4 forms of a certificate. However, the upper-layer applications or protocols needs to decide the strategy when applying the proposed mechanism.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-truskovsky-lamps-pq-hybrid-x509">
          <front>
            <title>Multiple Public-Key Algorithm X.509 Certificates</title>
            <author fullname="Alexander Truskovsky" initials="A." surname="Truskovsky">
              <organization>ISARA Corporation</organization>
            </author>
            <author fullname="Daniel Van Geest" initials="D." surname="Van Geest">
              <organization>ISARA Corporation</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Datacard, Ltd</organization>
            </author>
            <author fullname="Serge Mister" initials="S." surname="Mister">
              <organization>Entrust Datacard, Ltd</organization>
            </author>
            <date day="24" month="August" year="2023"/>
            <abstract>
              <t>   Tombstone notice:

   This draft is no longer being pursued at the IETF.  A variant of this
   proposal was adopted in [itu-t-x509-2019], which allows two keys to
   be placed in a certificate but only one used at a time.  The major
   downside of this proposal is that it requires the large PQC key to be
   sent even to legacy clients which will not use it.  Additionally,
   this proposal does not present a generic encoding for the multiple
   signatures produced by the multiple keys contained in a hybrid
   certificate, leaving the responsibility to dependent protocols and
   applications for how to carry multiple signatures and how to signal
   that multiple signatures should have been present in order to detect
   stripping attacks.  As such, this document represents only a partial
   solution to the dual-signature problem.  How, and whether, to
   implement dual-signatures is an active and ongoing discussion topic
   at the IETF and work continues in this area across several working
   groups.  The PQUIP WG serves as a central location for all PQC-
   related discussion.

   Original abstract:

   This document describes a method of embedding alternative sets of
   cryptographic materials into X.509v3 digital certificates, X.509v2
   Certificate Revocation Lists (CRLs), and PKCS #10 Certificate Signing
   Requests (CSRs).  The embedded alternative cryptographic materials
   allow a Public Key Infrastructure (PKI) to use multiple cryptographic
   algorithms in a single object, and allow it to transition to the new
   cryptographic algorithms while maintaining backwards compatibility
   with systems using the existing algorithms.  Three X.509 extensions
   and three PKCS #10 attributes are defined, and the signing and
   verification procedures for the alternative cryptographic material
   contained in the extensions and attributes are detailed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-truskovsky-lamps-pq-hybrid-x509-02"/>
        </reference>
        <reference anchor="I-D.draft-ietf-lamps-pq-composite-sigs">
          <front>
            <title>Composite ML-DSA for use in X.509 Public Key Infrastructure and CMS</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   This document defines combinations of ML-DSA [FIPS.204] in hybrid
   with traditional algorithms RSASSA-PKCS1-v1_5, RSASSA-PSS, ECDSA,
   Ed25519, and Ed448.  These combinations are tailored to meet security
   best practices and regulatory requirements.  Composite ML-DSA is
   applicable in any application that uses X.509, PKIX, and CMS data
   structures and protocols that accept ML-DSA, but where the operator
   wants extra protection against breaks or catastrophic bugs in ML-DSA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-sigs-04"/>
        </reference>
        <reference anchor="I-D.draft-ounsworth-lamps-pq-external-pubkeys">
          <front>
            <title>External Keys For Use In Internet X.509 Certificates</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="D. Hook" initials="D." surname="Hook">
              <organization>KeyFactor</organization>
            </author>
            <author fullname="Markku-Juhani O. Saarinen" initials="M. O." surname="Saarinen">
              <organization>Tampere University</organization>
            </author>
            <date day="8" month="October" year="2024"/>
            <abstract>
              <t>   Many of the post quantum cryptographic algorithms have large public
   keys.  In the interest of reducing bandwidth of transitting X.509
   certificates, this document defines new public key and algorithms for
   referencing external public key data by hash, and location, for
   example URL.  This mechanism is designed to mimic the behaviour of an
   Authority Information Access extension.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ounsworth-lamps-pq-external-pubkeys-05"/>
        </reference>
        <reference anchor="I-D.draft-ietf-pquip-hybrid-signature-spectrums">
          <front>
            <title>Hybrid signature spectrums</title>
            <author fullname="Nina Bindel" initials="N." surname="Bindel">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Flo D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <date day="9" month="January" year="2025"/>
            <abstract>
              <t>   This document describes classification of design goals and security
   considerations for hybrid digital signature schemes, including proof
   composability, non-separability of the component signatures given a
   hybrid signature, backwards/forwards compatibility, hybrid
   generality, and simultaneous verification.

   Discussion of this work is encouraged to happen on the IETF PQUIP
   mailing list pqc@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dconnolly/draft-ietf-pquip-hybrid-
   signature-spectrums

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-hybrid-signature-spectrums-06"/>
        </reference>
      </references>
    </references>
    <?line 527?>

<section anchor="appendix-1-replacedelete">
      <name>Appendix 1 [REPLACE/DELETE]</name>
      <t>This becomes an Appendix [REPLACE]</t>
    </section>
    <section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>This template uses extracts from templates written by
<contact fullname="Pekka Savola"/>, <contact fullname="Elwyn Davies"/> and
<contact fullname="Henrik Levkowetz"/>. [REPLACE]</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
p73Fx/NQzUt6ldIR8Mwb8hNKG6YVypYG3qiwKlX4b1zZwhfxuJqh5nKTPl3T
wUWvza06Lem4LQWhk/ZrFTxxZe9xiZLOtBfsrsuKWg/i+XlIY8up2F205tvQ
7gLrHqO7GGpMmV6mYfO0I8C01C77xNwmQ4EBhefdlhKZU6Z0AvSCha6+swFz
ld0FZYEXEyvJao8WHf4Zn400R8gzLomK5YITcUR/vpAgqGAshddtNAoO43j6
GivpBYRZmDCCMBgVVOup+CAFyvWzkOSoPK65FWtDVVutM1QyLecF3qXTFhL2
koaaBW4DOuTpttVG3kfMttw2pLWB4BsBa2+rMtjIBoY5/KhqoDI0K7X7MtNH
QHwItdKKcnCooLONl3Lqc+FxYwooOWud1r1dz+72F5f4UbfUU7XJ5HS+/F73
SvmLr7TXue+uHjO3RYZ3kA29+038+yLR96EJrFk7ubtgcj8ito71pSrsEdMk
pFamkntx4wVhw0BGmpbVVLNq3FeukjKoG222GiVY8BheDRTiNThEcGlMTG46
nAaahU1V36AG+379YFy6wkv5dKJr1LbcbbAdnVBiShsK/ayvO2KizrNPejCh
vimlXdDHu+mPufSdVcD1+ee2sIIvWc4Sg0FvIvpUelw43A+7ID+nALBv/ePF
FQuZcKWS08NXh5RnBqis9Jnn24f4FKOD58fnB+Lw+BilmLnB0p72IS2Nbhmb
UnFtrnxiblVs9Gm+gX5fUhFie/8BN0jDBvYuP1vEIc1L1PQ0ycGXJaucnlKr
00y3vnEYqdO/vdN3MnTfP8TZnBNa64ruzyz9s/ThRHTeRJgFBJx5qiOOYc9o
mmGCUlwUp9aX0bVYc/BV6FhpI2C62wJNYlMlQysDywRojGyaBG+ZDpMOTAUk
HelnNuKqE/BV25wDl2oC57O6yEUoXRN4cHqHqe87c2LJEl9mSQqVsTk4m7Tj
khN9psKyJ946toQF20L3IhPAn77KhXt7VRaDkcRC3fqySkvIXN8eA6n2jFLL
Kfud4f5wr/0kxl23UVOpgJKudqzxLm/y1pKZrst76wSXwJ/mlaGKYsDxqg2x
nnrVjG3ruHvzOg/8GyQGLnjXcnTd7hHH8N1FM54RqagojLlIp3Grs7uB1p+V
ttJQqHxSFZwMLrp3l6+/KWTV9m6shVPBVL0wlBED632NU8GHXcjLvGuteUz3
nS3SCyS9QsPz2doaz3QAv5keQRiqq9WKZBhdndtcfNA8WILoy4ItEGRfx/xC
mwV4AzEwRJlcKg/YO7DeR8daai4opZQBJg9EqTUU3F2avke1L2Z5MrfXXdiV
idbDqewr4PLVbJ3reTc9foQIy0gT7HEup3GqgFfrBbljBezFOyVJXWvKWCWK
9DrD+9idmSm0I3CpyMxtcnOjMNP+6q6eG6pBBmwf3n5D4eIpal8YytEky/Ve
Dy6NQV0BPa9Fikyt0jpv434SdoY6Z0hezhFhOPdlWWSmGNpzMuADRV1fdbp5
O2ceu49douHsA+VXJ+U0TPzmxQwIg+dJg1UC+22RXGoMkKhQLTafTdcJ2YXm
/mbGDd1Tbz/jgcQ+lpT2go4g9uWRkCEVFZfHUEJzKg2tOGzooSZGXFnZb4OC
UrDrefcprAFVkjHFybjeFemeJkv196X6hX9Li0m2gX0xy+brKnGXXVgPQ+g4
D1WfOd1QaTL1Yu4V6WlgeskKZPUN7rYVI5DUxpIYV12mZa7cjWZTmdrK3TUe
n5nfRH6mwBiz8GK67mBANEp30HBG/TtQ9d9enLw+Ozw6eXJ8cnYyPvlOqyoT
sO6okljhXjavftejPtLLorwGrjHXl/PePowffcAIHt83L6e/fTAD/Y2T9eiS
c7wbnU6PK75/HDNbTCRLf6fEdYWl1LH2Y+/29va1vLxMxCi5KvPkA+aywbOT
/PqmEMfJVYZGGmnO+OoLWVTZpTiTV5eA7/pvH1DZcDP4H6xlpURdiwAA

-->

</rfc>
