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.​ECDiffieHellmanCng
Assembly: System.Security.Cryptography
Inheritance: object → AsymmetricAlgorithm → ECAlgorithm → ECDiffieHellman → ECDiffieHellmanCng
Provides a Cryptography Next Generation (CNG) implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm. This class is used to perform cryptographic operations.
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 generating key material.
public
byte[]
HmacKey
Gets or sets the Hash-based Message Authentication Code (HMAC) key to use when deriving key material.
public
CngKey
Key
Specifies the <see cref="T:System.Security.Cryptography.CngKey" /> that is used by the current object for cryptographic operations.
KeyDerivationFunction
Gets or sets the key derivation function for the <see cref="T:System.Security.Cryptography.ECDiffieHellmanCng" /> class.
public
int
KeySize
Gets or sets the size, in bits, of the key modulus used by the asymmetric algorithm.
public
byte[]
Label
Gets or sets the label value that is used for key derivation.
public
KeySizes[]
LegalKeySizes
Gets the key sizes that are supported by the asymmetric algorithm.
public
ECDiffieHellmanPublicKey
PublicKey
Gets the public key that can be used by another <see cref="T:System.Security.Cryptography.ECDiffieHellmanCng" /> object to generate a shared secret agreement.
public
byte[]
SecretAppend
Gets or sets a value that will be appended to the secret agreement when generating key material.
public
byte[]
SecretPrepend
Gets or sets a value that will be added to the beginning of the secret agreement when deriving key material.
public
byte[]
Seed
Gets or sets the seed value that will be used when deriving key material.
public
bool
UseSecretAgreementAsHmacKey
Gets a value that indicates whether the secret agreement is used as a Hash-based Message Authentication Code (HMAC) key to derive key material.
public
string
KeyExchangeAlgorithm
Gets the name of the key exchange algorithm.
public
string
SignatureAlgorithm
Gets the name of the signature algorithm.
Methods
public
byte[]
DeriveKeyFromHash​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm,
byte[] secretPrepend,
byte[] secretAppend)
otherPartyPublicKey
The other party's public key.
hashAlgorithm
The hash algorithm to use to derive the key material.
secretPrepend
A value to prepend to the derived secret before hashing.
secretAppend
A value to append to the derived secret before hashing.
Returns The hash of the shared secret after prepending or appending data as requested.
Performs key derivation using a specified hash algorithm with optional prepended or appended data.
public
byte[]
DeriveKeyFromHmac​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm,
byte[] hmacKey,
byte[] secretPrepend,
byte[] secretAppend)
otherPartyPublicKey
The other party's public key.
hashAlgorithm
The hash algorithm to use to derive the key material.
hmacKey
The key for the HMAC.
secretPrepend
A value to prepend to the derived secret before hashing.
secretAppend
A value to append to the derived secret before hashing.
Returns The HMAC of the shared secret after prepending or appending data as requested.
Performs key derivation using a specified HMAC (Hash-based Message Authentication Code) algorithm with optional prepended or appended data.
public
byte[]
DeriveKeyMaterial​(CngKey otherPartyPublicKey)
otherPartyPublicKey
An object that contains the public part of the Elliptic Curve Diffie-Hellman (ECDH) key from the other party in the key exchange.
Returns A byte array that contains the key material. This information is generated from the secret agreement that is calculated from the current object's private key and the specified public key.
Derives the key material that is generated from the secret agreement between two parties, given a <see cref="T:System.Security.Cryptography.CngKey" /> object that contains the second party's public key.
public
byte[]
DeriveKeyMaterial​(ECDiffieHellmanPublicKey otherPartyPublicKey)
otherPartyPublicKey
The public key from the other party in the key exchange.
Returns A byte array that contains the key material. This information is generated from the secret agreement that is calculated from the current object's private key and the specified public key.
Derives the key material that is generated from the secret agreement between two parties, given an <see cref="T:System.Security.Cryptography.ECDiffieHellmanPublicKey" /> object that contains the second party's public key.
public
byte[]
DeriveKeyTls​(ECDiffieHellmanPublicKey otherPartyPublicKey,
byte[] prfLabel,
byte[] prfSeed)
otherPartyPublicKey
The other party's public key.
prfLabel
The ASCII-encoded PRF label.
prfSeed
The 64-byte PRF seed.
Returns The first 48 bytes from the TLS 1.1 PRF, using the shared secret as the key.
Performs key derivation using the TLS (Transport Layer Security) 1.1 PRF (Pseudo-Random Function).
public
Microsoft.​Win32.​SafeHandles.​SafeNCryptSecretHandle
DeriveSecretAgreementHandle​(CngKey otherPartyPublicKey)
otherPartyPublicKey
An object that contains the public part of the Elliptic Curve Diffie-Hellman (ECDH) key from the other party in the key exchange.
Returns A handle to the secret agreement. This information is calculated from the current object's private key and the specified public key.
Gets a handle to the secret agreement generated between two parties, given a <see cref="T:System.Security.Cryptography.CngKey" /> object that contains the second party's public key.
public
Microsoft.​Win32.​SafeHandles.​SafeNCryptSecretHandle
DeriveSecretAgreementHandle​(ECDiffieHellmanPublicKey otherPartyPublicKey)
otherPartyPublicKey
The public key from the other party in the key exchange.
Returns A handle to the secret agreement. This information is calculated from the current object's private key and the specified public key.
Gets a handle to the secret agreement generated between two parties, given an <see cref="T:System.Security.Cryptography.ECDiffieHellmanPublicKey" /> object that contains the second party's public key.
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 <see cref="T:System.Security.Cryptography.ECCurve" /> object.
Exports the key and explicit curve parameters used by the <see cref="T:System.Security.Cryptography.ECCurve" /> 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 <see cref="T:System.Security.Cryptography.ECCurve" /> object.
Exports the key used by the <see cref="T:System.Security.Cryptography.ECCurve" /> object into an <see cref="T:System.Security.Cryptography.ECParameters" /> object.
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.
public
void
GenerateKey​(ECCurve curve)
curve
The curve used to generate an ephemeral public/private key pair.
Generates a new ephemeral public/private key pair for the specified curve.
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's parameters to import.
Imports the specified parameters for an <see cref="T:System.Security.Cryptography.ECCurve" /> object as a key into the current instance.
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
byte[]
DeriveKeyFromHash​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm)
Inherited from ECDiffieHellman
otherPartyPublicKey
The other party's public key.
hashAlgorithm
The hash algorithm to use to derive the key material.
Returns The hash of the shared secret.
Performs key derivation using a specified hash algorithm.
public
byte[]
DeriveKeyFromHmac​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm,
byte[] hmacKey)
Inherited from ECDiffieHellman
otherPartyPublicKey
The other party's public key.
hashAlgorithm
The hash algorithm to use to derive the key material.
hmacKey
The key for the HMAC.
Returns The HMAC of the shared secret.
Performs key derivation using a specified HMAC (Hash-based Message Authentication Code) algorithm.
public
byte[]
DeriveRawSecretAgreement​(ECDiffieHellmanPublicKey otherPartyPublicKey)
Inherited from ECDiffieHellman
otherPartyPublicKey
The public key of the party with which to derive a mutual secret.
Returns The raw key agreement.
Derive raw key material.
public
void
FromXmlString​(string xmlString)
Inherited from ECDiffieHellman
xmlString
The XML string to use to reconstruct the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> object.
This method throws in all cases.
public
string
ToXmlString​(bool includePrivateParameters)
Inherited from ECDiffieHellman
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.
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