<?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.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-geng-acme-sm2dualcert-extension-00" category="info" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="ACME auth Challenge">ACME Extension for SM2 Dual-Certificate System</title>
    <seriesInfo name="Internet-Draft" value="draft-geng-acme-sm2dualcert-extension-00"/>
    <author initials="F." surname="Geng" fullname="Feng Geng">
      <organization>Huawei Technologies</organization>
      <address>
        <email>gengfeng@huawei.com</email>
      </address>
    </author>
    <author initials="P." surname="Wu" fullname="Panyu Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>wupanyu3@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Wang" fullname="Guilin Wang">
      <organization>Huawei Technologies</organization>
      <address>
        <email>wang.guilin@huawei.com</email>
      </address>
    </author>
    <author initials="X." surname="Chen" fullname="Xin Chen">
      <organization>TrustAsia</organization>
      <address>
        <email>palos.chen@trustasia.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="20"/>
    <workgroup>Automated Certificate Management Environment Working Group</workgroup>
    <keyword/>
    <keyword/>
    <keyword/>
    <abstract>
      <?line 135?>

<t>This document describes the extension of the ACME protocol <xref target="RFC8555"/> to support automated issuance of SM2 dual certificates (signature certificates and encryption certificates) in the Chinese National Cryptography certificate system. This document does not represent IETF consensus; the technical solution is applicable only to PKI environments based on an SM2 dual-certificate system.</t>
      <t>Under the framework of the ACME protocol <xref target="RFC8555"/>, this document proposes using two separate Orders to request the two certificates. For the signature certificate, the existing ACME workflow is reused, optionally using the standard CSR approach or the <tt>pk-01</tt> challenge <xref target="I-D.geng-acme-public-key"/>. For the encryption certificate, this document defines a new challenge type, <tt>auth-01</tt>, specifically for <strong>identity authorization</strong> scenarios: the client proves possession of the <strong>signature private key</strong> to authorize the Key Management Center (KMC) to generate an encryption key pair and issue the encryption certificate on behalf of the entity. This challenge type intrinsically binds the issuance of the encryption certificate to the signature key, requiring no additional binding identifiers.</t>
      <t>All extensions are compatible with the existing ACME resource model. No new Order types are introduced. This document only adds optional fields in the client's <tt>newOrder</tt> request (<tt>authKey</tt>, <tt>includeEnvelope</tt>) and an additional field in the server's response (<tt>envelope</tt>), without changing the core semantics or state machine of Order.</t>
    </abstract>
  </front>
  <middle>
    <?line 143?>

