<?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.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-certdiscovery-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="TODO - Abbreviation">A Mechanism for X.509 Certificate Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-certdiscovery-02"/>
    <author initials="T." surname="Okubo" fullname="Tomofumi Okubo">
      <organization>Penguin Securities Pte. Ltd.</organization>
      <address>
        <email>tomofumi.okubo+ietf@gmail.com</email>
      </address>
    </author>
    <author initials="C." surname="Bonnell" fullname="Corey Bonnell">
      <organization>DigiCert, Inc.</organization>
      <address>
        <email>corey.bonnell@digicert.com</email>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization>Entrust</organization>
      <address>
        <email>john.gray@entrust.com</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization>Entrust</organization>
      <address>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Mandel" fullname="Joe Mandel">
      <organization>AKAYLA, Inc.</organization>
      <address>
        <email>joe@akayla.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="19"/>
    <keyword>Algorithm Agility</keyword>
    <keyword>Operational Redundancy</keyword>
    <keyword>Dual Use</keyword>
    <abstract>
      <?line 62?>

<t>This document specifies a method to discover a secondary X.509 certificate associated with an X.509 certificate to enable efficient multi-certificate handling in protocols. The objective is threefold: to enhance cryptographic agility, improve operational availability, and accommodate multi-key/certificate usage. The proposed method aims to maximize compatibility with existing systems and is designed to be legacy-friendly, making it suitable for environments with a mix of legacy and new implementations. It includes mechanisms to provide information about the target certificate's signature algorithm, public key algorithm and the location of the secondary X.509 certificate, empowering relying parties to make informed decisions on whether to fetch the Secondary Certificate.</t>
      <t>The primary motivation for this method is to address the limitations of traditional certificate management approaches, which often lack flexibility, scalability, and seamless update capabilities. By leveraging this mechanism, subscribers can achieve cryptographic agility by facilitating the transition between different algorithms or X.509 certificate types. Operational redundancy is enhanced by enabling the use of backup certificates and minimizing the impact of Primary Certificate expiration or CA infrastructure failures.</t>
      <t>The approach ensures backward compatibility with existing systems and leverages established mechanisms, such as the subjectInfoAccess extension, to enable seamless integration.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lamps-wg.github.io/certificatediscovery/draft-ietf-lamps-certdiscovery.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-certdiscovery/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/certificatediscovery"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The efficient discovery of X.509 certificates play a critical role in modern cryptographic systems. Traditional certificate management approaches often face challenges in terms of flexibility, scalability, and seamless updates. To address these limitations, this document proposes a novel approach to certificate discovery utilizing the Subject Information Access extension within X.509 certificates.</t>
      <t>The primary objective of this approach is to enable efficient multi-certificate handling in protocols, offering several key benefits. First, it enhances cryptographic agility by facilitating smooth transitions between different algorithms or X.509 certificate types. This is particularly valuable in scenarios where subscribers need to upgrade their cryptographic algorithms or adopt new certificate types while maintaining backward compatibility with existing systems.</t>
      <t>Second, the proposed method improves operational availability by introducing redundancy in certificate usage. It enables the use of secondary certificates that can serve as backups, ensuring seamless continuity of services even in the event of Primary Certificate expiration or disruptions in the CA infrastructure.</t>
      <t>Finally, the approach accommodates multi-key/certificate usage, allowing for a relying party to obtain certificates to perform cryptographic operations that are not certified by a single certificate.</t>
      <t>The proposed method is designed to maximize compatibility with existing systems, including legacy implementations. It leverages the subjectInfoAccess extension, which is already established in X.509 certificates, and does not require modifications to the referring certificates. This ensures ease of adoption and avoids disruptions to current certificate management practices.</t>
      <t>The following sections outline the details of the proposed approach, including the structure of the SIA extension, the modes of operation, and the considerations for secure implementation and deployment.</t>
      <t>By leveraging the capabilities of the SIA extension for certificate discovery, organizations can enhance cryptographic agility, improve operational availability, and accommodate complex multi-key/certificate scenarios, leading to more secure and resilient cryptographic systems.</t>
      <section anchor="use-case-1-algorithm-agility">
        <name>Use Case 1: Algorithm Agility</name>
        <t>The first use case is improving algorithm agility. For example, the Primary Certificate uses a widely adopted cryptographic algorithm while the Secondary Certificate uses the algorithm that is new and not widely adopted yet. The relying party will be presented with the opportunity to try the new algorithms and certificate types. This will be particularly useful when transitioning from one algorithm to another or to a new certificate/credential type.</t>
        <t>In addition, the server may look at the logs to determine how ready the client side is to shift to completely rollover to the new algorithm. This allows the subscriber to gather the metrics necessary to make an informed decision on the best timing to do an algorithm rollover without relying on third parties or security researchers. This is particularly useful for PKIs that have a wide array of client software and requires careful consideration.</t>
      </section>
      <section anchor="use-case-2-operational-redundancy">
        <name>Use Case 2: Operational Redundancy</name>
        <t>The second use case is where the Primary and Secondary Certificate adopts the same cryptographic algorithms but for instance, uses certificates issued by two different CAs or two certificates that have different validity periods. The Secondary Certificate may be used as a backup certificate in case the Primary Certificate validity is about to expire.</t>
        <t>A common issue is when the intermediate CA certificate expires, and the subscriber forgets to update the intermediate CA configured on the server. Similar to when some software collects the parent certificate through authorityInfoAccess CA Issuer access method when the intermediate certificate is absent, the peer certificate can be obtained.</t>
        <t>Due to increased adoption of the ACME protocol, the burden of maintaining the availability of a service is shifted to the CA issuance infrastructure and the availability would be dependent on the CA infrastructure. To increase the operational redundancy, this mechanism can be used to point to another set of certificates that are independent from the Primary Certificate to minimize the chance of a failed transaction.</t>
      </section>
      <section anchor="use-case-3-dual-use">
        <name>Use Case 3: Dual Use</name>
        <t>The third use case is where one certificate is used by the named subject for a particular cryptographic operation and a relying party wishes to obtain the public key of the named subject for a different cryptographic operation. For example, the recipient of an email message which was signed using a key that is certified by a single use signing S/MIME certificate may wish to send an encrypted email to the sender. In this case, the recipient will need the sender's public key used for encryption. A pointer to the named subject's encryption certificate will permit the recipient to send an encrypted reply.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="definitions">
        <name>Definitions</name>
        <t>For conciseness, this section defines several terms that are frequently used throughout this specification.</t>
        <t>Primary Certificate: The X.509 certificate that has the subjectInfoAccess extension with the certDiscovery accessMethod pointing to a Secondary Certificate.</t>
        <t>Secondary Certificate: The X.509 certificate that is referenced by the Primary Certificate in the subjectInfoAccess extension certDiscovery accessMethod. This certificate may also have a reference to the Primary Certificate in the
