<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-certdiscovery-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="TODO - Abbreviation">A Mechanism for X.509 Certificate Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-certdiscovery-04"/>
    <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>TurboLight Solutions, LLC</organization>
      <address>
        <email>corey.bonnell@turbolightsolutions.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="2026" month="October" day="29"/>
    <keyword>Algorithm Agility</keyword>
    <keyword>Operational Redundancy</keyword>
    <keyword>Dual Use</keyword>
    <abstract>
      <?line 61?>

<t>This document specifies a method to discover a referenced X.509 certificate associated with the current X.509 certificate. This enables efficient multi-certificate or fallback 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 a URI from which the referenced X.509 certificate can be retrieved as well as information about the target certificate's signature and public key algorithm, empowering relying parties to make informed decisions on whether to retrieve the Referenced Certificate, and a certificate hash to ensure that the correct certificate was retrieved.</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 65?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Cryptographic agility and fallback often feature prominently in cryptographic migrations, whether it's migrating algorithms, infrastructures, keys, or some other aspect. Discovery is a key aspect of agility -- in this case meaning that an application holding an X.509 certificate for a peer can easily learn about and retrieve alternative versions of the certificate they are holding, a space that is under-served by existing X.509 extensions. 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 automatic discovery and use of Referenced Certificates that can serve as fallbacks, ensuring seamless continuity of services even in the event of expiration or revocation of the Current Certificate, or disruptions in the Certification Authority (CA) infrastructure.</t>
      <t>Finally, the approach accommodates multi-key/certificate usage, allowing for a CA to indicate that two (or more) certificates are to be used together.</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>
    </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>Current Certificate: the X.509 certificate currently being validated, which contains an subjectInfoAccess extension with the certDiscovery accessMethod pointing to a Referenced Certificate, and may also contain a certDiscoverySelfLocation URI referencing itself.</t>
        <t>Referenced Certificate: The X.509 certificate that is referenced by the Current Certificate in the subjectInfoAccess extension certDiscovery accessMethod.</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 <tt>SubjectInfoAccessSyntax</tt> access method <tt>id-ad-certDiscovery</tt> which is an OBJECT IDENTIFIER that indicates the <tt>accessMethod</tt> is for carrying a certificate discovery description of a Referenced Certificate.</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>This document defines the <tt>RelatedCertificateDescriptor</tt> type and its corresponding identifier as follows:</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>When the <tt>accessMethod</tt> has a value of <tt>id-ad-certDiscovery</tt>, then the <tt>accessLocation</tt> <bcp14>MUST</bcp14> contain an <tt>otherName</tt> whose <tt>type-id</tt> is <tt>id-on-relatedCertificateDescriptor</tt> and the <tt>value</tt> is <tt>RelatedCertificateDescriptor</tt>.</t>
      <t><tt>RelatedCertificateDescriptor</tt> is defined as follows:</t>
      <artwork><![CDATA[
RelatedCertificateDescriptor ::= SEQUENCE {
   method CertDiscoveryMethod,
   signatureAlgorithm [0] AlgorithmIdentifier OPTIONAL,
   publicKeyAlgorithm [1] AlgorithmIdentifier OPTIONAL,
   certHash [2] RelatedCertificate OPTIONAL
}
]]></artwork>
      <t>A certificate <bcp14>MAY</bcp14> have any number of <tt>RelatedCertificateDescriptor</tt> SIA <tt>AccessDescriptions</tt>.</t>
      <t>Each component of the <tt>RelatedCertificateDescriptor</tt> is defined below.</t>
      <section anchor="certdiscoverymethod">
        <name>CertDiscoveryMethod</name>
        <t><tt>CertDiscoveryMethod</tt> describes the method by which the Referenced Certificate