<section anchor="intro">
      <name>Introduction</name>
      <section anchor="about-the-nature-of-this-document">
        <name>About the Nature of This Document</name>
        <t>This document is intended to be <strong>Informational</strong> and aims to document how the ACME protocol can be extended to support automated management of SM2 dual certificates in the GM certificate system.</t>
        <t>This document does not represent IETF consensus and is not an IETF standard. The technical solution described herein is applicable only to deployment scenarios of dedicated trust systems that comply with the GM/T series of standards.</t>
        <t>The normative language used in this document (e.g., "MUST," "SHALL") is intended to ensure interoperability between different implementations in the GM-specific deployment scenarios described herein and is not intended to establish a global Internet standard.</t>
        <t>This document does not standardize the SM2 cryptographic algorithm or any other cryptographic primitive. All cryptographic algorithms referenced in this document are defined in existing GM/T standards <xref target="GMT.0006-2023"/> and are cited normatively only for the purpose of specifying the ACME protocol adaptation for environments where these algorithms are already deployed. Algorithm standardization, including the registration of SM2-related identifiers in IANA registries such as the “JSON Web Key Elliptic Curve” registry, is addressed in this document only to the extent necessary for ACME protocol interoperability and does not constitute a general standardization of the SM2 algorithm suite.</t>
      </section>
      <section anchor="background">
        <name>Background</name>
        <t>The Automatic Certificate Management Environment (ACME) protocol <xref target="RFC8555"/> provides a standardized mechanism for automated certificate issuance and management. The ACME core resource model defines an Order as a request for a single certificate. Each Order contains the identifiers to be certified, the authorizations that must be completed, and the final certificate URL.</t>
        <t>In the China's Commercial Cryptography certificate system (defined in <xref target="GMT.0034-2014"/>), the <strong>SM2 dual-certificate architecture</strong> is adopted: each entity holds a <strong>signature certificate</strong> (for identity authentication and digital signatures) and an <strong>encryption certificate</strong> (for data encryption and key agreement). The two certificates are issued to the same entity but serve different security purposes and are subject to different key management policies.</t>
        <t>A notable feature of the SM2 dual-certificate system is that the encryption private key is generated by the Key Management Center (KMC) and securely delivered to the end entity. The KMC encrypts the encryption private key using the entity's <strong>signature public key</strong> via a digital envelope (as defined in <xref target="GMT.0010-2023"/>), and the end entity decrypts it using its signature private key. This key escrow mechanism is mandated by compliance and regulatory requirements for recoverability and auditability.</t>
      </section>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>SM2 dual certificates are currently at a critical stage of large-scale deployment. However, their issuance and lifecycle management still rely largely on manual procedures, whereas many existing PKI deployments have adopted automated certificate management protocols such as ACME. As certificate lifetimes continue to decrease, automated enrollment, issuance, renewal, and deployment become increasingly important for reducing operational overhead and improving deployment efficiency. Supporting SM2 dual certificates in ACME enables automated lifecycle management while leveraging existing ACME infrastructure and operational practices.</t>
        <t>This document aims to fill this gap by providing an ACME-compliant automated issuance solution for SM2 dual certificates.</t>
      </section>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>Currently, the standard ACME workflow faces three key challenges in the SM2 dual-certificate use case:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Generation and distribution of the encryption private key</strong>: Standard ACME requires the client to generate the key pair, whereas the SM2 encryption certificate requires the KMC to generate and escrow the encryption private key, necessitating a secure distribution mechanism.</t>
          </li>
          <li>
            <t><strong>Association between the signature certificate and the encryption certificate</strong>: The two certificates belong to the same entity and require a verifiable binding within the ACME framework.</t>
          </li>
          <li>
            <t><strong>Operational bottleneck for large-scale deployment</strong>: The application, renewal, and deployment of SM2 certificates still require manual intervention. As issuance volume grows, manual management can lead to uncontrolled operational costs and frequent certificate expiration incidents and cannot adapt to continuously shortening certificate validity periods.</t>
          </li>
        </ol>
      </section>
      <section anchor="solution-overview">
        <name>Solution Overview</name>
        <t>This document addresses these three challenges as follows:</t>
        <ul spacing="normal">
          <li>
            <t>For the <strong>signature certificate</strong>, the standard ACME workflow is fully reused; the client may use the traditional CSR approach or the <tt>pk-01</tt> challenge <xref target="I-D.geng-acme-public-key"/>. If the <tt>pk-01</tt> challenge is unavailable, the client <strong>SHOULD</strong> fall back to the standard CSR approach.</t>
          </li>
          <li>
            <t>For the <strong>encryption certificate</strong>, a new challenge type, <tt>auth-01</tt>, is defined specifically for the <strong>identity authorization</strong> scenario. The client proves possession of the signature private key to authorize the KMC to generate an encryption key pair on its behalf. This challenge type intrinsically binds the issuance of the encryption certificate to the signature key, requiring no additional binding identifiers.</t>
          </li>
        </ul>
        <t>Without introducing new Order types, this design maintains compatibility with existing ACME clients and servers and converges all SM2 dual-certificate logic to the <tt>auth-01</tt> challenge and a small set of extension fields such as <tt>authKey</tt>.</t>
        <t><strong>About Extension Parameter Passing</strong>: This document passes extension parameters (<tt>authKey</tt>, <tt>includeEnvelope</tt>) in the <strong>JWS Payload</strong> of the <tt>newOrder</tt> request. This is the standard extension mechanism for the ACME protocol, consistent with the <tt>newOrder</tt> request format defined in <xref target="RFC8555"/> Section 7.4. All extension parameters are protected by the JWS signature, ensuring their integrity and authenticity. Standard ACME servers that do not recognize these fields will ignore them, ensuring backward compatibility.</t>
      </section>
      <section anchor="scope-and-positioning">
        <name>Scope and Positioning</name>
        <t><strong>Note on Key Escrow Positioning</strong>: The security model of <xref target="RFC8555"/> assumes that certificate private keys are generated locally by the client and do not leave the client's trust boundary. The mechanism described in this document, whereby the encryption private key is centrally generated and escrowed by the KMC, is a mandatory requirement imposed by <xref target="GMT.0034-2014"/> and related regulatory frameworks for encryption certificates. This document merely provides an ACME protocol-level adaptation for this established regulatory fact and does not constitute a general recommendation for key escrow architectures, nor does it alter the principle that the signature certificate private key must be generated by the client and remain within its trust boundary.</t>
        <t>The extension mechanism described in this document is applicable only to dedicated trust systems that comply with GM/T series standards. This document is not applicable to public-trust TLS certificate systems such as the Web PKI governed by the CA/Browser Forum.</t>
        <t><strong>Note on Terminology</strong>:  The term “dual-certificate system” in this document refers specifically to the SM2 architecture defined in <xref target="GMT.0034-2014"/>, where two certificates (signature and encryption) are issued to the same entity with distinct key usages, and the encryption private key is generated and escrowed by a Key Management Center (KMC). This is distinct from other “dual-certificate” or “dual-key” scenarios previously discussed in the IETF context, such as S/MIME dual-use certificates [I-D.ietf-acme-smime] where separate signature and encryption certificates are managed for email purposes. The trust model, key management requirements, and regulatory basis of the SM2 dual-certificate system differ significantly from those scenarios, and this document does not address S/MIME or other email certificate use cases.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<strong>MUST</strong>", "<strong>MUST NOT</strong>", "<strong>REQUIRED</strong>", "<strong>SHALL</strong>", "<strong>SHALL NOT</strong>", "<strong>SHOULD</strong>", "<strong>SHOULD NOT</strong>", "<strong>RECOMMENDED</strong>", "<strong>NOT RECOMMENDED</strong>", "<strong>MAY</strong>", and "<strong>OPTIONAL</strong>" 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>
      <t>This document uses the following terms:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Signature certificate</strong>: A public key certificate used for identity authentication and digital signatures.</t>
        </li>
        <li>
          <t><strong>Encryption certificate</strong>: A public key certificate used for data encryption and key agreement.</t>
        </li>
        <li>
          <t><strong>Digital envelope</strong>: A cryptographic structure as defined in <xref target="GMT.0010-2023"/>, using either the <tt>signedAndEnvelopedData</tt> or <tt>envelopedData</tt> data type. Use of <tt>signedAndEnvelopedData</tt> is <strong>RECOMMENDED</strong> as it provides both confidentiality and integrity protection.</t>
        </li>
        <li>
          <t><strong>Key Management Center (KMC)</strong>: A trusted entity as defined in <xref target="GMT.0034-2014"/> that generates and escrows encryption private keys. In the context of this document, the KMC is considered a trusted subsystem of the CA, and its operations <strong>MUST</strong> be subject to the CA's overall audit and compliance framework.</t>
        </li>
        <li>
          <t><strong>Key Escrow</strong>: A mechanism by which encryption private keys are centrally generated and held by a trusted third party (the KMC). The key escrow described in this document is a mandatory requirement of <xref target="GMT.0034-2014"/> and related regulatory frameworks.</t>
        </li>
        <li>
          <t><strong>Identity Authorization</strong>: A mechanism by which possession of an identity key (signature private key) is proven to authorize specific operations (such as requesting an encryption certificate).</t>
        </li>
        <li>
          <t><strong><tt>authKey</tt></strong>: The <strong>signature public key</strong> (in JWK format) declared by the client in the JWS Payload of the <tt>newOrder</tt> request, used for identity authorization in the <tt>auth-01</tt> challenge. This field is semantically distinct from the <tt>popKey</tt> field (defined in <xref target="I-D.geng-acme-public-key"/> for the <tt>pk-01</tt> challenge): <tt>authKey</tt> is for "proving identity to authorize issuance of an encryption certificate," whereas <tt>popKey</tt> is for "proving possession of the final certificate public key" (see Section 3.2 and Section 3.3.2).</t>
        </li>
        <li>
          <t><strong><tt>account_thumbprint</tt></strong>: The <strong>JWK Thumbprint</strong> of the ACME account public key that authenticated the encryption-certificate <tt>newOrder</tt> request when the server accepted it, computed according to <xref target="RFC7638"/> Section 3. The server <strong>MUST</strong> store this value as part of the Order state. It is not transmitted in the challenge response; instead, the client and server compute it independently from the same account public key and include it in the <tt>auth-01</tt> signature input to provide cryptographic account binding.</t>
        </li>
      </ul>
      <t><strong>Note on OIDs</strong>: All cryptographic algorithm OIDs used in this document are defined in <xref target="GMT.0006-2023"/>. The permanent OID for the custom certificate extension (<tt>id-sm2-auth-key-hash</tt>) defined in this document is to be assigned by the China Cryptography Industry Standardization Technical Committee (CCSTC) under its managed <tt>1.2.156.10197</tt> arc (which is not within IANA's management scope; see Section 5.3). During the experimental phase, a temporary OID under the enterprise arc (<tt>1.3.6.1.4.1.2011.2.467</tt>) is used.</t>
      <t><strong>SM3 OID Note</strong>: The standard OID for the SM3 cryptographic hash algorithm used in this specification is <tt>1.2.156.10197.1.401</tt> (id-hash-sm3), defined in <xref target="GMT.0006-2023"/> under the CCSTC <tt>1.2.156.10197</tt> arc. All certificates and signatures <strong>MUST</strong> use this OID, consistent with all existing GM implementations (OpenSSL, GmSSL, etc.).</t>
    </section>
    <section anchor="sm2-dual-certificate-workflow">
      <name>SM2 Dual-Certificate Workflow</name>
      <section anchor="creating-two-separate-orders">
        <name>Creating Two Separate Orders</name>
        <t>To request both the signature certificate and the encryption certificate simultaneously, the client creates <strong>two separate Orders</strong> following the steps defined in <xref target="RFC8555"/> Section 7.4. These two Orders <strong>MUST</strong> satisfy the following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>They <strong>MUST</strong> be authenticated using the same ACME account key.</t>
          </li>
          <li>
            <t>Their <tt>identifiers</tt> fields <strong>MUST</strong> contain the same identifiers (e.g., the same domain name or device ID).</t>
          </li>
        </ul>
        <t><strong>Signature Key Pair Generation Constraint</strong>: Per <xref target="GMT.0034-2014"/>, the signature key pair <strong>MUST</strong> be generated by the client. The ACME server <strong>MUST NOT</strong> generate the signature key pair on behalf of the client.</t>
        <t><strong>Encryption Key Pair Generation Constraint</strong>: Per {GMT.0034-2014}}, the encryption key pair <strong>MUST</strong> be generated by the KMC. The client <strong>MUST NOT</strong> generate the encryption key pair for the encryption certificate requested under this specification.</t>
        <t><strong>Issuance Order Dependency</strong>: The two Orders are independent at the account and identifier levels, but the <tt>finalize</tt> processing of the encryption certificate Order depends on the corresponding signature certificate having been issued and being valid (see the signature certificate existence check in Section 3.3.2). Therefore, the client <strong>MUST</strong> complete issuance of the signature certificate before submitting the <tt>finalize</tt> request for the encryption certificate Order; otherwise, the <tt>finalize</tt> request for the encryption certificate Order will fail with <tt>signingCertRequired</tt> and the Order will transition to <tt>invalid</tt>. The identifier authorizations for the two Orders may be completed in parallel; only the <tt>finalize</tt> step has this sequential dependency.</t>
      </section>
      <section anchor="signature-certificate-request-flow">
        <name>Signature Certificate Request Flow</name>
        <t>The signature certificate request <strong>fully follows</strong> the standard ACME workflow. The client may choose either of the following options:</t>
        <t><strong>Option 1: Standard CSR Approach</strong></t>
        <ol spacing="normal" type="1"><li>
            <t>The client creates an Order.</t>
          </li>
          <li>
            <t>The client completes the required authorization challenges (e.g., HTTP-01, DNS-01).</t>
          </li>
          <li>
            <t>The client submits a CSR containing the signature public key to the <tt>finalize</tt> endpoint.</t>
          </li>
          <li>
            <t>The server validates the CSR and issues the signature certificate.</t>
          </li>
        </ol>
        <t><strong>Option 2: Using the <tt>pk-01</tt> Challenge (Optional)</strong></t>
        <t>This option is an optimization. The client <strong>SHOULD</strong> use the standard CSR approach as the primary method. If the server and client support the <tt>pk-01</tt> challenge defined in <xref target="I-D.geng-acme-public-key"/>, the client may use this challenge to bypass CSR submission. If <tt>pk-01</tt> is unavailable, the client <strong>MUST</strong> fall back to the standard CSR approach:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client declares the signature public key via the <tt>popKey</tt> field in the <tt>newOrder</tt> request.</t>
          </li>
          <li>
            <t>The server returns the <tt>pk-01</tt> challenge, and the client completes it using the signature private key.</t>
          </li>
          <li>
            <t>Upon successful challenge completion, the client submits an empty <tt>finalize</tt> request (<tt>{}</tt>), and the server issues the signature certificate containing that public key.</t>
          </li>
        </ol>
        <t>Regardless of which approach is used, the <tt>KeyUsage</tt> extension of the signature certificate <strong>MUST</strong> comply with Section 3.4.</t>
        <t>The scope distinction between <tt>pk-01</tt> and <tt>auth-01</tt> is as follows: <tt>pk-01</tt> is <strong>only</strong> for signature certificate requests, <tt>auth-01</tt> is <strong>only</strong> for encryption certificate requests, and the two <strong>MUST NOT</strong> be mixed in the same Order.</t>
      </section>
      <section anchor="encryption-certificate-request-flow">
        <name>Encryption Certificate Request Flow</name>
        <t>The encryption certificate request uses the <tt>auth-01</tt> challenge type defined in this document, which is specifically designed for identity authorization scenarios.</t>
        <section anchor="digital-envelope-format-specification">
          <name>Digital Envelope Format Specification</name>
          <t>The digital envelope <strong>SHOULD</strong> comply with the following specifications:</t>
          <t><strong>Data Type</strong>: It is <strong>RECOMMENDED</strong> to use the <tt>signedAndEnvelopedData</tt> type defined in Section 10 of <xref target="GMT.0010-2023"/>, which provides both confidentiality and integrity protection. When <tt>signedAndEnvelopedData</tt> is used, the client <strong>MUST</strong> verify the signature <strong>before</strong> decrypting the envelope to ensure it has not been tampered with during transmission.</t>
          <t>If the deployment environment already protects communication between the ACME server and the client via secure channels such as TLS, and the communication channel provides sufficient integrity protection, the KMC <strong>MAY</strong> use the <tt>envelopedData</tt> type (defined in Section 9 of <xref target="GMT.0010-2023"/>) to reduce signature operation overhead. When <tt>envelopedData</tt> is used, the client <strong>SHOULD</strong> ensure that the communication channel with the server provides sufficient integrity protection. Regardless of the type chosen, the confidentiality protection of the digital envelope is achieved through SM4 symmetric encryption and SM2 asymmetric encryption.</t>
          <t><strong>Version</strong>: When using <tt>KeyTransRecipientInfo</tt>, the <tt>version</tt> field <strong>SHOULD</strong> be <tt>0</tt>.When using other recipient info types, the <tt>version</tt> value <strong>SHOULD</strong> be set according to Section 7 of <xref target="GMT.0010-2023"/>.</t>
          <t><strong>RecipientInfo</strong>: The <tt>KeyTransRecipientInfo</tt> type <strong>SHOULD</strong> be used. The <tt>keyEncryptionAlgorithm</tt> field <strong>SHOULD</strong> use OID <tt>1.2.156.10197.1.301.3</tt> (SM2 public-key encryption algorithm, defined in <xref target="GMT.0006-2023"/>). This OID implicitly uses the Key Derivation Function (KDF) specified in Section 4 of <xref target="GMT.0003.4-2012"/>; the KDF output length matches the SM4 key length (128 bits), with specific parameters as specified in Section 4.2 of <xref target="GMT.0003.4-2012"/>. Implementers need not specify a separate KDF OID.</t>
          <t><strong>EncryptedContentInfo</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>contentEncryptionAlgorithm</tt> field <strong>SHOULD</strong> use the SM4-CBC algorithm OID defined in <xref target="GMT.0006-2023"/>.</t>
            </li>
            <li>
              <t>The <tt>encryptedContent</tt> <strong>SHOULD</strong> contain the encryption private key encrypted with an SM4 symmetric key. The SM4 symmetric key <strong>MUST</strong> be a 128-bit (16-byte) key as specified in <xref target="GMT.0002-2012"/>. The SM4 symmetric key <strong>MUST</strong> be generated using a hardware random number generator compliant with <xref target="GMT.0078-2020"/>, or an equivalent security standard; its output <strong>SHOULD</strong> pass the randomness tests specified in <xref target="GMT.0005-2021"/>, and it is <strong>RECOMMENDED</strong> to combine it with system-level entropy sources to ensure cryptographic security of the key entropy even in the event of hardware RNG anomalies.</t>
            </li>
          </ul>
          <t><strong>Encoding</strong>: The complete digital envelope structure <strong>SHOULD</strong> be encoded using ASN.1 DER (Distinguished Encoding Rules).</t>
          <t><strong>Transfer Encoding</strong>: When transmitted in JSON messages (e.g., in the <tt>finalize</tt> response), the DER-encoded digital envelope <strong>SHOULD</strong> be base64url-encoded without padding as defined in <xref target="RFC4648"/> Section 5.</t>
          <t>The digital envelope <strong>SHOULD</strong> contain:</t>
          <ul spacing="normal">
            <li>
              <t>The encryption private key encrypted with an SM4 symmetric key (128 bits).</t>
            </li>
            <li>
              <t>The SM4 symmetric key encrypted with SM2 (using the client's signature public key).</t>
            </li>
          </ul>
          <t>Upon receiving the response, the client SHOULD decrypt the digital envelope using its signature private key to obtain the plaintext encryption private key.</t>
          <t><strong>Note on Private Key Usage</strong>: The client's signature private key is <strong>only</strong> used to decrypt the digital envelope to obtain the encryption private key. All subsequent cryptographic operations involving data encryption or decryption <strong>SHOULD</strong> use the encryption private key. The signature private key <strong>MUST NOT</strong> be used for any data encryption or decryption operations beyond opening the digital envelope, in compliance with the key usage separation principle specified in <xref target="GMT.0034-2014"/>.</t>
          <t>KMC signature certificate trust anchor configuration, lifecycle management, and communication security requirements between the ACME server and the KMC are described in Section 6.</t>
        </section>
        <section anchor="auth-01-challenge-details">
          <name><tt>auth-01</tt> Challenge Details</name>
          <t>The <tt>auth-01</tt> challenge is a new ACME challenge type whose core semantics are <strong>identity authorization</strong>: the client proves possession of the <strong>signature private key</strong> to authorize the server to generate an encryption certificate on its behalf.</t>
          <t><strong>Challenge-Authorization Relationship</strong>:</t>
          <t>The ACME authorization model comprises two orthogonal dimensions: identifier authorization (proving that the client controls the identifier) and identity authorization (proving that the client possesses a specific identity key). The SM2 dual-certificate system requires that the signature certificate and the encryption certificate belong to the same entity. By placing <tt>auth-01</tt> and identifier authorization challenges in different authorization objects within the same Order, this design ensures that the two types of authorization are independent but both must be completed. The conditions under which an Order enters the <tt>ready</tt> state follow <xref target="RFC8555"/> Section 7.1.6, i.e., all authorization objects referenced by the Order are <tt>valid</tt>.</t>
          <t>For an encryption certificate Order, the server <strong>MUST</strong> place the <tt>auth-01</tt> challenge in a <strong>dedicated authorization object</strong> that <strong>MUST NOT</strong> contain any other types of challenges; each identifier still has its own separate authorization object containing regular identifier authorization challenges (e.g., HTTP-01, DNS-01) as specified in <xref target="RFC8555"/> Section 7.1.4. This design does not modify the RFC 8555 authorization state machine. By placing <tt>auth-01</tt> in a dedicated authorization object, this design equivalently achieves the requirement that "both identifier authorization and identity authorization must be completed" without modifying the RFC 8555 authorization state machine.</t>
          <t>Regardless of how many identifiers the Order contains, the server <strong>MUST</strong> create <strong>exactly one</strong> <tt>auth-01</tt> dedicated authorization object for each encryption certificate Order. The <tt>identifier</tt> field of this dedicated authorization object <strong>MUST</strong> copy the first element of the Order object's <tt>identifiers</tt> array returned by the server; the client <strong>MUST</strong> select its processing logic based on the challenge object's <tt>type</tt> field (rather than the authorization object's identifier).</t>
          <t><strong>Authorization Object State and Reuse Rules</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>The state of the <tt>auth-01</tt> dedicated authorization object and the identifier authorization objects are independent; the two types of challenges may be completed in parallel.</t>
            </li>
            <li>
              <t>If any authorization object transitions to <tt>invalid</tt>, the Order correspondingly transitions to <tt>invalid</tt>.</t>
            </li>
            <li>
              <t><strong>The <tt>auth-01</tt> dedicated authorization object does not constitute identifier authorization</strong>: the server <strong>MUST NOT</strong> count it as authorization for the identifier indicated by its <tt>identifier</tt> field—it <strong>MUST NOT</strong> be reused for any Order under the authorization reuse mechanisms of <xref target="RFC8555"/> Section 7.1.3/Section 7.4, nor <strong>MUST</strong> it be counted in certificate revocation authorization determinations under <xref target="RFC8555"/> Section 7.6.</t>
            </li>
            <li>
              <t>When creating an encryption certificate Order, the server <strong>MUST NOT</strong> associate any pre-existing <tt>auth-01</tt> authorization object; it <strong>MUST</strong> create a new <tt>auth-01</tt> authorization object and challenge instance (new URL, new token) for each Order.</t>
            </li>
            <li>
              <t>Within the same Order and within the authorization object's validity period (<tt>expires</tt>), the client need only retry failed identifier challenges; a successfully completed <tt>auth-01</tt> authorization object need not be retried; after the authorization object expires, the client <strong>MUST</strong> restart the Order.</t>
            </li>
          </ul>
          <t><strong>Handling Orders with Empty Identifiers</strong>: If an Order's <tt>identifiers</tt> array is empty, the server <strong>SHOULD</strong> reject the Order and return a <tt>urn:ietf:params:acme:error:malformed</tt> error.</t>
          <t>The <tt>token</tt> for the <tt>auth-01</tt> challenge is independently and randomly generated by the server, unrelated to the <tt>token</tt> of challenges in other authorization objects within the same Order. The <tt>token</tt> <strong>MUST</strong> be generated by a cryptographically secure random number generator with at least 128 bits of entropy; the challenge object's <tt>url</tt> <strong>MUST</strong> be unique across the server's entire lifecycle and <strong>MUST NOT</strong> be reused.</t>
          <artwork><![CDATA[
{
    "type": "auth-01",
    "url": "https://example.com/acme/chall/123",
    "token": "q9K3xwLmZ2VtT7cPnE8fRaYb01UgHdSJ",
    "status": "pending"
}
]]></artwork>
          <t><strong>Client Response</strong>:</t>
          <t>The client signs the challenge information using its <strong>signature private key</strong>. The signature algorithm is <strong><tt>sm2-with-SM3</tt></strong> (OID <tt>1.2.156.10197.1.501</tt>, defined in <xref target="GMT.0006-2023"/>), i.e., the challenge information is hashed using the SM3 hash algorithm (OID <tt>1.2.156.10197.1.401</tt>), and then the hash value is signed using the SM2 signature algorithm (OID <tt>1.2.156.10197.1.301</tt>) with the <tt>sm2p256v1</tt> curve parameters defined in <xref target="GMT.0003.5-2012"/>.</t>
          <t><strong>Note</strong>: <tt>sm2-with-SM3</tt> (OID <tt>1.2.156.10197.1.501</tt>) identifies the combination of the SM2 signature algorithm and the SM3 hash algorithm, used to identify the complete signature algorithm. This OID is distinct from the SM3 hash algorithm OID (<tt>1.2.156.10197.1.401</tt>); the former identifies the complete signature algorithm combination, while the latter identifies the hash algorithm alone.</t>
          <t>The challenge response uses the <tt>authSignature</tt> field defined in this specification to carry the signature value:</t>
          <artwork><![CDATA[
{
    "type": "auth-01",
    "authSignature": "base64url(signature_bytes)"
}
]]></artwork>
          <t>where <tt>signature_bytes</tt> is the ASN.1 DER-encoded byte string of the SM2 signature generated using the signature private key over the challenge information.</t>
          <t><strong>Signature Algorithm Details</strong>:</t>
          <t>Detailed steps for signature construction and verification are provided in Appendix B.1 and B.2. The core signature input is constructed as follows:</t>
          <artwork><![CDATA[
message = "ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint
]]></artwork>
          <t>where <tt>challenge_url</tt> is the <tt>url</tt> field value of the challenge object, <tt>token</tt> is the token string provided in the challenge object, and <tt>account_thumbprint</tt> is the JWK Thumbprint (RFC 7638) of the account public key used when the server accepted the Order's <tt>newOrder</tt> request. The <tt>account_thumbprint</tt> is not included in the challenge response. The client computes it from the account public key used to submit <tt>newOrder</tt>; the server obtains it from the account state stored when the Order was created. The signature value is <tt>SM2_sign(SM3(message))</tt> and <strong>MUST</strong> use the normalized form (<tt>s &lt;= n/2</tt>).</t>
          <ul empty="true">
            <li>
              <t><strong>Note</strong>: JWK Thumbprint <xref target="RFC7638"/> uses the SHA-256 hash algorithm as required by that specification. This is distinct from the SM3 hash used in the ShangMi (SM) cipher suites but does not affect the overall consistency of the SM algorithm system.</t>
            </li>
          </ul>
          <t><strong>Server Verification</strong>:</t>
          <t>The ACME server verifies the following:</t>
          <ol spacing="normal" type="1"><li>
              <t>Verifies the JWS signature and confirms that the account identified by the JWS <tt>kid</tt> is the account that created the Order.</t>
            </li>
            <li>
              <t><strong>Reconstructs <tt>account_thumbprint</tt></strong>: Obtains the account JWK from the account state stored when the Order was created and computes its JWK Thumbprint according to <xref target="RFC7638"/>. The server <strong>MUST NOT</strong> attempt to extract <tt>account_thumbprint</tt> from <tt>authSignature</tt> or the challenge response.</t>
            </li>
            <li>
              <t>Verifies that the <tt>token</tt> matches the token in the challenge object and has not been used.</t>
            </li>
            <li>
              <t>Reconstructs the complete signature input using the stored <tt>account_thumbprint</tt>, challenge URL, and <tt>token</tt>, computes <tt>SM3(message)</tt>, and verifies the signature using the public key from <tt>authKey</tt>.</t>
            </li>
            <li>
              <t>Verifies that both <tt>r</tt> and <tt>s</tt> are in the range <tt>[1, n-1]</tt> and that <tt>s &lt;= n/2</tt>.</t>
            </li>
            <li>
              <t>Verifies that the signing public key matches the <tt>authKey</tt> declared in the <tt>newOrder</tt> request.</t>
            </li>
            <li>
              <t>Verifies that the account identified by the <tt>kid</tt> in the JWS header matches the account corresponding to <tt>authKey</tt> (defense in depth).</t>
            </li>
          </ol>
          <t><strong>Account Key Rollover</strong>: If the client changes its account key under <xref target="RFC8555"/> Section 7.3.5 before completing the <tt>auth-01</tt> challenge, the server <strong>MUST</strong> transition the incomplete <tt>auth-01</tt> authorization object and its Order bound to the old <tt>account_thumbprint</tt> to <tt>invalid</tt>. The client <strong>MUST</strong> create a new Order using the new account key. The server <strong>MUST NOT</strong> replace the <tt>account_thumbprint</tt> stored in an existing Order with the thumbprint of the new account key.</t>
          <t><strong>Provisioning Rules for <tt>authKey</tt></strong>:</t>
          <ul spacing="normal">
            <li>
              <t>The client <strong>MUST</strong> provide the <tt>authKey</tt> field in the JWS Payload of the <tt>newOrder</tt> request for the encryption certificate; if missing, the server <strong>MUST</strong> reject the request and return a <tt>urn:ietf:params:acme:error:authKeyMissing</tt> error.</t>
            </li>
            <li>
              <t>Before triggering the KMC, the server <strong>MUST</strong> deterministically convert <tt>authKey</tt> to a <tt>SubjectPublicKeyInfo</tt> structure as specified in Section 4.1 and pass it to the KMC; the client need not submit the ASN.1 encoding of the same public key redundantly.</t>
            </li>
          </ul>
          <t><strong>Client Public Key Declaration</strong>:</t>
          <t>The client declares its signature public key via the <tt>authKey</tt> field in the JWS Payload of the <tt>newOrder</tt> request. <tt>authKey</tt> <strong>MUST</strong> be represented in JSON Web Key (JWK) format 
<xref target="RFC7517"/>, with the following specific requirements:</t>
          <ul spacing="normal">
            <li>
              <t><tt>kty</tt> <strong>MUST</strong> be <tt>"EC"</tt>.</t>
            </li>
            <li>
              <t><tt>crv</tt> <strong>MUST</strong> be <tt>"sm2p256v1"</tt> (lowercase; curve parameters are defined in <xref target="GMT.0003.5-2012"/>, and this name follows the naming convention used by widely deployed implementations such as GmSSL/OpenSSL).</t>
            </li>
            <li>
              <t><tt>x</tt> and <tt>y</tt> <strong>MUST</strong> be base64url-encoded elliptic curve point coordinates (32 bytes each).</t>
            </li>
          </ul>
          <t><tt>"sm2p256v1"</tt> is not currently in the IANA "JSON Web Key Elliptic Curve" registry; this document requests its registration in Section 5.5. Until registration is complete, JOSE libraries that strictly validate <tt>crv</tt> values may reject this JWK; implementers <strong>SHOULD</strong> relax validation as specified in this specification. The JWS <tt>alg</tt> registration required for ACME account keys using the SM2 algorithm is outside the scope of this document and is to be addressed by companion documents.</t>
          <t><strong>KMC Trigger and Signature Certificate Verification</strong>:</t>
          <t>When processing the <tt>finalize</tt> request for this Order, before triggering the KMC, the server <strong>SHOULD</strong> verify that the signature certificate corresponding to <tt>authKey</tt> (i.e., the certificate whose subject public key equals <tt>authKey</tt>) has been issued by this CA to the same ACME account, has identifiers consistent with this Order, and is in a valid state (not expired, not revoked). If verification fails, the <tt>finalize</tt> request <strong>SHOULD</strong> fail and return a <tt>urn:ietf:params:acme:error:signingCertRequired</tt> error (HTTP 403), and the Order <strong>SHOULD</strong> transition to <tt>invalid</tt>. Since the four-element signature already provides cryptographic account binding, this check serves as a defense-in-depth measure. Deployments that choose to disable this check <strong>SHOULD</strong> document the rationale and ensure that alternative mitigations are in place.</t>
          <t>Upon successful verification, the server <strong>MUST</strong> pass the signature public key from <tt>authKey</tt> to the KMC, which generates the encryption key pair and escrows the encryption private key; the KMC <strong>MUST</strong> assemble the digital envelope <strong>only</strong> when the client explicitly sets <tt>includeEnvelope: true</tt>.</t>
          <t><strong>Complete Flow</strong>:</t>
          <t>1) <strong>Order Creation</strong>: The client creates an encryption certificate Order, including the <tt>authKey</tt> field and the optional <tt>includeEnvelope</tt> field (default <tt>false</tt>) in the JWS Payload of the <tt>newOrder</tt> request. Extension fields are passed by directly adding them to the JSON object in the <tt>newOrder</tt> request; if the deployment environment supports <xref target="I-D.ietf-acme-profiles"/>, they may also be passed via its Order metadata extension mechanism.</t>
          <t>Payload example:</t>
          <artwork><![CDATA[
{
    "identifiers": [{"type": "dns", "value": "example.com"}],
    "authKey": {
        "kty": "EC",
        "crv": "sm2p256v1",
        "x": "...",
        "y": "..."
    },
    "includeEnvelope": true
}
]]></artwork>
          <t>2) <strong>Authorization and Challenges</strong>: The server returns identifier authorization objects and one <tt>auth-01</tt> dedicated authorization object. The client completes all required identifier authorization challenges, then completes the <tt>auth-01</tt> challenge using its signature private key, with the <tt>authSignature</tt> field in the response containing the ASN.1 DER-encoded signature value. The server verifies the signature validity.</t>
          <t>3) <strong>Server Triggers KMC</strong>: After all authorization objects are <tt>valid</tt>, the Order enters the <tt>ready</tt> state. The client submits an empty payload (<tt>{}</tt>) <tt>finalize</tt> request. The server performs the signature certificate existence check (enabled by default) and triggers the KMC to generate the encryption key pair. When <tt>includeEnvelope</tt> is <tt>false</tt> or not set, the KMC <strong>SHOULD</strong> skip assembling and transmitting the digital envelope.</t>
          <t>4) <strong>Order Completion</strong>: The server issues the encryption certificate and transitions the Order to <tt>valid</tt>. The server strictly follows the <tt>includeEnvelope</tt> parameter in the <tt>finalize</tt> response: the <tt>envelope</tt> field is returned <strong>only</strong> when explicitly set to <tt>true</tt>. If the server uses asynchronous issuance (returning <tt>processing</tt>), the <tt>envelope</tt> field is delivered in the POST-as-GET response to the Order URL after the Order transitions to <tt>valid</tt>, with the same delivery rules. The server <strong>MUST</strong> support client retrieval of the <tt>envelope</tt> throughout the Order's retrievable lifecycle; this retrieval obligation applies <strong>only</strong> to Orders with <tt>includeEnvelope: true</tt>. The client downloads the encryption certificate via POST-as-GET from the <tt>certificate</tt> URL.</t>
          <t>5) <strong>Client Decryption</strong>: If the response contains the <tt>envelope</tt> field, the client decrypts the digital envelope using its signature private key to obtain the plaintext encryption private key.</t>
          <t><strong>Error Handling</strong>:</t>
          <t>The following error types are defined (using the <tt>urn:ietf:params:acme:error:</tt> namespace):</t>
          <table>
            <thead>
              <tr>
                <th align="left">Error Type</th>
                <th align="left">HTTP Status</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>urn:ietf:params:acme:error:authKeyMissing</tt></td>
                <td align="left">400</td>
                <td align="left">
                  <tt>authKey</tt> field missing from JWS Payload of <tt>newOrder</tt> request</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>urn:ietf:params:acme:error:kmcUnavailable</tt></td>
                <td align="left">503</td>
                <td align="left">KMC temporarily unavailable</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>urn:ietf:params:acme:error:envelopeGenerationFailed</tt></td>
                <td align="left">500</td>
                <td align="left">KMC failed to generate digital envelope</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>urn:ietf:params:acme:error:invalidCSR</tt></td>
                <td align="left">400</td>
                <td align="left">
                  <tt>finalize</tt> request for encryption certificate Order contains <tt>csr</tt> field</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>urn:ietf:params:acme:error:invalidSM2Signature</tt></td>
                <td align="left">400</td>
                <td align="left">SM2 signature verification failed (r/s out of range or invalid format). Semantically distinct from the standard error type <tt>badSignatureAlgorithm</tt> (for unsupported JWS signature algorithms) defined in RFC 8555 Section 6.7</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>urn:ietf:params:acme:error:signingCertRequired</tt></td>
                <td align="left">403</td>
                <td align="left">No valid signature certificate found corresponding to <tt>authKey</tt></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>urn:ietf:params:acme:error:invalidKeyUsage</tt></td>
                <td align="left">400</td>
                <td align="left">KeyUsage in signature certificate CSR does not meet requirements</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Design Note: The Nature of the <tt>auth-01</tt> Authorization Object</strong></t>
          <t>The <tt>auth-01</tt> challenge is placed in a dedicated authorization object that is separate from identifier authorization objects. This design choice is motivated by the desire to reuse RFC 8555's existing authorization and challenge infrastructure without introducing new resource types.</t>
          <t>This authorization object differs from standard RFC 8555 authorization objects in one respect: its <tt>identifier</tt> field serves as a placeholder only; the <tt>auth-01</tt> challenge does not validate control over that identifier. This is achieved by server policy (the server does not count this authorization object toward identifier authorization reuse under RFC 8555 Section 7.1.3/Section 7.4, nor toward certificate revocation authorization determinations under RFC 8555 Section 7.6), not by modifying the RFC 8555 authorization state machine. The RFC 8555 state machine operates identically for this authorization object; the server simply does not treat it as evidence of identifier control.</t>
          <t>The distinction between this dedicated authorization object and a standard RFC 8555 authorization object is enforced by server policy, not by a modification of the protocol's state machine semantics.</t>
          <t>This pattern - using a dedicated authorization object for non-identifier authorization - is intended as a reusable template for future ACME extensions that require multiple independent authorization factors within a single Order, such as device attestation, post-quantum certificate migration, or other scenarios where identity authorization is orthogonal to identifier authorization.</t>
        </section>
        <section anchor="certificate-issuance-requirements">
          <name>Certificate Issuance Requirements</name>
          <t><strong>Signature Certificate</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>KeyUsage</tt> extension <strong>MUST</strong> contain <tt>digitalSignature</tt> and/or <tt>nonRepudiation</tt>. It <strong>MUST NOT</strong> contain <tt>keyEncipherment</tt> or <tt>dataEncipherment</tt>.</t>
            </li>
            <li>
              <t>Other extensions follow the standard ACME workflow.</t>
            </li>
          </ul>
          <t><strong>Encryption Certificate</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>KeyUsage</tt> extension <strong>MUST</strong> contain <tt>keyEncipherment</tt> and/or <tt>dataEncipherment</tt>, and <strong>MAY</strong> contain <tt>keyAgreement</tt> depending on the deployment scenario (e.g., TLCP key exchange). It <strong>MUST NOT</strong> contain <tt>digitalSignature</tt> or <tt>nonRepudiation</tt>.</t>
            </li>
            <li>
              <t>The certificate <strong>MUST</strong> contain the <tt>sm2AuthKeyHash</tt> extension (defined in Section 4.2), which records the SM3 hash of the signature public key that authorized this certificate.This extension is marked as <strong>non-critical</strong> (<tt>critical = FALSE</tt>); relying parties that do not understand this extension may still accept the certificate but cannot verify the authorization binding.</t>
            </li>
            <li>
              <t>When issuing an encryption certificate, the CA <strong>SHOULD</strong> ensure that the certificate has the same identifiers as the corresponding signature certificate.</t>
            </li>
          </ul>
          <t><strong>Finalization Method (No CSR)</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>finalize</tt> request for an encryption certificate Order <strong>MUST</strong> use an empty JSON object <tt>{}</tt> as the payload and <strong>MUST NOT</strong> contain a <tt>csr</tt> field. When the server receives a request containing a <tt>csr</tt> field, it <strong>MUST</strong> reject it and return a <tt>urn:ietf:params:acme:error:invalidCSR</tt> error.</t>
            </li>
          </ul>
          <t><strong>KeyUsage Conflict Handling</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>If the KeyUsage requested by the client in the <strong>signature certificate</strong> CSR conflicts with the above requirements, the server <strong>MUST</strong> reject the request and return a <tt>urn:ietf:params:acme:error:invalidKeyUsage</tt> error. The encryption certificate Order does not use a CSR; its <tt>KeyUsage</tt> is set directly by the CA as specified in this section.</t>
            </li>
          </ul>
          <t><strong><tt>finalize</tt> Response Format</strong>:</t>
          <t>Upon successfully processing the <tt>finalize</tt> request for an encryption certificate Order, the server <strong>SHOULD</strong> return the following JSON response. The <tt>envelope</tt> field is included <strong>only</strong> when the client explicitly sets <tt>includeEnvelope: true</tt>.</t>
          <artwork><![CDATA[
{
    "status": "valid",
    "expires": "...",
    "identifiers": [{"type": "dns", "value": "example.com"}],
    "authorizations": ["https://example.com/acme/authz/456"],
    "finalize": "...",
    "certificate": "...",
    "envelope": "base64url(ASN.1 DER of digital envelope)"
}
]]></artwork>
          <t>The example above shows the response when the client sets <tt>includeEnvelope: true</tt>; otherwise, the server omits the <tt>envelope</tt> field.</t>
          <t>The <tt>envelope</tt> field appears <strong>only</strong> in the <tt>finalize</tt> response for encryption certificate Orders and in the POST-as-GET response to the Order object after it transitions to <tt>valid</tt>. When returning a response containing the <tt>envelope</tt> field, the server <strong>MUST</strong> set the <tt>Cache-Control: no-store, private</tt> header.</t>
        </section>
      </section>
    </section>
    <section anchor="extension-specifications">
      <name>Extension Specifications</name>
      <section anchor="subjectpublickeyinfo-encoding-of-the-signature-public-key-server-to-kmc-interface">
        <name><tt>SubjectPublicKeyInfo</tt> Encoding of the Signature Public Key (Server-to-KMC Interface)</name>
        <t>Before triggering the KMC, the server <strong>MUST</strong> deterministically convert the <tt>authKey</tt> (in JWK format) from the <tt>newOrder</tt> request to a <tt>SubjectPublicKeyInfo</tt> structure (defined in <xref target="RFC5280"/>) and pass it to the KMC. The specific encoding requirements are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>algorithm</tt> field <strong>MUST</strong> be <tt>id-ecPublicKey</tt> (OID: <tt>1.2.840.10045.2.1</tt>, defined in <xref target="RFC5480"/>).</t>
          </li>
          <li>
            <t>The <tt>parameters</tt> field <strong>MUST</strong> be encoded as an <tt>OBJECT IDENTIFIER</tt> type with the value of the SM2 curve OID <tt>1.2.156.10197.1.301</tt> (defined in <xref target="GMT.0003.5-2012"/>). The <tt>parameters</tt> field <strong>MUST NOT</strong> be encoded as <tt>NULL</tt> or omitted.</t>
          </li>
          <li>
            <t>The <tt>subjectPublicKey</tt> field <strong>MUST</strong> be the uncompressed point encoding of the SM2 public key (<tt>0x04 || x || y</tt>, 32 bytes each), conforming to <xref target="RFC5480"/> Section 2.2 and <xref target="GMT.0015-2023"/>.</t>
          </li>
        </ul>
        <t>The KMC uses this public key to encrypt the encryption private key via a digital envelope compliant with <xref target="GMT.0010-2023"/>.</t>
        <t><strong><tt>SubjectPublicKeyInfo</tt> Encoding Compatibility</strong>:</t>
        <t>When parsing this structure, the KMC <strong>MUST</strong> give priority to the <xref target="RFC5480"/> compliant encoding (<tt>id-ecPublicKey</tt> + SM2 curve parameters). Some legacy implementations may use the SM2 algorithm OID directly for identification; during the transition period, the KMC <strong>MAY</strong> recognize and process this encoding variant to support interoperability with existing deployments, but this specification <strong>RECOMMENDS</strong> phasing out support for the alternative encoding in new implementations. When generating this structure, the server <strong>MUST</strong> use the RFC 5480-compliant encoding and <strong>MUST NOT</strong> use the SM2 algorithm OID directly.</t>
      </section>
      <section anchor="sm2authkeyhash-extension">
        <name><tt>sm2AuthKeyHash</tt> Extension</name>
        <t>The <tt>sm2AuthKeyHash</tt> extension is used in encryption certificates to record the SM3 hash of the authorizing signature public key and its algorithm identifier.</t>
        <t>The ASN.1 syntax is:</t>
        <artwork><![CDATA[
sm2AuthKeyHash EXTENSION ::= {
SYNTAX SM2AuthKeyHash
IDENTIFIED BY id-sm2-auth-key-hash
}
SM2AuthKeyHash ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier, -- hash algorithm identifier (currently SM3)
hashValue OCTET STRING -- hash value
}
]]></artwork>
        <t>The fields are defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t><tt>hashAlgorithm</tt>: An <tt>AlgorithmIdentifier</tt> structure. It <strong>MUST</strong> currently be the SM3 algorithm: the <tt>algorithm</tt> field is the standard OID for SM3 (<tt>1.2.156.10197.1.401</tt>, defined in <xref target="GMT.0006-2023"/>). When generating, the <tt>parameters</tt> field <strong>SHOULD</strong> be encoded as <tt>NULL</tt>; when parsing, implementations <strong>MUST</strong> be able to parse <tt>NULL</tt> and <strong>SHOULD</strong> also support omission of the <tt>parameters</tt> field.</t>
          </li>
          <li>
            <t><tt>hashValue</tt>: A 32-byte OCTET STRING containing the SM3 hash of the authorizing signature public key.</t>
          </li>
        </ul>
        <t><strong>Criticality Flag</strong>: This extension <strong>MUST</strong> be marked as <strong>non-critical</strong> (<tt>critical = FALSE</tt>).</t>
        <t><strong>Authoritativeness of the Extension</strong>: The <tt>sm2AuthKeyHash</tt> extension is the authoritative basis for the binding in the GM dual-certificate system. Relying parties <strong>MUST</strong> verify the presence and hash consistency of this extension when validating encryption certificates issued under this specification. If the extension is present and the hash does not match, the relying party <strong>MUST</strong> treat it as a security violation and reject the encryption certificate.</t>
        <t><strong>Extension Inclusion Policy</strong>: Encryption certificates issued under this specification <strong>MUST</strong> include this extension.</t>
        <t><strong>OID Assignment</strong>: The OID for this extension (<tt>id-sm2-auth-key-hash</tt>) uses the temporary OID <tt>1.3.6.1.4.1.2011.2.467.1.3</tt> during the standardization phase. Upon standardization, a permanent OID will be requested under <tt>1.2.156.10197.6.3.1</tt> (within the certificate extension arc of <xref target="GMT.0015-2023"/>), subject to confirmation of availability with the CCSTC.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="new-acme-challenge-type">
        <name>New ACME Challenge Type</name>
        <t>IANA is requested to register the following new challenge type in the "ACME Validation Methods" registry (established by <xref target="RFC8555"/> Section 9.7.8):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Identifier Type</th>
              <th align="left">ACME</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>auth-01</tt></td>
              <td align="left">dns (reuses the first identifier of the Order; this challenge does not validate identifier control; see Section 3.3.2)</td>
              <td align="left">Y</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Description</strong>: Identity authorization challenge used to prove possession of the signature private key for the purpose of requesting an encryption certificate. <strong>Applicable Scenarios</strong>: <strong>Only</strong> for encryption certificate requests, proving that the client possesses the signature private key to authorize the KMC to generate an encryption key pair. Not applicable to signature certificate requests.</t>
        <t><strong>Note</strong>: The <tt>identifier</tt> type <tt>dns</tt> is used solely as a placeholder; the <tt>auth-01</tt> challenge itself does not validate control over that identifier.</t>
        <t><strong>Versioning Strategy</strong>: The <tt>01</tt> in <tt>auth-01</tt> indicates the current version. If incompatible changes occur in the future (e.g., signature algorithm changes or major challenge flow modifications), a new challenge type name (e.g., <tt>auth-02</tt>) will be used. Compatible extensions (e.g., new optional fields) will be handled through existing mechanisms without changing the challenge type name.</t>
        <t><strong>Future Extension Reservation</strong>: The "dedicated authorization object" design pattern in this document may serve as a reference for other ACME extensions requiring non-identifier-based authorization.</t>
      </section>
      <section anchor="new-acme-error-types">
        <name>New ACME Error Types</name>
        <t>IANA is requested to register the following new error types in the "ACME Error Types" registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Error Type</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:authKeyMissing</tt></td>
              <td align="left">
                <tt>authKey</tt> field missing from JWS Payload of <tt>newOrder</tt> request</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:kmcUnavailable</tt></td>
              <td align="left">KMC temporarily unavailable</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:envelopeGenerationFailed</tt></td>
              <td align="left">KMC failed to generate digital envelope</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:invalidKeyUsage</tt></td>
              <td align="left">KeyUsage does not meet dual-certificate requirements</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:invalidCSR</tt></td>
              <td align="left">
                <tt>finalize</tt> request for encryption certificate Order contains CSR</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:invalidSM2Signature</tt></td>
              <td align="left">SM2 signature verification failed (e.g., r/s out of range or invalid format). Semantically distinct from the standard error type <tt>badSignatureAlgorithm</tt> (for unsupported JWS signature algorithms) defined in <xref target="RFC8555"/> Section 6.7</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:signingCertRequired</tt></td>
              <td align="left">No valid signature certificate found corresponding to <tt>authKey</tt></td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Note</strong>: <tt>invalidCSR</tt> is complementary to the <tt>badCSR</tt> error type defined in RFC 8555. <tt>badCSR</tt> is used for CSR format or signature verification failures in signature certificate Orders, while <tt>invalidCSR</tt> is used for violations of this specification's semantics.</t>
      </section>
      <section anchor="certificate-extension-oid-assignment-non-iana-matter">
        <name>Certificate Extension OID Assignment (Non-IANA Matter)</name>
        <t>The permanent OID for the certificate extension <tt>id-sm2-auth-key-hash</tt> defined in this document falls under the <tt>1.2.156.10197</tt> arc managed by the CCSTC. This arc is not within IANA's management scope; therefore, this document <strong>DOES NOT</strong> submit an OID registration request to IANA.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Extension Name</th>
              <th align="left">Suggested Permanent OID</th>
              <th align="left">Assigning Authority</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">id-sm2-auth-key-hash</td>
              <td align="left">1.2.156.10197.6.3.1 (suggested, <xref target="GMT.0015-2023"/> certificate extension arc)</td>
              <td align="left">CCSTC</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="transition-period-and-oid-migration">
        <name>Transition Period and OID Migration</name>
        <t>During the transition from temporary OIDs to permanent OIDs, implementations <strong>MUST</strong> accept both temporary and permanent OID values. The specific migration plan is as follows:</t>
        <t><strong>Phase 1: Coexistence Period (0-12 months after permanent OID assignment)</strong>: Servers <strong>MUST</strong> accept both temporary and permanent OIDs, <strong>SHOULD</strong> use permanent OIDs for new certificate issuance; clients <strong>MUST</strong> be able to parse certificates containing either temporary or permanent OIDs.</t>
        <t><strong>Phase 2: Permanent OID Only Period (12 months after permanent OID assignment)</strong>: Servers <strong>SHOULD</strong> accept only permanent OIDs (but may still be configured to accept temporary OIDs to support transition) and <strong>MUST</strong> use only permanent OIDs for new certificate issuance.</t>
        <t>Certificates issued during the temporary OID transition period remain valid for their full validity period; certificate holders <strong>SHOULD</strong> re-issue certificates using permanent OIDs upon renewal.</t>
      </section>
      <section anchor="jose-registration">
        <name>JOSE Registration</name>
        <t>IANA is requested to register the following curve in the "JSON Web Key Elliptic Curve" registry (established by <xref target="RFC7518"/>):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Curve Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>sm2p256v1</tt></td>
              <td align="left">SM2 elliptic curve (parameters defined in <xref target="GMT.0003.5-2012"/>/<xref target="GBT.32918.5"/>; name follows the naming convention used by implementations such as GmSSL/OpenSSL)</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>This document does not register a JWS signature algorithm identifier: the signature value for the <tt>auth-01</tt> challenge is carried in the <tt>authSignature</tt> field as base64url, not via the JWS <tt>alg</tt> mechanism; the JWS <tt>alg</tt> registration required for ACME account keys using the SM2 algorithm is to be addressed by companion documents.</t>
      </section>
      <section anchor="acme-order-object-field-registration">
        <name>ACME Order Object Field Registration</name>
        <t>IANA is requested to register the following fields in the "ACME Order Object Fields" registry (established by <xref target="RFC8555"/> Section 9.7.2):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Field Type</th>
              <th align="left">Configurable</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>authKey</tt></td>
              <td align="left">object</td>
              <td align="left">true</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>includeEnvelope</tt></td>
              <td align="left">boolean</td>
              <td align="left">true</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">
                <tt>envelope</tt></td>
              <td align="left">string</td>
              <td align="left">false</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-and-operational-considerations">
      <name>Security and Operational Considerations</name>
      <t>The security requirements in this section apply to SM-specific trust system deployments.</t>
      <section anchor="kmc-infrastructure-security">
        <name>KMC Infrastructure Security</name>
        <t><strong>KMC Signature Certificate Trust Anchor</strong>: The KMC <strong>MUST</strong> use a signature certificate issued by a CA (and <strong>MUST NOT</strong> use a self-signed certificate or an uncertified key) to sign the <tt>signedAndEnvelopedData</tt> (if that type is used). The client <strong>SHOULD</strong> verify the KMC's signature certificate chain by configuring a trust anchor (consistent with the trust anchor used to validate the encryption certificate). It is <strong>RECOMMENDED</strong> that the KMC signature certificate and the encryption certificate be issued by the same CA. If issued by different CAs, the ACME server <strong>SHOULD</strong> provide the KMC signature certificate trust anchor's retrieval address in the <tt>directory</tt> object (e.g., via a <tt>"kmc-trust-anchor"</tt> field). The client <strong>MUST</strong> use the <tt>"kmc-trust-anchor"</tt> field provided in the <tt>directory</tt> object to validate the KMC signature certificate chain.</t>
        <t><strong>KMC Signature Certificate Lifecycle Management</strong>: The renewal window for the KMC signature certificate <strong>SHOULD</strong> be at least 30 days. The KMC <strong>SHOULD</strong> establish an automatic renewal mechanism. If the KMC signature certificate is nearing expiration (remaining validity less than 30 days), the KMC <strong>SHOULD</strong> log a warning in the audit log.<strong>Emergency Handling</strong>: If the KMC signature certificate expires unexpectedly, the KMC <strong>SHOULD</strong> re-sign generated digital envelopes with a new valid certificate or notify the client to re-initiate the encryption certificate request.</t>
        <t><strong>KMC-ACME Server Communication Security</strong>: Communication between the ACME server and the KMC <strong>MUST</strong> use mutually authenticated mTLS, following the provisions of Section 6 of <xref target="GMT.0014-2023"/>. Both parties <strong>MUST</strong> use certificates stored in hardware cryptographic modules for authentication. When returning the digital envelope to the ACME server, the KMC <strong>MUST</strong> sign the envelope using its signature certificate (i.e., using the <tt>signedAndEnvelopedData</tt> type). The ACME server <strong>MUST</strong> verify the KMC's signature before forwarding the envelope to the client. Both communicating parties <strong>SHOULD</strong> log all mTLS connection audit records.</t>
      </section>
      <section anchor="key-usage-separation">
        <name>Key Usage Separation</name>
        <t>Per <xref target="GMT.0034-2014"/>, signature keys and encryption keys serve different purposes. The client's signature private key is <strong>only</strong> used for ACME account authentication, signing in <tt>auth-01</tt> challenges, and decrypting the digital envelope. The signature private key <strong>MUST NOT</strong> be used for data encryption or decryption operations. The encryption private key is <strong>only</strong> used for data encryption and decryption.</t>
        <t>The server <strong>MUST</strong> verify that there is no direct association between the private key used for the <tt>auth-01</tt> challenge and the public key in the final encryption certificate, and <strong>MUST NOT</strong> use the signature public key from <tt>authKey</tt> as the public key for the encryption certificate.</t>
      </section>
      <section anchor="challenge-signature-security">
        <name>Challenge Signature Security</name>
        <t>The signature input for the <tt>auth-01</tt> challenge is a four-element tuple: the domain separation prefix <tt>"ACME auth-01" || 0x00</tt>, the challenge URL, the challenge <tt>token</tt>, and the account public key fingerprint. The prefix distinguishes this signature from other protocols; the challenge URL and token ensure the uniqueness and freshness of the challenge instance; the account public key fingerprint provides cryptographic account binding, enabling offline auditability of the signature. The challenge response itself must be submitted via ACME account key-authenticated JWS.</t>
        <t>The client and server <strong>MUST</strong> use exactly the same field order and separators when constructing the signature input: <tt>"ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint</tt>. Any deviation will cause signature verification to fail.</t>
        <t>The <tt>account_thumbprint</tt> is fixed when the Order is created. The server reconstructs it from the account state stored with that Order and does not extract it from the challenge response or signature value. If the account key is changed before challenge completion, the server <strong>MUST</strong> invalidate the affected incomplete Order as specified in Section 3.3.2.</t>
      </section>
      <section anchor="digital-envelope-and-data-protection">
        <name>Digital Envelope and Data Protection</name>
        <t>The digital envelope uses SM4 symmetric encryption (128-bit key) and SM2 asymmetric encryption (<tt>sm2p256v1</tt> curve). Use of the <tt>signedAndEnvelopedData</tt> type is <strong>RECOMMENDED</strong>, and the client <strong>MUST</strong> verify the signature. The random number generator used by the KMC to generate encryption key pairs <strong>MUST</strong> comply with GM/T 0078-2020 and pass the randomness tests specified in <xref target="GMT.0005-2021"/>.</t>
        <t>When returning a <tt>finalize</tt> response containing the <tt>envelope</tt> field, the server <strong>MUST</strong> ensure that the endpoint is not cached in any caching architecture. Deployments <strong>SHOULD</strong> explicitly disable caching via CDN configuration and apply application-layer protection to the <tt>envelope</tt> field content.</t>
        <t>The <tt>envelope</tt> field is delivered <strong>only</strong> when the client explicitly sets <tt>includeEnvelope: true</tt> (default <tt>false</tt>); the server <strong>MUST NOT</strong> return the <tt>envelope</tt> field when the client has not explicitly requested it. If the client did not request the envelope but later needs the encryption private key, it <strong>SHOULD</strong> re-initiate the encryption certificate request with <tt>includeEnvelope: true</tt>. Re-requesting will generate a new encryption certificate and escrowed key pair: the CA <strong>SHOULD</strong> associate encryption certificates of the same entity via <tt>authKey</tt> and revoke previously issued encryption certificates that are still valid upon re-issuance. The CA <strong>SHOULD</strong> revoke the superseded encryption certificate and <strong>SHOULD</strong> apply rate limiting to repeated requests from the same entity.</t>
      </section>
      <section anchor="intrinsic-binding-and-relying-party-verification">
        <name>Intrinsic Binding and Relying Party Verification</name>
        <t>Through the <tt>auth-01</tt> challenge, the encryption certificate and the signature certificate establish an intrinsic cryptographic binding. The server <strong>MUST</strong> record the authorization information (hash of the signature public key) in the <tt>sm2AuthKeyHash</tt> certificate extension. Relying parties <strong>MUST</strong> check the presence and validity of this extension when validating encryption certificates.</t>
        <t>The relying party verification flow is described in Appendix B.3. If the extension is absent, the certificate does not conform to this specification; if the extension is present and the hash does not match, the relying party <strong>MUST</strong> reject the encryption certificate.</t>
      </section>
      <section anchor="kmc-compliance-and-certificate-revocation">
        <name>KMC Compliance and Certificate Revocation</name>
        <t><strong>KMC Separation of Duties and Single Point of Trust Model</strong>: As a trusted subsystem of the CA, the KMC's operations <strong>MUST</strong> be subject to the CA's overall audit and compliance framework. There <strong>SHOULD</strong> be a <strong>separation of duties</strong> between the KMC and the CA —the CA is responsible for certificate issuance, and the KMC is responsible for key escrow, with mutual checks and balances. The KMC's key escrow operations <strong>SHOULD</strong> be included in the CA's annual WebTrust or SOC 2 audit scope. The KMC holds all encryption private keys, constituting a high-value attack target. For deployments with higher requirements regarding single point of trust risk, <strong>threshold KMC</strong> or <strong>key sharding</strong> schemes are <strong>RECOMMENDED</strong>; when adopting such schemes, their security model <strong>SHOULD</strong> be consistent with the threat model of this document.</t>
        <t><strong>Certificate Revocation Linkage Policy</strong>: The CA <strong>SHOULD</strong> define a linkage policy for revoking signature and encryption certificates. When a signature certificate is revoked, the CA <strong>SHOULD</strong> consider revoking the corresponding encryption certificate; when an encryption certificate is revoked, the signature certificate <strong>MAY</strong> remain unaffected. The revocation linkage policy <strong>SHOULD</strong> be clearly stated in the CA's CP/CPS.</t>
        <t><strong>Note</strong>: The audit and CRL/OCSP publication mechanisms for revocation linkage policies <strong>SHOULD</strong> be clearly specified in the CA's CP/CPS. If revocation of a signature certificate triggers revocation of an encryption certificate, it is <strong>RECOMMENDED</strong> that the decision rationale be recorded in the audit log for subsequent traceability.</t>
        <t><strong>Escrowed Private Key Deletion Policy</strong>: When an encryption certificate is revoked, expires, or is superseded by a newly requested certificate, the KMC <strong>SHOULD</strong> delete the corresponding escrowed encryption private key within a reasonable timeframe (30 days is <strong>RECOMMENDED</strong>), unless laws or regulations require a longer retention period.</t>
        <t><strong>Compliance</strong>: Deployments in SM trust systems <strong>SHOULD</strong> comply with the Cryptography Law, the Cybersecurity Law, <xref target="GBT.39786-2021"/>, and relevant industry standards.</t>
      </section>
    </section>
    <section anchor="design-considerations">
      <name>Design Considerations</name>
      <t>This section is non-normative and aims to clarify the key architectural trade-offs and their rationales made in this document under the hard constraint of the SM2 dual-certificate system.</t>
      <section anchor="dual-order-model-vs-single-order-model">
        <name>Dual-Order Model vs. Single-Order Model</name>
        <t>The SM2 dual-certificate system requires the simultaneous issuance of two certificates with different purposes (signature and encryption) for the same entity. Within the ACME protocol framework, two main design paths exist:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Single-Order Model</strong>: Request both certificates in a single Order, completing all authorizations and issuance in one go. While this approach appears to reduce the number of HTTP round trips, it <strong>deviates from</strong> the core semantics of RFC 8555, where an Order corresponds to a single certificate, and contradicts the long-standing consensus in the ACME community, leading to complex error handling and state management logic.</t>
          </li>
          <li>
            <t><strong>Dual-Order Model (Selected)</strong>: Create separate Orders for each certificate, strictly adhering to RFC 8555's resource model. The signature certificate Order reuses the standard ACME workflow; the encryption certificate Order completes identity authorization through the new <tt>auth-01</tt> challenge. This choice maintains maximum compatibility with existing ACME clients and servers, achieves clear error isolation, and ensures long-term maintainability and extensibility of the solution.</t>
          </li>
        </ul>
      </section>
      <section anchor="authorization-object-reuse-vs-new-order-level-field">
        <name>Authorization Object Reuse vs. New Order-Level Field</name>
        <t>Two approaches were considered for carrying identity authorization within the ACME framework.</t>
        <t><strong>Option A: Dedicated Authorization Object with <tt>auth-01</tt> Challenge (Selected)</strong></t>
        <t>This approach reuses RFC 8555's existing authorization and challenge infrastructure without introducing new resource types. The dedicated authorization object follows the standard state machine (pending → valid/invalid), and its special nature—not counting toward identifier authorization reuse—is enforced by server policy, not by protocol modification.</t>
        <t><strong>Option B: New Order-Level Field (e.g., <tt>identityAuthorizations</tt>)</strong></t>
        <t>This approach would introduce a new field at the Order level, separating identity authorization from identifier authorization at the data model level. While architecturally cleaner in terms of semantic separation, it carries significant costs:</t>
        <ul spacing="normal">
          <li>
            <t>Requires defining new resource types with their own lifecycle and state management.</t>
          </li>
          <li>
            <t>Increases implementation burden and adoption barriers for both servers and clients.</t>
          </li>
          <li>
            <t>Breaks the "minimal extension footprint" narrative of this document.</t>
          </li>
        </ul>
        <t><strong>Rationale for Selected Approach</strong></t>
        <t>Option A is selected because it achieves the functional goal—requiring both identifier and identity authorization before an encryption certificate Order can be finalized—while maximizing reuse of the existing RFC 8555 resource model. The semantic distinction is enforced by server policy, not by state machine modification. This allows the extension to operate within the RFC 8555 framework without altering core protocol semantics.</t>
        <t>The dedicated authorization object pattern also serves as a reusable template for other ACME extensions requiring non-identifier-based authorization or multiple independent authorization factors within a single Order (see Design Note in Section 3.3.2).</t>
      </section>
      <section anchor="identity-authorization-vs-identifier-authorization">
        <name>Identity Authorization vs. Identifier Authorization</name>
        <t><xref target="GMT.0034-2014"/> requires the encryption private key to be generated by the KMC, which necessitates proof that the requester possesses the corresponding signature private key before issuing the encryption certificate. Placing the <tt>auth-01</tt> challenge in the same authorization object as identifier authorization challenges would conflict with RFC 8555's authorization state machine. Therefore, this document chooses to place <tt>auth-01</tt> in a separate, dedicated authorization object, with its identifier serving only as a placeholder. This design equivalently achieves the requirement that "both identifier authorization and identity authorization must be completed" without modifying the <xref target="RFC8555"/> authorization state machine.</t>
      </section>
      <section anchor="envelope-delivery-and-explicit-opt-in">
        <name>Envelope Delivery and Explicit Opt-In</name>
        <t>The digital envelope (containing the encryption private key) is returned synchronously in the <tt>finalize</tt> response, ensuring that the certificate and private key are produced and delivered in the same atomic operation. The default value of <tt>includeEnvelope</tt> is set to <tt>false</tt>, requiring the client to explicitly request envelope delivery by setting <tt>includeEnvelope: true</tt>, following the security principle of least exposure.</t>
      </section>
      <section anchor="auditability-of-key-escrow">
        <name>Auditability of Key Escrow</name>
        <t>Key escrow has historically been controversial within the IETF community. The mechanism described here is a mandatory requirement of <xref target="GMT.0034-2014"/> and related regulatory frameworks for encryption certificates. This document provides an ACME protocol adaptation for that established requirement and does not constitute a general recommendation for key escrow architectures.</t>
        <t>This design provides two safeguards intended to make key escrow auditable and verifiable in the SM context:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Cryptographic Binding</strong>: The <tt>auth-01</tt> challenge and <tt>sm2AuthKeyHash</tt> extension establish a verifiable binding between the encryption certificate and the signature certificate. A relying party can extract <tt>sm2AuthKeyHash</tt>, compute the SM3 hash of the expected signature-certificate public key as specified in Section 4.2, and compare the values.</t>
          </li>
          <li>
            <t><strong>Separation of Duties</strong>: The CA is responsible for certificate issuance and the KMC for key escrow. KMC escrow operations <strong>SHOULD</strong> be included in the CA's annual WebTrust or SOC 2 audit scope. Where the KMC is operated by a third party, the responsibility boundary and compliance allocation between the CA and KMC <strong>SHOULD</strong> be clearly defined.</t>
          </li>
        </ul>
        <t>Outside the SM context, recording a cryptographic commitment to an authorizing key in a credential may also provide an auditable pattern for other third-party-generated credentials.</t>
      </section>
    </section>
    <section anchor="future-considerations">
      <name>Future Considerations</name>
      <section anchor="general-model-as-a-key-escrow-certificate-profile">
        <name>General Model as a "Key Escrow Certificate Profile"</name>
        <t>The core pattern of this document, in which an authorizing key proves possession through a cryptographic challenge and the authorized certificate records a hash of that key, can be generalized as a "Key Escrow Certificate Profile" for scenarios in which a third party generates a private key and issues a credential.</t>
        <t><strong>Post-Quantum Cryptography (PQC) Migration</strong>: A central problem in PQC migration is transferring trust from established certificates to newly issued PQC certificates. An <tt>auth-01</tt>-like challenge could allow an entity to prove possession of a traditional private key and authorize issuance of a PQC certificate. The <tt>sm2AuthKeyHash</tt> pattern could similarly be generalized into a certificate-association verification mechanism. This workflow-level trust-transfer model is complementary to algorithm-combination work in the LAMPS Working Group.</t>
        <t><strong>Device Certificates and Code Signing</strong>: Device manufacturers or code-signing CAs could use a similar mechanism to verify device or developer identity keys before issuing corresponding credentials. In an IoT manufacturing scenario, a manufacturer key could authorize issuance of device certificates.</t>
      </section>
      <section anchor="synergy-with-the-acme-extension-ecosystem">
        <name>Synergy with the ACME Extension Ecosystem</name>
        <t>The dedicated-authorization-object approach in this document is intended as a reusable pattern for ACME extensions that require non-identifier-based authorization or multiple authorization factors without modifying the <xref target="RFC8555"/> Order state machine. Registration of new configurable fields through the "ACME Order Object Fields" registry is also intended as a standardization path for subsequent ACME extensions.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="GMT.0034-2014">
          <front>
            <title>Certificate Authentication System Based on SM2 Cryptographic Algorithm</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2014"/>
          </front>
          <seriesInfo name="GM/T 0034-2014" value=""/>
        </reference>
        <reference anchor="GMT.0010-2023">
          <front>
            <title>SM2 Cryptographic Algorithm Encrypted Signature Message Syntax Specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="GM/T 0034-2014" value=""/>
        </reference>
        <reference anchor="GMT.0006-2023">
          <front>
            <title>Cryptographic Application Identifier Specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="GM/T 0006-2023" value=""/>
        </reference>
        <reference anchor="GMT.0003.4-2012">
          <front>
            <title>SM2 Elliptic Curve Public Key Cryptography Algorithm Part 4: Public Key Encryption Algorithm</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="GM/T 0003.4-2012" value=""/>
        </reference>
        <reference anchor="GMT.0002-2012">
          <front>
            <title>SM4 Block Cipher Algorithm</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="GM/T 0002-2012" value=""/>
        </reference>
        <reference anchor="GMT.0078-2020">
          <front>
            <title>Design Guide for Cryptographic Random Number Generation Modules</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="GM/T 0078-2020" value=""/>
        </reference>
        <reference anchor="GMT.0005-2021">
          <front>
            <title>Randomness Test Specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="GM/T 0005-2021" value=""/>
        </reference>
        <reference anchor="GMT.0003.5-2012">
          <front>
            <title>SM2 Elliptic Curve Public Key Cryptography Algorithm Part 5: Parameter Definition</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="GM/T 0003.5-2012" value=""/>
        </reference>
        <reference anchor="GMT.0015-2023">
          <front>
            <title>Digital Certificate Format Specification Based on SM2 Cryptographic Algorithm</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="GM/T 0015-2023" value=""/>
        </reference>
        <reference anchor="GMT.0014-2023">
          <front>
            <title>Digital Certificate Authentication System Cryptographic Protocol Specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="GM/T 0014-2023" value=""/>
        </reference>
        <reference anchor="RFC8555" target="https://www.rfc-editor.org/info/rfc8555" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8555.xml">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="RFC7638" target="https://www.rfc-editor.org/info/rfc7638" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7638.xml">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC7517" target="https://www.rfc-editor.org/info/rfc7517" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7517.xml">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
          <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="RFC5480" target="https://www.rfc-editor.org/info/rfc5480" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5480.xml">
          <front>
            <title>Elliptic Curve Cryptography Subject Public Key Information</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="K. Yiu" initials="K." surname="Yiu"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="T. Polk" initials="T." surname="Polk"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography. This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5480"/>
          <seriesInfo name="DOI" value="10.17487/RFC5480"/>
        </reference>
        <reference anchor="RFC7518" target="https://www.rfc-editor.org/info/rfc7518" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7518.xml">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.geng-acme-public-key" target="https://datatracker.ietf.org/doc/html/draft-geng-acme-public-key-07" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.geng-acme-public-key.xml">
          <front>
            <title>Automated Certificate Management Environment (ACME) Extension for Public Key Challenges</title>
            <author fullname="Feng Geng" initials="F." surname="Geng">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Panyu Wu" initials="P." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Liang Xia" initials="L." surname="Xia">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="陈鑫" initials="C." surname="陈鑫">
              <organization>TrustAsia</organization>
            </author>
            <date day="14" month="June" year="2026"/>
            <abstract>
              <t>The Automatic Certificate Management Environment (ACME) [RFC8555] requires a PKCS#10 Certificate Signing Request (CSR) at the finalization stage. This document defines a new ACME challenge type, "pk-01", that allows a client to prove possession of a private key directly, without constructing a CSR. The primary motivation is to support key types that cannot generate CSR self-signatures, notably post-quantum Key Encapsulation Mechanism (KEM) keys. The client declares the public key via a popKey field in the "newOrder" request; the server attaches the "pk-01" challenge to existing identifier authorizations. When all required authorizations are satisfied, the ACME server issues a certificate using the validated public key and the authorized identifiers, eliminating the need for a CSR in the finalization stage.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-geng-acme-public-key-07"/>
        </reference>
        <reference anchor="I-D.ietf-acme-profiles" target="https://datatracker.ietf.org/doc/html/draft-ietf-acme-profiles-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-acme-profiles.xml">
          <front>
            <title>Automated Certificate Management Environment (ACME) Profiles Extension</title>
            <author fullname="Aaron Gable" initials="A." surname="Gable">
              <organization>Internet Security Research Group</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>This document defines how an ACME Server may offer a selection of different certificate profiles to ACME Clients, and how those clients may indicate which profile they want.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-acme-profiles-01"/>
        </reference>
        <reference anchor="GBT.39786-2021">
          <front>
            <title>Information Security Technology — Basic Requirements for Cryptographic Application in Information Systems</title>
            <author>
              <organization>State Administration for Market Regulation</organization>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="GB/T 39786-2021" value=""/>
        </reference>
        <reference anchor="GBT.32918.5">
          <front>
            <title>Information security technology — SM2 elliptic curve public-key cryptography algorithm — Part 5: Parameter definition</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="GB/T 32918.5" value=""/>
        </reference>
      </references>
    </references>
    <?line 725?>

