diff --git a/src/libraries/Common/src/System/Security/Cryptography/MLDsa.cs b/src/libraries/Common/src/System/Security/Cryptography/MLDsa.cs
index 662addf92386e8..a774719bc668ff 100644
--- a/src/libraries/Common/src/System/Security/Cryptography/MLDsa.cs
+++ b/src/libraries/Common/src/System/Security/Cryptography/MLDsa.cs
@@ -24,7 +24,6 @@ namespace System.Security.Cryptography
/// cryptographic libraries.
///
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public abstract partial class MLDsa : IDisposable
#if DESIGNTIMEINTERFACES
#pragma warning disable SA1001
@@ -299,6 +298,7 @@ public bool VerifyData(byte[] data, byte[] signature, byte[]? context = default)
/// -or-
/// An error occurred while signing the hash.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public void SignPreHash(ReadOnlySpan hash, Span destination, string hashAlgorithmOid, ReadOnlySpan context = default)
{
ArgumentNullException.ThrowIfNull(hashAlgorithmOid);
@@ -364,6 +364,7 @@ public void SignPreHash(ReadOnlySpan hash, Span destination, string
/// -or-
/// An error occurred while signing the hash.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] SignPreHash(byte[] hash, string hashAlgorithmOid, byte[]? context = default)
{
ArgumentNullException.ThrowIfNull(hash);
@@ -410,6 +411,7 @@ public byte[] SignPreHash(byte[] hash, string hashAlgorithmOid, byte[]? context
/// -or-
/// An error occurred while verifying the hash.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool VerifyPreHash(ReadOnlySpan hash, ReadOnlySpan signature, string hashAlgorithmOid, ReadOnlySpan context = default)
{
ArgumentNullException.ThrowIfNull(hashAlgorithmOid);
@@ -481,6 +483,7 @@ public bool VerifyPreHash(ReadOnlySpan hash, ReadOnlySpan signature,
///
/// A context is treated as empty.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool VerifyPreHash(byte[] hash, byte[] signature, string hashAlgorithmOid, byte[]? context = null)
{
ArgumentNullException.ThrowIfNull(hash);
@@ -496,6 +499,7 @@ public bool VerifyPreHash(byte[] hash, byte[] signature, string hashAlgorithmOid
///
/// is .
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] SignMu(byte[] externalMu)
{
ArgumentNullException.ThrowIfNull(externalMu);
@@ -527,6 +531,7 @@ public byte[] SignMu(byte[] externalMu)
/// The current platform does not support signing with an externally computed mu value.
///
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] SignMu(ReadOnlySpan externalMu)
{
byte[] destination = new byte[Algorithm.SignatureSizeInBytes];
@@ -566,6 +571,7 @@ public byte[] SignMu(ReadOnlySpan externalMu)
/// The current platform does not support signing with an externally computed mu value.
///
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public void SignMu(ReadOnlySpan externalMu, Span destination)
{
if (externalMu.Length != Algorithm.MuSizeInBytes)
@@ -590,12 +596,14 @@ public void SignMu(ReadOnlySpan externalMu, Span destination)
///
/// An error occurred while computing the signature.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
protected abstract void SignMuCore(ReadOnlySpan externalMu, Span destination);
///
///
/// or is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool VerifyMu(byte[] externalMu, byte[] signature)
{
ArgumentNullException.ThrowIfNull(externalMu);
@@ -620,6 +628,7 @@ public bool VerifyMu(byte[] externalMu, byte[] signature)
///
/// The current platform does not support verification with an externally computed mu value.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool VerifyMu(ReadOnlySpan externalMu, ReadOnlySpan signature)
{
if (externalMu.Length != Algorithm.MuSizeInBytes || signature.Length != Algorithm.SignatureSizeInBytes)
@@ -641,6 +650,7 @@ public bool VerifyMu(ReadOnlySpan externalMu, ReadOnlySpan signature
///
/// if the mu value is valid; otherwise, .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
protected abstract bool VerifyMuCore(ReadOnlySpan externalMu, ReadOnlySpan signature);
///
@@ -655,6 +665,7 @@ public bool VerifyMu(ReadOnlySpan externalMu, ReadOnlySpan signature
///
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] ExportSubjectPublicKeyInfo()
{
ThrowIfDisposed();
@@ -684,6 +695,7 @@ public byte[] ExportSubjectPublicKeyInfo()
///
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool TryExportSubjectPublicKeyInfo(Span destination, out int bytesWritten)
{
ThrowIfDisposed();
@@ -706,6 +718,7 @@ public bool TryExportSubjectPublicKeyInfo(Span destination, out int bytesW
///
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public string ExportSubjectPublicKeyInfoPem()
{
ThrowIfDisposed();
@@ -732,6 +745,7 @@ public string ExportSubjectPublicKeyInfoPem()
/// -or-
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] ExportPkcs8PrivateKey()
{
ThrowIfDisposed();
@@ -760,6 +774,7 @@ public byte[] ExportPkcs8PrivateKey()
///
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritten)
{
ThrowIfDisposed();
@@ -803,6 +818,7 @@ public bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritte
///
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
protected abstract bool TryExportPkcs8PrivateKeyCore(Span destination, out int bytesWritten);
///
@@ -818,6 +834,7 @@ public bool TryExportPkcs8PrivateKey(Span destination, out int bytesWritte
///
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public string ExportPkcs8PrivateKeyPem()
{
ThrowIfDisposed();
@@ -852,6 +869,7 @@ public string ExportPkcs8PrivateKeyPem()
/// -or-
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] ExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbeParameters pbeParameters)
{
ArgumentNullException.ThrowIfNull(pbeParameters);
@@ -899,6 +917,7 @@ public byte[] ExportEncryptedPkcs8PrivateKey(ReadOnlySpan password, PbePar
/// -or-
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] ExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, PbeParameters pbeParameters)
{
ArgumentNullException.ThrowIfNull(pbeParameters);
@@ -921,6 +940,7 @@ public byte[] ExportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, P
///
/// or is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public byte[] ExportEncryptedPkcs8PrivateKey(string password, PbeParameters pbeParameters)
{
ArgumentNullException.ThrowIfNull(password);
@@ -964,6 +984,7 @@ public byte[] ExportEncryptedPkcs8PrivateKey(string password, PbeParameters pbeP
/// -or-
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool TryExportEncryptedPkcs8PrivateKey(
ReadOnlySpan password,
PbeParameters pbeParameters,
@@ -1024,6 +1045,7 @@ public bool TryExportEncryptedPkcs8PrivateKey(
/// -or-
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool TryExportEncryptedPkcs8PrivateKey(
ReadOnlySpan passwordBytes,
PbeParameters pbeParameters,
@@ -1050,6 +1072,7 @@ public bool TryExportEncryptedPkcs8PrivateKey(
///
/// or is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public bool TryExportEncryptedPkcs8PrivateKey(
string password,
PbeParameters pbeParameters,
@@ -1089,6 +1112,7 @@ public bool TryExportEncryptedPkcs8PrivateKey(
/// -or-
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public string ExportEncryptedPkcs8PrivateKeyPem(
ReadOnlySpan password,
PbeParameters pbeParameters)
@@ -1133,6 +1157,7 @@ public string ExportEncryptedPkcs8PrivateKeyPem(
/// -or-
/// An error occurred while exporting the key.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public string ExportEncryptedPkcs8PrivateKeyPem(
ReadOnlySpan passwordBytes,
PbeParameters pbeParameters)
@@ -1151,6 +1176,7 @@ public string ExportEncryptedPkcs8PrivateKeyPem(
///
/// or is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public string ExportEncryptedPkcs8PrivateKeyPem(
string password,
PbeParameters pbeParameters)
@@ -1344,6 +1370,7 @@ public static MLDsa GenerateKey(MLDsaAlgorithm algorithm)
/// The platform does not support ML-DSA. Callers can use the property
/// to determine if the platform supports ML-DSA.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportSubjectPublicKeyInfo(ReadOnlySpan source)
{
Helpers.ThrowIfAsnInvalidLength(source);
@@ -1376,6 +1403,7 @@ public static MLDsa ImportSubjectPublicKeyInfo(ReadOnlySpan source)
///
/// is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportSubjectPublicKeyInfo(byte[] source)
{
ArgumentNullException.ThrowIfNull(source);
@@ -1413,6 +1441,7 @@ public static MLDsa ImportSubjectPublicKeyInfo(byte[] source)
/// The platform does not support ML-DSA. Callers can use the property
/// to determine if the platform supports ML-DSA.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportPkcs8PrivateKey(ReadOnlySpan source)
{
Helpers.ThrowIfAsnInvalidLength(source);
@@ -1427,6 +1456,7 @@ public static MLDsa ImportPkcs8PrivateKey(ReadOnlySpan source)
///
/// is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportPkcs8PrivateKey(byte[] source)
{
ArgumentNullException.ThrowIfNull(source);
@@ -1476,6 +1506,7 @@ public static MLDsa ImportPkcs8PrivateKey(byte[] source)
/// The platform does not support ML-DSA. Callers can use the property
/// to determine if the platform supports ML-DSA.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBytes, ReadOnlySpan source)
{
Helpers.ThrowIfAsnInvalidLength(source);
@@ -1525,6 +1556,7 @@ public static MLDsa ImportEncryptedPkcs8PrivateKey(ReadOnlySpan passwordBy
/// The platform does not support ML-DSA. Callers can use the property
/// to determine if the platform supports ML-DSA.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportEncryptedPkcs8PrivateKey(ReadOnlySpan password, ReadOnlySpan source)
{
Helpers.ThrowIfAsnInvalidLength(source);
@@ -1541,6 +1573,7 @@ public static MLDsa ImportEncryptedPkcs8PrivateKey(ReadOnlySpan password,
///
/// or is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportEncryptedPkcs8PrivateKey(string password, byte[] source)
{
ArgumentNullException.ThrowIfNull(password);
@@ -1585,6 +1618,7 @@ public static MLDsa ImportEncryptedPkcs8PrivateKey(string password, byte[] sourc
///
///
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportFromPem(ReadOnlySpan source)
{
ThrowIfNotSupported();
@@ -1602,6 +1636,7 @@ public static MLDsa ImportFromPem(ReadOnlySpan source)
///
/// is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportFromPem(string source)
{
ArgumentNullException.ThrowIfNull(source);
@@ -1669,6 +1704,7 @@ public static MLDsa ImportFromPem(string source)
///
/// This method supports the ENCRYPTED PRIVATE KEY PEM label.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportFromEncryptedPem(ReadOnlySpan source, ReadOnlySpan password)
{
ThrowIfNotSupported();
@@ -1733,6 +1769,7 @@ public static MLDsa ImportFromEncryptedPem(ReadOnlySpan source, ReadOnlySp
///
/// This method supports the ENCRYPTED PRIVATE KEY PEM label.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportFromEncryptedPem(ReadOnlySpan source, ReadOnlySpan passwordBytes)
{
ThrowIfNotSupported();
@@ -1747,6 +1784,7 @@ public static MLDsa ImportFromEncryptedPem(ReadOnlySpan source, ReadOnlySp
///
/// or is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportFromEncryptedPem(string source, string password)
{
ArgumentNullException.ThrowIfNull(source);
@@ -1760,6 +1798,7 @@ public static MLDsa ImportFromEncryptedPem(string source, string password)
///
/// or is .
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static MLDsa ImportFromEncryptedPem(string source, byte[] passwordBytes)
{
ArgumentNullException.ThrowIfNull(source);
@@ -1988,6 +2027,7 @@ protected virtual void Dispose(bool disposing)
///
/// An error occurred while signing the hash.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
protected abstract void SignPreHashCore(ReadOnlySpan hash, ReadOnlySpan context, string hashAlgorithmOid, Span destination);
///
@@ -2011,6 +2051,7 @@ protected virtual void Dispose(bool disposing)
///
/// An error occurred while verifying the hash.
///
+ [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
protected abstract bool VerifyPreHashCore(ReadOnlySpan hash, ReadOnlySpan context, string hashAlgorithmOid, ReadOnlySpan signature);
///
diff --git a/src/libraries/Common/src/System/Security/Cryptography/MLDsaAlgorithm.cs b/src/libraries/Common/src/System/Security/Cryptography/MLDsaAlgorithm.cs
index 1b30552e4ceddc..61dfbe4069f62e 100644
--- a/src/libraries/Common/src/System/Security/Cryptography/MLDsaAlgorithm.cs
+++ b/src/libraries/Common/src/System/Security/Cryptography/MLDsaAlgorithm.cs
@@ -10,7 +10,6 @@ namespace System.Security.Cryptography
/// Represents a specific algorithm within the ML-DSA family.
///
[DebuggerDisplay("{Name,nq}")]
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public sealed class MLDsaAlgorithm : IEquatable
{
///
diff --git a/src/libraries/Common/src/System/Security/Cryptography/MLDsaCng.cs b/src/libraries/Common/src/System/Security/Cryptography/MLDsaCng.cs
index ba51f4aba7fdec..e8f881581c63c9 100644
--- a/src/libraries/Common/src/System/Security/Cryptography/MLDsaCng.cs
+++ b/src/libraries/Common/src/System/Security/Cryptography/MLDsaCng.cs
@@ -21,7 +21,6 @@ namespace System.Security.Cryptography
/// cryptographic libraries.
///
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public sealed partial class MLDsaCng : MLDsa
{
private CngKey _key;
diff --git a/src/libraries/System.Security.Cryptography/ref/System.Security.Cryptography.cs b/src/libraries/System.Security.Cryptography/ref/System.Security.Cryptography.cs
index 9ce2245d0d13e5..61646b4ee8a9c1 100644
--- a/src/libraries/System.Security.Cryptography/ref/System.Security.Cryptography.cs
+++ b/src/libraries/System.Security.Cryptography/ref/System.Security.Cryptography.cs
@@ -333,7 +333,6 @@ public CngAlgorithm(string algorithm) { }
public static System.Security.Cryptography.CngAlgorithm ECDsaP384 { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithm ECDsaP521 { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithm MD5 { get { throw null; } }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.CngAlgorithm MLDsa { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithm MLKem { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithm Rsa { get { throw null; } }
@@ -358,7 +357,6 @@ public CngAlgorithmGroup(string algorithmGroup) { }
public static System.Security.Cryptography.CngAlgorithmGroup Dsa { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithmGroup ECDiffieHellman { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithmGroup ECDsa { get { throw null; } }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.CngAlgorithmGroup MLDsa { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithmGroup MLKem { get { throw null; } }
public static System.Security.Cryptography.CngAlgorithmGroup Rsa { get { throw null; } }
@@ -443,11 +441,8 @@ public CngKeyBlobFormat(string format) { }
public static System.Security.Cryptography.CngKeyBlobFormat MLKemPublicBlob { get { throw null; } }
public static System.Security.Cryptography.CngKeyBlobFormat OpaqueTransportBlob { get { throw null; } }
public static System.Security.Cryptography.CngKeyBlobFormat Pkcs8PrivateBlob { get { throw null; } }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.CngKeyBlobFormat PQDsaPrivateBlob { get { throw null; } }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.CngKeyBlobFormat PQDsaPrivateSeedBlob { get { throw null; } }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.CngKeyBlobFormat PQDsaPublicBlob { get { throw null; } }
public override bool Equals([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] object? obj) { throw null; }
public bool Equals([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] System.Security.Cryptography.CngKeyBlobFormat? other) { throw null; }
@@ -1927,7 +1922,6 @@ protected override void HashCore(System.ReadOnlySpan source) { }
public override void Initialize() { }
protected override bool TryHashFinal(System.Span destination, out int bytesWritten) { throw null; }
}
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public abstract partial class MLDsa : System.IDisposable
{
protected MLDsa(System.Security.Cryptography.MLDsaAlgorithm algorithm) { }
@@ -1935,34 +1929,53 @@ protected MLDsa(System.Security.Cryptography.MLDsaAlgorithm algorithm) { }
public static bool IsSupported { get { throw null; } }
public void Dispose() { }
protected virtual void Dispose(bool disposing) { }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan password, System.Security.Cryptography.PbeParameters pbeParameters) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] ExportEncryptedPkcs8PrivateKey(string password, System.Security.Cryptography.PbeParameters pbeParameters) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public string ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public string ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan password, System.Security.Cryptography.PbeParameters pbeParameters) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public string ExportEncryptedPkcs8PrivateKeyPem(string password, System.Security.Cryptography.PbeParameters pbeParameters) { throw null; }
+ public byte[] ExportMLDsaPrivateKey() { throw null; }
+ public void ExportMLDsaPrivateKey(System.Span destination) { }
+ protected abstract void ExportMLDsaPrivateKeyCore(System.Span destination);
public byte[] ExportMLDsaPrivateSeed() { throw null; }
public void ExportMLDsaPrivateSeed(System.Span destination) { }
protected abstract void ExportMLDsaPrivateSeedCore(System.Span destination);
public byte[] ExportMLDsaPublicKey() { throw null; }
public void ExportMLDsaPublicKey(System.Span destination) { }
protected abstract void ExportMLDsaPublicKeyCore(System.Span destination);
- public byte[] ExportMLDsaPrivateKey() { throw null; }
- public void ExportMLDsaPrivateKey(System.Span destination) { }
- protected abstract void ExportMLDsaPrivateKeyCore(System.Span destination);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] ExportPkcs8PrivateKey() { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public string ExportPkcs8PrivateKeyPem() { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] ExportSubjectPublicKeyInfo() { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public string ExportSubjectPublicKeyInfoPem() { throw null; }
public static System.Security.Cryptography.MLDsa GenerateKey(System.Security.Cryptography.MLDsaAlgorithm algorithm) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan passwordBytes, System.ReadOnlySpan source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan password, System.ReadOnlySpan source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportEncryptedPkcs8PrivateKey(string password, byte[] source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportFromEncryptedPem(System.ReadOnlySpan source, System.ReadOnlySpan passwordBytes) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportFromEncryptedPem(System.ReadOnlySpan source, System.ReadOnlySpan password) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportFromEncryptedPem(string source, byte[] passwordBytes) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportFromEncryptedPem(string source, string password) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportFromPem(System.ReadOnlySpan source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportFromPem(string source) { throw null; }
public static System.Security.Cryptography.MLDsa ImportMLDsaPrivateKey(System.Security.Cryptography.MLDsaAlgorithm algorithm, byte[] source) { throw null; }
public static System.Security.Cryptography.MLDsa ImportMLDsaPrivateKey(System.Security.Cryptography.MLDsaAlgorithm algorithm, System.ReadOnlySpan source) { throw null; }
@@ -1970,37 +1983,59 @@ public void ExportMLDsaPrivateKey(System.Span destination) { }
public static System.Security.Cryptography.MLDsa ImportMLDsaPrivateSeed(System.Security.Cryptography.MLDsaAlgorithm algorithm, System.ReadOnlySpan source) { throw null; }
public static System.Security.Cryptography.MLDsa ImportMLDsaPublicKey(System.Security.Cryptography.MLDsaAlgorithm algorithm, byte[] source) { throw null; }
public static System.Security.Cryptography.MLDsa ImportMLDsaPublicKey(System.Security.Cryptography.MLDsaAlgorithm algorithm, System.ReadOnlySpan source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportPkcs8PrivateKey(byte[] source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportPkcs8PrivateKey(System.ReadOnlySpan source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportSubjectPublicKeyInfo(byte[] source) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Security.Cryptography.MLDsa ImportSubjectPublicKeyInfo(System.ReadOnlySpan source) { throw null; }
public byte[] SignData(byte[] data, byte[]? context = null) { throw null; }
public void SignData(System.ReadOnlySpan data, System.Span destination, System.ReadOnlySpan context = default(System.ReadOnlySpan)) { }
protected abstract void SignDataCore(System.ReadOnlySpan data, System.ReadOnlySpan context, System.Span destination);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] SignMu(byte[] externalMu) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] SignMu(System.ReadOnlySpan externalMu) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public void SignMu(System.ReadOnlySpan externalMu, System.Span destination) { }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected abstract void SignMuCore(System.ReadOnlySpan externalMu, System.Span destination);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public byte[] SignPreHash(byte[] hash, string hashAlgorithmOid, byte[]? context = null) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public void SignPreHash(System.ReadOnlySpan hash, System.Span destination, string hashAlgorithmOid, System.ReadOnlySpan context = default(System.ReadOnlySpan)) { }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected abstract void SignPreHashCore(System.ReadOnlySpan hash, System.ReadOnlySpan context, string hashAlgorithmOid, System.Span destination);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan passwordBytes, System.Security.Cryptography.PbeParameters pbeParameters, System.Span destination, out int bytesWritten) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan password, System.Security.Cryptography.PbeParameters pbeParameters, System.Span destination, out int bytesWritten) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool TryExportEncryptedPkcs8PrivateKey(string password, System.Security.Cryptography.PbeParameters pbeParameters, System.Span destination, out int bytesWritten) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool TryExportPkcs8PrivateKey(System.Span destination, out int bytesWritten) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected abstract bool TryExportPkcs8PrivateKeyCore(System.Span destination, out int bytesWritten);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool TryExportSubjectPublicKeyInfo(System.Span destination, out int bytesWritten) { throw null; }
public bool VerifyData(byte[] data, byte[] signature, byte[]? context = null) { throw null; }
public bool VerifyData(System.ReadOnlySpan data, System.ReadOnlySpan signature, System.ReadOnlySpan context = default(System.ReadOnlySpan)) { throw null; }
protected abstract bool VerifyDataCore(System.ReadOnlySpan data, System.ReadOnlySpan context, System.ReadOnlySpan signature);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool VerifyMu(byte[] externalMu, byte[] signature) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool VerifyMu(System.ReadOnlySpan externalMu, System.ReadOnlySpan signature) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected abstract bool VerifyMuCore(System.ReadOnlySpan externalMu, System.ReadOnlySpan signature);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool VerifyPreHash(byte[] hash, byte[] signature, string hashAlgorithmOid, byte[]? context = null) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public bool VerifyPreHash(System.ReadOnlySpan hash, System.ReadOnlySpan signature, string hashAlgorithmOid, System.ReadOnlySpan context = default(System.ReadOnlySpan)) { throw null; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected abstract bool VerifyPreHashCore(System.ReadOnlySpan hash, System.ReadOnlySpan context, string hashAlgorithmOid, System.ReadOnlySpan signature);
}
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed partial class MLDsaAlgorithm : System.IEquatable
{
internal MLDsaAlgorithm() { }
@@ -2020,7 +2055,6 @@ internal MLDsaAlgorithm() { }
public static bool operator !=(System.Security.Cryptography.MLDsaAlgorithm? left, System.Security.Cryptography.MLDsaAlgorithm? right) { throw null; }
public override string ToString() { throw null; }
}
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed partial class MLDsaCng : System.Security.Cryptography.MLDsa
{
[System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
@@ -2038,7 +2072,6 @@ protected override void SignPreHashCore(System.ReadOnlySpan hash, System.R
protected override bool VerifyMuCore(System.ReadOnlySpan externalMu, System.ReadOnlySpan signature) { throw null; }
protected override bool VerifyPreHashCore(System.ReadOnlySpan hash, System.ReadOnlySpan context, string hashAlgorithmOid, System.ReadOnlySpan signature) { throw null; }
}
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SYSLIB5006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed partial class MLDsaOpenSsl : System.Security.Cryptography.MLDsa
{
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("android")]
diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithm.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithm.cs
index b3d6c19dd0d703..a837b0d5960afc 100644
--- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithm.cs
+++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithm.cs
@@ -205,7 +205,6 @@ public static CngAlgorithm Sha512
/// A new object that specifies the Module-Lattice-Based Digital Signature
/// Algorithm (ML-DSA).
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static CngAlgorithm MLDsa => field ??= new CngAlgorithm("ML-DSA"); // BCRYPT_MLDSA_ALGORITHM
///
diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithmGroup.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithmGroup.cs
index 819184aa0e25f8..1709ba5e7d257b 100644
--- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithmGroup.cs
+++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngAlgorithmGroup.cs
@@ -133,7 +133,6 @@ public static CngAlgorithmGroup Rsa
///
/// An object that specifies the ML-DSA family of algorithms.
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static CngAlgorithmGroup MLDsa =>
field ??= new CngAlgorithmGroup("MLDSA"); // NCRYPT_MLDSA_ALGORITHM_GROUP
diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyBlobFormat.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyBlobFormat.cs
index 7210031f566e0b..f67969af7572c8 100644
--- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyBlobFormat.cs
+++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyBlobFormat.cs
@@ -145,7 +145,6 @@ public static CngKeyBlobFormat GenericPublicBlob
///
/// The value identified by this blob format is "PQDSAPUBLICBLOB".
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static CngKeyBlobFormat PQDsaPublicBlob =>
field ??= new CngKeyBlobFormat("PQDSAPUBLICBLOB"); // BCRYPT_PQDSA_PUBLIC_BLOB
@@ -160,7 +159,6 @@ public static CngKeyBlobFormat GenericPublicBlob
///
/// The value identified by this blob format is "PQDSAPRIVATEBLOB".
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static CngKeyBlobFormat PQDsaPrivateBlob =>
field ??= new CngKeyBlobFormat("PQDSAPRIVATEBLOB"); // BCRYPT_PQDSA_PRIVATE_BLOB
@@ -175,7 +173,6 @@ public static CngKeyBlobFormat GenericPublicBlob
///
/// The value identified by this blob format is "PQDSAPRIVATESEEDBLOB".
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public static CngKeyBlobFormat PQDsaPrivateSeedBlob =>
field ??= new CngKeyBlobFormat("PQDSAPRIVATESEEDBLOB"); // BCRYPT_PQDSA_PRIVATE_SEED_BLOB
diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MLDsaOpenSsl.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MLDsaOpenSsl.cs
index 03c24a90fa4b1d..81b04b364bc6fb 100644
--- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MLDsaOpenSsl.cs
+++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MLDsaOpenSsl.cs
@@ -20,7 +20,6 @@ namespace System.Security.Cryptography
/// cryptographic libraries.
///
///
- [Experimental(Experimentals.PostQuantumCryptographyDiagId, UrlFormat = Experimentals.SharedUrlFormat)]
public sealed partial class MLDsaOpenSsl : MLDsa
{
private SafeEvpPKeyHandle _key;