can be retrieved.</t>
        <t><tt>CertDiscoveryMethod</tt> is defined by the following:</t>
        <artwork><![CDATA[
CertDiscoveryMethod ::= CHOICE {
   byUri IA5String,
   byInclusion Certificate,
   byLocalPolicy NULL,
   byOther [0] INSTANCE OF OTHER-DISCOVERY-METHOD
}
]]></artwork>
        <t>Depending on the method used, the other optional elements of <tt>RelatedCertificateDescriptor</tt>
can become either mandatory, recommended, or forbidden.</t>
        <section anchor="byuri">
          <name>byUri</name>
          <t>The <tt>byUri</tt> method <bcp14>MUST</bcp14> provide a URI formatted according to [!RFC3986] from which the Referenced Certificate can be retrieved.</t>
          <t>When the <tt>CertDiscoveryMethod</tt> is <tt>byUri</tt>, the fields <tt>signatureAlgorithm</tt> and <tt>publicKeyAlgorithm</tt> <bcp14>SHOULD</bcp14> be populated as described below so that an application can decide if the Referenced Certificate is likely to be useful before performing the retrieval. <tt>certHash</tt> <bcp14>MAY</bcp14> be populated. After performing the retrieval, the application <bcp14>MUST</bcp14> check that the populated <tt>signatureAlgorithm</tt>, <tt>publicKeyAlgorithm</tt>, and <tt>certHash</tt> match the retrieved certificate; if any do not match then the retrieval <bcp14>MUST</bcp14> be considered to have failed.</t>
          <t>Note that two (or more) certificates can reference each other in cases where the URIs are pre-allocated prior to certificate issuance, and the certificates to be issued as a batch.</t>
        </section>
        <section anchor="byinclusion">
          <name>byInclusion</name>
          <t>The <tt>byInclusion</tt> method encodes the DER encoding of the Referenced Certificate directly into the Current Certificate. The Referenced Certificate <bcp14>MAY</bcp14> be extracted and used directly as a standalone certificate.</t>
          <t>When the <tt>CertDiscoveryMethod</tt> is <tt>byInclusion</tt>, the fields <tt>signatureAlgorithm</tt>, <tt>publicKeyAlgorithm</tt>, and <tt>certHash</tt> <bcp14>MUST NOT</bcp14> be populated since the content is already present and would be redundant.</t>
        </section>
        <section anchor="bylocalpolicy">
          <name>byLocalPolicy</name>
          <t>The <tt>byLocalPolicy</tt> method signals that the related certificate is available in a repository that is known and accessible to the relying party. The semantics of this method are left out of scope, but applications using this method <bcp14>MUST</bcp14> define the lookup semantics.</t>
        </section>
        <section anchor="byother">
          <name>byOther</name>
          <t>The <tt>byOther</tt> method acts as an extensibility point for adding additional methods in the future.
A new <tt>byOther</tt> method <bcp14>MUST</bcp14> by accompanied by a specification of its wire format and interaction
with the <tt>signatureAlgorithm</tt>, <tt>publicKeyAlgorithm</tt>, and <tt>certHash</tt> fields of <tt>RelatedCertificateDescriptor</tt>.</t>
        </section>
      </section>
      <section anchor="signature-algorithm-and-public-key-algorithm-fields">
        <name>Signature Algorithm and Public Key Algorithm fields</name>
        <t>The <tt>signatureAlgorithm</tt> and <tt>publicKeyAlgorithm</tt> is to allow an application that has rejected the Current Certificate because either the signature or public key algorithm is unrecognized or violates its policy to instead retrieve an acceptable Referenced Certificate.</t>
        <t>If present, the <tt>signatureAlgorithm</tt> <bcp14>MUST</bcp14> match the <tt>signatureAlgorithm</tt> field in the Referenced Certificate.</t>
        <t>If present, the <tt>publicKeyAlgorithm</tt> <bcp14>MUST</bcp14> match the <tt>subjectPublicKeyInfo.algorithm</tt> field in the Referenced Certificate.</t>
      </section>
      <section anchor="certhash">
        <name>certHash</name>
        <t>The <tt>certHash</tt> field is intended primarily as a lookup value for finding the referenced certificate in a repository indexed by certificate hash. When present, it <bcp14>SHOULD</bcp14> also be used to confirm that the correct certificate was retrieved by hashing the retrieved certificate and comparing the hash value. However, it <bcp14>SHOULD NOT</bcp14> be considered a security mechanism because, by itself, it does not convey any intention about why or for what purpose the two certificates are related.</t>
        <t>The <tt>certHash</tt> field uses the <tt>RelatedCertificate</tt> structure, which is defined in [!RFC9763] and simply contains the hash of a certificate.
Recall its definition:</t>
        <artwork><![CDATA[
RelatedCertificate ::= SEQUENCE {
  hashAlgorithm DigestAlgorithmIdentifier,
  hashValue     OCTET STRING }
]]></artwork>
        <t>Its semantics mirror those specified in [!RFC9763], repeated here for convenience.</t>
        <t>The <tt>hashAlgorithm</tt> field identifies the hash algorithm used to compute hashValue, which is the digest value obtained from hashing the entire Referenced Certificate.
If there is a hash algorithm explicitly indicated by the related certificate's signature OID (e.g., ecdsa-with-SHA512), that hash algorithm <bcp14>SHOULD</bcp14> also be used here.</t>
        <t>Note that, unlike the <tt>byUri</tt> method, it is not possible to bi-directionally link two (or more) certificates via the <tt>certHash</tt> field.</t>
      </section>
    </section>
    <section anchor="certificate-discovery-self-location-access-method">
      <name>Certificate Discovery Self Location Access Method</name>
      <t>This document defines a new <tt>SubjectInfoAccessSyntax</tt> access method <tt>id-ad-certDiscoverySelfLocation</tt> which is an OBJECT IDENTIFIER that indicates the <tt>accessMethod</tt> is for carrying a certificate discovery self-reference.
In other words, a certificate <bcp14>MAY</bcp14> carry its own URI as a way to further enhance discoverability and validate that the correct certificate was retrieved.</t>
      <artwork><![CDATA[
id-ad-certDiscoverySelfLocation OBJECT IDENTIFIER ::= { id-ad TBD4 }
]]></artwork>
      <t>The SubjectInfoAccessSyntax AccessDescription accessLocation <bcp14>MUST</bcp14> carry a GeneralName uniformResourceIdentifier.</t>
      <t>This access method indicates the URI [!RFC3986] where the Current Certificate is located. Applications which have retrieved this certificate using a <tt>byUri</tt> method <bcp14>SHOULD</bcp14> extract this value from the retrieved certificate confirm that the correct certificate was retrieved.</t>
      <t>A certificate <bcp14>MAY</bcp14> have any number of <tt>certDiscoverySelfLocation</tt> SIA <tt>AccessDescriptions</tt>.</t>
    </section>
    <section anchor="expired-revoked-or-untrusted-current-certificate">
      <name>Expired, Revoked, or Untrusted Current Certificate</name>
      <t>In the case that the Current Certificate is unusable, for example because it is expired, revoked, does not chain to a trusted root, or for any other reason, the application <bcp14>MAY</bcp14> still follow the <tt>RelatedCertificateDescriptor</tt> to see if this yields a valid and usable certificate.</t>
      <t>This provides great flexibility in error-recovery scenarios. In addition, this will allow for more pro-active migration to new infrastructures, knowing that applications will be able to follow <tt>RelatedCertificateDescriptor</tt>s to their preferred version of the certificate.</t>
      <t>Since this is merely a mechanism for discovering the existence of the Referenced Certificate, doing so from an untrusted certificate does not pose security issues.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Retrieval of the Referenced Certificate is not sufficient to consider the Referenced Certificate trustworthy. The certification path validation algorithm as defined in section 6 of <xref target="RFC5280"/> <bcp14>MUST</bcp14> be performed for the Referenced Certificate. A reference from a <tt>RelatedCertificateDescriptor</tt>, even in the presence of a <tt>certHash</tt> does not imply any form of endorsement or hierarchical relationship between the two certificates unless the mechanism in this draft is augmented with additional X.509v3 extensions or policies that specify those semantics.</t>
      <t>The use of the self-reference can be used to provide a subject binding between the Current and Referenced Certificates even if their other data such as subject name or public key do not match. However, the procedure for validating subject equivalence <bcp14>MUST</bcp14> be defined by policy and be consistent with the policies of the issuing CA. As a result, validation of subject equivalence is out of scope of this document.</t>
      <t>The Referenced Certificate may also have a certDiscovery access method. In order to avoid cyclic loops or infinite chaining, leading to denial-of-service scenarios, the validator <bcp14>SHOULD</bcp14> employ a maximum depth or cycle-detection algorithm.</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. Applications retrieving 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>
      <t>Typically, it is unsafe to use any content from a certificate that is expired, revoked, or whose signature cannot be validated. The <tt>RelatedCertificateDescriptor</tt> extension is an exception to this rule since it is intended to bridge across these exact types of failure scenarios and is merely making the application aware of the existence of a Referenced Certificate. Once retrieved, the Referenced Certificate <bcp14>SHOULD</bcp14> be validated independently as if it had been provided as the Current Certificate. However, applications <bcp14>MAY</bcp14> refuse to retrieve URIs from an untrusted, or, to a lesser extent, revoked certificate. In most cases, a <tt>RelatedCertificateDescriptor</tt> URI asserted by the CA at issuance time will remain valid for the lifetime of the certificate, unless an incorrect URI is the reason for revocation, or the certificate was forged by a malicious actor for the explicit purpose of getting a victim application to fetch the malicious URI.</t>
      <t>This specification does not provide a mechanism for identifying the purpose of the cross-reference between certificates. The implied purpose is fallback redundancy. If the purpose is security-related, for example a pair of certificates are only to be used together in a two-certificate protocol, or their revocation status is intertwined as is the case when a signing certificate signs a Certificate Signing Request (CSR) for an encryption certificate, then the CA <bcp14>SHOULD</bcp14> add an additional extension or policy OID to the certificates to further constrain verifier handling.</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>
            <tr>
              <td align="left">TBD4</td>
              <td align="left">id-ad-certDiscoverySelfLocation</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>
  </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>
    </references>
    <?line 308?>

