<?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-05" 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-05"/>
    <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="November" day="01"/>
    <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{SIGNATURE-ALGORITHM, {...}}
                          OPTIONAL,
   publicKeyAlgorithm [1] AlgorithmIdentifier{PUBLIC-KEY, {...}} 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 309?>

<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
    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, Certificate
    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) }

    AlgorithmIdentifier{}, SIGNATURE-ALGORITHM, PUBLIC-KEY
    FROM AlgorithmInformation-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-mod(0)
      id-mod-algorithmInformation-02(58) }

    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{SIGNATURE-ALGORITHM, {...}}
                            OPTIONAL,
     publicKeyAlgorithm [1] AlgorithmIdentifier{PUBLIC-KEY, {...}} 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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
eHmDUAAA

-->

</rfc>