<section anchor="protocol-interaction-diagrams">
      <name>Protocol Interaction Diagrams</name>
      <section anchor="signature-certificate-order-flow-standard-csr-approach">
        <name>Signature Certificate Order Flow (Standard CSR Approach)</name>
        <figure anchor="fig-1">
          <name>Signature Certificate Order Flow (Standard CSR Approach)</name>
          <artwork><![CDATA[
Client                      ACME Server
    |                               |
    | 1. newOrder                   |
    | (identifiers + account auth)  |
    |------------------------------>|
    |                               |
    | 2. Return Order & challenges  |
    |<------------------------------|
    |                               |
    | 3. Complete auth challenges   |
    |------------------------------>|
    |                               |
    | 4. Authorization completed    |
    |<------------------------------|
    |                               |
    | 5. finalize (CSR with pubkey)
    |------------------------------>|
    Note: Server validates CSR, issues signature certificate
    |                               |
    | 6. Return certificate URL     |
    |<------------------------------|
    |                               |
    | 7. POST-as-GET fetch cert     |
    |------------------------------>|
    |                               |
    | 8. Return full certificate    |
    |<------------------------------|
]]></artwork>
        </figure>
      </section>
      <section anchor="signature-certificate-order-flow-using-pk-01-challenge">
        <name>Signature Certificate Order Flow (Using <tt>pk-01</tt> Challenge)</name>
        <figure anchor="fig-2">
          <name>Signature Certificate Order Flow (Using `pk-01` Challenge)</name>
          <artwork><![CDATA[
Client                                      ACME Server
    |                                               |
    | 1. newOrder                                   |
    | (identifiers, popKey=signature public key)    |
    |---------------------------------------------->|
    |                                               |
    | 2. Return Order + pk-01 challenge             |
    |<----------------------------------------------|
    |                                               |
    | 3. Complete pk-01 challenge                   |
    | (sign with signature private key)             |
    |---------------------------------------------->|
    Note: Server verification successful
    |                                               |
    | 4. finalize ({})                              |
    |---------------------------------------------->|
    Note: Server issues signature certificate
    |                                               |
    | 5. Return certificate URL                     |
    |<----------------------------------------------|
    |                                               |
    | 6. POST-as-GET to retrieve certificate        |
    |---------------------------------------------->|
    |                                               |
    | 7. Return signature certificate content       |
    |<----------------------------------------------|
]]></artwork>
        </figure>
      </section>
      <section anchor="encryption-certificate-order-flow-using-auth-01-challenge">
        <name>Encryption Certificate Order Flow (Using <tt>auth-01</tt> Challenge)</name>
        <figure anchor="fig-3">
          <name>Encryption Certificate Order Flow (Using `auth-01` Challenge)</name>
          <artwork><![CDATA[
Client                                      ACME Server                                  KMC
    |                                              |                                        |
    | 1. newOrder                                  |                                        |
    | (identifiers, authKey=signature JWK, optional includeEnvelope)                        |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 2. Return Order + id auth + auth-01 auth obj |                                        |
    |<---------------------------------------------|                                        |
    |                                              |                                        |
    | 3. Complete HTTP-01 / DNS-01 identifier challenges                                    |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 4. Complete auth-01 challenge                |                                        |
    | Input tuple: URL + token + account pubkey fp |                                        |
    |--------------------------------------------->|                                        |
    Note over ACME Server:
    5. Signature & r/s range check passed, identity auth complete
    |                                              |                                        |
    | 6. finalize ({})                             |                                        |
    |--------------------------------------------->|                                        |
    Note over ACME Server:
    7. Validate authKey signature certificate exists & valid
    |                                              |--------------------------------------->|
    |                                              | 8. Trigger KMC, send signature public key|
    |                                              |                                        |
    Note over KMC:
    9. Generate key pair, escrow private key, build signedAndEnvelopedData
    |                                              |<---------------------------------------|
    |                                              | 10. Return encryption cert + envelope
    |<---------------------------------------------|                                        |
    | 11. finalize response (cert URL + optional envelope), Cache-Control: no-store, private |
    |                                              |                                        |
    | 12. POST-as-GET fetch encryption certificate |                                        |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 13. Return encryption cert (sm2AuthKeyHash ext)|                                      |
    |<---------------------------------------------|                                        |
    Note over Client:
    14. If envelope exists: decrypt with signature private key to get encryption private key
]]></artwork>
        </figure>
      </section>
      <section anchor="complete-http-interaction-example-normal-flow">
        <name>Complete HTTP Interaction Example (Normal Flow)</name>
        <t>The following example shows the complete HTTP interaction for requesting an encryption certificate using the <tt>auth-01</tt> challenge.</t>
        <t><strong>Step 1: Create Order (<tt>newOrder</tt>)</strong></t>
        <artwork><![CDATA[
POST /acme/new-order HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "eyJpZGVudGlmaWVycyI6W3sidHlwZSI6ImRucyIsInZhbHVlIjoiZXhhbXBsZS5jb20ifV0sImF1dGh LZXkiOnsia3R5IjoiRUMiLCJjcnYiOiJzbTJwMjU2djEiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9LCJpbmNsdW RlRW52ZWxvcGUiOnRydWV9",
    "signature": "..."
}
]]></artwork>
        <t>The decoded payload is:</t>
        <artwork><![CDATA[
{
    "identifiers": [{"type": "dns", "value": "example.com"}],
    "authKey": {
        "kty": "EC",
        "crv": "sm2p256v1",
        "x": "...",
        "y": "..."
    },
    "includeEnvelope": true
}
]]></artwork>
        <t><strong>Step 2: Server Returns Order and Challenges</strong></t>
        <artwork><![CDATA[
HTTP/1.1 201 Created
Content-Type: application/json
Location: https://example.com/acme/order/123
{
    "status": "pending",
    "expires": "2026-08-15T00:00:00Z",
    "identifiers": [{"type": "dns", "value": "example.com"}],
    "authorizations": [
        "https://example.com/acme/authz/456",
        "https://example.com/acme/authz/789"
    ],
    "finalize": "https://example.com/acme/order/123/finalize"
}
]]></artwork>
        <t><strong>Step 3: Retrieve Authorization and Complete <tt>auth-01</tt> Challenge</strong></t>
        <t>In this example, <tt>authz/456</tt> is the identifier authorization object, and <tt>authz/789</tt> is the <tt>auth-01</tt> dedicated authorization object. Retrieve via POST-as-GET:</t>
        <artwork><![CDATA[
POST /acme/authz/789 HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "",
    "signature": "..."
}
]]></artwork>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
{
    "status": "pending",
    "identifier": {"type": "dns", "value": "example.com"},
    "challenges": [
        {
            "type": "auth-01",
            "url": "https://example.com/acme/chall/102",
            "token": "M4jVv6ZqXrEuTkAyC1wNs9BhPdGoLfR2",
            "status": "pending"
        }
    ]
}
]]></artwork>
        <t>The client completes the <tt>auth-01</tt> challenge:</t>
        <ol spacing="normal" type="1"><li>
            <t>Using the account public key that authenticated the <tt>newOrder</tt> request for this Order, compute its JWK Thumbprint according to RFC 7638 to obtain <tt>account_thumbprint</tt>.</t>
          </li>
          <li>
            <t>Construct the signature input <tt>message</tt> = <tt>"ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint</tt>.</t>
          </li>
          <li>
            <t>Compute <tt>hash = SM3(message)</tt>.</t>
          </li>
          <li>
            <t>Sign the <tt>hash</tt> using the signature private key with SM2, producing an ASN.1 DER-encoded <tt>SEQUENCE { r, s }</tt>.</t>
          </li>
          <li>
            <t>Base64url-encode the signature value.</t>
          </li>
        </ol>
        <artwork><![CDATA[
POST /acme/chall/102 HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "eyJ0eXBlIjoiYXV0aC0wMSIsImF1dGhTaWduYXR1cmUiOiJiYXNlNjR1cmwoQVNOLjEgREVSIFN FUVVFTkNFIHsgciwgcyB9KSJ9",
    "signature": "..."
}
]]></artwork>
        <t>The decoded payload is:</t>
        <artwork><![CDATA[
{
    "type": "auth-01",
    "authSignature": "base64url(ASN.1 DER SEQUENCE { r, s })"
}
]]></artwork>
        <t><strong>Step 4: Submit <tt>finalize</tt> Request and Retrieve Envelope</strong></t>
        <artwork><![CDATA[
POST /acme/order/123/finalize HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "e30",
    "signature": "..."
}
]]></artwork>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store, private
{
    "status": "valid",
    "expires": "2026-08-15T00:00:00Z",
    "identifiers": [{"type": "dns", "value": "example.com"}],
    "authorizations": ["https://example.com/acme/authz/456", "https://example.com/acme/authz/789"],
    "finalize": "https://example.com/acme/order/123/finalize",
    "certificate": "https://example.com/acme/cert/321",
    "envelope": "base64url(ASN.1 DER of GM/T 0010 signedAndEnvelopedData)"
}
]]></artwork>
        <t><strong>Step 5: Retrieve Encryption Certificate</strong></t>
        <artwork><![CDATA[
POST /acme/cert/321 HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "",
    "signature": "..."
}
]]></artwork>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/pem-certificate-chain
-----BEGIN CERTIFICATE-----
... (encryption certificate, containing sm2AuthKeyHash extension)
-----END CERTIFICATE-----
]]></artwork>
      </section>
      <section anchor="error-scenario-http-interaction-examples">
        <name>Error Scenario HTTP Interaction Examples</name>
        <t><strong>Error Scenario 1: KMC Unavailable</strong></t>
        <artwork><![CDATA[
POST /acme/order/123/finalize HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "e30",
    "signature": "..."
}
]]></artwork>
        <artwork><![CDATA[
HTTP/1.1 503 Service Unavailable
Content-Type: application/problem+json
{
    "type": "urn:ietf:params:acme:error:kmcUnavailable",
    "detail": "The Key Management Center is temporarily unavailable. Please retry later.",
    "status": 503
}
]]></artwork>
        <t><strong>Error Scenario 2: <tt>finalize</tt> Request for Encryption Certificate Order Contains CSR</strong></t>
        <artwork><![CDATA[
POST /acme/order/123/finalize HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "eyJjc3IiOiJiYXNlNjR1cmwoUEtDUzEwIENTUikifQ",
    "signature": "..."
}
]]></artwork>
        <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
{
    "type": "urn:ietf:params:acme:error:invalidCSR",
    "detail": "The finalize request for an encryption certificate order must use an empty payload; the key pair is generated by the KMC.",
    "status": 400
}
]]></artwork>
        <t><strong>Error Scenario 3: SM2 Signature <tt>r</tt> or <tt>s</tt> Out of Range</strong></t>
        <artwork><![CDATA[
POST /acme/chall/102 HTTP/1.1
Host: example.com
Content-Type: application/jose+json
{
    "protected": "...",
    "payload": "eyJ0eXBlIjoiYXV0aC0wMSIsImF1dGhTaWduYXR1cmUiOiIuLi4ifQ",
    "signature": "..."
}
]]></artwork>
        <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
{
    "type": "urn:ietf:params:acme:error:invalidSM2Signature",
    "detail": "Invalid SM2 signature parameters: r or s out of range [1, n-1]",
    "status": 400
}
]]></artwork>
      </section>
      <section anchor="error-handling-flow">
        <name>Error Handling Flow</name>
        <artwork><![CDATA[
                            +---------------------------+
                            | A: newOrder for encryption |
                            +-------------+-------------+
                                          |
                                          v
                  +---------------------------------------------+
                  | B: Check if authKey exists in request payload |
                  +------------------+--------------------------+
                                     |
         +---------------------------+---------------------------+
         |No                                                      |Yes
         v                                                        v
+------------------------+                +------------------------------------------------+
| C: Return 400 authKey |                | F: Create identifier auth objects +            |
| authKeyMissing Error  |                |    dedicated auth-01 authorization object     |
+------------------------+                +----------------+---------------------------------+
                                                          |
                                                          v
                                +------------------------------------------------+
                                | G: Are all authorization objects fully valid?  |
                                +------------------+-------------------------------+
                                                  |
                        +-------------------------+--------------------------+
                        |Failure                                              |Success
                        v                                                    v
+------------------------------------------------+       +-------------------------------------------------+
| H: Return error response                       |       | V: Verify authKey’s signature certificate |
| Note: Completed auth-01 in same Order          |       |    exists and is valid (default enabled)  |
|       does not need re-run; cannot reuse       |       +----------------+--------------------------+
|       auth data across separate Orders         |                        |
+------------------------------------------------+         +-------------+----------------+
                                                          |No             |Yes
                                                          v                v
                                               +----------------+  +--------------------------+
                                               | W: 403         |  | I: Trigger KMC subsystem  |
                                               | signingCertReq |  |    pass signature pubkey  |
                                               +----------------+  +-----------+------------+
                                                                               |
                                                                               v
                                                                    +----------------+
                                                                    | J: KMC operation|
                                                                    +------+---------+
                                                                           |
                                                         +----------------+----------------+
                                                         |Failure                         |Success
                                                         v                                v
                                        +--------------------------------+    +------------------------+
                                        | K: 503 kmcUnavailable /          |    | L: Check includeEnvelope flag |
                                        |    500 envelopeGenerationFailed  |    +-----------+------------+
                                        +--------------------------------+                |
                                                                          +---------+---------+
                                                                                    |true     |false/unset
                                                                                    v         v
                                                              +------------------------+  +------------------------+
                                                              | M: finalize response |  | N: finalize response  |
                                                              | Return cert URL +    |  | Return cert URL only  |
                                                              | envelope             |  | Cache-Control:        |
                                                              | Cache-Control:       |  | no-store, private     |
                                                              | no-store, private    |  +------------------------+
                                                              +------------------------+
]]></artwork>
      </section>
    </section>
    <section anchor="implementation-notes">
      <name>Implementation Notes</name>
      <t>This appendix is non-normative and provides core guidance for implementers of this document.</t>
      <section anchor="client-signature-construction-steps">
        <name>Client Signature Construction Steps</name>
        <t>When completing the <tt>auth-01</tt> challenge, the client <strong>MUST</strong> follow these steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Using the account public key that authenticated the <tt>newOrder</tt> request for this Order, compute its JWK Thumbprint according to <xref target="RFC7638"/> to obtain <tt>account_thumbprint</tt>.</t>
          </li>
          <li>
            <t>Construct the signature input <tt>message</tt> = <tt>"ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint</tt>.</t>
          </li>
          <li>
            <t>Compute <tt>hash = SM3(message)</tt>.</t>
          </li>
          <li>
            <t>Sign the <tt>hash</tt> using the signature private key with SM2, outputting an <strong>ASN.1 DER-encoded</strong> <tt>SEQUENCE { r INTEGER, s INTEGER }</tt>.</t>
          </li>
          <li>
            <t>Ensure the signature uses the normalized form <tt>s &lt;= n/2</tt>; if <tt>s &gt; n/2</tt>, replace it with <tt>n - s</tt>.</t>
          </li>
          <li>
            <t>Base64url-encode the DER-encoded signature value and place it in the <tt>authSignature</tt> field.</t>
          </li>
        </ol>
        <t><strong>Signature Construction Order Warning</strong>: The client <strong>MUST</strong> strictly use the field order specified above. Any deviation will cause server verification to fail.</t>
        <t>For SM2 signature encoding considerations, see Section 2's SM3 OID note. The client should use an ASN.1 DER encoding library and be aware of the INTEGER encoding rules (X.690 Section 8.3.2): when the most significant bit of the integer value is 1, a leading <tt>0x00</tt> byte must be prepended.</t>
        <t>Provisioning <tt>authKey</tt>: The client need only provide the JWK-formatted <tt>authKey</tt> in the JWS Payload of the <tt>newOrder</tt> request; the <tt>SubjectPublicKeyInfo</tt> encoding is performed by the server.</t>
        <t>Retrieving the envelope from the <tt>finalize</tt> response: If <tt>includeEnvelope: true</tt> was explicitly set but the <tt>envelope</tt> field is not received, it <strong>SHOULD</strong> be treated as an error and the flow terminated. When not explicitly set, the client <strong>SHOULD NOT</strong> expect the <tt>envelope</tt> field.</t>
      </section>
      <section anchor="server-verification-steps">
        <name>Server Verification Steps</name>
        <t>When verifying the <tt>auth-01</tt> signature, the server <strong>MUST</strong> use exactly the same construction method as the client. The specific steps are:</t>
        <ol spacing="normal" type="1"><li>
            <t>Obtain <tt>kid</tt> from the JWS header, look up the corresponding account public key, verify the JWS signature, and confirm that the account is the account that created the Order.</t>
          </li>
          <li>
            <t>Obtain the account JWK from the account state stored when the Order was created and compute <tt>account_thumbprint</tt> according to RFC 7638; do not extract this value from <tt>authSignature</tt> or the challenge response.</t>
          </li>
          <li>
            <t>Extract the signature value from <tt>authSignature</tt>, verify that the <tt>token</tt> matches the challenge object and has not been used.</t>
          </li>
          <li>
            <t>Using the <tt>account_thumbprint</tt> computed in Step 2, construct the signature input <tt>message</tt> = <tt>"ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint</tt>.</t>
          </li>
          <li>
            <t>Compute <tt>hash = SM3(message)</tt> and verify the signature using the public key from <tt>authKey</tt>.</t>
          </li>
          <li>
            <t>Verify that both <tt>r</tt> and <tt>s</tt> are in the range <tt>[1, n-1]</tt> and that <tt>s &lt;= n/2</tt>.</t>
          </li>
          <li>
            <t>Verify that the signing public key matches the <tt>authKey</tt> declared in the <tt>newOrder</tt> request.</t>
          </li>
          <li>
            <t>Verify that the account identified by <tt>kid</tt> matches the account corresponding to <tt>authKey</tt>.</t>
          </li>
        </ol>
        <t>If the account key was changed before challenge completion, the server <strong>MUST</strong> reject the challenge response, transition the affected incomplete <tt>auth-01</tt> authorization object and its Order to <tt>invalid</tt>, and <strong>MUST NOT</strong> use the new account key's thumbprint to reconstruct the signature input for the old Order.</t>
        <t><strong>Cache Control</strong>: When returning a <tt>finalize</tt> response containing the <tt>envelope</tt> field, the server <strong>MUST</strong> set the <tt>Cache-Control: no-store, private</tt> header and ensure that the <tt>finalize</tt> endpoint is explicitly disabled for caching at the CDN level.</t>
        <t><strong>Audit Logs</strong>: The server <strong>SHOULD</strong> log all encryption certificate request operations, including <tt>auth-01</tt> challenge completion, KMC invocation results, certificate issuance records, and envelope delivery records.</t>
      </section>
      <section anchor="relying-party-verification-flow">
        <name>Relying Party Verification Flow</name>
        <t>When validating an encryption certificate, relying parties <strong>MUST</strong> check the <tt>sm2AuthKeyHash</tt> extension:</t>
        <ol spacing="normal" type="1"><li>
            <t>Extract the <tt>sm2AuthKeyHash</tt> extension value (if present) from the encryption certificate and parse the <tt>SM2AuthKeyHash</tt> structure.</t>
          </li>
          <li>
            <t>If the extension is absent, the certificate does not conform to this specification (it is a mandatory extension); the relying party <strong>MAY</strong> treat it as a foreign or legacy certificate per its policy but <strong>SHOULD</strong> log the absence in the audit log.</t>
          </li>
          <li>
            <t>If the extension is present, verify that <tt>hashAlgorithm.algorithm</tt> is the standard SM3 OID (<tt>1.2.156.10197.1.401</tt>). If unrecognized, the relying party <strong>SHOULD</strong> reject the certificate.</t>
          </li>
          <li>
            <t>Extract the 32-byte hash value from the <tt>hashValue</tt> field.</t>
          </li>
          <li>
            <t>Extract the public key from the expected signature certificate and compute its SM3 hash.</t>
          </li>
          <li>
            <t>Compare the two values. If they do not match, the authorization binding of the encryption certificate is invalid, and the relying party <strong>MUST</strong> reject the certificate and treat it as a security violation.</t>
          </li>
        </ol>
      </section>
      <section anchor="kmc-core-guidance">
        <name>KMC Core Guidance</name>
        <ol spacing="normal" type="1"><li>
            <t>The random number generator used for key generation <strong>MUST</strong> comply with <xref target="GMT.0078-2020"/>, and its output <strong>MUST</strong> pass the randomness tests specified in <xref target="GMT.0005-2021"/>.</t>
          </li>
          <li>
            <t>The KDF output length parameter <tt>klen</tt> <strong>MUST</strong> be set to 128 bits (SM4 key length), with specific parameters as specified in <xref target="GMT.0003.4-2012"/> Section 4.2.</t>
          </li>
          <li>
            <t>When parsing the <tt>SubjectPublicKeyInfo</tt> structure passed by the server, implementations <strong>MUST</strong> comply with <xref target="RFC5480"/> encoding specifications and <strong>MUST NOT</strong> support direct identification using the SM2 algorithm OID.</t>
          </li>
          <li>
            <t>After an encryption certificate is revoked or expires, the escrowed private key <strong>SHOULD</strong> be deleted within a reasonable timeframe; the deletion period <strong>SHOULD</strong> be clearly stated in the CP/CPS (30 days is <strong>RECOMMENDED</strong>), and the deletion operation <strong>SHOULD</strong> be logged.</t>
          </li>
          <li>
            <t>For deployments with higher requirements regarding single point of trust risk, <strong>threshold KMC</strong> or <strong>key sharding</strong> schemes are <strong>RECOMMENDED</strong>; when adopting such schemes, their security model <strong>SHOULD</strong> be consistent with the threat model of this document.</t>
          </li>
        </ol>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
