Skip to content

Allow CSRs to be created for encryption-only public keys (such as ML-KEM) #15313

Description

@ronaldvanrij

In relation to #15263, which allows ML-KEM public keys to be included in the subjectPublicKeyInfo field in X.509 certificates.

Certificate applicants will either use a CSR (RFC 2986) or a CRMF (RFC 4211) to provide their to-be-certified public key to the CA (among other information). Since ML-KEM (among others) cannot be used to create a digital signature, RFC 9883 has been published as solution.

While most of this RFC describes a procedure, the following items need be added to support this mechanism:

  • Sign a CSR using a different private key than was included;
  • Ability to add the statementOfPossession attribute to the CSR. I'd imagine extending the Attribute mechanism in a similar fashion as is done for Extension.

Activity

  1. ronaldvanrij commented on Aug 6, 2026

    @ronaldvanrij
    ContributorAuthor

    For the first item, I've created #15400 to allow using a different public key in a CSR than it signed with. The second item remains open.

  2. anishbhujbal7 commented on Oct 6, 2026

    @anishbhujbal7

    I'd love to take a crack at this.

    My rough plan is to:

    Update CertificateSigningRequestBuilder so a CSR can be signed with a different private key than what's in subjectPublicKeyInfo.
    Add support for the statementOfPossession attribute according to RFC 9883 (ASN.1 encoding, OID mapping, and exposing it through the builder/CSR parser).
    And add the tests necessary tests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions