pyca / pyca/cryptography

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

Open
#15,313 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
7.8k
Forks
1.8k
Avg merge
7h 48m
Merged PRs (30d)
157

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading RFC 9883 alongside the CSR requirements in RFC 2986 and the CRMF context in RFC 4211. Trace the existing CSR Attribute and Extension mechanisms, then determine how the API should support signing with a separate private key and adding statementOfPossession. Done means both mechanisms are supported with appropriate validation and tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cryptography, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.