subjectInfoAccess extension.</t>
      </section>
    </section>
    <section anchor="certificate-discovery-access-method">
      <name>Certificate Discovery Access Method</name>
      <t>This document specifies the new certDiscovery access method for X.509 Subject Information Access (SIA) extension defined in <xref target="RFC5280"/>.</t>
      <t>The syntax of subject information access extension syntax is repeated here for convenience:</t>
      <artwork><![CDATA[
   SubjectInfoAccessSyntax  ::=
           SEQUENCE SIZE (1..MAX) OF AccessDescription

   AccessDescription  ::=  SEQUENCE {
           accessMethod          OBJECT IDENTIFIER,
           accessLocation        GeneralName  }
]]></artwork>
      <t>This document defines a new access method <tt>id-ad-certDiscovery</tt> which is an OBJECT IDENTIFIER that indicates the <tt>accessMethod</tt> is for certificate discovery.</t>
      <artwork><![CDATA[
id-ad-certDiscovery OBJECT IDENTIFIER ::= { id-ad TBD }
]]></artwork>
      <t>The 'accessLocation' is a GeneralName otherName type as defined in <xref target="RFC5280"/>.   Recall that the otherName type is defined as <tt>AnotherName</tt>:</t>
      <artwork><![CDATA[
AnotherName ::= SEQUENCE {
     type-id    OBJECT IDENTIFIER,
     value      [0] EXPLICIT ANY DEFINED BY type-id }
]]></artwork>
      <t>Which this document defines as:</t>
      <artwork><![CDATA[
-- Other Name OID Arc --
id-on OBJECT IDENTIFIER ::= { id-pkix 8 }

-- Certificate Discovery Access Descriptor --
id-on-relatedCertificateDescriptor OBJECT IDENTIFIER ::= { id-on TBD }

on-RelatedCertificateDescriptor OTHER-NAME ::= {
      RelatedCertificateDescriptor IDENTIFIED BY id-on-relatedCertificateDescriptor
   }
]]></artwork>
      <t>Where <tt>id-on-relatedCertificateDescriptor</tt> is the OBJECT IDENTIFIER (type-id) and the value is <tt>RelatedCertificateDescriptor</tt></t>
      <t><tt>RelatedCertificateDescriptor</tt> is defined as follows:</t>
      <artwork><![CDATA[
 RelatedCertificateDescriptor ::= SEQUENCE {
   method CertDiscoveryMethod,
   purpose DiscoveryPurposeId OPTIONAL,
   signatureAlgorithm [0] IMPLICIT AlgorithmIdentifier OPTIONAL,
   publicKeyAlgorithm [1] IMPLICIT AlgorithmIdentifier OPTIONAL
}
]]></artwork>
      <t><tt>RelatedCertificateDescriptor</tt> is composed of 4 components which are defined below.</t>
      <section anchor="certdiscoverymethod">
        <name>CertDiscoveryMethod</name>
        <t><tt>CertDiscoveryMethod</tt> is defined by the following:</t>
        <artwork><![CDATA[
CertDiscoveryMethod ::= CHOICE {
  byUri [0] IMPLICIT CertLocation
  byInclusion Certificate,
  byLocalPolicy NULL
}
]]></artwork>
        <t><tt>CertDiscoveryMethod</tt> is the only required field of <tt>RelatedCertificateDescriptor</tt>. It describes how the related certificate can be retrieved.</t>
        <t>There are three methods:</t>
        <ol spacing="normal" type="1"><li>
            <t>The <tt>byUri</tt> method provides a location where the related certificate can be retrieved. The syntax of <tt>CertLocation</tt> is described below.</t>
          </li>
          <li>
            <t>The <tt>byInclusion</tt> method encodes the DER encoding of the related certificate directly.</t>
          </li>
          <li>
            <t>The <tt>byLocalPolicy</tt> method signals that the related certificate is available in a repository that is usable by the application consuming the certificate.</t>
          </li>
        </ol>
      </section>
      <section anchor="certlocation">
        <name>CertLocation</name>
        <t><tt>CertLocation</tt> is defined by the following:</t>
        <artwork><![CDATA[
CertLocation ::= SEQUENCE {
   uri IA5String,
   certHash [0] IMPLICIT CertHash OPTIONAL
}
]]></artwork>
        <t>The certificate is referenced by an IA5String that contains the URI of the Secondary Certificate. The DER encoding of the Secondary Certificate <bcp14>MUST</bcp14> be available at the specified location.</t>
        <t><tt>CertLocation</tt> <bcp14>MAY</bcp14> include an optional <tt>certHash</tt> value which can be used to include a cryptographic hash of the DER Encoded Secondary Certificate. The syntax of <tt>CertHash</tt> is described below.</t>
      </section>
      <section anchor="certhash">
        <name>CertHash</name>
        <t><tt>CertHash</tt> is defined by the following:</t>
        <artwork><![CDATA[
CertHash ::= SEQUENCE {
   value OCTET STRING,
   -- TODO Add IssuerAndSerialNumber?
   hashAlgorithm AlgorithmIdentifier DEFAULT {algorithm sha-256}
}
]]></artwork>
        <t><tt>certHash</tt> is defined as a SEQUENCE containing the OCTET STRING <tt>value</tt> which is the hash of the DER Encoded reference certificate as well as the <tt>hashAlgorithm</tt>, which contains the AlgorithmIdentifier for the chosen Hash value. All implementations <bcp14>MUST</bcp14> support SHA-256 via <tt>id-sha256</tt>, and other hash functions <bcp14>MAY</bcp14> be supported.</t>
      </section>
      <section anchor="discoverypurposeid">
        <name>DiscoveryPurposeId</name>
        <t><tt>DiscoveryPurposeId</tt> provides optional information to describe the purpose of including the discovery information for the related certificate.</t>
        <t>Currently, the following purpose identifiers are defined:</t>
        <artwork><![CDATA[
 -- Purpose OBJECT IDENTIFIER
id-rcd-agility OBJECT IDENTIFIER ::=
                               {id-rcd 1}

id-rcd-redundancy OBJECT IDENTIFIER ::=
                               {id-rcd 2}

id-rcd-dual OBJECT IDENTIFIER ::=
                               {id-rcd 3}

id-rcd-priv-key-stmt OBJECT IDENTIFIER ::=
                               {id-rcd 4}

id-rcd-self OBJECT IDENTIFIER ::=
                               {id-rcd 5}
]]></artwork>
        <section anchor="algorithm-agility">
          <name>Algorithm Agility</name>
          <t>This purpose indicates the referenced certificate's purpose is to provide algorithm agility; i.e. the two certificates will use different cryptographic algorithms for the same key operations. The two certificates <bcp14>SHOULD</bcp14> be equivalent except for cryptographic algorithm; i.e. the key usages <bcp14>SHOULD</bcp14> match.</t>
        </section>
        <section anchor="redundancy">
          <name>Redundancy</name>
          <t>This purpose indicates the referenced certificate's purpose is to provide operational redundancy; i.e. the Secondary Certificate could be issued by a different CA or has a different validity period which can be used as a backup if the Primary set of certificates is about to expire.</t>
        </section>
        <section anchor="dual-usage">
          <name>Dual Usage</name>
          <t>This purpose indicates the referenced certificate's purpose is for dual usage; i.e. the related certificates belong to the same entity and one provides a signing-type key while the other provides an encryption-type key. The two certificates <bcp14>SHOULD</bcp14> have matching identifiers.</t>
        </section>
        <section anchor="statement-of-possession-of-a-private-key">
          <name>Statement of Possession of a Private Key</name>
          <t>This purpose indicates that the Primary Certificate did not not do a full proof-of-possession at enrollment time, but instead it provided a statement of possession as per <xref target="I-D.ietf-lamps-private-key-stmt-attr"/> signed by the Secondary Certificate.</t>
          <t>The reason for carrying a RelatedCertificateDescriptor of this type is to track that the Primary Certificate had a trust dependency on the Secondary Certificate at the time of issuance and that presumably the two private keys are co-located on the same key storage. Therefore if one certificate is revoked, they <bcp14>SHOULD</bcp14> both be revoked.</t>
        </section>
        <section anchor="self-reference">
          <name>Self reference</name>
          <t>This purpose indicates the Uniform Resource Identifier where this certificate is located. Applications which retrieve this certificate can then compare the retrieved certificate with this value to ensure that the correct certificate was retrieved.</t>
          <t>This purpose can be used to bind the subjects of Primary and Secondary Certificates. The Primary Certificate contains a self-reference to its location, as well as a reference to the Secondary Certificate. The Secondary Certificate contains a self-reference to its location, and a reference to the Primary Certificate. Provided that policy requires subject equivalence when this mechanism is used, then the consuming application can treat both certificates as certifying the same entity.</t>
        </section>
      </section>
      <section anchor="signature-algorithm-and-public-key-algorithm-fields">
        <name>Signature Algorithm and Public Key Algorithm fields</name>
        <t>The signatureAlgorithm is used to indicate the signature algorithm used in the Secondary Certificate and is an optional field. The publicKeyAlgorithm indicates the public key algorithm used in the Secondary Certificate and is an optional field.</t>
        <t>When the validation of the Primary Certificate fails, the software that understands the SIA extension and the certDiscovery access method uses the information to determine whether to fetch the Secondary Certificate. The software will look at the signatureAlgorithm and publicKeyAlgorithm to determine whether the Secondary Certificate has the signature algorithm and certificate public key algorithm it can process. If the software understands the signature algorithm and certificate public key algorithm, the software fetches the certificate from the URI specified in the relatedCertificateLocation and attempts another validation. Otherwise, the validation simply fails.</t>
        <t>The semantics of other id-ad-certDiscovery accessLocation name forms are not defined.</t>
        <t>Note:  For a description of uniformResourceIdentifier consult section 4.2.2.1 of [!RFC5280].</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Retrieval of the Secondary Certificate is not sufficient to consider the Secondary Certificate trustworthy. The certification path validation algorithm as defined in section 6 of <xref target="RFC5280"/> <bcp14>MUST</bcp14> be performed for the Secondary Certificate.</t>
      <t>The use of the self-reference purpose can be used to provide a subject binding between the Primary and Secondary Certificates. However, the procedure for validating subject equivalence <bcp14>MUST</bcp14> be defined by policy. As a result, validation of
