<?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-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="TODO - Abbreviation">A Mechanism for X.509 Certificate Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-certdiscovery-01"/>
    <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="July" day="07"/>
    <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>In the following sections, we will 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 {
      certref CertReference,
      purpose DiscoveryPurposeId,
      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="certlocation">
        <name>CertLocation</name>
        <t><tt>CertLocation</tt> is defined by the following:</t>
        <artwork><![CDATA[
CertLocation ::= IA5String
]]></artwork>
        <t><tt>CertLocation</tt> is to specify the Uniform Resource Identifier (<xref target="RFC3986"/>) where the secondary certificate is located.</t>
      </section>
      <section anchor="certreference">
        <name>CertReference</name>
        <t><tt>CertReference</tt> is defined by the following:</t>
        <artwork><![CDATA[
 CertReference ::= CHOICE {
      direct Certificate,
      indirect [0] IMPLICIT CertIndirectReference
   }
]]></artwork>
        <t>Which is a CHOICE defining either a <tt>direct</tt> reference to a Certificate (meaning that the full Secondary Certificate is embedded within the Primary Certificate), or an <tt>indirect</tt> reference (meaning that information to fetch the Secondary Certificate is provided). The syntax of an <tt>indirect</tt> reference is described below.</t>
      </section>
      <section anchor="certindirectreference">
        <name>CertIndirectReference</name>
        <t><tt>CertIndirectReference</tt> is defined by the following:</t>
        <artwork><![CDATA[
CertIndirectReference ::= SEQUENCE {
         location CertLocation,
         certHash [0] IMPLICIT CertHash OPTIONAL
      }
]]></artwork>
        <t>The certificate is referenced by an IA5String that has the URL reference to the Secondary Certificate. The <tt>indirect</tt> reference also includes an optional <tt>certHash</tt> value which can be used to include a cryptographic hash of the DER Encoded Secondary Certificate. The syntax of a <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="purpose">
        <name>Purpose</name>
        <t>The <tt>purpose</tt> describes the purpose of the discovery method.  Currently the following purpose ids are defined:</t>
        <artwork><![CDATA[
 -- Purpose OBJECT IDENTIFIER
id-rcd-alg-agility OBJECT IDENTIFIER ::=
                               {id-on-relatedCertificateDescriptor 1}

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

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

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

id-rcd-self OBJECT IDENTIFIER ::=
                               {id-on-relatedCertificateDescriptor 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>
      <t>TBD</t>
    </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="RFC3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
          <author fullname="R. Fielding" initials="R." surname="Fielding"/>
          <author fullname="L. Masinter" initials="L." surname="Masinter"/>
          <date month="January" year="2005"/>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="66"/>
        <seriesInfo name="RFC" value="3986"/>
        <seriesInfo name="DOI" value="10.17487/RFC3986"/>
      </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 318?>

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

   -- 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
   }

   -- Purpose OBJECT IDENTIFIER
   id-rcd-agility OBJECT IDENTIFIER ::= {id-on-relatedCertificateDescriptor 1}
   id-rcd-redundency OBJECT IDENTIFIER ::= {id-on-relatedCertificateDescriptor 2}
   id-rcd-dual OBJECT IDENTIFIER ::= {id-on-relatedCertificateDescriptor 3}
   id-rcd-priv-key-stmt OBJECT IDENTIFIER ::= {id-on-relatedCertificateDescriptor 4}
   id-rcd-self OBJECT IDENTIFIER ::= {id-on-relatedCertificateDescriptor 5}

   DiscoveryPurposeId ::= OBJECT IDENTIFIER

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

    CertReference ::= CHOICE {
      direct Certificate,
      indirect [0] IMPLICIT CertIndirectReference
   }

   CertIndirectReference ::= SEQUENCE {
      uniformResourceIdentifier IA5String,
      certHash [0] IMPLICIT CertHash OPTIONAL
   }

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

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

-->

</rfc>
