Early Preview
This is currently very much a preview. Please feel free to try things out,
but don't be upset if anything is not yet working. Feedback is welcome over on our
GitHub Dicussions page.
class System.​Security.​Cryptography.​ECDsaCng
Assembly: System.Security.Cryptography
Inheritance: object → AsymmetricAlgorithm → ECAlgorithm → ECDsa → ECDsaCng
Provides a Cryptography Next Generation (CNG) implementation of the Elliptic Curve Digital Signature Algorithm (ECDSA).
Fields and Constants
protected
int
KeySizeValue
Represents the size, in bits, of the key modulus used by the asymmetric algorithm.
protected
KeySizes[]
LegalKeySizesValue
Specifies the key sizes that are supported by the asymmetric algorithm.
Properties
public
CngAlgorithm
HashAlgorithm
Gets or sets the hash algorithm to use when signing and verifying data.
public
CngKey
Key
Gets or sets the key to use when signing and verifying data.
public
int
KeySize
Gets or sets the size, in bits, of the key modulus used by the asymmetric algorithm.
public
KeySizes[]
LegalKeySizes
Gets the key sizes, in bits, that are supported by the <see cref="P:System.Security.Cryptography.ECDsaCng.KeySize" /> property setter.
public
string
KeyExchangeAlgorithm
Gets the name of the key exchange algorithm.
public
string
SignatureAlgorithm
Gets the name of the signature algorithm.
Methods
protected
void
Dispose​(bool disposing)
public
byte[]
ExportEncryptedPkcs8PrivateKey​(ReadOnlySpan`1 passwordBytes,
PbeParameters pbeParameters)
public
byte[]
ExportEncryptedPkcs8PrivateKey​(ReadOnlySpan`1 password,
PbeParameters pbeParameters)
public
ECParameters
ExportExplicitParameters​(bool includePrivateParameters)
includePrivateParameters
<see langword="true" /> to include private parameters; otherwise, <see langword="false" /> .
Returns The key and explicit curve parameters used by the ECC object.
Exports the key and explicit curve parameters used by the Elliptic curve cryptography (ECC) object into an <see cref="T:System.Security.Cryptography.ECParameters" /> object.
public
ECParameters
ExportParameters​(bool includePrivateParameters)
includePrivateParameters
<see langword="true" /> to include private parameters; otherwise, <see langword="false" /> .
Returns The key and named curve parameters used by the ECC object.
Exports the key used by the Elliptic curve cryptography (ECC) object into an <see cref="T:System.Security.Cryptography.ECParameters" /> object. If the key was created as a named curve, the <see cref="F:System.Security.Cryptography.ECParameters.Curve" /> field contains named curve parameters; otherwise, it contains explicit parameters.
public
void
FromXmlString​(string xml,
ECKeyXmlFormat format)
xml
The XML-based key information to be deserialized.
format
One of the enumeration values that specifies the format of the XML string. The only currently accepted format is <see cref="F:System.Security.Cryptography.ECKeyXmlFormat.Rfc4050" /> .
Deserializes the key information from an XML string by using the specified format.
Generates a new ephemeral public/private key pair for the specified curve, replacing the current key.
public
void
ImportEncryptedPkcs8PrivateKey​(ReadOnlySpan`1 passwordBytes,
ReadOnlySpan`1 source,
Int32& bytesRead)
public
void
ImportEncryptedPkcs8PrivateKey​(ReadOnlySpan`1 password,
ReadOnlySpan`1 source,
Int32& bytesRead)
public
void
ImportParameters​(ECParameters parameters)
parameters
The curve parameters.
Replaces the existing key that the current instance is working with by creating a new <see cref="T:System.Security.Cryptography.CngKey" /> for the parameters structure.
public
byte[]
SignData​(byte[] data)
data
The message data to be signed.
Returns A digital signature for the specified data.
Generates a signature for the specified data.
public
byte[]
SignData​(byte[] data,
int offset,
int count)
data
The message data to be signed.
offset
The location in the string at which to start signing.
count
The length of the string, in characters, following <paramref name="offset" /> that will be signed.
Returns A digital signature for the specified length of data.
Generates a digital signature for the specified length of data, beginning at the specified offset.
public
byte[]
SignData​(IO.Stream data)
data
The data stream to be signed.
Returns A digital signature for the specified data stream.
Generates a signature for the specified data stream, reading to the end of the stream.
public
byte[]
SignHash​(byte[] hash)
hash
The hash value of the data to be signed.
Returns A digital signature for the specified hash value.
Generates a signature for the specified hash value.
public
string
ToXmlString​(ECKeyXmlFormat format)
format
One of the enumeration values that specifies the format of the XML string. The only currently accepted format is <see cref="F:System.Security.Cryptography.ECKeyXmlFormat.Rfc4050" /> .
Returns A string object that contains the key information, serialized to an XML string according to the requested format.
Serializes the key information to an XML string by using the specified format.
public
bool
TryExportEncryptedPkcs8PrivateKey​(ReadOnlySpan`1 passwordBytes,
PbeParameters pbeParameters,
Span`1 destination,
Int32& bytesWritten)
public
bool
TryExportEncryptedPkcs8PrivateKey​(ReadOnlySpan`1 password,
PbeParameters pbeParameters,
Span`1 destination,
Int32& bytesWritten)
public
bool
TrySignHash​(ReadOnlySpan`1 source,
Span`1 destination,
Int32& bytesWritten)
protected
bool
TrySignHashCore​(ReadOnlySpan`1 hash,
Span`1 destination,
DSASignatureFormat signatureFormat,
Int32& bytesWritten)
public
bool
VerifyData​(byte[] data,
byte[] signature)
data
The data that was signed.
signature
The signature to be verified.
Returns <see langword="true" /> if the signature is valid; otherwise, <see langword="false" /> .
Verifies the digital signature of the specified data.
public
bool
VerifyData​(byte[] data,
int offset,
int count,
byte[] signature)
data
The data that was signed.
offset
The location in the data at which the signed data begins.
count
The length of the data, in characters, following <paramref name="offset" /> that will be signed.
signature
The signature to be verified.
Returns <see langword="true" /> if the signature is valid; otherwise, <see langword="false" /> .
Verifies a signature for the specified length of data, beginning at the specified offset.
public
bool
VerifyData​(IO.Stream data,
byte[] signature)
data
The data stream that was signed.
signature
The signature to be verified.
Returns <see langword="true" /> if the signature is valid; otherwise, <see langword="false" /> .
Verifies the digital signature of the specified data stream, reading to the end of the stream.
public
bool
VerifyHash​(byte[] hash,
byte[] signature)
hash
The hash value of the data to be verified.
signature
The digital signature of the data to be verified against the hash value.
Returns <see langword="true" /> if the signature is valid; otherwise, <see langword="false" /> .
Verifies that a digital signature is appropriate for the current key and provided data hash.
protected
bool
VerifyHashCore​(ReadOnlySpan`1 hash,
ReadOnlySpan`1 signature,
DSASignatureFormat signatureFormat)
public
void
FromXmlString​(string xmlString)
Inherited from ECDsa
xmlString
The XML string to use to reconstruct the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> object.
This method throws in all cases.
public
int
GetMaxSignatureSize​(DSASignatureFormat signatureFormat)
Inherited from ECDsa
signatureFormat
The encoding format for a signature.
Returns The largest size, in bytes, for a signature produced by this key in the indicated format.
Gets the largest size, in bytes, for a signature produced by this key in the indicated format.
protected
byte[]
HashData​(byte[] data,
int offset,
int count,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The data to be hashed.
offset
The index of the first byte in <paramref name="data" /> to be hashed.
count
The number of bytes to hash.
hashAlgorithm
The algorithm to use to hash the data.
Returns The hashed data.
When overridden in a derived class, computes the hash value of the specified portion of a byte array by using the specified hashing algorithm.
protected
byte[]
HashData​(IO.Stream data,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The binary stream to hash.
hashAlgorithm
The algorithm to use to hash the data.
Returns The hashed data.
When overridden in a derived class, computes the hash value of the specified binary stream by using the specified hashing algorithm.
public
byte[]
SignData​(byte[] data,
int offset,
int count,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The input data for which to compute the hash.
offset
The offset into the array at which to begin using data.
count
The number of bytes in the array to use as data.
hashAlgorithm
The hash algorithm to use to create the hash value.
Returns The ECDSA signature for the specified data.
Computes the hash value of a portion of the specified byte array using the specified hash algorithm and signs the resulting hash value.
public
byte[]
SignData​(byte[] data,
int offset,
int count,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
data
The data to sign.
offset
The offset into <paramref name="data" /> at which to begin hashing.
count
The number of bytes to read from <paramref name="data" /> .
hashAlgorithm
The hash algorithm to use to create the hash value.
signatureFormat
The encoding format to use for the signature.
Returns The ECDSA signature for the specified data.
Computes the hash value of the specified data and signs it using the specified signature format.
public
byte[]
SignData​(byte[] data,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The input data for which to compute the hash.
hashAlgorithm
The hash algorithm to use to create the hash value.
Returns The ECDSA signature for the specified data.
Computes the hash value of the specified byte array using the specified hash algorithm and signs the resulting hash value.
public
byte[]
SignData​(byte[] data,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
data
The data to sign.
hashAlgorithm
The hash algorithm to use to create the hash value.
signatureFormat
The encoding format to use for the signature.
Returns The ECDSA signature for the specified data.
Computes the hash value of the specified data and signs it using the specified signature format.
public
byte[]
SignData​(IO.Stream data,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The input stream for which to compute the hash.
hashAlgorithm
The hash algorithm to use to create the hash value.
Returns The ECDSA signature for the specified data.
Computes the hash value of the specified stream using the specified hash algorithm and signs the resulting hash value.
public
byte[]
SignData​(IO.Stream data,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
data
The data to sign.
hashAlgorithm
The hash algorithm to use to create the hash value.
signatureFormat
The encoding format to use for the signature.
Returns The ECDSA signature for the specified data.
Computes the hash value of the specified data and signs it using the specified signature format.
public
byte[]
SignData​(ReadOnlySpan`1 data,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
public
byte[]
SignData​(ReadOnlySpan`1 data,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
public
int
SignData​(ReadOnlySpan`1 data,
Span`1 destination,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
public
int
SignData​(ReadOnlySpan`1 data,
Span`1 destination,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
protected
byte[]
SignDataCore​(IO.Stream data,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
data
The data to sign.
hashAlgorithm
The hash algorithm to use to create the hash value.
signatureFormat
The encoding format to use for the signature.
Returns The ECDSA signature for the specified data.
Computes the hash value of the specified data and signs it using the specified signature format.
protected
byte[]
SignDataCore​(ReadOnlySpan`1 data,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
public
byte[]
SignHash​(byte[] hash,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
hash
The hash value to sign.
signatureFormat
The encoding format to use for the signature.
Returns The ECDSA signature for the specified data.
Computes the ECDSA signature for the specified hash value in the indicated format.
public
byte[]
SignHash​(ReadOnlySpan`1 hash,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
public
int
SignHash​(ReadOnlySpan`1 hash,
Span`1 destination,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
protected
byte[]
SignHashCore​(ReadOnlySpan`1 hash,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
public
string
ToXmlString​(bool includePrivateParameters)
Inherited from ECDsa
includePrivateParameters
<see langword="true" /> to include private parameters; otherwise, <see langword="false" /> .
Returns This method does not return a value.
This method throws in all cases.
protected
bool
TryHashData​(ReadOnlySpan`1 data,
Span`1 destination,
HashAlgorithmName hashAlgorithm,
Int32& bytesWritten)
Inherited from ECDsa
public
bool
TrySignData​(ReadOnlySpan`1 data,
Span`1 destination,
HashAlgorithmName hashAlgorithm,
Int32& bytesWritten)
Inherited from ECDsa
public
bool
TrySignData​(ReadOnlySpan`1 data,
Span`1 destination,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat,
Int32& bytesWritten)
Inherited from ECDsa
protected
bool
TrySignDataCore​(ReadOnlySpan`1 data,
Span`1 destination,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat,
Int32& bytesWritten)
Inherited from ECDsa
public
bool
TrySignHash​(ReadOnlySpan`1 hash,
Span`1 destination,
DSASignatureFormat signatureFormat,
Int32& bytesWritten)
Inherited from ECDsa
public
bool
VerifyData​(byte[] data,
byte[] signature,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The signed data.
signature
The signature data to be verified.
hashAlgorithm
The hash algorithm used to create the hash value of the data.
Returns <see langword="true" /> if the signature is valid; otherwise, <see langword="false" /> .
Verifies that a digital signature is appropriate for the current key and provided data with a specified hash algorithm.
public
bool
VerifyData​(byte[] data,
byte[] signature,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
data
The signed data.
signature
The signature to verify.
hashAlgorithm
The hash algorithm used to hash the data for the verification process.
signatureFormat
The encoding format for <paramref name="signature" /> .
Returns <see langword="true" /> if the digital signature is valid for the provided data; otherwise, <see langword="false" /> .
Verifies that a digital signature is valid for the provided data.
public
bool
VerifyData​(byte[] data,
int offset,
int count,
byte[] signature,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The signed data.
offset
The starting index at which to compute the hash.
count
The number of bytes to hash.
signature
The signature data to be verified.
hashAlgorithm
The hash algorithm used to create the hash value of the data.
Returns <see langword="true" /> if the signature is valid; otherwise, <see langword="false" /> .
Verifies that a digital signature is appropriate for the current key and provided portion of data with a specified hash algorithm.
public
bool
VerifyData​(byte[] data,
int offset,
int count,
byte[] signature,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
data
An array that contains the signed data.
offset
The starting index of the signed portion of <paramref name="data" /> .
count
The number of bytes in <paramref name="data" /> that were signed.
signature
The signature to verify.
hashAlgorithm
The hash algorithm used to hash the data for the verification process.
signatureFormat
The encoding format for <paramref name="signature" /> .
Returns <see langword="true" /> if the digital signature is valid for the provided data; otherwise, <see langword="false" /> .
Verifies that a digital signature is valid for the provided data.
public
bool
VerifyData​(IO.Stream data,
byte[] signature,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
data
The signed data.
signature
The signature data to be verified.
hashAlgorithm
The hash algorithm used to create the hash value of the data.
Returns <see langword="true" /> if the signature is valid; otherwise, <see langword="false" /> .
Verifies that a digital signature is appropriate for the current key and provided data with a specified hash algorithm.
public
bool
VerifyData​(IO.Stream data,
byte[] signature,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
data
The signed data.
signature
The signature to verify.
hashAlgorithm
The hash algorithm used to hash the data for the verification process.
signatureFormat
The encoding format for <paramref name="signature" /> .
Returns <see langword="true" /> if the digital signature is valid for the provided data; otherwise, <see langword="false" /> .
Verifies that a digital signature is valid for the provided data.
public
bool
VerifyData​(ReadOnlySpan`1 data,
ReadOnlySpan`1 signature,
HashAlgorithmName hashAlgorithm)
Inherited from ECDsa
public
bool
VerifyData​(ReadOnlySpan`1 data,
ReadOnlySpan`1 signature,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
protected
bool
VerifyDataCore​(IO.Stream data,
ReadOnlySpan`1 signature,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
protected
bool
VerifyDataCore​(ReadOnlySpan`1 data,
ReadOnlySpan`1 signature,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
public
bool
VerifyHash​(byte[] hash,
byte[] signature,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
hash
The signed hash.
signature
The signature to verify.
signatureFormat
The encoding format for <paramref name="signature" /> .
Returns <see langword="true" /> if the digital signature is valid for the provided data; otherwise, <see langword="false" /> .
Verifies that a digital signature is valid for the provided hash.
public
bool
VerifyHash​(ReadOnlySpan`1 hash,
ReadOnlySpan`1 signature,
DSASignatureFormat signatureFormat)
Inherited from ECDsa
public
byte[]
ExportECPrivateKey​()
Inherited from ECAlgorithm
Returns A byte array containing the ECPrivateKey representation of this key.
Exports the current key in the ECPrivateKey format.
public
string
ExportECPrivateKeyPem​()
Inherited from ECAlgorithm
Returns A string containing the PEM-encoded ECPrivateKey.
Exports the current key in the ECPrivateKey format, PEM encoded.
public
void
ImportECPrivateKey​(ReadOnlySpan`1 source,
Int32& bytesRead)
Inherited from ECAlgorithm
public
void
ImportFromEncryptedPem​(ReadOnlySpan`1 input,
ReadOnlySpan`1 passwordBytes)
Inherited from ECAlgorithm
public
void
ImportFromEncryptedPem​(ReadOnlySpan`1 input,
ReadOnlySpan`1 password)
Inherited from ECAlgorithm
public
void
ImportSubjectPublicKeyInfo​(ReadOnlySpan`1 source,
Int32& bytesRead)
Inherited from ECAlgorithm
public
bool
TryExportECPrivateKey​(Span`1 destination,
Int32& bytesWritten)
Inherited from ECAlgorithm
public
bool
TryExportECPrivateKeyPem​(Span`1 destination,
Int32& charsWritten)
Inherited from ECAlgorithm
public
bool
TryExportSubjectPublicKeyInfo​(Span`1 destination,
Int32& bytesWritten)
Inherited from ECAlgorithm
Releases all resources used by the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> class.
Releases all resources used by the current instance of the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> class.
public
string
ExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan`1 passwordBytes,
PbeParameters pbeParameters)
Inherited from AsymmetricAlgorithm
public
string
ExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan`1 password,
PbeParameters pbeParameters)
Inherited from AsymmetricAlgorithm
public
byte[]
ExportPkcs8PrivateKey​()
Inherited from AsymmetricAlgorithm
Returns A byte array containing the PKCS#8 PrivateKeyInfo representation of this key.
Exports the current key in the PKCS#8 PrivateKeyInfo format.
public
string
ExportPkcs8PrivateKeyPem​()
Inherited from AsymmetricAlgorithm
Returns A string containing the PEM-encoded PKCS#8 PrivateKeyInfo.
Exports the current key in the PKCS#8 PrivateKeyInfo format, PEM encoded.
public
byte[]
ExportSubjectPublicKeyInfo​()
Inherited from AsymmetricAlgorithm
Returns A byte array containing the X.509 SubjectPublicKeyInfo representation of the public-key portion of this key.
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.
public
string
ExportSubjectPublicKeyInfoPem​()
Inherited from AsymmetricAlgorithm
Returns A string containing the PEM-encoded X.509 SubjectPublicKeyInfo.
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format, PEM encoded.
public
bool
TryExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan`1 passwordBytes,
PbeParameters pbeParameters,
Span`1 destination,
Int32& charsWritten)
Inherited from AsymmetricAlgorithm
public
bool
TryExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan`1 password,
PbeParameters pbeParameters,
Span`1 destination,
Int32& charsWritten)
Inherited from AsymmetricAlgorithm
public
bool
TryExportPkcs8PrivateKeyPem​(Span`1 destination,
Int32& charsWritten)
Inherited from AsymmetricAlgorithm
public
bool
TryExportSubjectPublicKeyInfoPem​(Span`1 destination,
Int32& charsWritten)
Inherited from AsymmetricAlgorithm
public
bool
Equals​(object obj)
Inherited from object
protected
void
Finalize​()
Inherited from object
public
int
GetHashCode​()
Inherited from object
protected
object
MemberwiseClone​()
Inherited from object
public
string
ToString​()
Inherited from object