Files

8001 lines
428 KiB
XML

<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Bcl.Cryptography</name>
</assembly>
<members>
<member name="T:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors">
<summary>
Helper methods to access keys on <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/>.
</summary>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetMLKemPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.MLKem"/> public key from this certificate.
</summary>
<param name="certificate">
The X.509 certificate that contains the public key.
</param>
<returns>
The public key, or <see langword="null"/> if this certificate does not have an ML-KEM public key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The certificate has an ML-KEM public key, but the platform does not support ML-KEM.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
The public key was invalid, or otherwise could not be imported.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetMLKemPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.MLKem"/> private key from this certificate.
</summary>
<param name="certificate">
The X.509 certificate that contains the private key.
</param>
<returns>
The private key, or <see langword="null"/> if this certificate does not have an ML-KEM private key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Retrieving an ML-KEM private key from a certificate is not supported on this platform.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred accessing the private key.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.CopyWithPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.MLKem)">
<summary>
Combines a private key with a certificate containing the associated public key into a
new instance that can access the private key.
</summary>
<param name="certificate">
The X.509 certificate that contains the public key.
</param>
<param name="privateKey">
The ML-KEM private key that corresponds to the ML-KEM public key in this certificate.
</param>
<returns>
A new certificate with the <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> property set to <see langword="true"/>.
The current certificate isn't modified.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> or <paramref name="privateKey"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentException">
The specified private key doesn't match the public key for this certificate.
</exception>
<exception cref="T:System.InvalidOperationException">
The certificate already has an associated private key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Combining a certificate and an ML-KEM private key is not supported on this platform.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetMLDsaPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.MLDsa"/> public key from this certificate.
</summary>
<param name="certificate">
The X.509 certificate that contains the public key.
</param>
<returns>
The public key, or <see langword="null"/> if this certificate does not have an ML-DSA public key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The certificate has an ML-DSA public key, but the platform does not support ML-DSA.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
The public key was invalid, or otherwise could not be imported.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetMLDsaPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.MLDsa"/> private key from this certificate.
</summary>
<param name="certificate">
The X.509 certificate that contains the private key.
</param>
<returns>
The private key, or <see langword="null"/> if this certificate does not have an ML-DSA private key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Retrieving an ML-DSA private key from a certificate is not supported on this platform.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred accessing the private key.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.CopyWithPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.MLDsa)">
<summary>
Combines a private key with a certificate containing the associated public key into a
new instance that can access the private key.
</summary>
<param name="certificate">
The X.509 certificate that contains the public key.
</param>
<param name="privateKey">
The ML-DSA private key that corresponds to the ML-DSA public key in this certificate.
</param>
<returns>
A new certificate with the <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> property set to <see langword="true"/>.
The current certificate isn't modified.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> or <paramref name="privateKey"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentException">
The specified private key doesn't match the public key for this certificate.
</exception>
<exception cref="T:System.InvalidOperationException">
The certificate already has an associated private key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Combining a certificate and an ML-DSA private key is not supported on this platform.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetSlhDsaPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.SlhDsa"/> public key from this certificate.
</summary>
<param name="certificate">
The X509 certificate that contains the public key.
</param>
<returns>
The public key, or <see langword="null"/> if this certificate does not have an SLH-DSA public key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The certificate has an SLH-DSA public key, but the platform does not support SLH-DSA.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
The public key was invalid, or otherwise could not be imported.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetSlhDsaPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.SlhDsa"/> private key from this certificate.
</summary>
<param name="certificate">
The X509 certificate that contains the private key.
</param>
<returns>
The private key, or <see langword="null"/> if this certificate does not have an SLH-DSA private key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Retrieving an SLH-DSA private key from a certificate is not supported on this platform.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred accessing the private key.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.CopyWithPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.SlhDsa)">
<summary>
Combines a private key with a certificate containing the associated public key into a
new instance that can access the private key.
</summary>
<param name="certificate">
The X509 certificate that contains the public key.
</param>
<param name="privateKey">
The SLH-DSA private key that corresponds to the SLH-DSA public key in this certificate.
</param>
<returns>
A new certificate with the <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> property set to <see langword="true"/>.
The current certificate isn't modified.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> or <paramref name="privateKey"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentException">
The specified private key doesn't match the public key for this certificate.
</exception>
<exception cref="T:System.InvalidOperationException">
The certificate already has an associated private key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Combining a certificate and an SLH-DSA private key is not supported on this platform.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetCompositeMLDsaPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.CompositeMLDsa"/> public key from this certificate.
</summary>
<param name="certificate">
The X.509 certificate that contains the public key.
</param>
<returns>
The public key, or <see langword="null"/> if this certificate does not have a Composite ML-DSA public key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The certificate has a Composite ML-DSA public key, but the platform does not support Composite ML-DSA.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
The public key was invalid, or otherwise could not be imported.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.GetCompositeMLDsaPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)">
<summary>
Gets the <see cref="T:System.Security.Cryptography.CompositeMLDsa"/> private key from this certificate.
</summary>
<param name="certificate">
The X.509 certificate that contains the private key.
</param>
<returns>
The private key, or <see langword="null"/> if this certificate does not have a Composite ML-DSA private key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Retrieving a Composite ML-DSA private key from a certificate is not supported on this platform.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred accessing the private key.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateKeyAccessors.CopyWithPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.CompositeMLDsa)">
<summary>
Combines a private key with a certificate containing the associated public key into a
new instance that can access the private key.
</summary>
<param name="certificate">
The X.509 certificate that contains the public key.
</param>
<param name="privateKey">
The Composite ML-DSA private key that corresponds to the Composite ML-DSA public key in this certificate.
</param>
<returns>
A new certificate with the <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> property set to <see langword="true"/>.
The current certificate isn't modified.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="certificate"/> or <paramref name="privateKey"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentException">
The specified private key doesn't match the public key for this certificate.
</exception>
<exception cref="T:System.InvalidOperationException">
The certificate already has an associated private key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
Combining a certificate and a Composite ML-DSA private key is not supported on this platform.
</exception>
</member>
<member name="T:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits">
<summary>
Represents a set of constraints to apply when loading PKCS#12/PFX contents.
</summary>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults">
<summary>
Gets a shared reference to the default loader limits.
</summary>
<remarks>
The singleton instance returned from this property is equivalent to an
instance produced via the default constructor, except the properties
prohibit reassignment. As with the default constructor, the individual
property values may change over time.
</remarks>
<value>A shared reference to the default loader limits.</value>
<seealso cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.IsReadOnly" />
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.DangerousNoLimits">
<summary>
Gets a shared reference to loader limits that indicate no
filtering or restrictions of the contents should be applied
before sending them to the underlying system loader.
</summary>
<value>
A shared reference to loader limits that indicate no
filtering or restrictions of the contents should be applied
before sending them to the underlying system loader.
</value>
<remarks>
<para>
The system loader may have its own limits where only part
of the contents are respected, or where the load is rejected.
Using this set of limits only affects the .NET layer of filtering.
</para>
<para>
The <see cref="T:System.Security.Cryptography.X509Certificates.X509CertificateLoader" /> class checks for reference
equality to this property to determine if filtering should be bypassed.
Making a new Pkcs12LoaderLimits value that has all of the same property
values may give different results for certain inputs.
</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits"/> class
with default values.
</summary>
<remarks>
The default values for each property on a default instance of this class
are chosen as a compromise between maximizing compatibility and minimizing
"nuisance" work. The defaults for any given property may vary over time.
</remarks>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.#ctor(System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits"/> class
by copying the values from another instance.
</summary>
<param name="copyFrom">The instance to copy the values from.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="copyFrom"/> is <see langword="null" />.
</exception>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.IsReadOnly">
<summary>
Gets a value indicating whether the instance is read-only.
</summary>
<value>
<see langword="true" /> if the instance is read-only; otherwise, <see langword="false" />.
</value>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.MakeReadOnly">
<summary>
Makes the <see cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits"/> instance read-only.
</summary>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.MacIterationLimit">
<summary>
Gets or sets the iteration limit for the MAC calculation.
</summary>
<value>The iteration limit for the MAC calculation, or <see langword="null" /> for no limit.</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.IndividualKdfIterationLimit">
<summary>
Gets or sets the iteration limit for the individual Key Derivation Function (KDF) calculations.
</summary>
<value>
The iteration limit for the individual Key Derivation Function (KDF) calculations,
or <see langword="null" /> for no limit.
</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.TotalKdfIterationLimit">
<summary>
Gets or sets the total iteration limit for the Key Derivation Function (KDF) calculations.
</summary>
<value>
The total iteration limit for the Key Derivation Function (KDF) calculations,
or <see langword="null" /> for no limit.
</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.MaxKeys">
<summary>
Gets or sets the maximum number of keys permitted.
</summary>
<value>
The maximum number of keys permitted, or <see langword="null" /> for no maximum.
</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.MaxCertificates">
<summary>
Gets or sets the maximum number of certificates permitted.
</summary>
<value>
The maximum number of certificates permitted, or <see langword="null" /> for no maximum.
</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.PreserveStorageProvider">
<summary>
Gets or sets a value indicating whether to preserve the storage provider.
</summary>
<value>
<see langword="true" /> to respect the storage provider identifier for a
private key; <see langword="false" /> to ignore the storage provider
information and use the system defaults.
The default is <see langword="false" />.
</value>
<remarks>
Storage Provider values from the PFX are only processed on the
Microsoft Windows family of operating systems.
This property has no effect on non-Windows systems.
</remarks>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.PreserveKeyName">
<summary>
Gets or sets a value indicating whether to preserve the key name.
</summary>
<value>
<see langword="true" /> to respect the key name identifier for a
private key; <see langword="false" /> to ignore the key name
information and use a randomly generated identifier.
The default is <see langword="false" />.
</value>
<remarks>
Key name identifier values from the PFX are only processed on the
Microsoft Windows family of operating systems.
This property has no effect on non-Windows systems.
</remarks>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.PreserveCertificateAlias">
<summary>
Gets or sets a value indicating whether to preserve the certificate alias,
also known as the friendly name.
</summary>
<value>
<see langword="true" /> to respect the alias for a
certificate; <see langword="false" /> to ignore the alias
information.
The default is <see langword="false" />.
</value>
<remarks>
Certificate alias values from the PFX are only processed on the
Microsoft Windows family of operating systems.
This property has no effect on non-Windows systems.
</remarks>
<seealso cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.FriendlyName"/>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.PreserveUnknownAttributes">
<summary>
Gets or sets a value indicating whether to preserve unknown attributes.
</summary>
<value>
<see langword="true" /> to keep any attributes of a certificate or
private key that are not described by another property on this type intact
when invoking the system PKCS#12/PFX loader;
<see langword="false" /> to remove the unknown attributes prior to invoking
the system loader.
The default is <see langword="false" />.
</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.IgnorePrivateKeys">
<summary>
Gets or sets a value indicating whether to ignore private keys.
</summary>
<value>
<see langword="true" /> to skip loading private keys;
<see langword="false" /> to load both certificates and private keys.
The default is <see langword="false" />.
</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.IgnoreEncryptedAuthSafes">
<summary>
Gets or sets a value indicating whether to ignore encrypted authentication safes.
</summary>
<value>
<see langword="true" /> to skip over encrypted PFX AuthSafe values;
<see langword="false" /> to decrypt encrypted PFX AuthSafe values to process their
contents.
The default is <see langword="false" />.
</value>
</member>
<member name="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.AllowDuplicateAttributes">
<summary>
Gets or sets a value indicating whether duplicate attributes are permitted.
</summary>
<value>
<see langword="true" /> to permit duplicate attributes;
<see langword="false" /> to fail loading when duplicate attributes are found.
The default is <see langword="false" />.
</value>
</member>
<member name="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
<summary>
The exception that is thrown when importing a PKCS#12/PFX has failed
due to violating a specified limit.
</summary>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException"/>
class.
</summary>
<param name="propertyName">
The name of the property representing the limit that was exceeded.
</param>
</member>
<member name="T:System.Security.Cryptography.X509Certificates.X509CertificateLoader">
<summary>
Provides methods for loading an X.509 certificate or a PKCS#12 PFX containing certificates.
</summary>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadCertificate(System.ReadOnlySpan{System.Byte})">
<summary>
Loads a single X.509 certificate from <paramref name="data"/>, in either the PEM
or DER encoding.
</summary>
<param name="data">The data to load.</param>
<returns>
The certificate loaded from <paramref name="data"/>.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
The data did not load as a valid X.509 certificate.
</exception>
<remarks>
This method only loads plain certificates, which are identified as
<see cref="F:System.Security.Cryptography.X509Certificates.X509ContentType.Cert" /> by <see cref="M:System.Security.Cryptography.X509Certificates.X509Certificate2.GetCertContentType(System.Byte[])"/>.
</remarks>
<seealso cref="M:System.Security.Cryptography.X509Certificates.X509Certificate2.GetCertContentType(System.String)"/>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadCertificate(System.Byte[])">
<summary>
Loads a single X.509 certificate from <paramref name="data"/>, in either the PEM
or DER encoding.
</summary>
<param name="data">The data to load.</param>
<returns>
The certificate loaded from <paramref name="data"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
The data did not load as a valid X.509 certificate.
</exception>
<remarks>
This method only loads plain certificates, which are identified as
<see cref="F:System.Security.Cryptography.X509Certificates.X509ContentType.Cert" /> by <see cref="M:System.Security.Cryptography.X509Certificates.X509Certificate2.GetCertContentType(System.Byte[])"/>.
</remarks>
<seealso cref="M:System.Security.Cryptography.X509Certificates.X509Certificate2.GetCertContentType(System.String)"/>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadCertificateFromFile(System.String)">
<summary>
Loads a single X.509 certificate (in either the PEM or DER encoding)
from the specified file.
</summary>
<param name="path">The path of the file to open.</param>
<returns>
The loaded certificate.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="path"/> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
The data did not load as a valid X.509 certificate.
</exception>
<exception cref="T:System.IO.IOException">
An error occurred while loading the specified file.
</exception>
<remarks>
This method only loads plain certificates, which are identified as
<see cref="F:System.Security.Cryptography.X509Certificates.X509ContentType.Cert" /> by <see cref="M:System.Security.Cryptography.X509Certificates.X509Certificate2.GetCertContentType(System.String)"/>.
</remarks>
<seealso cref="M:System.Security.Cryptography.X509Certificates.X509Certificate2.GetCertContentType(System.String)"/>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12(System.Byte[],System.String,System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Loads the provided data as a PKCS#12 PFX and extracts a certificate.
</summary>
<param name="data">The data to load.</param>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>The loaded certificate.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
<remarks>
A PKCS#12/PFX can contain multiple certificates.
Using the ordering that the certificates appear in the results of
<see cref="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12Collection(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Char},System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)" />,
this method returns the first
certificate where <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> is
<see langword="true" />.
If no certificates have associated private keys, then the first
certificate is returned.
If the PKCS#12/PFX contains no certificates, a
<see cref="T:System.Security.Cryptography.CryptographicException" /> is thrown.
</remarks>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Char},System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Loads the provided data as a PKCS#12 PFX and extracts a certificate.
</summary>
<param name="data">The data to load.</param>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>The loaded certificate.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
<remarks>
A PKCS#12/PFX can contain multiple certificates.
Using the ordering that the certificates appear in the results of
<see cref="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12Collection(System.Byte[],System.String,System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)" />,
this method returns the first
certificate where <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> is
<see langword="true" />.
If no certificates have associated private keys, then the first
certificate is returned.
If the PKCS#12/PFX contains no certificates, a
<see cref="T:System.Security.Cryptography.CryptographicException" /> is thrown.
</remarks>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12FromFile(System.String,System.String,System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Opens the specified file, reads the contents as a PKCS#12 PFX and extracts a certificate.
</summary>
<param name="path">The path of the file to open.</param>
<returns>
The loaded certificate.
</returns>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>The loaded certificate.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="path"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
<exception cref="T:System.IO.IOException">
An error occurred while loading the specified file.
</exception>
<remarks>
A PKCS#12/PFX can contain multiple certificates.
Using the ordering that the certificates appear in the results of
<see cref="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12CollectionFromFile(System.String,System.String,System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)" />,
this method returns the first
certificate where <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> is
<see langword="true" />.
If no certificates have associated private keys, then the first
certificate is returned.
If the PKCS#12/PFX contains no certificates, a
<see cref="T:System.Security.Cryptography.CryptographicException" /> is thrown.
</remarks>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12FromFile(System.String,System.ReadOnlySpan{System.Char},System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Opens the specified file, reads the contents as a PKCS#12 PFX and extracts a certificate.
</summary>
<param name="path">The path of the file to open.</param>
<returns>
The loaded certificate.
</returns>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>The loaded certificate.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="path"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
<exception cref="T:System.IO.IOException">
An error occurred while loading the specified file.
</exception>
<remarks>
A PKCS#12/PFX can contain multiple certificates.
Using the ordering that the certificates appear in the results of
<see cref="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12CollectionFromFile(System.String,System.ReadOnlySpan{System.Char},System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)" />,
this method returns the first
certificate where <see cref="P:System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey" /> is
<see langword="true" />.
If no certificates have associated private keys, then the first
certificate is returned.
If the PKCS#12/PFX contains no certificates, a
<see cref="T:System.Security.Cryptography.CryptographicException" /> is thrown.
</remarks>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12Collection(System.Byte[],System.String,System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Loads the provided data as a PKCS#12 PFX and returns a collection of
all of the certificates therein.
</summary>
<param name="data">The data to load.</param>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>A collection of the certificates loaded from the input.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12Collection(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Char},System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Loads the provided data as a PKCS#12 PFX and returns a collection of
all of the certificates therein.
</summary>
<param name="data">The data to load.</param>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>A collection of the certificates loaded from the input.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12CollectionFromFile(System.String,System.String,System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Opens the specified file, reads the contents as a PKCS#12 PFX and extracts a certificate.
Loads the provided data as a PKCS#12 PFX and returns a collection of
all of the certificates therein.
</summary>
<param name="path">The path of the file to open.</param>
<returns>
The loaded certificate.
</returns>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>The loaded certificate.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="path"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
<exception cref="T:System.IO.IOException">
An error occurred while loading the specified file.
</exception>
</member>
<member name="M:System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12CollectionFromFile(System.String,System.ReadOnlySpan{System.Char},System.Security.Cryptography.X509Certificates.X509KeyStorageFlags,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits)">
<summary>
Opens the specified file, reads the contents as a PKCS#12 PFX and extracts a certificate.
Loads the provided data as a PKCS#12 PFX and returns a collection of
all of the certificates therein.
</summary>
<param name="path">The path of the file to open.</param>
<returns>
The loaded certificate.
</returns>
<param name="password">The password to decrypt the contents of the PFX.</param>
<param name="keyStorageFlags">
A bitwise combination of the enumeration values that control where and how to
import the private key associated with the returned certificate.
</param>
<param name="loaderLimits">
Limits to apply when loading the PFX. A <see langword="null" /> value, the default,
is equivalent to <see cref="P:System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits.Defaults"/>.
</param>
<returns>The loaded certificate.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="path"/> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="keyStorageFlags"/> contains a value, or combination of values,
that is not valid.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
<paramref name="keyStorageFlags"/> contains a value that is not valid for the
current platform.
</exception>
<exception cref="T:System.Security.Cryptography.X509Certificates.Pkcs12LoadLimitExceededException">
The PKCS#12/PFX violated one or more constraints of <paramref name="loaderLimits"/>.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while loading the PKCS#12/PFX.
</exception>
<exception cref="T:System.IO.IOException">
An error occurred while loading the specified file.
</exception>
</member>
<member name="T:System.Security.Cryptography.SP800108HmacCounterKdf">
<summary>
NIST SP 800-108 HMAC CTR Key-Based Key Derivation (KBKDF)
</summary>
<remarks>
<para>
This implements NIST SP 800-108 HMAC in counter mode. The implemented KDF assumes the form of
<c>PRF (KI, [i]2 || Label || 0x00 || Context || [L]2)</c> where <c>[i]2</c> and <c>[L]2</c> are encoded as
unsigned 32-bit integers, big endian.
</para>
<para>
All members of this class are thread safe. If the instance is disposed of while other threads are using
the instance, those threads will either receive an <see cref="T:System.ObjectDisposedException" /> or produce a valid
derived key.
</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.#ctor(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.HashAlgorithmName)">
<summary>
Initializes a new instance of <see cref="T:System.Security.Cryptography.SP800108HmacCounterKdf" /> using a specified key and HMAC algorithm.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.#ctor(System.Byte[],System.Security.Cryptography.HashAlgorithmName)">
<summary>
Initializes a new instance of <see cref="T:System.Security.Cryptography.SP800108HmacCounterKdf" /> using a specified key and HMAC algorithm.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<exception cref="T:System.ArgumentNullException">
<para>
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="key" /> is <see langword="null" />.
</para>
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveBytes(System.Byte[],System.Security.Cryptography.HashAlgorithmName,System.Byte[],System.Byte[],System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentNullException">
<para>
<paramref name="key" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="label" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="context" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</para>
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveBytes(System.Byte[],System.Security.Cryptography.HashAlgorithmName,System.String,System.String,System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentNullException">
<para>
<paramref name="key" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="label" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="context" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</para>
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.Text.EncoderFallbackException">
<paramref name="label" /> or <paramref name="context" /> contains text that cannot be converted to UTF-8.
</exception>
<remarks>
<paramref name="label" /> and <paramref name="context" /> will be converted to bytes using the UTF-8 encoding.
for other encodings, perform the conversion using the desired encoding and use an overload which accepts the
label and context as a sequence of bytes.
</remarks>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveBytes(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveBytes(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
Fills a buffer with a derived key.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="destination">The buffer which will receive the derived key.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="destination" /> is larger than the maximum number of bytes that can be derived.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveBytes(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char},System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.Text.EncoderFallbackException">
<paramref name="label" /> or <paramref name="context" /> contains text that cannot be converted to UTF-8.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
<remarks>
<paramref name="label" /> and <paramref name="context" /> will be converted to bytes using the UTF-8 encoding.
for other encodings, perform the conversion using the desired encoding and use an overload which accepts the
label and context as a sequence of bytes.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveBytes(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char},System.Span{System.Byte})">
<summary>
Fills a buffer with a derived key.
</summary>
<param name="key">The key-derivation key.</param>
<param name="hashAlgorithm">The HMAC algorithm.</param>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="destination">The buffer which will receive the derived key.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="hashAlgorithm" /> has a <see cref="P:System.Security.Cryptography.HashAlgorithmName.Name" /> that's empty.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="destination" /> is larger than the maximum number of bytes that can be derived.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<paramref name="hashAlgorithm"/> is not a known or supported hash algorithm.
</exception>
<exception cref="T:System.Text.EncoderFallbackException">
<paramref name="label" /> or <paramref name="context" /> contains text that cannot be converted to UTF-8.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not have a supported implementation of HMAC.
</exception>
<remarks>
<paramref name="label" /> and <paramref name="context" /> will be converted to bytes using the UTF-8 encoding.
for other encodings, perform the conversion using the desired encoding and use an overload which accepts the
label and context as a sequence of bytes.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveKey(System.Byte[],System.Byte[],System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentNullException">
<para>
<paramref name="label" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="context" /> is <see langword="null" />.
</para>
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
Fills a buffer with a derived key.
</summary>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="destination">The buffer which will receive the derived key.</param>
<exception cref="T:System.ArgumentNullException">
<para>
<paramref name="label" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="context" /> is <see langword="null" />.
</para>
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="destination" /> is larger than the maximum number of bytes that can be derived.
</exception>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char},System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
<exception cref="T:System.Text.EncoderFallbackException">
<paramref name="label" /> or <paramref name="context" /> contains text that cannot be converted to UTF-8.
</exception>
<remarks>
<paramref name="label" /> and <paramref name="context" /> will be converted to bytes using the UTF-8 encoding.
for other encodings, perform the conversion using the desired encoding and use an overload which accepts the
label and context as a sequence of bytes.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char},System.Span{System.Byte})">
<summary>
Fills a buffer with a derived key.
</summary>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="destination">The buffer which will receive the derived key.</param>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="destination" /> is larger than the maximum number of bytes that can be derived.
</exception>
<exception cref="T:System.Text.EncoderFallbackException">
<paramref name="label" /> or <paramref name="context" /> contains text that cannot be converted to UTF-8.
</exception>
<remarks>
<paramref name="label" /> and <paramref name="context" /> will be converted to bytes using the UTF-8 encoding.
for other encodings, perform the conversion using the desired encoding and use an overload which accepts the
label and context as a sequence of bytes.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.DeriveKey(System.String,System.String,System.Int32)">
<summary>
Derives a key of a specified length.
</summary>
<param name="label">The label that identifies the purpose for the derived key.</param>
<param name="context">The context containing information related to the derived key.</param>
<param name="derivedKeyLengthInBytes">The length of the derived key, in bytes.</param>
<returns>An array containing the derived key.</returns>
<exception cref="T:System.ArgumentNullException">
<para>
<paramref name="label" /> is <see langword="null" />.
</para>
<para> -or- </para>
<para>
<paramref name="context" /> is <see langword="null" />.
</para>
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="derivedKeyLengthInBytes" /> is negative or larger than the maximum number of bytes
that can be derived.
</exception>
<exception cref="T:System.Text.EncoderFallbackException">
<paramref name="label" /> or <paramref name="context" /> contains text that cannot be converted to UTF-8.
</exception>
<remarks>
<paramref name="label" /> and <paramref name="context" /> will be converted to bytes using the UTF-8 encoding.
for other encodings, perform the conversion using the desired encoding and use an overload which accepts the
label and context as a sequence of bytes.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SP800108HmacCounterKdf.Dispose">
<summary>
Releases all resources used by the current instance of <see cref="T:System.Security.Cryptography.SP800108HmacCounterKdf"/>.
</summary>
</member>
<member name="T:System.Security.Cryptography.PbeEncryptionAlgorithm">
<summary>
Specifies encryption algorithms to be used with Password-Based Encryption (PBE).
</summary>
</member>
<member name="F:System.Security.Cryptography.PbeEncryptionAlgorithm.Unknown">
<summary>
Indicates that no encryption algorithm has been selected.
</summary>
</member>
<member name="F:System.Security.Cryptography.PbeEncryptionAlgorithm.Aes128Cbc">
<summary>
Indicates the encryption should be performed with the AES-128 algorithm in CBC mode with PKCS#7 padding.
</summary>
</member>
<member name="F:System.Security.Cryptography.PbeEncryptionAlgorithm.Aes192Cbc">
<summary>
Indicates the encryption should be performed with the AES-192 algorithm in CBC mode with PKCS#7 padding.
</summary>
</member>
<member name="F:System.Security.Cryptography.PbeEncryptionAlgorithm.Aes256Cbc">
<summary>
Indicates the encryption should be performed with the AES-256 algorithm in CBC mode with PKCS#7 padding.
</summary>
</member>
<member name="F:System.Security.Cryptography.PbeEncryptionAlgorithm.TripleDes3KeyPkcs12">
<summary>
Indicates the encryption should be performed with the TripleDES algorithm in CBC mode with a 192-bit key
derived using the Key Derivation Function (KDF) from PKCS#12.
</summary>
</member>
<member name="T:System.Security.Cryptography.PbeParameters">
<summary>
Represents parameters to be used for Password-Based Encryption (PBE).
</summary>
</member>
<member name="P:System.Security.Cryptography.PbeParameters.EncryptionAlgorithm">
<summary>
Gets the algorithm to use when encrypting data.
</summary>
<value>
The algorithm to use when encrypting data.
</value>
</member>
<member name="P:System.Security.Cryptography.PbeParameters.HashAlgorithm">
<summary>
Gets the name of the hash algorithm to use with the Key Derivation Function (KDF) to turn a password
into an encryption key.
</summary>
<value>
The name of the hash algorithm to use with the Key Derivation Function (KDF) to turn a password
into an encryption key.
</value>
</member>
<member name="P:System.Security.Cryptography.PbeParameters.IterationCount">
<summary>
Gets the iteration count to provide to the Key Derivation Function (KDF) to turn a password
into an encryption key.
</summary>
<value>
The iteration count to provide to the Key Derivation Function (KDF) to turn a password
into an encryption key.
</value>
</member>
<member name="M:System.Security.Cryptography.PbeParameters.#ctor(System.Security.Cryptography.PbeEncryptionAlgorithm,System.Security.Cryptography.HashAlgorithmName,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.PbeParameters" /> class.
</summary>
<param name="encryptionAlgorithm">The algorithm to use when encrypting data.</param>
<param name="hashAlgorithm">
The name of a hash algorithm to use with the Key Derivation Function (KDF) to turn a password
into an encryption key.
</param>
<param name="iterationCount">
The iteration count to provide to the Key Derivation Function (KDF) to turn a password
into an encryption key.
</param>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="iterationCount" /> is less than 1.
</exception>
</member>
<member name="M:System.Security.Cryptography.AsymmetricAlgorithmHelpers.ConvertIeee1363ToDer(System.ReadOnlySpan{System.Byte})">
<summary>
Convert Ieee1363 format of (r, s) to Der format
</summary>
</member>
<member name="M:System.Security.Cryptography.AsymmetricAlgorithmHelpers.ConvertDerToIeee1363(System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>
Convert Der format of (r, s) to Ieee1363 format
</summary>
</member>
<member name="T:System.Security.Cryptography.CompositeMLDsa">
<summary>
Represents a Composite ML-DSA key.
</summary>
<remarks>
Developers are encouraged to program against the <see cref="T:System.Security.Cryptography.CompositeMLDsa"/> base class,
rather than any specific derived class. The derived classes are intended for interop with the underlying system
cryptographic libraries.
</remarks>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsa.IsSupported">
<summary>
Gets a value indicating whether the current platform supports Composite ML-DSA.
</summary>
<value>
<see langword="true" /> if the current platform supports Composite ML-DSA; otherwise, <see langword="false" />.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsa.Algorithm">
<summary>
Gets the specific Composite ML-DSA algorithm for this key.
</summary>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.#ctor(System.Security.Cryptography.CompositeMLDsaAlgorithm)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.CompositeMLDsa" /> class.
</summary>
<param name="algorithm">
The specific Composite ML-DSA algorithm for this key.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> parameter is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.IsAlgorithmSupported(System.Security.Cryptography.CompositeMLDsaAlgorithm)">
<summary>
Determines whether the specified algorithm is supported by the current platform.
</summary>
<param name="algorithm">
The <see cref="T:System.Security.Cryptography.CompositeMLDsaAlgorithm"/> to check for support.
</param>
<returns>
<see langword="true"/> if the algorithm is supported; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.SignData(System.Byte[],System.Byte[])">
<summary>
Signs the specified data.
</summary>
<param name="data">
The data to sign.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is <see langword="null" />.
</param>
<returns>
The Composite ML-DSA signature of the specified data.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the data.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.SignData(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Signs the specified data, writing the signature into the provided buffer.
</summary>
<param name="data">
The data to sign.
</param>
<param name="destination">
The buffer to receive the signature. Its length must be at least <see cref="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MaxSignatureSizeInBytes"/>.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is an empty buffer.
</param>
<returns>
The number of bytes written to the <paramref name="destination"/> buffer.
</returns>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is less than <see cref="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MaxSignatureSizeInBytes"/> in length.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the data.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.SignDataCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
When overridden in a derived class, computes the signature of the specified data and context,
writing it into the provided buffer.
</summary>
<param name="data">
The data to sign.
</param>
<param name="context">
The signature context.
</param>
<param name="destination">
The buffer to receive the signature, whose length will be exactly <see cref="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MaxSignatureSizeInBytes" />.
</param>
<returns>
The number of bytes written to the <paramref name="destination"/> buffer.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while signing the data.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.VerifyData(System.Byte[],System.Byte[],System.Byte[])">
<summary>
Verifies that the specified signature is valid for this key and the provided data.
</summary>
<param name="data">
The data to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="context">
The context value which was provided during signing.
The default value is <see langword="null" />.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> or <paramref name="signature"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while verifying the data.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.VerifyData(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Verifies that the specified signature is valid for this key and the provided data.
</summary>
<param name="data">
The data to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="context">
The context value which was provided during signing.
The default value is an empty buffer.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while verifying the data.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.VerifyDataCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
When overridden in a derived class, verifies the signature of the specified data and context.
</summary>
<param name="data">
The data to verify.
</param>
<param name="context">
The signature context.
</param>
<param name="signature">
The signature to verify.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while verifying the data.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.GenerateKey(System.Security.Cryptography.CompositeMLDsaAlgorithm)">
<summary>
Generates a new Composite ML-DSA key.
</summary>
<param name="algorithm">
An algorithm identifying what kind of Composite ML-DSA key to generate.
</param>
<returns>
The generated key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred generating the Composite ML-DSA key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support the specified Composite ML-DSA algorithm. Callers can use <see cref="M:System.Security.Cryptography.CompositeMLDsa.IsAlgorithmSupported(System.Security.Cryptography.CompositeMLDsaAlgorithm)" />
to determine if the algorithm is supported.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportFromEncryptedPem(System.String,System.String)">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="password" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})">
<summary>
Imports a Composite ML-DSA key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.</param>
<param name="password">
The password to use for decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
<para>-or-</para>
<para>
The specified Composite ML-DSA algorithm is not supported.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support Composite ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.CompositeMLDsa.IsSupported" /> property
to determine if the platform supports Composite ML-DSA.
</exception>
<remarks>
<para>
When the base-64 decoded contents of <paramref name="source" /> indicate an algorithm that uses PBKDF1
(Password-Based Key Derivation Function 1) or PBKDF2 (Password-Based Key Derivation Function 2),
the password is converted to bytes via the UTF-8 encoding.
</para>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportFromEncryptedPem(System.String,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="passwordBytes" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports a Composite ML-DSA key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.
</param>
<param name="passwordBytes">
The bytes to use as a password when decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
<para>-or-</para>
<para>
The specified Composite ML-DSA algorithm is not supported.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support Composite ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.CompositeMLDsa.IsSupported" /> property
to determine if the platform supports Composite ML-DSA.
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportFromPem(System.String)">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportFromPem(System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportFromPem(System.ReadOnlySpan{System.Char})">
<summary>
Imports a Composite ML-DSA key from an RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The text of the PEM key to import.
</param>
<returns>
The imported Composite ML-DSA key.
</returns>
<exception cref="T:System.ArgumentException">
<para><paramref name="source" /> contains an encrypted PEM-encoded key.</para>
<para>-or-</para>
<para><paramref name="source" /> contains multiple PEM-encoded Composite ML-DSA keys.</para>
<para>-or-</para>
<para><paramref name="source" /> contains no PEM-encoded Composite ML-DSA keys.</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while importing the key.</para>
<para>-or-</para>
<para>The specified Composite ML-DSA algorithm is not supported.</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support Composite ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.CompositeMLDsa.IsSupported" /> property
to determine if the platform supports Composite ML-DSA.
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is raised to prevent importing a key when the key is ambiguous.
</para>
<para>
This method supports the following PEM labels:
<list type="bullet">
<item><description>PUBLIC KEY</description></item>
<item><description>PRIVATE KEY</description></item>
</list>
</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportSubjectPublicKeyInfo(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})">
<summary>
Imports a Composite ML-DSA public key from an X.509 SubjectPublicKeyInfo structure.
</summary>
<param name="source">
The bytes of an X.509 SubjectPublicKeyInfo structure in the ASN.1-DER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-DER-encoded X.509 SubjectPublicKeyInfo structure.
</para>
<para>-or-</para>
<para>
The SubjectPublicKeyInfo value does not represent a Composite ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
<para>-or-</para>
<para>
The specified Composite ML-DSA algorithm is not supported.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support Composite ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.CompositeMLDsa.IsSupported" /> property
to determine if the platform supports Composite ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportEncryptedPkcs8PrivateKey(System.String,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="password" /> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports a Composite ML-DSA private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="password">
The password to use when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The value does not represent a Composite ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
<para>-or-</para>
<para>
The specified Composite ML-DSA algorithm is not supported.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support Composite ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.CompositeMLDsa.IsSupported" /> property
to determine if the platform supports Composite ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Imports a Composite ML-DSA private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="passwordBytes">
The bytes to use as a password when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The EncryptedPrivateKeyInfo indicates the Key Derivation Function (KDF) to apply is the legacy PKCS#12 KDF,
which requires <see cref="T:System.Char"/>-based passwords.
</para>
<para>-or-</para>
<para>
The value does not represent a Composite ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
<para>-or-</para>
<para>
The specified Composite ML-DSA algorithm is not supported.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support Composite ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.CompositeMLDsa.IsSupported" /> property
to determine if the platform supports Composite ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportPkcs8PrivateKey(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})" />>
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})">
<summary>
Imports a Composite ML-DSA private key from a PKCS#8 PrivateKeyInfo structure.
</summary>
<param name="source">
The bytes of a PKCS#8 PrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 PrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The PrivateKeyInfo value does not represent a Composite ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
<para>-or-</para>
<para>
The specified Composite ML-DSA algorithm is not supported.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support Composite ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.CompositeMLDsa.IsSupported" /> property
to determine if the platform supports Composite ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportCompositeMLDsaPublicKey(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportCompositeMLDsaPublicKey(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportCompositeMLDsaPublicKey(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports a Composite ML-DSA public key.
</summary>
<param name="algorithm">
The specific Composite ML-DSA algorithm for this key.
</param>
<param name="source">
The bytes of the public key.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
<paramref name="source"/> length is the wrong size for the specified algorithm.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support the specified Composite ML-DSA algorithm. Callers can use <see cref="M:System.Security.Cryptography.CompositeMLDsa.IsAlgorithmSupported(System.Security.Cryptography.CompositeMLDsaAlgorithm)" />
to determine if the algorithm is supported.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportCompositeMLDsaPrivateKey(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ImportCompositeMLDsaPrivateKey(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ImportCompositeMLDsaPrivateKey(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports a Composite ML-DSA private key.
</summary>
<param name="algorithm">
The specific Composite ML-DSA algorithm for this key.
</param>
<param name="source">
The bytes of the public key.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
<paramref name="source"/> length is the wrong size for the specified algorithm.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support the specified Composite ML-DSA algorithm. Callers can use <see cref="M:System.Security.Cryptography.CompositeMLDsa.IsAlgorithmSupported(System.Security.Cryptography.CompositeMLDsaAlgorithm)" />
to determine if the algorithm is supported.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.String,System.Security.Cryptography.PbeParameters)">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters)">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<inheritdoc cref="M:System.Security.Cryptography.CompositeMLDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportPkcs8PrivateKeyPem">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the PKCS#8 PrivateKeyInfo
representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportPkcs8PrivateKey">
<summary>
Exports the current key in the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A byte array containing the PKCS#8 PrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportPkcs8PrivateKey(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportPkcs8PrivateKeyCore(System.Span{System.Byte},System.Int32@)">
<summary>
When overridden in a derived class, attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportSubjectPublicKeyInfoPem">
<summary>
Exports the public-key portion of the current key in a PEM-encoded representation of
the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the X.509 SubjectPublicKeyInfo
representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportSubjectPublicKeyInfo">
<summary>
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A byte array containing the X.509 SubjectPublicKeyInfo representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportSubjectPublicKeyInfo(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the X.509 SubjectPublicKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportCompositeMLDsaPublicKey">
<summary>
Exports the public-key portion of the current key.
</summary>
<returns>
The Composite ML-DSA public key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportCompositeMLDsaPublicKey(System.Span{System.Byte})">
<summary>
Exports the public-key portion of the current key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the Composite ML-DSA public key value.
</param>
<returns>
The number of bytes written to the <paramref name="destination"/> buffer.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="destination"/> was too not large enough to hold the result.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportCompositeMLDsaPublicKey(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export public key portion of the current key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the public key value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportCompositeMLDsaPrivateKey">
<summary>
Exports the private-key portion of the current key.
</summary>
<returns>
The Composite ML-DSA private key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a private key.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportCompositeMLDsaPrivateKey(System.Span{System.Byte})">
<summary>
Exports the private-key portion of the current key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the Composite ML-DSA private key value.
</param>
<returns>
The number of bytes written to the <paramref name="destination"/> buffer.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="destination"/> was too not large enough to hold the result.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.TryExportCompositeMLDsaPrivateKey(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export private key portion of the current key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the private key value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportCompositeMLDsaPublicKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the public key portion of the current key.
</summary>
<param name="destination">
The buffer to receive the public key value.
</param>
<returns>
The number of bytes written to the <paramref name="destination"/> buffer.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.ExportCompositeMLDsaPrivateKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the private key portion of the current key.
</summary>
<param name="destination">
The buffer to receive the private key value.
</param>
<returns>
The number of bytes written to the <paramref name="destination"/> buffer.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.Dispose">
<summary>
Releases all resources used by the <see cref="T:System.Security.Cryptography.CompositeMLDsa"/> class.
</summary>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsa.Dispose(System.Boolean)">
<summary>
Called by the <see cref="M:System.Security.Cryptography.CompositeMLDsa.Dispose" /> method to release the managed and unmanaged
resources used by the current instance of the <see cref="T:System.Security.Cryptography.CompositeMLDsa"/> class.
</summary>
<param name="disposing">
<see langword="true" /> to release managed and unmanaged resources;
<see langword="false" /> to release only unmanaged resources.
</param>
</member>
<member name="T:System.Security.Cryptography.CompositeMLDsaAlgorithm">
<summary>
Represents a composite ML-DSA algorithm identifier, combining ML-DSA with a traditional algorithm.
</summary>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.Name">
<summary>
Gets the name of the algorithm.
</summary>
<value>
A string representing the algorithm name.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MaxSignatureSizeInBytes">
<summary>
Gets the maximum signature size in bytes for the composite algorithm.
</summary>
<value>
The maximum signature size in bytes for the composite algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa44WithRSA2048Pss">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-44 and 2048-bit RSASSA-PSS with SHA256 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-44 and 2048-bit RSASSA-PSS with SHA256 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa44WithRSA2048Pkcs15">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-44 and 2048-bit RSASSA-PKCS1-v1_5 with SHA256 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-44 and 2048-bit RSASSA-PKCS1-v1_5 with SHA256 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa44WithEd25519">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-44 and Ed25519 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-44 and Ed25519 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa44WithECDsaP256">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-44 and ECDSA P-256 with SHA256 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-44 and ECDSA P-256 with SHA256 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithRSA3072Pss">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and 3072-bit RSASSA-PSS with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and 3072-bit RSASSA-PSS with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithRSA3072Pkcs15">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and 3072-bit RSASSA-PKCS1-v1_5 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and 3072-bit RSASSA-PKCS1-v1_5 with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithRSA4096Pss">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and 4096-bit RSASSA-PSS with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and 4096-bit RSASSA-PSS with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithRSA4096Pkcs15">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and 4096-bit RSASSA-PKCS1-v1_5 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and 4096-bit RSASSA-PKCS1-v1_5 with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithECDsaP256">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and ECDSA P-256 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and ECDSA P-256 with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithECDsaP384">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and ECDSA P-384 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and ECDSA P-384 with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithECDsaBrainpoolP256r1">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and ECDSA BrainpoolP256r1 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and ECDSA BrainpoolP256r1 with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa65WithEd25519">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-65 and Ed25519 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 and Ed25519 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa87WithECDsaP384">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-87 and ECDSA P-384 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-87 and ECDSA P-384 with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa87WithECDsaBrainpoolP384r1">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-87 and ECDSA BrainpoolP384r1 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-87 and ECDSA BrainpoolP384r1 with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa87WithEd448">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-87 and Ed448 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-87 and Ed448 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa87WithRSA3072Pss">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-87 and 3072-bit RSASSA-PSS with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-87 and 3072-bit RSASSA-PSS with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa87WithRSA4096Pss">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-87 and 4096-bit RSASSA-PSS with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-87 and 4096-bit RSASSA-PSS with SHA512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.CompositeMLDsaAlgorithm.MLDsa87WithECDsaP521">
<summary>
Gets a Composite ML-DSA algorithm identifier for the ML-DSA-87 and ECDSA P-521 with SHA512 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-87 and ECDSA P-521 with SHA512 algorithm.
</value>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsaAlgorithm.Equals(System.Security.Cryptography.CompositeMLDsaAlgorithm)">
<summary>
Compares two <see cref="T:System.Security.Cryptography.CompositeMLDsaAlgorithm" /> objects.
</summary>
<param name="other">
An object to be compared to the current <see cref="T:System.Security.Cryptography.CompositeMLDsaAlgorithm"/> object.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsaAlgorithm.Equals(System.Object)">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsaAlgorithm.GetHashCode">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsaAlgorithm.ToString">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsaAlgorithm.op_Equality(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.Security.Cryptography.CompositeMLDsaAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.CompositeMLDsaAlgorithm" /> objects specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.CompositeMLDsaAlgorithm.op_Inequality(System.Security.Cryptography.CompositeMLDsaAlgorithm,System.Security.Cryptography.CompositeMLDsaAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.CompositeMLDsaAlgorithm" /> objects do not specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are not considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="T:System.Security.Cryptography.MLKem">
<summary>
Represents an ML-KEM key.
</summary>
<remarks>
<para>
This algorithm is specified by FIPS-203.
</para>
<para>
Developers are encouraged to program against the <c>MLKem</c> base class,
rather than any specific derived class.
The derived classes are intended for interop with the underlying system
cryptographic libraries.
</para>
</remarks>
</member>
<member name="P:System.Security.Cryptography.MLKem.IsSupported">
<summary>
Gets a value that indicates whether the algorithm is supported on the current platform.
</summary>
<value>
<see langword="true" /> if the algorithm is supported; otherwise, <see langword="false" />.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKem.Algorithm">
<summary>
Gets the specific ML-KEM algorithm for this key.
</summary>
<value>
The specific ML-KEM algorithm for this key.
</value>
</member>
<member name="M:System.Security.Cryptography.MLKem.#ctor(System.Security.Cryptography.MLKemAlgorithm)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.MLKem" /> class.
</summary>
<param name="algorithm">
The specific ML-KEM algorithm for this key.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.GenerateKey(System.Security.Cryptography.MLKemAlgorithm)">
<summary>
Generates a new ML-KEM key.
</summary>
<param name="algorithm">
An algorithm identifying what kind of ML-KEM key to generate.
</param>
<returns>
The generated key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred generating the ML-KEM key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.Encapsulate(System.Span{System.Byte},System.Span{System.Byte})">
<summary>
Creates an encapsulation ciphertext and shared secret, writing them into the provided buffers.
</summary>
<param name="ciphertext">
The buffer to receive the ciphertext.
</param>
<param name="sharedSecret">
The buffer to receive the shared secret.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred during encapsulation.</para>
<para>-or -</para>
<para><paramref name="ciphertext"/> overlaps with <paramref name="sharedSecret"/>.</para>
</exception>
<exception cref="T:System.ArgumentException">
<para><paramref name="ciphertext" /> is not the correct size.</para>
<para> -or- </para>
<para><paramref name="sharedSecret" /> is not the correct size.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.Encapsulate(System.Byte[]@,System.Byte[]@)">
<summary>
Creates an encapsulation ciphertext and shared secret.
</summary>
<param name="ciphertext">
When this method returns, the ciphertext.
</param>
<param name="sharedSecret">
When this method returns, the shared secret.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred during encapsulation.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.EncapsulateCore(System.Span{System.Byte},System.Span{System.Byte})">
<summary>
When overridden in a derived class, creates an encapsulation ciphertext and shared secret, writing them
into the provided buffers.
</summary>
<param name="ciphertext">
The buffer to receive the ciphertext.
</param>
<param name="sharedSecret">
The buffer to receive the shared secret.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred during encapsulation.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.Decapsulate(System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
Decapsulates a shared secret from a provided ciphertext.
</summary>
<param name="ciphertext">
The ciphertext.
</param>
<param name="sharedSecret">
The buffer to receive the shared secret.
</param>
<remarks>
Decapsulation can only decapsulate a shared secret created with the the decapsulation key's
corresponding encapsulation key. If a different key is used, ML-KEM performs implicit rejection.
Implicit rejection means an error will not be returned. Instead, the shared secret will be a
deterministic but incorrect result.
Detecting incorrect key use is a concern for consumers of the ML-KEM algorithm.
For more information, see FIPS 203, Section 6.3.
</remarks>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred during decapsulation.
</exception>
<exception cref="T:System.ArgumentException">
<para><paramref name="ciphertext" /> is not the correct size.</para>
<para> -or- </para>
<para><paramref name="sharedSecret" /> is not the correct size.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.Decapsulate(System.Byte[])">
<summary>
Decapsulates a shared secret from a provided ciphertext.
</summary>
<param name="ciphertext">
The ciphertext.
</param>
<returns>
The shared secret.
</returns>
<remarks>
Decapsulation can only decapsulate a shared secret created with the the decapsulation key's
corresponding encapsulation key. If a different key is used, ML-KEM performs implicit rejection.
Implicit rejection means an error will not be returned. Instead, the shared secret will be a
deterministic but incorrect result.
Detecting incorrect key use is a concern for consumers of the ML-KEM algorithm.
For more information, see FIPS 203, Section 6.3.
</remarks>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred during decapsulation.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="ciphertext" /> is not the correct size.
</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="ciphertext" /> is <see langword="null" />.
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.DecapsulateCore(System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
When overridden in a derived class, decapsulates a shared secret from a provided ciphertext.
</summary>
<param name="ciphertext">
The ciphertext.
</param>
<param name="sharedSecret">
The buffer to receive the shared secret.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred during decapsulation.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportPrivateSeed(System.Span{System.Byte})">
<summary>
Exports the private seed into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the private seed.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the private seed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a seed.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportPrivateSeed">
<summary>
Exports the private seed.
</summary>
<returns>
The private seed.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a seed.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportPrivateSeedCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the private seed into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the private seed.
</param>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportPrivateSeed(System.Security.Cryptography.MLKemAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM key from its private seed value.
</summary>
<param name="algorithm">The specific ML-KEM algorithm for this key.</param>
<param name="source">The private seed.</param>
<returns>The imported key.</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not the
<see cref="P:System.Security.Cryptography.MLKemAlgorithm.PrivateSeedSizeInBytes" /> from <paramref name="algorithm" />.
</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportPrivateSeed(System.Security.Cryptography.MLKemAlgorithm,System.Byte[])">
<summary>
Imports an ML-KEM key from its private seed value.
</summary>
<param name="algorithm">The specific ML-KEM algorithm for this key.</param>
<param name="source">The private seed.</param>
<returns>The imported key.</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not the
<see cref="P:System.Security.Cryptography.MLKemAlgorithm.PrivateSeedSizeInBytes" /> from <paramref name="algorithm" />.
</exception>
<exception cref="T:System.ArgumentNullException">
<para><paramref name="algorithm" /> is <see langword="null" />.</para>
<para>-or-</para>
<para><paramref name="source" /> is <see langword="null" />.</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportDecapsulationKey(System.Security.Cryptography.MLKemAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM key from a decapsulation key.
</summary>
<param name="algorithm">The specific ML-KEM algorithm for this key.</param>
<param name="source">The decapsulation key.</param>
<returns>The imported key.</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not valid for the ML-KEM algorithm.
</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportDecapsulationKey(System.Security.Cryptography.MLKemAlgorithm,System.Byte[])">
<summary>
Imports an ML-KEM key from a decapsulation key.
</summary>
<param name="algorithm">The specific ML-KEM algorithm for this key.</param>
<param name="source">The decapsulation key.</param>
<returns>The imported key.</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not valid for the ML-KEM algorithm.
</exception>
<exception cref="T:System.ArgumentNullException">
<para><paramref name="algorithm" /> is <see langword="null" />.</para>
<para>-or-</para>
<para><paramref name="source" /> is <see langword="null" />.</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportEncapsulationKey(System.Security.Cryptography.MLKemAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM key from a encapsulation key.
</summary>
<param name="algorithm">The specific ML-KEM algorithm for this key.</param>
<param name="source">The encapsulation key.</param>
<returns>The imported key.</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not valid for the ML-KEM algorithm.
</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportEncapsulationKey(System.Security.Cryptography.MLKemAlgorithm,System.Byte[])">
<summary>
Imports an ML-KEM key from a encapsulation key.
</summary>
<param name="algorithm">The specific ML-KEM algorithm for this key.</param>
<param name="source">The encapsulation key.</param>
<returns>The imported key.</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not valid for the ML-KEM algorithm.
</exception>
<exception cref="T:System.ArgumentNullException">
<para><paramref name="algorithm" /> is <see langword="null" />.</para>
<para>-or-</para>
<para><paramref name="source" /> is <see langword="null" />.</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportDecapsulationKey(System.Span{System.Byte})">
<summary>
Exports the decapsulation key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the decapsulation key.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the decapsulation key.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a decapsulation key.</para>
<para>-or-</para>
<para>An error occurred while importing the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportDecapsulationKey">
<summary>
Exports the decapsulation key.
</summary>
<returns>
The decapsulation key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a decapsulation key.</para>
<para>-or-</para>
<para>An error occurred while importing the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportDecapsulationKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the decapsulation key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the decapsulation key.
</param>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncapsulationKey(System.Span{System.Byte})">
<summary>
Exports the encapsulation key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the encapsulation key.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the encapsulation key.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred exporting the encapsulation key.
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncapsulationKey">
<summary>
Exports the encapsulation key.
</summary>
<returns>
The encapsulation key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred exporting the encapsulation key.
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncapsulationKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the encapsulation key into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the encapsulation key.
</param>
</member>
<member name="M:System.Security.Cryptography.MLKem.TryExportSubjectPublicKeyInfo(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the X.509 SubjectPublicKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportSubjectPublicKeyInfo">
<summary>
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A byte array containing the X.509 SubjectPublicKeyInfo representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportSubjectPublicKeyInfoPem">
<summary>
Exports the public-key portion of the current key in a PEM-encoded representation of
the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the X.509 SubjectPublicKeyInfo
representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.TryExportPkcs8PrivateKey(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportPkcs8PrivateKey">
<summary>
Export the current key in the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A byte array containing the PKCS#8 PrivateKeyInfo representation of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportPkcs8PrivateKeyPem">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the PKCS#8 PrivateKeyInfo.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.TryExportPkcs8PrivateKeyCore(System.Span{System.Byte},System.Int32@)">
<summary>
When overridden in a derived class, attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.TryExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a byte-based password.
</summary>
<param name="passwordBytes">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password.
</summary>
<param name="passwordBytes">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters" /> or <paramref name="password" /> is <see langword="null" />.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ExportEncryptedPkcs8PrivateKeyPem(System.String,System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a string password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM encapsulation key from an X.509 SubjectPublicKeyInfo structure.
</summary>
<param name="source">
The bytes of an X.509 SubjectPublicKeyInfo structure in the ASN.1-DER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-DER-encoded X.509 SubjectPublicKeyInfo structure.
</para>
<para>-or-</para>
<para>
The SubjectPublicKeyInfo value does not represent an ML-KEM key.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportSubjectPublicKeyInfo(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLKem.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM private key from a PKCS#8 PrivateKeyInfo structure.
</summary>
<param name="source">
The bytes of a PKCS#8 PrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 PrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The PrivateKeyInfo value does not represent an ML-KEM key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportPkcs8PrivateKey(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLKem.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="passwordBytes">
The bytes to use as a password when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The EncryptedPrivateKeyInfo indicates the Key Derivation Function (KDF) to apply is the legacy PKCS#12 KDF,
which requires <see cref="T:System.Char"/>-based passwords.
</para>
<para>-or-</para>
<para>
The value does not represent an ML-KEM key.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="password">
The password to use when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The value does not represent an ML-KEM key.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportEncryptedPkcs8PrivateKey(System.String,System.Byte[])">
<summary>
Imports an ML-KEM private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="password">
The password to use when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="password" /> or <paramref name="source" /> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The value does not represent an ML-KEM key.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-KEM. Callers can use the <see cref="P:System.Security.Cryptography.MLKem.IsSupported" /> property
to determine if the platform supports ML-KEM.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportFromPem(System.ReadOnlySpan{System.Char})">
<summary>
Imports an ML-KEM key from an RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The text of the PEM key to import.
</param>
<returns>
The imported ML-KEM key.
</returns>
<exception cref="T:System.ArgumentException">
<para><paramref name="source" /> contains an encrypted PEM-encoded key.</para>
<para>-or-</para>
<para><paramref name="source" /> contains multiple PEM-encoded ML-KEM keys.</para>
<para>-or-</para>
<para><paramref name="source" /> contains no PEM-encoded ML-KEM keys.</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is raised to prevent importing a key when the key is ambiguous.
</para>
<para>
This method supports the following PEM labels:
<list type="bullet">
<item><description>PUBLIC KEY</description></item>
<item><description>PRIVATE KEY</description></item>
</list>
</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportFromPem(System.String)">
<inheritdoc cref="M:System.Security.Cryptography.MLKem.ImportFromPem(System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})">
<summary>
Imports an ML-KEM key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.</param>
<param name="password">
The password to use for decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<remarks>
<para>
When the base-64 decoded contents of <paramref name="source" /> indicate an algorithm that uses PBKDF1
(Password-Based Key Derivation Function 1) or PBKDF2 (Password-Based Key Derivation Function 2),
the password is converted to bytes via the UTF-8 encoding.
</para>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-KEM key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.</param>
<param name="passwordBytes">
The password to use for decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportFromEncryptedPem(System.String,System.String)">
<inheritdoc cref="M:System.Security.Cryptography.MLKem.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="password" /> is <see langword="null" />
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.ImportFromEncryptedPem(System.String,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLKem.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="passwordBytes" /> is <see langword="null" />
</exception>
</member>
<member name="M:System.Security.Cryptography.MLKem.Dispose">
<summary>
Releases all resources used by the <see cref="T:System.Security.Cryptography.MLKem"/> class.
</summary>
</member>
<member name="M:System.Security.Cryptography.MLKem.Dispose(System.Boolean)">
<summary>
Called by the <c>Dispose()</c> and <c>Finalize()</c> methods to release the managed and unmanaged
resources used by the current instance of the <see cref="T:System.Security.Cryptography.MLKem"/> class.
</summary>
<param name="disposing">
<see langword="true" /> to release managed and unmanaged resources;
<see langword="false" /> to release only unmanaged resources.
</param>
</member>
<member name="T:System.Security.Cryptography.MLKemAlgorithm">
<summary>
Represents a specific algorithm within the ML-KEM family.
</summary>
<seealso cref="T:System.Security.Cryptography.MLKem" />
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.MLKem512">
<summary>
Gets an ML-KEM algorithm identifier for the ML-KEM-512 algorithm.
</summary>
<value>
An ML-KEM algorithm identifier for the ML-KEM-512 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.MLKem768">
<summary>
Gets an ML-KEM algorithm identifier for the ML-KEM-768 algorithm.
</summary>
<value>
An ML-KEM algorithm identifier for the ML-KEM-768 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.MLKem1024">
<summary>
Gets an ML-KEM algorithm identifier for the ML-KEM-1024 algorithm.
</summary>
<value>
An ML-KEM algorithm identifier for the ML-KEM-1024 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.Name">
<summary>
Gets the name of the algorithm.
</summary>
<value>
An a string representing the algorithm name.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.EncapsulationKeySizeInBytes">
<summary>
Gets the size of the encapsulation key for the algorithm, in bytes.
</summary>
<value>
The size of the encapsulation key for the algorithm, in bytes.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.DecapsulationKeySizeInBytes">
<summary>
Gets the size of the decapsulation key for the algorithm, in bytes.
</summary>
<value>
The size of the decapsulation key for the algorithm, in bytes.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.CiphertextSizeInBytes">
<summary>
Gets the size of the ciphertext for the algorithm, in bytes.
</summary>
<value>
The size of the ciphertext for the algorithm, in bytes.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.SharedSecretSizeInBytes">
<summary>
Gets the size of the shared secret for the algorithm, in bytes.
</summary>
<value>
The size of the shared secret for the algorithm, in bytes.
</value>
</member>
<member name="P:System.Security.Cryptography.MLKemAlgorithm.PrivateSeedSizeInBytes">
<summary>
Gets the size of the private seed for the algorithm, in bytes.
</summary>
<value>
The size of the private seed for the algorithm, in bytes.
</value>
</member>
<member name="M:System.Security.Cryptography.MLKemAlgorithm.Equals(System.Security.Cryptography.MLKemAlgorithm)">
<summary>
Compares two <see cref="T:System.Security.Cryptography.MLKemAlgorithm" /> objects.
</summary>
<param name="other">
An object to be compared to the current <see cref="T:System.Security.Cryptography.MLKemAlgorithm"/> object.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.MLKemAlgorithm.Equals(System.Object)">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.MLKemAlgorithm.GetHashCode">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.MLKemAlgorithm.ToString">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.MLKemAlgorithm.op_Equality(System.Security.Cryptography.MLKemAlgorithm,System.Security.Cryptography.MLKemAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.MLKemAlgorithm" /> objects specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.MLKemAlgorithm.op_Inequality(System.Security.Cryptography.MLKemAlgorithm,System.Security.Cryptography.MLKemAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.MLKemAlgorithm" /> objects do not specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are not considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.MLDsaImplementation.DuplicatePrivateKey(System.Security.Cryptography.MLDsa)">
<summary>
Duplicates an ML-DSA private key by export/import.
Only intended to be used when the key type is unknown.
</summary>
</member>
<member name="T:System.Security.Cryptography.SlhDsa">
<summary>
Represents an SLH-DSA key.
</summary>
<remarks>
<para>
This algorithm is specified by FIPS-205.
</para>
<para>
Developers are encouraged to program against the <see cref="T:System.Security.Cryptography.SlhDsa"/> base class,
rather than any specific derived class.
The derived classes are intended for interop with the underlying system
cryptographic libraries.
</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.#ctor(System.Security.Cryptography.SlhDsaAlgorithm)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.SlhDsa" /> class.
</summary>
<param name="algorithm">
The specific SLH-DSA algorithm for this key.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
</member>
<member name="P:System.Security.Cryptography.SlhDsa.IsSupported">
<summary>
Gets a value indicating whether the current platform supports SLH-DSA.
</summary>
<value>
<see langword="true" /> if the current platform supports SLH-DSA; otherwise, <see langword="false" />.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsa.Algorithm">
<summary>
Gets the specific SLH-DSA algorithm for this key.
</summary>
<value>
The specific SLH-DSA algorithm for this key.
</value>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.Dispose">
<summary>
Releases all resources used by the <see cref="T:System.Security.Cryptography.SlhDsa"/> class.
</summary>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.SignData(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Signs the specified data, writing the signature into the provided buffer.
</summary>
<param name="data">
The data to sign.
</param>
<param name="destination">
The buffer to receive the signature. Its length must be exactly
<see cref="P:System.Security.Cryptography.SlhDsaAlgorithm.SignatureSizeInBytes"/>.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is an empty buffer.
</param>
<exception cref="T:System.ArgumentException">
The buffer in <paramref name="destination"/> is the incorrect length to receive the signature.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the data.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.SignData(System.Byte[],System.Byte[])">
<summary>
Signs the specified data.
</summary>
<param name="data">
The data to sign.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is <see langword="null" />.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the data.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.VerifyData(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Verifies that the specified signature is valid for this key and the provided data.
</summary>
<param name="data">
The data to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="context">
The context value which was provided during signing.
The default value is an empty buffer.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while verifying the data.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.VerifyData(System.Byte[],System.Byte[],System.Byte[])">
<summary>
Verifies that the specified signature is valid for this key and the provided data.
</summary>
<param name="data">
The data to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="context">
The context value which was provided during signing.
The default value is <see langword="null" />.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> or <paramref name="signature"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while verifying the data.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.SignPreHash(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.String,System.ReadOnlySpan{System.Byte})">
<summary>
Signs the specified hash using the FIPS 205 pre-hash signing algorithm, writing the signature into the provided buffer.
</summary>
<param name="hash">
The hash to sign.
</param>
<param name="destination">
The buffer to receive the signature. Its length must be exactly
<see cref="P:System.Security.Cryptography.SlhDsaAlgorithm.SignatureSizeInBytes"/>.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is an empty buffer.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentException">
The buffer in <paramref name="destination"/> is the incorrect length to receive the signature.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the hash.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.SignPreHash(System.Byte[],System.String,System.Byte[])">
<summary>
Signs the specified hash using the FIPS 205 pre-hash signing algorithm.
</summary>
<param name="hash">
The hash to sign.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is <see langword="null" />.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="hash"/> or <paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the hash.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.VerifyPreHash(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.String,System.ReadOnlySpan{System.Byte})">
<summary>
Verifies that the specified FIPS 205 pre-hash signature is valid for this key and the provided hash.
</summary>
<param name="hash">
The hash to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
The context value which was provided during signing.
The default value is an empty buffer.
</param>
<returns>
<see langword="true"/> if the signature validates the hash; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>An error occurred while verifying the hash.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.VerifyPreHash(System.Byte[],System.Byte[],System.String,System.Byte[])">
<summary>
Verifies that the specified FIPS 205 pre-hash signature is valid for this key and the provided hash.
</summary>
<param name="hash">
The hash to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
The context value which was provided during signing.
The default value is <see langword="null" />.
</param>
<returns>
<see langword="true"/> if the signature validates the hash; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="hash"/> or <paramref name="signature"/> or <paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>An error occurred while verifying the hash.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSubjectPublicKeyInfo">
<summary>
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A byte array containing the X.509 SubjectPublicKeyInfo representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.TryExportSubjectPublicKeyInfo(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the X.509 SubjectPublicKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSubjectPublicKeyInfoPem">
<summary>
Exports the public-key portion of the current key in a PEM-encoded representation of
the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the X.509 SubjectPublicKeyInfo
representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportPkcs8PrivateKey">
<summary>
Exports the current key in the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A byte array containing the PKCS#8 PrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.TryExportPkcs8PrivateKey(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.TryExportPkcs8PrivateKeyCore(System.Span{System.Byte},System.Int32@)">
<summary>
When overridden in a derived class, attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportPkcs8PrivateKeyPem">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the PKCS#8 PrivateKeyInfo.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters)">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.TryExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKeyPem(System.String,System.Security.Cryptography.PbeParameters)">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSlhDsaPublicKey(System.Span{System.Byte})">
<summary>
Exports the public-key portion of the current key in the FIPS 205 public key format.
</summary>
<param name="destination">
The buffer to receive the public key. Its length must be exactly
<see cref="P:System.Security.Cryptography.SlhDsaAlgorithm.PublicKeySizeInBytes"/>.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the public key.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
<remarks>
<paramref name="destination"/> is required to be exactly
<see cref="P:System.Security.Cryptography.SlhDsaAlgorithm.PublicKeySizeInBytes"/> in length.
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSlhDsaPublicKey">
<summary>
Exports the public-key portion of the current key in the FIPS 205 public key format.
</summary>
<returns>
The FIPS 205 public key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSlhDsaPrivateKey(System.Span{System.Byte})">
<summary>
Exports the current key in the FIPS 205 private key format.
</summary>
<param name="destination">
The buffer to receive the private key. Its length must be exactly
<see cref="P:System.Security.Cryptography.SlhDsaAlgorithm.PrivateKeySizeInBytes"/>.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the private key.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a private key.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSlhDsaPrivateKey">
<summary>
Exports the current key in the FIPS 205 private key format.
</summary>
<returns>
The FIPS 205 private key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a private key.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.GenerateKey(System.Security.Cryptography.SlhDsaAlgorithm)">
<summary>
Generates a new SLH-DSA key for the specified algorithm.
</summary>
<param name="algorithm">
An algorithm identifying what kind of SLH-DSA key to generate.
</param>
<returns>
The generated object.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred generating the SLH-DSA key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})">
<summary>
Imports an SLH-DSA public key from an X.509 SubjectPublicKeyInfo structure.
</summary>
<param name="source">
The bytes of an X.509 SubjectPublicKeyInfo structure in the ASN.1-DER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-DER-encoded X.509 SubjectPublicKeyInfo structure.
</para>
<para>-or-</para>
<para>
The SubjectPublicKeyInfo value does not represent an SLH-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportSubjectPublicKeyInfo(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})">
<summary>
Imports an SLH-DSA private key from a PKCS#8 PrivateKeyInfo structure.
</summary>
<param name="source">
The bytes of a PKCS#8 PrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 PrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The PrivateKeyInfo value does not represent an SLH-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportPkcs8PrivateKey(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})" />>
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an SLH-DSA private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="passwordBytes">
The bytes to use as a password when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The EncryptedPrivateKeyInfo indicates the Key Derivation Function (KDF) to apply is the legacy PKCS#12 KDF,
which requires <see cref="T:System.Char"/>-based passwords.
</para>
<para>-or-</para>
<para>
The value does not represent an SLH-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an SLH-DSA private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="password">
The password to use when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The value does not represent an SLH-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportEncryptedPkcs8PrivateKey(System.String,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="password" /> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportFromPem(System.ReadOnlySpan{System.Char})">
<summary>
Imports an SLH-DSA key from an RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The text of the PEM key to import.
</param>
<returns>
The imported SLH-DSA key.
</returns>
<exception cref="T:System.ArgumentException">
<para><paramref name="source" /> contains an encrypted PEM-encoded key.</para>
<para>-or-</para>
<para><paramref name="source" /> contains multiple PEM-encoded SLH-DSA keys.</para>
<para>-or-</para>
<para><paramref name="source" /> contains no PEM-encoded SLH-DSA keys.</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is raised to prevent importing a key when the key is ambiguous.
</para>
<para>
This method supports the following PEM labels:
<list type="bullet">
<item><description>PUBLIC KEY</description></item>
<item><description>PRIVATE KEY</description></item>
</list>
</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportFromPem(System.String)">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportFromPem(System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})">
<summary>
Imports an SLH-DSA key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.</param>
<param name="password">
The password to use for decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
<remarks>
<para>
When the base-64 decoded contents of <paramref name="source" /> indicate an algorithm that uses PBKDF1
(Password-Based Key Derivation Function 1) or PBKDF2 (Password-Based Key Derivation Function 2),
the password is converted to bytes via the UTF-8 encoding.
</para>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an SLH-DSA key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.</param>
<param name="passwordBytes">
The bytes to use as a password when decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportFromEncryptedPem(System.String,System.String)">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="password" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportFromEncryptedPem(System.String,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="passwordBytes" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportSlhDsaPublicKey(System.Security.Cryptography.SlhDsaAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an SLH-DSA public key in the FIPS 205 public key format.
</summary>
<param name="algorithm">
The specific SLH-DSA algorithm for this key.
</param>
<param name="source">
The bytes of a FIPS 205 public key.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not valid for the SLH-DSA algorithm.
</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportSlhDsaPublicKey(System.Security.Cryptography.SlhDsaAlgorithm,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportSlhDsaPublicKey(System.Security.Cryptography.SlhDsaAlgorithm,System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportSlhDsaPrivateKey(System.Security.Cryptography.SlhDsaAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an SLH-DSA private key in the FIPS 205 private key format.
</summary>
<param name="algorithm">
The specific SLH-DSA algorithm for this key.
</param>
<param name="source">
The bytes of a FIPS 205 private key.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.ArgumentException">
<paramref name="source"/> has a length that is not valid for the SLH-DSA algorithm.
</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support SLH-DSA. Callers can use the <see cref="P:System.Security.Cryptography.SlhDsa.IsSupported" /> property
to determine if the platform supports SLH-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ImportSlhDsaPrivateKey(System.Security.Cryptography.SlhDsaAlgorithm,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.SlhDsa.ImportSlhDsaPrivateKey(System.Security.Cryptography.SlhDsaAlgorithm,System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.Dispose(System.Boolean)">
<summary>
Called by the <c>Dispose()</c> and <c>Finalize()</c> methods to release the managed and unmanaged
resources used by the current instance of the <see cref="T:System.Security.Cryptography.SlhDsa"/> class.
</summary>
<param name="disposing">
<see langword="true" /> to release managed and unmanaged resources;
<see langword="false" /> to release only unmanaged resources.
</param>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.SignDataCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
When overridden in a derived class, computes the signature of the specified data and context,
writing it into the provided buffer.
</summary>
<param name="data">
The data to sign.
</param>
<param name="context">
The signature context.
</param>
<param name="destination">
The buffer to receive the signature, which will always be the exactly correct size for the algorithm.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while signing the data.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.VerifyDataCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
When overridden in a derived class, verifies the signature of the specified data and context.
</summary>
<param name="data">
The data to verify.
</param>
<param name="context">
The signature context.
</param>
<param name="signature">
The signature to verify.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while verifying the data.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.SignPreHashCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.String,System.Span{System.Byte})">
<summary>
When overridden in a derived class, computes the pre-hash signature of the specified hash and context,
writing it into the provided buffer.
</summary>
<param name="hash">
The hash to sign.
</param>
<param name="context">
The signature context.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="destination">
The buffer to receive the signature, which will always be the exactly correct size for the algorithm.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while signing the hash.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.VerifyPreHashCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.String,System.ReadOnlySpan{System.Byte})">
<summary>
When overridden in a derived class, verifies the pre-hash signature of the specified hash and context.
</summary>
<param name="hash">
The data to verify.
</param>
<param name="context">
The signature context.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="signature">
The signature to verify.
</param>
<returns>
<see langword="true"/> if the signature validates the hash; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while verifying the hash.
</exception>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSlhDsaPublicKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the FIPS 205 public key to the specified buffer.
</summary>
<param name="destination">
The buffer to receive the public key.
</param>
</member>
<member name="M:System.Security.Cryptography.SlhDsa.ExportSlhDsaPrivateKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the FIPS 205 private key to the specified buffer.
</summary>
<param name="destination">
The buffer to receive the private key.
</param>
</member>
<member name="T:System.Security.Cryptography.SlhDsaAlgorithm">
<summary>
Represents a specific algorithm within the SHL-DSA family.
</summary>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.Name">
<summary>
Gets the underlying string representation of the algorithm name.
</summary>
<value>
The underlying string representation of the algorithm name.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.PrivateKeySizeInBytes">
<summary>
Gets the size of the private key in bytes for this algorithm.
</summary>
<value>
The size of the private key in bytes for this algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.PublicKeySizeInBytes">
<summary>
Gets the size of the public key in bytes for this algorithm.
</summary>
<value>
The size of the public key in bytes for this algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SignatureSizeInBytes">
<summary>
Gets the size of the signature in bytes for this algorithm.
</summary>
<value>
The size of the signature in bytes for this algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.Oid">
<summary>
Gets the Object Identifier (OID) for this algorithm.
</summary>
<value>
The Object Identifier (OID) for this algorithm.
</value>
</member>
<member name="M:System.Security.Cryptography.SlhDsaAlgorithm.#ctor(System.String,System.Int32,System.Int32,System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.SlhDsaAlgorithm" /> structure with a custom name.
</summary>
<param name="name">
The name of the algorithm.
</param>
<param name="n">
The "security parameter" as described in FIPS 205.
</param>
<param name="signatureSizeInBytes">
The size of the signature in bytes for this algorithm.
</param>
<param name="oid">
The Object Identifier (OID) for this algorithm.
</param>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaSha2_128s">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHA2-128s algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHA2-128s algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaShake128s">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-128s algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-128s algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaSha2_128f">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHA2-128f algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHA2-128f algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaShake128f">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-128f algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-128f algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaSha2_192s">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHA2-192s algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHA2-192s algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaShake192s">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-192s algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-192s algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaSha2_192f">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHA2-192f algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHA2-192f algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaShake192f">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-192f algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-192f algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaSha2_256s">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHA2-256s algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHA2-256s algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaShake256s">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-256s algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-256s algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaSha2_256f">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHA2-256f algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHA2-256f algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.SlhDsaAlgorithm.SlhDsaShake256f">
<summary>
Gets an SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-256f algorithm.
</summary>
<value>
An SLH-DSA algorithm identifier for the SLH-DSA-SHAKE-256f algorithm.
</value>
</member>
<member name="M:System.Security.Cryptography.SlhDsaAlgorithm.Equals(System.Security.Cryptography.SlhDsaAlgorithm)">
<summary>
Compares two <see cref="T:System.Security.Cryptography.SlhDsaAlgorithm" /> objects.
</summary>
<param name="other">
An object to be compared to the current <see cref="T:System.Security.Cryptography.SlhDsaAlgorithm"/> object.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.SlhDsaAlgorithm.Equals(System.Object)">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.SlhDsaAlgorithm.GetHashCode">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.SlhDsaAlgorithm.ToString">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.SlhDsaAlgorithm.op_Equality(System.Security.Cryptography.SlhDsaAlgorithm,System.Security.Cryptography.SlhDsaAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.SlhDsaAlgorithm" /> objects specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.SlhDsaAlgorithm.op_Inequality(System.Security.Cryptography.SlhDsaAlgorithm,System.Security.Cryptography.SlhDsaAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.SlhDsaAlgorithm" /> objects do not specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are not considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.SlhDsaImplementation.DuplicatePrivateKey(System.Security.Cryptography.SlhDsa)">
<summary>
Duplicates an SLH-DSA private key by export/import.
Only intended to be used when the key type is unknown.
</summary>
</member>
<member name="T:System.Security.Cryptography.MLDsa">
<summary>
Represents an ML-DSA key.
</summary>
<remarks>
<para>
This algorithm is specified by FIPS-204.
</para>
<para>
Developers are encouraged to program against the <see cref="T:System.Security.Cryptography.MLDsa"/> base class,
rather than any specific derived class.
The derived classes are intended for interop with the underlying system
cryptographic libraries.
</para>
</remarks>
</member>
<member name="P:System.Security.Cryptography.MLDsa.Algorithm">
<summary>
Gets the specific ML-DSA algorithm for this key.
</summary>
<value>
The specific ML-DSA algorithm for this key.
</value>
</member>
<member name="M:System.Security.Cryptography.MLDsa.#ctor(System.Security.Cryptography.MLDsaAlgorithm)">
<summary>
Initializes a new instance of the <see cref="T:System.Security.Cryptography.MLDsa" /> class.
</summary>
<param name="algorithm">
The specific ML-DSA algorithm for this key.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />.
</exception>
</member>
<member name="P:System.Security.Cryptography.MLDsa.IsSupported">
<summary>
Gets a value indicating whether the current platform supports ML-DSA.
</summary>
<value>
<see langword="true" /> if the current platform supports ML-DSA; otherwise, <see langword="false" />.
</value>
</member>
<member name="M:System.Security.Cryptography.MLDsa.Dispose">
<summary>
Releases all resources used by the <see cref="T:System.Security.Cryptography.MLDsa"/> class.
</summary>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignData(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Signs the specified data, writing the signature into the provided buffer.
</summary>
<param name="data">
The data to sign.
</param>
<param name="destination">
The buffer to receive the signature. Its length must be exactly
<see cref="P:System.Security.Cryptography.MLDsaAlgorithm.SignatureSizeInBytes"/>.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is an empty buffer.
</param>
<exception cref="T:System.ArgumentException">
The buffer in <paramref name="destination"/> is the incorrect length to receive the signature.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the data.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignData(System.Byte[],System.Byte[])">
<summary>
Signs the specified data.
</summary>
<param name="data">
The data to sign.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is <see langword="null" />.
</param>
<returns>
ML-DSA signature for the specified data.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the data.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyData(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Verifies that the specified signature is valid for this key and the provided data.
</summary>
<param name="data">
The data to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="context">
The context value which was provided during signing.
The default value is an empty buffer.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while verifying the data.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyData(System.Byte[],System.Byte[],System.Byte[])">
<summary>
Verifies that the specified signature is valid for this key and the provided data.
</summary>
<param name="data">
The data to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="context">
The context value which was provided during signing.
The default value is <see langword="null" />.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="data"/> or <paramref name="signature"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while verifying the data.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignPreHash(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.String,System.ReadOnlySpan{System.Byte})">
<summary>
Signs the specified hash using the FIPS 204 pre-hash signing algorithm, writing the signature into the provided buffer.
</summary>
<param name="hash">
The hash to sign.
</param>
<param name="destination">
The buffer to receive the signature. Its length must be exactly
<see cref="P:System.Security.Cryptography.MLDsaAlgorithm.SignatureSizeInBytes"/>.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is an empty buffer.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentException">
The buffer in <paramref name="destination"/> is the incorrect length to receive the signature.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the hash.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignPreHash(System.Byte[],System.String,System.Byte[])">
<summary>
Signs the specified hash using the FIPS 204 pre-hash signing algorithm.
</summary>
<param name="hash">
The hash to sign.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
An optional context-specific value to limit the scope of the signature.
The default value is <see langword="null" />.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="hash"/> or <paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
<para>An error occurred while verifying the data.</para>
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the hash.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyPreHash(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.String,System.ReadOnlySpan{System.Byte})">
<summary>
Verifies that the specified FIPS 204 pre-hash signature is valid for this key and the provided hash.
</summary>
<param name="hash">
The hash to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
The context value which was provided during signing.
The default value is an empty buffer.
</param>
<returns>
<see langword="true"/> if the signature validates the hash; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a <see cref="P:System.ReadOnlySpan`1.Length"/> in excess of
255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>An error occurred while verifying the hash.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyPreHash(System.Byte[],System.Byte[],System.String,System.Byte[])">
<summary>
Verifies that the specified FIPS 204 pre-hash signature is valid for this key and the provided hash.
</summary>
<param name="hash">
The hash to verify.
</param>
<param name="signature">
The signature to verify.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="context">
The context value which was provided during signing.
The default value is <see langword="null" />.
</param>
<returns>
<see langword="true"/> if the signature validates the hash; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="hash"/> or <paramref name="signature"/> or <paramref name="hashAlgorithmOid"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="context"/> has a length in excess of 255 bytes.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="hashAlgorithmOid"/> is not a well-formed OID.</para>
<para>-or-</para>
<para><paramref name="hashAlgorithmOid"/> is a well-known algorithm and <paramref name="hash"/> does not have the expected length.</para>
<para>-or-</para>
<para>An error occurred while verifying the hash.</para>
</exception>
<remarks>
A <see langword="null" /> context is treated as empty.
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignMu(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.SignMu(System.ReadOnlySpan{System.Byte})"/>
<exception cref="T:System.ArgumentNullException"><paramref name="externalMu"/> is <see langword="null"/>.</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignMu(System.ReadOnlySpan{System.Byte})">
<summary>
Signs the specified externally computed signature mu (&#x3BC;) value.
</summary>
<param name="externalMu">
The signature mu value to sign.
</param>
<returns>
ML-DSA signature for the specified mu value.
</returns>
<exception cref="T:System.ArgumentException">
The buffer in <paramref name="externalMu"/> is the incorrect length for the signature mu value.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the hash.</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not support signing with an externally computed mu value.
</exception>
<seealso cref="M:System.Security.Cryptography.MLDsa.VerifyMu(System.Byte[],System.Byte[])"/>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignMu(System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
Signs the specified externally computed signature mu (&#x3BC;) value,
writing the signature into the provided buffer.
</summary>
<param name="externalMu">
The signature mu value to sign.
</param>
<param name="destination">
The buffer to receive the signature. Its length must be exactly
<see cref="P:System.Security.Cryptography.MLDsaAlgorithm.SignatureSizeInBytes"/>.
</param>
<exception cref="T:System.ArgumentException">
<para>
The buffer in <paramref name="externalMu"/> is the incorrect length for the signature mu value.
</para>
<para>-or-</para>
<para>
The buffer in <paramref name="destination"/> is the incorrect length to receive the signature.
</para>
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The instance represents only a public key.</para>
<para>-or-</para>
<para>An error occurred while signing the hash.</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not support signing with an externally computed mu value.
</exception>
<seealso cref="M:System.Security.Cryptography.MLDsa.VerifyMu(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})"/>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignMuCore(System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
When overridden in a derived class, computes the remainder of the signature from the
precomputed mu (&#x3BC;) value, writing it into the provided buffer.
</summary>
<param name="externalMu">
The signature mu value to sign.
</param>
<param name="destination">
The buffer to receive the signature, which will always be the exactly correct size for the algorithm.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while computing the signature.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyMu(System.Byte[],System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.VerifyMu(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="externalMu"/> or <paramref name="signature"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyMu(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Verifies that a digital signature is valid for the provided externally computed signature mu (&#x3BC;) value.
</summary>
<param name="externalMu">The signature mu value.</param>
<param name="signature">The signature to verify.</param>
<returns>
<see langword="true"/> if the digital signature is valid for the provided mu value;
otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">An error occurred while verifying the mu value.</exception>
<exception cref="T:System.PlatformNotSupportedException">
The current platform does not support verification with an externally computed mu value.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyMuCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
When overridden in a derived class,
verifies that a digital signature is valid for the provided externally computed signature mu (&#x3BC;) value.
</summary>
<param name="externalMu">The signature mu value.</param>
<param name="signature">The signature to verify.</param>
<returns>
<see langword="true"/> if the mu value is valid; otherwise, <see langword="false"/>.
</returns>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportSubjectPublicKeyInfo">
<summary>
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A byte array containing the X.509 SubjectPublicKeyInfo representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.TryExportSubjectPublicKeyInfo(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the X.509 SubjectPublicKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportSubjectPublicKeyInfoPem">
<summary>
Exports the public-key portion of the current key in a PEM-encoded representation of
the X.509 SubjectPublicKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the X.509 SubjectPublicKeyInfo
representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportPkcs8PrivateKey">
<summary>
Exports the current key in the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A byte array containing the PKCS#8 PrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.TryExportPkcs8PrivateKey(System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.TryExportPkcs8PrivateKeyCore(System.Span{System.Byte},System.Int32@)">
<summary>
When overridden in a derived class, attempts to export the current key in the PKCS#8 PrivateKeyInfo format
into the provided buffer.
</summary>
<param name="destination">
The buffer to receive the PKCS#8 PrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportPkcs8PrivateKeyPem">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 PrivateKeyInfo format.
</summary>
<returns>
A string containing the PEM-encoded representation of the PKCS#8 PrivateKeyInfo
representation of the public-key portion of this key.
</returns>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of the this key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters)">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<summary>
Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer,
using a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<param name="destination">
The buffer to receive the PKCS#8 EncryptedPrivateKeyInfo value.
</param>
<param name="bytesWritten">
When this method returns, contains the number of bytes written to the <paramref name="destination"/> buffer.
This parameter is treated as uninitialized.
</param>
<returns>
<see langword="true" /> if <paramref name="destination"/> was large enough to hold the result;
otherwise, <see langword="false" />.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.TryExportEncryptedPkcs8PrivateKey(System.String,System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.TryExportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters,System.Span{System.Byte},System.Int32@)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a char-based password.
</summary>
<param name="password">
The password to use when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Byte},System.Security.Cryptography.PbeParameters)">
<summary>
Exports the current key in a PEM-encoded representation of the PKCS#8 EncryptedPrivateKeyInfo
representation of this key, using a byte-based password.
</summary>
<param name="passwordBytes">
The bytes to use as a password when encrypting the key material.
</param>
<param name="pbeParameters">
The password-based encryption (PBE) parameters to use when encrypting the key material.
</param>
<returns>
A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
<exception cref="T:System.ObjectDisposedException">
This instance has been disposed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para><paramref name="pbeParameters"/> specifies a KDF that requires a char-based password.</para>
<para>-or-</para>
<para><paramref name="pbeParameters"/> does not represent a valid password-based encryption algorithm.</para>
<para>-or-</para>
<para>This instance only represents a public key.</para>
<para>-or-</para>
<para>The private key is not exportable.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.String,System.Security.Cryptography.PbeParameters)">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ExportEncryptedPkcs8PrivateKeyPem(System.ReadOnlySpan{System.Char},System.Security.Cryptography.PbeParameters)"/>
<exception cref="T:System.ArgumentNullException">
<paramref name="password"/> or <paramref name="pbeParameters"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPublicKey">
<summary>
Exports the public-key portion of the current key in the FIPS 204 public key format.
</summary>
<returns>
The FIPS 204 public key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPublicKey(System.Span{System.Byte})">
<summary>
Exports the public-key portion of the current key in the FIPS 204 public key format.
</summary>
<param name="destination">
The buffer to receive the public key. Its length must be exactly
<see cref="P:System.Security.Cryptography.MLDsaAlgorithm.PublicKeySizeInBytes"/>.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the public key.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
<remarks>
<paramref name="destination"/> is required to be exactly
<see cref="P:System.Security.Cryptography.MLDsaAlgorithm.PublicKeySizeInBytes"/> in length.
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPrivateKey">
<summary>
Exports the current key in the FIPS 204 private key format.
</summary>
<returns>
The FIPS 204 private key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>The current instance cannot export a private key.</para>
<para>-or-</para>
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPrivateKey(System.Span{System.Byte})">
<summary>
Exports the current key in the FIPS 204 private key format.
</summary>
<param name="destination">
The buffer to receive the private key. Its length must be exactly
<see cref="P:System.Security.Cryptography.MLDsaAlgorithm.PrivateKeySizeInBytes"/>.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the private key.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the key.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPrivateSeed">
<summary>
Exports the private seed in the FIPS 204 private seed format.
</summary>
<returns>
The FIPS 204 private seed.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>An error occurred while exporting the key.</para>
</exception>
<exception cref="T:System.ObjectDisposedException">The object has already been disposed.</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPrivateSeed(System.Span{System.Byte})">
<summary>
Exports the private seed of the current key.
</summary>
<param name="destination">
The buffer to receive the private seed. Its length must be exactly
<see cref="P:System.Security.Cryptography.MLDsaAlgorithm.PrivateSeedSizeInBytes"/>.
</param>
<exception cref="T:System.ArgumentException">
<paramref name="destination"/> is the incorrect length to receive the private seed.
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while exporting the private seed.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.GenerateKey(System.Security.Cryptography.MLDsaAlgorithm)">
<summary>
Generates a new ML-DSA key.
</summary>
<param name="algorithm">
An algorithm identifying what kind of ML-DSA key to generate.
</param>
<returns>
The generated key.
</returns>
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm" /> is <see langword="null" />
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occured generating the ML-DSA key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA public key from an X.509 SubjectPublicKeyInfo structure.
</summary>
<param name="source">
The bytes of an X.509 SubjectPublicKeyInfo structure in the ASN.1-DER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-DER-encoded X.509 SubjectPublicKeyInfo structure.
</para>
<para>-or-</para>
<para>
The SubjectPublicKeyInfo value does not represent an ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportSubjectPublicKeyInfo(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportSubjectPublicKeyInfo(System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA private key from a PKCS#8 PrivateKeyInfo structure.
</summary>
<param name="source">
The bytes of a PKCS#8 PrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 PrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The PrivateKeyInfo value does not represent an ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportPkcs8PrivateKey(System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportPkcs8PrivateKey(System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="passwordBytes">
The bytes to use as a password when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The EncryptedPrivateKeyInfo indicates the Key Derivation Function (KDF) to apply is the legacy PKCS#12 KDF,
which requires <see cref="T:System.Char"/>-based passwords.
</para>
<para>-or-</para>
<para>
The value does not represent an ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA private key from a PKCS#8 EncryptedPrivateKeyInfo structure.
</summary>
<param name="password">
The password to use when decrypting the key material.
</param>
<param name="source">
The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The contents of <paramref name="source"/> do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The specified password is incorrect.
</para>
<para>-or-</para>
<para>
The value does not represent an ML-DSA key.
</para>
<para>-or-</para>
<para>
<paramref name="source" /> contains trailing data after the ASN.1 structure.
</para>
<para>-or-</para>
<para>
The algorithm-specific import failed.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportEncryptedPkcs8PrivateKey(System.String,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="password" /> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportFromPem(System.ReadOnlySpan{System.Char})">
<summary>
Imports an ML-DSA key from an RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The text of the PEM key to import.
</param>
<returns>
The imported ML-DSA key.
</returns>
<exception cref="T:System.ArgumentException">
<para><paramref name="source" /> contains an encrypted PEM-encoded key.</para>
<para>-or-</para>
<para><paramref name="source" /> contains multiple PEM-encoded ML-DSA keys.</para>
<para>-or-</para>
<para><paramref name="source" /> contains no PEM-encoded ML-DSA keys.</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while importing the key.
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is raised to prevent importing a key when the key is ambiguous.
</para>
<para>
This method supports the following PEM labels:
<list type="bullet">
<item><description>PUBLIC KEY</description></item>
<item><description>PRIVATE KEY</description></item>
</list>
</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportFromPem(System.String)">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportFromPem(System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})">
<summary>
Imports an ML-DSA key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.</param>
<param name="password">
The password to use for decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
<remarks>
<para>
When the base-64 decoded contents of <paramref name="source" /> indicate an algorithm that uses PBKDF1
(Password-Based Key Derivation Function 1) or PBKDF2 (Password-Based Key Derivation Function 2),
the password is converted to bytes via the UTF-8 encoding.
</para>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA key from an encrypted RFC 7468 PEM-encoded string.
</summary>
<param name="source">
The PEM text of the encrypted key to import.</param>
<param name="passwordBytes">
The bytes to use as a password when decrypting the key material.
</param>
<exception cref="T:System.ArgumentException">
<para>
<paramref name="source"/> does not contain a PEM-encoded key with a recognized label.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> contains multiple PEM-encoded keys with a recognized label.
</para>
</exception>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
The password is incorrect.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
indicate the key is for an algorithm other than the algorithm
represented by this instance.
</para>
<para>-or-</para>
<para>
The base-64 decoded contents of the PEM text from <paramref name="source" />
represent the key in a format that is not supported.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
<exception cref="T:System.PlatformNotSupportedException">
The platform does not support ML-DSA. Callers can use the <see cref="P:System.Security.Cryptography.MLDsa.IsSupported" /> property
to determine if the platform supports ML-DSA.
</exception>
<remarks>
<para>
Unsupported or malformed PEM-encoded objects will be ignored. If multiple supported PEM labels
are found, an exception is thrown to prevent importing a key when
the key is ambiguous.
</para>
<para>This method supports the <c>ENCRYPTED PRIVATE KEY</c> PEM label.</para>
</remarks>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportFromEncryptedPem(System.String,System.String)">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="password" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportFromEncryptedPem(System.String,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportFromEncryptedPem(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="source" /> or <paramref name="passwordBytes" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportMLDsaPublicKey(System.Security.Cryptography.MLDsaAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA public key in the FIPS 204 public key format.
</summary>
<param name="algorithm">
The specific ML-DSA algorithm for this key.
</param>
<param name="source">
The bytes of a FIPS 204 public key.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
<paramref name="algorithm"/> is not a valid ML-DSA algorithm identifier.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> is not the correct size for the specified algorithm.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportMLDsaPublicKey(System.Security.Cryptography.MLDsaAlgorithm,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportMLDsaPublicKey(System.Security.Cryptography.MLDsaAlgorithm,System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportMLDsaPrivateKey(System.Security.Cryptography.MLDsaAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA private key in the FIPS 204 private key format.
</summary>
<param name="algorithm">
The specific ML-DSA algorithm for this key.
</param>
<param name="source">
The bytes of a FIPS 204 private key.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
<paramref name="algorithm"/> is not a valid ML-DSA algorithm identifier.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> is not the correct size for the specified algorithm.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportMLDsaPrivateKey(System.Security.Cryptography.MLDsaAlgorithm,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportMLDsaPrivateKey(System.Security.Cryptography.MLDsaAlgorithm,System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportMLDsaPrivateSeed(System.Security.Cryptography.MLDsaAlgorithm,System.ReadOnlySpan{System.Byte})">
<summary>
Imports an ML-DSA private key from its private seed value.
</summary>
<param name="algorithm">
The specific ML-DSA algorithm for this key.
</param>
<param name="source">
The bytes the key seed.
</param>
<returns>
The imported key.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
<para>
<paramref name="algorithm"/> is not a valid ML-DSA algorithm identifier.
</para>
<para>-or-</para>
<para>
<paramref name="source"/> is not the correct size for the specified algorithm.
</para>
<para>-or-</para>
<para>
An error occurred while importing the key.
</para>
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ImportMLDsaPrivateSeed(System.Security.Cryptography.MLDsaAlgorithm,System.Byte[])">
<inheritdoc cref="M:System.Security.Cryptography.MLDsa.ImportMLDsaPrivateSeed(System.Security.Cryptography.MLDsaAlgorithm,System.ReadOnlySpan{System.Byte})" />
<exception cref="T:System.ArgumentNullException">
<paramref name="algorithm"/> or <paramref name="source" /> is <see langword="null" />.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.Dispose(System.Boolean)">
<summary>
Called by the <c>Dispose()</c> and <c>Finalize()</c> methods to release the managed and unmanaged
resources used by the current instance of the <see cref="T:System.Security.Cryptography.MLDsa"/> class.
</summary>
<param name="disposing">
<see langword="true" /> to release managed and unmanaged resources;
<see langword="false" /> to release only unmanaged resources.
</param>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignDataCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte})">
<summary>
When overridden in a derived class, computes the signature of the specified data and context,
writing it into the provided buffer.
</summary>
<param name="data">
The data to sign.
</param>
<param name="context">
The signature context.
</param>
<param name="destination">
The buffer to receive the signature, which will always be the exactly correct size for the algorithm.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while signing the data.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyDataCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
When overridden in a derived class, verifies the signature of the specified data and context.
</summary>
<param name="data">
The data to verify.
</param>
<param name="context">
The signature context.
</param>
<param name="signature">
The signature to verify.
</param>
<returns>
<see langword="true"/> if the signature validates the data; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while verifying the data.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.SignPreHashCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.String,System.Span{System.Byte})">
<summary>
When overridden in a derived class, computes the pre-hash signature of the specified hash and context,
writing it into the provided buffer.
</summary>
<param name="hash">
The hash to sign.
</param>
<param name="context">
The signature context.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="destination">
The buffer to receive the signature, which will always be the exactly correct size for the algorithm.
</param>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while signing the hash.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.VerifyPreHashCore(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.String,System.ReadOnlySpan{System.Byte})">
<summary>
When overridden in a derived class, verifies the pre-hash signature of the specified hash and context.
</summary>
<param name="hash">
The data to verify.
</param>
<param name="context">
The signature context.
</param>
<param name="hashAlgorithmOid">
The OID of the hash algorithm used to create the hash.
</param>
<param name="signature">
The signature to verify.
</param>
<returns>
<see langword="true"/> if the signature validates the hash; otherwise, <see langword="false"/>.
</returns>
<exception cref="T:System.Security.Cryptography.CryptographicException">
An error occurred while verifying the hash.
</exception>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPublicKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the FIPS 204 public key to the specified buffer.
</summary>
<param name="destination">
The buffer to receive the public key.
</param>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPrivateKeyCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the FIPS 204 private key to the specified buffer.
</summary>
<param name="destination">
The buffer to receive the private key.
</param>
</member>
<member name="M:System.Security.Cryptography.MLDsa.ExportMLDsaPrivateSeedCore(System.Span{System.Byte})">
<summary>
When overridden in a derived class, exports the private seed to the specified buffer.
</summary>
<param name="destination">
The buffer to receive the private seed.
</param>
</member>
<member name="T:System.Security.Cryptography.MLDsaAlgorithm">
<summary>
Represents a specific algorithm within the ML-DSA family.
</summary>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.Name">
<summary>
Gets the underlying string representation of the algorithm name.
</summary>
<value>
The underlying string representation of the algorithm name.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.PrivateKeySizeInBytes">
<summary>
Gets the size, in bytes, of the ML-DSA private key for the current ML-DSA algorithm.
</summary>
<value>
The size, in bytes, of the ML-DSA private key for the current ML-DSA algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.PrivateSeedSizeInBytes">
<summary>
Gets the size, in bytes, of the ML-DSA private seed for the current ML-DSA algorithm.
</summary>
<value>
The size, in bytes, of the ML-DSA private seed for the current ML-DSA algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.PublicKeySizeInBytes">
<summary>
Gets the size of the ML-DSA public key for the current ML-DSA algorithm.
</summary>
<value>
The size, in bytes, of the ML-DSA public key for the current ML-DSA algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.SignatureSizeInBytes">
<summary>
Gets the size, in bytes, of the signature for the current ML-DSA algorithm.
</summary>
<value>
The size, in bytes, of the signature for the current ML-DSA algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.MuSizeInBytes">
<summary>
Gets the size, in bytes, of the mu (&#x3BC;) value for the current ML-DSA algorithm.
</summary>
<value>
The size, in bytes, of the mu (&#x3BC;) value for the current ML-DSA algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.MLDsa44">
<summary>
Gets an ML-DSA algorithm identifier for the ML-DSA-44 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-44 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.MLDsa65">
<summary>
Gets an ML-DSA algorithm identifier for the ML-DSA-65 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-65 algorithm.
</value>
</member>
<member name="P:System.Security.Cryptography.MLDsaAlgorithm.MLDsa87">
<summary>
Gets an ML-DSA algorithm identifier for the ML-DSA-87 algorithm.
</summary>
<value>
An ML-DSA algorithm identifier for the ML-DSA-87 algorithm.
</value>
</member>
<member name="M:System.Security.Cryptography.MLDsaAlgorithm.Equals(System.Security.Cryptography.MLDsaAlgorithm)">
<summary>
Compares two <see cref="T:System.Security.Cryptography.MLDsaAlgorithm" /> objects.
</summary>
<param name="other">
An object to be compared to the current <see cref="T:System.Security.Cryptography.MLDsaAlgorithm"/> object.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.MLDsaAlgorithm.Equals(System.Object)">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.MLDsaAlgorithm.GetHashCode">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.MLDsaAlgorithm.ToString">
<inheritdoc />
</member>
<member name="M:System.Security.Cryptography.MLDsaAlgorithm.op_Equality(System.Security.Cryptography.MLDsaAlgorithm,System.Security.Cryptography.MLDsaAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.MLDsaAlgorithm" /> objects specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="M:System.Security.Cryptography.MLDsaAlgorithm.op_Inequality(System.Security.Cryptography.MLDsaAlgorithm,System.Security.Cryptography.MLDsaAlgorithm)">
<summary>
Determines whether two <see cref="T:System.Security.Cryptography.MLDsaAlgorithm" /> objects do not specify the same algorithm name.
</summary>
<param name="left">
An object that specifies an algorithm name.
</param>
<param name="right">
A second object, to be compared to the object that is identified by the <paramref name="left" /> parameter.
</param>
<returns>
<see langword="true" /> if the objects are not considered equal; otherwise, <see langword="false" />.
</returns>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute">
<summary>
Indicates that an API is experimental and it may change in the future.
</summary>
<remarks>
This attribute allows call sites to be flagged with a diagnostic that indicates that an experimental
feature is used. Authors can use this attribute to ship preview features in their assemblies.
</remarks>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute"/> class, specifying the ID that the compiler will use
when reporting a use of the API the attribute applies to.
</summary>
<param name="diagnosticId">The ID that the compiler will use when reporting a use of the API the attribute applies to.</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.DiagnosticId">
<summary>
Gets the ID that the compiler will use when reporting a use of the API the attribute applies to.
</summary>
<value>The unique diagnostic ID.</value>
<remarks>
The diagnostic ID is shown in build output for warnings and errors.
<para>This property represents the unique ID that can be used to suppress the warnings or errors, if needed.</para>
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.Message">
<summary>
Gets or sets an optional message associated with the experimental attribute.
</summary>
<value>The message that provides additional information about the experimental feature.</value>
<remarks>
This message can be used to provide more context or guidance about the experimental feature.
</remarks>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.UrlFormat">
<summary>
Gets or sets the URL for corresponding documentation.
The API accepts a format string instead of an actual URL, creating a generic URL that includes the diagnostic ID.
</summary>
<value>The format string that represents a URL to corresponding documentation.</value>
<remarks>An example format string is <c>https://contoso.com/obsoletion-warnings/{0}</c>.</remarks>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
<summary>Specifies that null is allowed as an input even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
<summary>Specifies that null is disallowed as an input even if the corresponding type allows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
<summary>Specifies that an output may be null even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
<summary>Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter may be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
<summary>Specifies that the output will be non-null if the named parameter is non-null.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with the associated parameter name.</summary>
<param name="parameterName">
The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
<summary>Gets the associated parameter name.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
<summary>Applied to a method that will never return under any circumstance.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
<summary>Specifies that the method will not return if the associated Boolean parameter is passed the specified value.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified parameter value.</summary>
<param name="parameterValue">
The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
the associated parameter matches this value.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
<summary>Gets the condition parameter value.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with a field or property member.</summary>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
<summary>Initializes the attribute with the list of field and property members.</summary>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
<summary>Initializes the attribute with the specified return value condition and a field or property member.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated field or property member will not be null.
</param>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
<summary>Initializes the attribute with the specified return value condition and list of field and property members.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated field and property members will not be null.
</param>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
<member name="P:System.HexConverter.CharToHexLookup">
<summary>Map from an ASCII char to its hex value, e.g. arr['b'] == 11. 0xFF means it's not a hex digit.</summary>
</member>
<member name="P:System.SR.Arg_CryptographyException">
<summary>Error occurred during a cryptographic operation.</summary>
</member>
<member name="P:System.SR.Argument_DestinationImprecise">
<summary>Destination must be exactly {0} bytes.</summary>
</member>
<member name="P:System.SR.Argument_DestinationTooShort">
<summary>Destination is too short.</summary>
</member>
<member name="P:System.SR.Argument_HashImprecise">
<summary>Hash must be exactly {0} bytes.</summary>
</member>
<member name="P:System.SR.Argument_InvalidOffLen">
<summary>Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.</summary>
</member>
<member name="P:System.SR.Argument_InvalidValue">
<summary>Value was invalid.</summary>
</member>
<member name="P:System.SR.Argument_KemInvalidCiphertextLength">
<summary>The specified ciphertext is not the correct length for the ML-KEM algorithm.</summary>
</member>
<member name="P:System.SR.Argument_KemInvalidDecapsulationKeyLength">
<summary>The specified decapsulation key is not the correct length for the ML-KEM algorithm.</summary>
</member>
<member name="P:System.SR.Argument_KemInvalidEncapsulationKeyLength">
<summary>The specified encapsulation key is not the correct length for the ML-KEM algorithm.</summary>
</member>
<member name="P:System.SR.Argument_KemInvalidSeedLength">
<summary>The specified private seed is not the correct length for the ML-KEM algorithm.</summary>
</member>
<member name="P:System.SR.Argument_MLDsaMuInvalidLength">
<summary>The specified mu value is not the correct length for the ML-DSA algorithm.</summary>
</member>
<member name="P:System.SR.Argument_PemEncoding_InvalidLabel">
<summary>The specified label is not valid.</summary>
</member>
<member name="P:System.SR.Argument_PemEncoding_EncodedSizeTooLarge">
<summary>The encoded PEM size is too large to represent as a signed 32-bit integer.</summary>
</member>
<member name="P:System.SR.Argument_PemEncoding_NoPemFound">
<summary>No PEM encoded data found.</summary>
</member>
<member name="P:System.SR.Argument_PemImport_NoPemFound">
<summary>No supported key formats were found. Check that the input represents the contents of a PEM-encoded key file, not the path to such a file.</summary>
</member>
<member name="P:System.SR.Argument_PemImport_AmbiguousPem">
<summary>The input contains multiple keys, but only one key can be imported.</summary>
</member>
<member name="P:System.SR.Argument_PemImport_EncryptedPem">
<summary>An encrypted key was found, but no password was provided. Use ImportFromEncryptedPem to import this key.</summary>
</member>
<member name="P:System.SR.Argument_PrivateKeyWrongSizeForAlgorithm">
<summary>The private key is not the correct size for the indicated algorithm.</summary>
</member>
<member name="P:System.SR.Argument_PrivateSeedWrongSizeForAlgorithm">
<summary>The private seed is not the correct size for the indicated algorithm.</summary>
</member>
<member name="P:System.SR.Argument_PublicKeyWrongSizeForAlgorithm">
<summary>The public key is not the correct size for the indicated algorithm.</summary>
</member>
<member name="P:System.SR.Argument_SignatureContextTooLong255">
<summary>The specified signature context exceeds the maximum length of 255 bytes.</summary>
</member>
<member name="P:System.SR.ArgumentOutOfRange_Generic_MustBeNonNegativeNonZero">
<summary>{0} ('{1}') must be a non-negative and non-zero value.</summary>
</member>
<member name="P:System.SR.ArgumentOutOfRange_NeedPositiveNumber">
<summary>A positive number is required.</summary>
</member>
<member name="P:System.SR.ArgumentOutOfRange_NeedNonNegNum">
<summary>Non-negative number required.</summary>
</member>
<member name="P:System.SR.ArgumentOutOfRange_KOut_Too_Large">
<summary>The number of bytes requested is too large. The number of bytes produced by SP800108HmacCounterKdf cannot exceed 536,870,911 bytes.</summary>
</member>
<member name="P:System.SR.Argument_EmptyString">
<summary>The value cannot be an empty string.</summary>
</member>
<member name="P:System.SR.Cryptography_AlgKdfRequiresChars">
<summary>The KDF for algorithm '{0}' requires a char-based password input.</summary>
</member>
<member name="P:System.SR.Cryptography_AlgorithmNotSupported">
<summary>Algorithm '{0}' is not supported on this platform.</summary>
</member>
<member name="P:System.SR.Cryptography_ArgMLDsaRequiresMLDsaKey">
<summary>Keys used with the MLDsaCng algorithm must have an algorithm group of MLDsa.</summary>
</member>
<member name="P:System.SR.Cryptography_ArgMLKemRequiresMLKemKey">
<summary>Keys used with the MLKemCng algorithm must have an algorithm group of MLKem.</summary>
</member>
<member name="P:System.SR.Cryptography_AuthTagMismatch">
<summary>The computed authentication tag did not match the input authentication tag.</summary>
</member>
<member name="P:System.SR.Cryptography_Cert_AlreadyHasPrivateKey">
<summary>The certificate already has an associated private key.</summary>
</member>
<member name="P:System.SR.Cryptography_CompositeSignDataError">
<summary>Composite signature generation failed due to an error in one or both of the components.</summary>
</member>
<member name="P:System.SR.Cryptography_CurveNotSupported">
<summary>The specified curve '{0}' or its parameters are not valid for this platform.</summary>
</member>
<member name="P:System.SR.Cryptography_Der_Invalid_Encoding">
<summary>ASN1 corrupted data.</summary>
</member>
<member name="P:System.SR.Cryptography_HashAlgorithmNameNullOrEmpty">
<summary>The hash algorithm name cannot be null or empty.</summary>
</member>
<member name="P:System.SR.Cryptography_HashLengthMismatch">
<summary>The specified hash is not a valid size for this hash algorithm.</summary>
</member>
<member name="P:System.SR.Cryptography_HashMLDsaAlgorithmMismatch">
<summary>HashML-DSA '{0}' cannot be used with hash algorithm '{1}'.</summary>
</member>
<member name="P:System.SR.Cryptography_IncorrectTagLength">
<summary>The size of the specified tag does not match the expected size of {0}.</summary>
</member>
<member name="P:System.SR.Cryptography_InvalidECPrivateKeyParameters">
<summary>The specified key parameters are not valid. X and Y, or D, must be specified. X, Y must be the same length. If D is specified it must be the same length as X and Y if also specified.</summary>
</member>
<member name="P:System.SR.Cryptography_InvalidKeySize">
<summary>Specified key is not a valid size for this algorithm.</summary>
</member>
<member name="P:System.SR.Cryptography_InvalidTagLength">
<summary>The specified tag is not a valid size for this algorithm.</summary>
</member>
<member name="P:System.SR.Cryptography_InvalidNonceLength">
<summary>The specified nonce is not a valid size for this algorithm.</summary>
</member>
<member name="P:System.SR.Cryptography_InvalidOidFormat">
<summary>Invalid OID format.</summary>
</member>
<member name="P:System.SR.Cryptography_InvalidRsaParameters">
<summary>The specified RSA parameters are not valid. Exponent and Modulus are required. If D is present, it must have the same length as Modulus. If D is present, P, Q, DP, DQ, and InverseQ are required and must have half the length of Modulus, rounded up, otherwis ...</summary>
</member>
<member name="P:System.SR.Cryptography_KemPkcs8KeyMismatch">
<summary>The specified PKCS#8 key contains a seed that does not match the expanded key.</summary>
</member>
<member name="P:System.SR.Cryptography_KemNoDecapsulationKey">
<summary>The current instance does not contain a decapsulation key.</summary>
</member>
<member name="P:System.SR.Cryptography_KeyNotExtractable">
<summary>The key does not permit being exported.</summary>
</member>
<member name="P:System.SR.Cryptography_KeyWrongSizeForAlgorithm">
<summary>The specified key is not the correct size for the indicated algorithm.</summary>
</member>
<member name="P:System.SR.Cryptography_MLDsaPkcs8KeyMismatch">
<summary>The specified PKCS#8 key contains a seed that does not match the expanded key.</summary>
</member>
<member name="P:System.SR.Cryptography_NoPrivateKeyAvailable">
<summary>The current instance does not contain a private key.</summary>
</member>
<member name="P:System.SR.Cryptography_NotValidPrivateKey">
<summary>Key is not a valid private key.</summary>
</member>
<member name="P:System.SR.Cryptography_NotValidPublicOrPrivateKey">
<summary>Key is not a valid public or private key.</summary>
</member>
<member name="P:System.SR.Cryptography_OverlappingBuffers">
<summary>One or more provided buffers overlap.</summary>
</member>
<member name="P:System.SR.Cryptography_Pfx_BadPassword">
<summary>The certificate data cannot be read with the provided password, the password may be incorrect.</summary>
</member>
<member name="P:System.SR.Cryptography_Pfx_NoCertificates">
<summary>The provided PFX data contains no certificates.</summary>
</member>
<member name="P:System.SR.Cryptography_Pkcs8_EncryptedReadFailed">
<summary>The EncryptedPrivateKeyInfo structure was decoded but was not successfully interpreted, the password may be incorrect.</summary>
</member>
<member name="P:System.SR.Cryptography_PlaintextCiphertextLengthMismatch">
<summary>Plaintext and ciphertext must have the same length.</summary>
</member>
<member name="P:System.SR.Cryptography_PqcNoSeed">
<summary>The current instance does not contain a seed.</summary>
</member>
<member name="P:System.SR.Cryptography_PrivateKey_DoesNotMatch">
<summary>The provided key does not match the public key for this certificate.</summary>
</member>
<member name="P:System.SR.Cryptography_PrivateKey_WrongAlgorithm">
<summary>The provided key does not match the public key algorithm for this certificate.</summary>
</member>
<member name="P:System.SR.Cryptography_RSAPrivateKey_VersionTooNew">
<summary>The provided RSAPrivateKey value has version '{0}', but version '{1}' is the maximum supported.</summary>
</member>
<member name="P:System.SR.Cryptography_UnknownAlgorithmIdentifier">
<summary>The algorithm identified by '{0}' is unknown, not valid for the requested usage, or was not handled.</summary>
</member>
<member name="P:System.SR.Cryptography_UnknownHashAlgorithm">
<summary>'{0}' is not a known hash algorithm.</summary>
</member>
<member name="P:System.SR.Cryptography_X509_PKCS12_LimitExceeded">
<summary>The PKCS#12/PFX violated the '{0}' limit.</summary>
</member>
<member name="P:System.SR.Cryptography_X509_PKCS12_LimitsReadOnly">
<summary>This Pkcs12LoaderLimits object has been made read-only and can no longer be modified.</summary>
</member>
<member name="T:System.Runtime.InteropServices.LibraryImportAttribute">
<summary>
Attribute used to indicate a source generator should create a function for marshalling
arguments instead of relying on the runtime to generate an equivalent marshalling function at run-time.
</summary>
<remarks>
This attribute is meaningless if the source generator associated with it is not enabled.
The current built-in source generator only supports C# and only supplies an implementation when
applied to static, partial, non-generic methods.
</remarks>
</member>
<member name="M:System.Runtime.InteropServices.LibraryImportAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.LibraryImportAttribute"/>.
</summary>
<param name="libraryName">Name of the library containing the import.</param>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.LibraryName">
<summary>
Gets the name of the library containing the import.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.EntryPoint">
<summary>
Gets or sets the name of the entry point to be called.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling">
<summary>
Gets or sets how to marshal string arguments to the method.
</summary>
<remarks>
If this field is set to a value other than <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />,
<see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType" /> must not be specified.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType">
<summary>
Gets or sets the <see cref="T:System.Type"/> used to control how string arguments to the method are marshalled.
</summary>
<remarks>
If this field is specified, <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling" /> must not be specified
or must be set to <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.SetLastError">
<summary>
Gets or sets whether the callee sets an error (SetLastError on Windows or errno
on other platforms) before returning from the attributed method.
</summary>
</member>
<member name="T:System.Runtime.InteropServices.StringMarshalling">
<summary>
Specifies how strings should be marshalled for generated p/invokes
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Custom">
<summary>
Indicates the user is supplying a specific marshaller in <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType"/>.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf8">
<summary>
Use the platform-provided UTF-8 marshaller.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf16">
<summary>
Use the platform-provided UTF-16 marshaller.
</summary>
</member>
<member name="T:System.Runtime.Versioning.OSPlatformAttribute">
<summary>
Base type for all platform-specific API attributes.
</summary>
</member>
<member name="T:System.Runtime.Versioning.TargetPlatformAttribute">
<summary>
Records the platform that the project targeted.
</summary>
</member>
<member name="T:System.Runtime.Versioning.SupportedOSPlatformAttribute">
<summary>
Records the operating system (and minimum version) that supports an API. Multiple attributes can be
applied to indicate support on multiple operating systems.
</summary>
<remarks>
Callers can apply a <see cref="T:System.Runtime.Versioning.SupportedOSPlatformAttribute" />
or use guards to prevent calls to APIs on unsupported operating systems.
A given platform should only be specified once.
</remarks>
</member>
<member name="T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute">
<summary>
Marks APIs that were removed in a given operating system version.
</summary>
<remarks>
Primarily used by OS bindings to indicate APIs that are only available in
earlier versions.
</remarks>
</member>
<member name="T:System.Runtime.Versioning.ObsoletedOSPlatformAttribute">
<summary>
Marks APIs that were obsoleted in a given operating system version.
</summary>
<remarks>
Primarily used by OS bindings to indicate APIs that should not be used anymore.
</remarks>
</member>
<member name="M:System.Runtime.Versioning.ObsoletedOSPlatformAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.Versioning.ObsoletedOSPlatformAttribute"/> class with the specified platform name.
</summary>
<param name="platformName">The name of the platform where the API was obsoleted.</param>
</member>
<member name="M:System.Runtime.Versioning.ObsoletedOSPlatformAttribute.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.Versioning.ObsoletedOSPlatformAttribute"/> class with the specified platform name and message.
</summary>
<param name="platformName">The name of the platform where the API was obsoleted.</param>
<param name="message">The message that explains the obsolescence.</param>
</member>
<member name="P:System.Runtime.Versioning.ObsoletedOSPlatformAttribute.Message">
<summary>
Gets the message that explains the obsolescence.
</summary>
</member>
<member name="P:System.Runtime.Versioning.ObsoletedOSPlatformAttribute.Url">
<summary>
Gets or sets the URL that provides more information about the obsolescence.
</summary>
</member>
<member name="T:System.Runtime.Versioning.SupportedOSPlatformGuardAttribute">
<summary>
Annotates a custom guard field, property or method with a supported platform name and optional version.
Multiple attributes can be applied to indicate guard for multiple supported platforms.
</summary>
<remarks>
Callers can apply a <see cref="T:System.Runtime.Versioning.SupportedOSPlatformGuardAttribute" /> to a field, property or method
and use that field, property or method in a conditional or assert statements in order to safely call platform specific APIs.
The type of the field or property should be boolean, the method return type should be boolean in order to be used as platform guard.
</remarks>
</member>
<member name="T:System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute">
<summary>
Annotates the custom guard field, property or method with an unsupported platform name and optional version.
Multiple attributes can be applied to indicate guard for multiple unsupported platforms.
</summary>
<remarks>
Callers can apply a <see cref="T:System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute" /> to a field, property or method
and use that field, property or method in a conditional or assert statements as a guard to safely call APIs unsupported on those platforms.
The type of the field or property should be boolean, the method return type should be boolean in order to be used as platform guard.
</remarks>
</member>
<member name="T:System.ExceptionPolyfills">
<summary>Provides downlevel polyfills for static methods on Exception-derived types.</summary>
</member>
<member name="T:System.Index">
<summary>Represent a type can be used to index a collection either from the start or the end.</summary>
<remarks>
Index is used by the C# compiler to support the new index syntax
<code>
int[] someArray = new int[5] { 1, 2, 3, 4, 5 } ;
int lastElement = someArray[^1]; // lastElement = 5
</code>
</remarks>
</member>
<member name="M:System.Index.#ctor(System.Int32,System.Boolean)">
<summary>Construct an Index using a value and indicating if the index is from the start or from the end.</summary>
<param name="value">The index value. it has to be zero or positive number.</param>
<param name="fromEnd">Indicating if the index is from the start or from the end.</param>
<remarks>
If the Index constructed from the end, index value 1 means pointing at the last element and index value 0 means pointing at beyond last element.
</remarks>
</member>
<member name="P:System.Index.Start">
<summary>Create an Index pointing at first element.</summary>
</member>
<member name="P:System.Index.End">
<summary>Create an Index pointing at beyond last element.</summary>
</member>
<member name="M:System.Index.FromStart(System.Int32)">
<summary>Create an Index from the start at the position indicated by the value.</summary>
<param name="value">The index value from the start.</param>
</member>
<member name="M:System.Index.FromEnd(System.Int32)">
<summary>Create an Index from the end at the position indicated by the value.</summary>
<param name="value">The index value from the end.</param>
</member>
<member name="P:System.Index.Value">
<summary>Returns the index value.</summary>
</member>
<member name="P:System.Index.IsFromEnd">
<summary>Indicates whether the index is from the start or the end.</summary>
</member>
<member name="M:System.Index.GetOffset(System.Int32)">
<summary>Calculate the offset from the start using the giving collection length.</summary>
<param name="length">The length of the collection that the Index will be used with. length has to be a positive value</param>
<remarks>
For performance reason, we don't validate the input length parameter and the returned offset value against negative values.
we don't validate either the returned offset is greater than the input length.
It is expected Index will be used with collections which always have non negative length/count. If the returned offset is negative and
then used to index a collection will get out of range exception which will be same affect as the validation.
</remarks>
</member>
<member name="M:System.Index.Equals(System.Object)">
<summary>Indicates whether the current Index object is equal to another object of the same type.</summary>
<param name="value">An object to compare with this object</param>
</member>
<member name="M:System.Index.Equals(System.Index)">
<summary>Indicates whether the current Index object is equal to another Index object.</summary>
<param name="other">An object to compare with this object</param>
</member>
<member name="M:System.Index.GetHashCode">
<summary>Returns the hash code for this instance.</summary>
</member>
<member name="M:System.Index.op_Implicit(System.Int32)~System.Index">
<summary>Converts integer number to an Index.</summary>
</member>
<member name="M:System.Index.ToString">
<summary>Converts the value of the current Index object to its equivalent string representation.</summary>
</member>
<member name="T:System.Range">
<summary>Represent a range has start and end indexes.</summary>
<remarks>
Range is used by the C# compiler to support the range syntax.
<code>
int[] someArray = new int[5] { 1, 2, 3, 4, 5 };
int[] subArray1 = someArray[0..2]; // { 1, 2 }
int[] subArray2 = someArray[1..^0]; // { 2, 3, 4, 5 }
</code>
</remarks>
</member>
<member name="P:System.Range.Start">
<summary>Represent the inclusive start index of the Range.</summary>
</member>
<member name="P:System.Range.End">
<summary>Represent the exclusive end index of the Range.</summary>
</member>
<member name="M:System.Range.#ctor(System.Index,System.Index)">
<summary>Construct a Range object using the start and end indexes.</summary>
<param name="start">Represent the inclusive start index of the range.</param>
<param name="end">Represent the exclusive end index of the range.</param>
</member>
<member name="M:System.Range.Equals(System.Object)">
<summary>Indicates whether the current Range object is equal to another object of the same type.</summary>
<param name="value">An object to compare with this object</param>
</member>
<member name="M:System.Range.Equals(System.Range)">
<summary>Indicates whether the current Range object is equal to another Range object.</summary>
<param name="other">An object to compare with this object</param>
</member>
<member name="M:System.Range.GetHashCode">
<summary>Returns the hash code for this instance.</summary>
</member>
<member name="M:System.Range.ToString">
<summary>Converts the value of the current Range object to its equivalent string representation.</summary>
</member>
<member name="M:System.Range.StartAt(System.Index)">
<summary>Create a Range object starting from start index to the end of the collection.</summary>
</member>
<member name="M:System.Range.EndAt(System.Index)">
<summary>Create a Range object starting from first element in the collection to the end Index.</summary>
</member>
<member name="P:System.Range.All">
<summary>Create a Range object starting from first element to the end.</summary>
</member>
<member name="M:System.Range.GetOffsetAndLength(System.Int32)">
<summary>Calculate the start offset and length of range object using a collection length.</summary>
<param name="length">The length of the collection that the range will be used with. length has to be a positive value.</param>
<remarks>
For performance reason, we don't validate the input length parameter against negative values.
It is expected Range will be used with collections which always have non negative length/count.
We validate the range is inside the length scope though.
</remarks>
</member>
<member name="M:Interop.Kernel32.GetMessage(System.Int32)">
<summary>
Returns a string message for the specified Win32 error code.
</summary>
</member>
<member name="T:Interop.BCrypt">
<summary>
BCrypt types related to asymmetric encryption algorithms
</summary>
</member>
<member name="M:Interop.BCrypt.Emit(System.Byte[],System.Int32@,System.Byte[])">
<summary>
Append "value" to the data already in blob.
</summary>
</member>
<member name="M:Interop.BCrypt.EmitByte(System.Byte[],System.Int32@,System.Byte,System.Int32)">
<summary>
Append "value" to the data already in blob.
</summary>
</member>
<member name="M:Interop.BCrypt.EmitBigEndian(System.Byte[],System.Int32@,System.Int32)">
<summary>
Append "value" in big Endian format to the data already in blob.
</summary>
</member>
<member name="M:Interop.BCrypt.Consume(System.Byte[],System.Int32@,System.Int32)">
<summary>
Peel off the next "count" bytes in blob and return them in a byte array.
</summary>
</member>
<member name="M:Interop.BCrypt.Consume(System.ReadOnlySpan{System.Byte},System.Int32@,System.Int32)">
<summary>
Peel off the next "count" bytes in blob and return them in a byte array.
</summary>
</member>
<member name="M:Interop.BCrypt.Consume(System.ReadOnlySpan{System.Byte},System.Int32@,System.Int32,System.Span{System.Byte})">
<summary>
Peel off the next "count" bytes in blob and copy them into the destination.
</summary>
</member>
<member name="T:Interop.BCrypt.KeyBlobMagicNumber">
<summary>
Magic numbers identifying blob types
</summary>
</member>
<member name="T:Interop.BCrypt.KeyBlobType">
<summary>
Well known key blob types
</summary>
</member>
<member name="T:Interop.BCrypt.BCRYPT_RSAKEY_BLOB">
<summary>
The BCRYPT_RSAKEY_BLOB structure is used as a header for an RSA public key or private key BLOB in memory.
</summary>
</member>
<member name="T:Interop.BCrypt.BCRYPT_DSA_KEY_BLOB">
<summary>
The BCRYPT_DSA_KEY_BLOB structure is used as a v1 header for a DSA public key or private key BLOB in memory.
</summary>
</member>
<member name="T:Interop.BCrypt.BCRYPT_DSA_KEY_BLOB_V2">
<summary>
The BCRYPT_DSA_KEY_BLOB structure is used as a v2 header for a DSA public key or private key BLOB in memory.
</summary>
</member>
<member name="T:Interop.BCrypt.BCRYPT_ECCKEY_BLOB">
<summary>
The BCRYPT_ECCKEY_BLOB structure is used as a header for an ECC public key or private key BLOB in memory.
</summary>
</member>
<member name="T:Interop.BCrypt.ECC_CURVE_TYPE_ENUM">
<summary>
Represents the type of curve.
</summary>
</member>
<member name="T:Interop.BCrypt.ECC_CURVE_ALG_ID_ENUM">
<summary>
Represents the algorithm that was used with Seed to generate A and B.
</summary>
</member>
<member name="T:Interop.BCrypt.BCRYPT_ECCFULLKEY_BLOB">
<summary>
Used as a header to curve parameters including the public and potentially private key.
</summary>
</member>
<member name="T:Interop.BCrypt.BCRYPT_PQDSA_KEY_BLOB">
<summary>
Used as a header to PQC parameters including the parameters set and key/seed.
</summary>
</member>
<member name="T:Interop.BCrypt.CngBufferDescriptors">
<summary>
NCrypt or BCrypt buffer descriptors
</summary>
</member>
<member name="T:Interop.BCrypt.BCryptBuffer">
<summary>
BCrypt buffer
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPTBUFFER_VERSION">
<summary>
The version of BCryptBuffer
</summary>
</member>
<member name="T:Interop.BCrypt.BCryptBufferDesc">
<summary>
Contains a set of generic CNG buffers.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_ECC_PARAMETER_HEADER_V1">
<summary>
The version of BCRYPT_ECC_PARAMETER_HEADER
</summary>
</member>
<member name="T:Interop.BCrypt.BCRYPT_ECC_PARAMETER_HEADER">
<summary>
Used as a header to curve parameters.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_OAEP_PADDING_INFO.pszAlgId">
<summary>
Null-terminated Unicode string that identifies the hashing algorithm used to create the padding.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_OAEP_PADDING_INFO.pbLabel">
<summary>
Address of a buffer that contains the data used to create the padding.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_OAEP_PADDING_INFO.cbLabel">
<summary>
Number of bytes in the pbLabel buffer.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_PKCS1_PADDING_INFO.pszAlgId">
<summary>
Null-terminated Unicode string that identifies the hashing algorithm used to create the padding.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_PSS_PADDING_INFO.pszAlgId">
<summary>
Null-terminated Unicode string that identifies the hashing algorithm used to create the padding.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_PSS_PADDING_INFO.cbSalt">
<summary>
The size, in bytes, of the random salt to use for the padding.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_PQDSA_PADDING_INFO.pbCtx">
<summary>
Address of the context buffer.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_PQDSA_PADDING_INFO.cbCtx">
<summary>
The size, in bytes, of the context buffer.
</summary>
</member>
<member name="F:Interop.BCrypt.BCRYPT_PQDSA_PADDING_INFO.pszPreHashAlgId">
<summary>
Null-terminated Unicode string that identifies the pre-hash algorithm used to create the hash.
</summary>
</member>
<member name="M:Internal.Cryptography.Helpers.ValidateHashLength(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Char})">
<summary>
Validates if the hash length matches the expected output size for the given hash algorithm OID.
When the OID is not one of the common hash algorithms, it only validates the format of the OID.
</summary>
</member>
<member name="T:Internal.NativeCrypto.BCryptNative.AlgorithmName">
<summary>
Well known algorithm names
</summary>
</member>
</members>
</doc>