subject equivalence is out of scope of this document.</t>
      <t>The Secondary Certificate may also have the certDiscovery access method. In order to avoid cyclic loops or infinite chaining, the validator should be mindful of how many fetching attempts it allows in one validation.</t>
      <t>The same security considerations for <tt>caIssuers</tt> access method outlined in <xref target="RFC5280"/> applies to the certDiscovery access method. In order to avoid recursive certificate validations which involve online revocation checking, untrusted transport protocols (such as plaintext HTTP) are commonly used for serving certificate files. While the use of such protocols avoids issues with recursive certification path validations and associated online revocation checking, it also enables an attacker to tamper with data and perform substitution attacks. Clients fetching certificates using the mechanism specified in this document <bcp14>MUST</bcp14> treat downloaded certificate data as untrusted and perform requisite checks to ensure that the downloaded data is not malicious.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="module-identifier">
        <name>Module Identifier</name>
        <t>IANA is requested to add the following entry in the "SMI Security for PKIX Module Identifier" registry, defined by [RFC7299]:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">id-mod-CertDiscovery</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="access-descriptor">
        <name>Access Descriptor</name>
        <t>IANA is requested to add the following entry in the "SMI Security for PKIX Access Descriptor" registry, defined by [RFC7299]:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD2</td>
              <td align="left">id-ad-certDiscovery</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="other-name-form">
        <name>Other Name Form</name>
        <t>IANA is requested to add the following entry in the "SMI Security for PKIX Access Descriptor" registry, defined by [RFC7299]:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD3</td>
              <td align="left">id-on-relatedCertificateDescriptor</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="certificate-discovery-purpose-identifiers">
        <name>Certificate Discovery Purpose Identifiers</name>
        <t>To allocate id-rcd, this document introduces a new PKIX OID arc for certificate discovery purpose identifiers:</t>
        <t>IANA is requested to add the following entry to "SMI Security for PKIX" registry, defined by [RFC 7299]:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD4</td>
              <td align="left">Certificate Discovery Purpose Identifier</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
        <t>IANA is requested to create the "Certificate Discovery Purpose Identifiers" registry with the following initial values:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">id-rcd-agility</td>
              <td align="left">[this-RFC]</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">id-rcd-redundanc</td>
              <td align="left">[this-RFC]</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">id-rcd-dual</td>
              <td align="left">[this-RFC]</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">id-rcd-priv-key-stmt</td>
              <td align="left">[this-RFC]</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">id-rcd-self</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
        <t>Updates to this table are to be made according to the Specification Required policy as defined in [RFC8126].</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="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="I-D.ietf-lamps-private-key-stmt-attr">
        <front>
          <title>An Attribute for Statement of Possession of a Private Key</title>
          <author fullname="Russ Housley" initials="R." surname="Housley">
            <organization>Vigil Security, LLC</organization>
          </author>
          <date day="26" month="June" year="2025"/>
          <abstract>
            <t>   This document specifies an attribute for a statement of possession of
   a private key by a certificate subject.  As part of X.509 certificate
   enrollment, a Certification Authority (CA) typically demands proof
   that the subject possesses the private key that corresponds to the
   to-be-certified public key.  In some cases, a CA might accept a
   signed statement from the certificate subject.  For example, when a
   certificate subject needs separate certificates for signature and key
   establishment, a statement that can be validated with the previously
   issued signature certificate for the same subject might be adequate
   for subsequent issuance of the key establishment certificate.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-private-key-stmt-attr-09"/>
      </reference>
    </references>
    <?line 363?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
    <section numbered="false" anchor="appendix-a-asn1-module">
      <name>Appendix A. ASN.1 Module</name>
      <t>The following ASN.1 module provides the complete definition of the Certificate Discovery access descriptor.</t>
      <artwork><![CDATA[
CertDiscovery { iso(1) identified-organization(3) dod(6) internet(1)
   security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-CertDiscovery(TBD1) }

   DEFINITIONS EXPLICIT TAGS ::=

   BEGIN

-- EXPORTS ALL --

   IMPORTS
    OTHER-NAME
    FROM PKIX1Implicit-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59) }

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

   id-ad-certDiscovery OBJECT IDENTIFIER ::= { id-ad TBD2 }

   -- Other Name OID Arc --

   id-on OBJECT IDENTIFIER ::= { id-pkix 8 }

   -- Certificate Discovery Access Descriptor --

   id-on-relatedCertificateDescriptor OBJECT IDENTIFIER ::= { id-on TBD3 }

   on-RelatedCertificateDescriptor OTHER-NAME ::= {
      RelatedCertificateDescriptor IDENTIFIED BY id-on-relatedCertificateDescriptor
   }

   id-rcd ::= OBJECT IDENTIFIER { iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-rcd(TBD4) }

   -- Purpose OBJECT IDENTIFIERs

   DiscoveryPurposeId ::= OBJECT IDENTIFIER

   id-rcd-agility DisoveryPurposeId ::= {id-rcd 1}
   id-rcd-redundency DisoveryPurposeId ::= {id-rcd 2}
   id-rcd-dual DisoveryPurposeId ::= {id-rcd 3}
   id-rcd-priv-key-stmt DisoveryPurposeId ::= {id-rcd 4}
   id-rcd-self DisoveryPurposeId ::= {id-rcd 5}


   RelatedCertificateDescriptor ::= SEQUENCE {
     method CertDiscoveryMethod,
     purpose DiscoveryPurposeId OPTIONAL,
     signatureAlgorithm [0] IMPLICIT AlgorithmIdentifier OPTIONAL,
     publicKeyAlgorithm [1] IMPLICIT AlgorithmIdentifier OPTIONAL
   }

   CertDiscoveryMethod ::= CHOICE {
     byUri [0] IMPLICIT CertLocation
     byInclusion Certificate,
     byLocalPolicy NULL
   }

   CertLocation ::= SEQUENCE {
      uri IA5String,
      certHash [0] IMPLICIT CertHash OPTIONAL
   }

   CertHash ::= SEQUENCE {
      value OCTET STRING,
      hashAlgorithm AlgorithmIdentifier DEFAULT {algorithm sha-256}
   }

   END
]]></artwork>
    </section>
  </back>
  <!-- ##markdown-source:
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
aF/oYuTVNlfqeiVscjnMw/eXjq+iIYK5TXTcpq/TbTTGyoZikv706Gdx8sOb
16Oj0UQMz34UxycvRmcnx+L5j2Enh4nviVJlN72tg67fF+fkZhN856NjMSwS
0e8jEUwXhQPal9f6nfgKDsM9tmoTz/hAdr9xH7xZFMhoXTRry6kAExO7B5tc
bN1k8urkon82BI+SVjtx2bomnEj4vBtS3DNgG1XL5d1rLrkbRXXc8oGj4G6I
xpjysOByG9yXYPG3T2jxKee7PQ9sx8k6zzr9cBQLKIs38euyKjA9XvPBGx4Y
pcI7LjQvtIHU2Vjk7tGp524/PKIcHxieorkBu+3fqVW0wf49N+g5st2NNkz3
UbYfzM4T/pRzBw3JFzpIHrNTBVjl2LEDOXBYx2iDNM63COUIR6COZUSWo1fn
I0eU6eptoZv4w1VeBdKMERYpyDJGt92jr3Be9sYAOlfi7O3rGj2bICZViB65
y+eBvdcqIyRtRynVnXwQYCnryqERrenKnBSYHAXPNGUvAHMVlOIrlHKsiIy8
z8myS0LEpedR152E6j/0ENUpwnsdKpqex2WMVkc8H9E4+h8EUALGA0DgcFDh
B48/BpGnz5SUnW0EKQX8JiWGho/DzhHBwt4kUJmtbVXXZmgKOcXDlXL0KoG/
sR+4jtUrS187doRIK3PePWVrq0UoLjU8a8f2ged6Xbi6k9GDE7OueCpg8dHw
6bjESiGpAATglbTzdc6n0ba0T+Zr+ZmmZw/EDwe48rehbBtT7O3FKNTQOsML
Ik8XXbuTuBSITlVEEUc572qngW0Ha+iEqNA35SHcnEKE6O3SI+XSmQ9WVK08
W1jZygLNEW8OaLzICTHshhR6p3Dw0V2C4TkEZ7jrRJO3cQazBtF0nS34ludH
k5OJGE8uRmcviTfALaEm+2GautzuME/HCtvez6jF/WuchfeNyoEdJgM8rOHb
1xPxvi6t2LnsHzz94gPzFerJpOsulJcPsDpO8rITwysu6Q6Rd40zNpGiDgOb
PbXiVoGn6oLpy8bFLn0Bv8HOXbflBkZMkILRywWhnIAbwPSs3UXAHGwrKheK
8ashokXcaEmeEKAJPl66/A25mXSnWZW7Kjvy8FT5DUjFY+pizXMADK8PXtbq
PTB/HBBSeY9Z0KVH2TEBlDbr9XXLVrzcY6JDiwKYR9xh4HtP6g4Cf4oOOLWx
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

-->

</rfc>