Ta/9xuj3yCfnFGdFBWyykMrq1+4H+Hsv8rGFZENlGk6S+2xIeuxhc3n20ETb
mUGQ0yTW4j02Rj045rM5xOKHfzzev9cJLf34/djN3Yf32ZKkwSm+9MO7H1uu
z0HgRGkkOvfC+n+7++rv9Hf34evsMGdFFhUYRjv+CFr13Ye/2237pwOOZsMY
VIrAeJgcnJzhf+gmNVr7WXr4/+aYsx3ogHOllLsPf0RlR6SQCPLHb6Xixre6
YAYVy5jcffhfF/YUQkItZxTF3eXfdjpKL/gXqszPJfk5jxKT5zEhwvPgW033
NzraR3cRvP4bwR5EhremyITwgcbiaTnmFf8LK+r3A/vSO7znqYL+e87JQhwR
VGXjQTTX97ehCA7wsBoB+HcdcVGJtwCz2lvGBekl5fdm+ZBXXy+Hcb/lL8t7
7gudjXXLOgP3NJAoE6jxG/HBjQ11Y22ZjFVaDNNOK9+Yla21kkWd538zVrKx
GbMfNTj9/8noza8PnK1GPFsNegtnH6ZrS07w20hojiawmiJkYWObEiJtNBNT
211TzG2OBYOr1EwbQsQCZW3LKGufpWlZfc0TBT0vxuGHFH/CziYlhk7jkLar
iYu+yuSx6soE7Pa9IXM1JOegLm4mqOswRpJc2Bd5Ns0m1PuBE38k5tV1rZJg
fQIe3sPkIfbTeQi/t7kgFy7v4UZn4+uvvi+q6a7ZSQfWDxooK9ptrJa9qwva
PPy5qLJvf64wBPYXPvkVqW6TDVZ2k5VOp7PSMj9wOy38Orv9YfKnF29ngxfD
Ufru7W3/9ujRu60qH3w/vPnT2dGjo9HpDL6rjsZ/uup9/3Z49HOR/+mnq6ve
T8+qP53t/NzbXM8v3q5XR6PnG4MXV8nLP/30Pn81rvJ063QHHz59c5y/3P/h
5/74j/mr/Ie/9c5/uDn++c3m4OdD/H4bn3mZb8+O8ps8wwnhv1/mP3wHv016
o5Nq8C45HZ6+29n807sP1/0Xb2Dw09vBu7ff2d1Y5DXbDHtiA6pTv2fZttcx
3MBK6a0wzJ9/WcGsARxwMK5WWskKhQ8RwNxxrHz6i1mDSDjwgAxI376f4jcr
h/tmrfRtv7zGb221Ku/HD8FZ0Ze3bmf4+ZOZNdCfVzgKUW9f8HHTmtuYulWq
Ppm9fZXCTIOEySZoGozKg7nYR4j3UmKHdpOr6XRS7T58qKDFeE44/nBjc8uB
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
nD0LlKxyAQA=

-->

</rfc>