<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(TBD) }

   DEFINITIONS EXPLICIT TAGS ::=

   BEGIN

   -- EXPORTS ALL --

   IMPORTS
    OTHER-NAME, AlgorithmIdentifier, Certificate
    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) }

    RelatedCertificate
    FROM RelatedCertificate
      { iso(1) identified-organization(3) dod(6)
       internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-related-cert-2023(115)} ;

   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 }

   -- Always encode as a GeneralName uniform resource identifier (URI)
   id-ad-certDiscoverySelfLocation OBJECT IDENTIFIER ::= { id-ad TBD4 }

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

   RelatedCertificateDescriptor ::= SEQUENCE {
     method CertDiscoveryMethod,
     signatureAlgorithm [0] AlgorithmIdentifier OPTIONAL,
     publicKeyAlgorithm [1] AlgorithmIdentifier OPTIONAL,
     certHash [2] RelatedCertificate OPTIONAL
   }

   -- RelatedCertificate is defined in RFC 9763

   CertDiscoveryMethod ::= CHOICE {
     byUri IA5String,
     byInclusion Certificate,
     byLocalPolicy NULL,
     byOther [0] INSTANCE OF OTHER-DISCOVERY-METHOD
   }

   OTHER-DISCOVERY-METHOD ::= TYPE-IDENTIFIER

   END
]]></artwork>
    </section>
  </back>
  <!-- ##markdown-source:
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
Ukdp+PD8hHzu/wF4nDppC08AAA==

-->

</rfc>
