Skip to content

Conversation

vcsjones
Copy link
Member

@vcsjones vcsjones commented Jul 18, 2025

ML-KEM has enough stability to it now where we can start to remove the Experimental attribute.

Specifically, things that are part of the FIPS-203 specification can be unmarked. Things that are still not finalized, such as a IETF work (X.509, SubjectPublicKeyInfo, and PrivateKeyInfo) will remain marked as experimental because the drafts may introduce breaking changes.

  • MLKemCng, and all of their supporting identifiers, are no longer marked as experimental.
  • MLKem as a class is no longer marked as experimental.
    • Encapsulate and Decapsulate are no longer marked as experimental.
    • Key generation is no longer marked as experimental.
    • Import and Export of Encapsulation, Decapsulation, and Seed keys are no longer marked as experimental.
    • Members that import or export SubjectPublicKeyInfo or PrivateKeyInfo, in any of their plain, PEM, or encrypted formats are experimental.
  • MLKemAlgorithm is no longer marked as experimental.
  • Members on PublicKey, X509Certificate2, and X509CertificateKeyAccessors are experimental.

@vcsjones vcsjones added this to the 10.0.0 milestone Jul 18, 2025
@vcsjones vcsjones requested a review from bartonjs July 18, 2025 18:23
@vcsjones vcsjones self-assigned this Jul 18, 2025
@Copilot Copilot AI review requested due to automatic review settings July 18, 2025 18:23
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR removes the ExperimentalAttribute from stable ML-KEM components that are part of the FIPS-203 specification, while keeping experimental markers on X.509 and PKCS#8 related functionality that is still in IETF draft status.

Key changes:

  • Removed experimental markers from core ML-KEM classes and operations (MLKem, MLKemAlgorithm, MLKemCng, MLKemOpenSsl)
  • Removed experimental markers from CNG-related ML-KEM identifiers and blob formats
  • Added experimental markers to X.509 SubjectPublicKeyInfo and PKCS#8 PrivateKeyInfo import/export methods

Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
MLKemOpenSsl.cs Removed experimental attribute from MLKemOpenSsl class
CngKeyBlobFormat.cs Removed experimental attributes from ML-KEM blob format properties
CngAlgorithmGroup.cs Removed experimental attribute from MLKem algorithm group property
CngAlgorithm.cs Removed experimental attribute from MLKem algorithm property
System.Security.Cryptography.cs Updated reference assembly with experimental attribute changes
MLKemCng.cs Removed experimental attribute from MLKemCng class
MLKemAlgorithm.cs Removed experimental attribute from MLKemAlgorithm class
MLKem.cs Removed experimental attribute from MLKem class and added experimental markers to X.509/PKCS#8 methods

Copy link
Contributor

Tagging subscribers to this area: @dotnet/area-system-security, @bartonjs, @vcsjones
See info in area-owners.md if you want to be subscribed.

@PranavSenthilnathan
Copy link
Member

/ba-g known timeouts and wasm test failures

@vcsjones vcsjones merged commit 1766659 into dotnet:main Jul 24, 2025
81 of 87 checks passed
@vcsjones vcsjones deleted the ml-kem-move-experimental branch July 24, 2025 01:42
@github-actions github-actions bot locked and limited conversation to collaborators Aug 23, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants