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.​ECDiffieHellman
Assembly: System.Security.Cryptography
Inheritance: object → AsymmetricAlgorithm → ECAlgorithm → ECDiffieHellman
Implemented Interfaces
- IDisposable Implemented by: AsymmetricAlgorithm
Provides an abstract base class that Elliptic Curve Diffie-Hellman (ECDH) algorithm implementations can derive from. This class provides the basic set of operations that all ECDH implementations must support.
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
string
KeyExchangeAlgorithm
Gets the name of the key exchange algorithm.
public
ECDiffieHellmanPublicKey
PublicKey
Gets the public key that is being used by the current Elliptic Curve Diffie-Hellman (ECDH) instance.
public
string
SignatureAlgorithm
Gets the name of the signature algorithm.
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 that are supported by the asymmetric algorithm.
Methods
public static
ECDiffieHellman
Create​()
Creates a new instance of the default implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm.
Returns A new instance of the default implementation of this class.
public static
ECDiffieHellman
Create​(ECCurve curve)
Creates a new instance of the default implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm with a new public/private key-pair generated over the specified curve.
Returns A new instance of the default implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm.
curve
The curve to use to generate a new public/private key-pair.
public static
ECDiffieHellman
Create​(ECParameters parameters)
Creates a new instance of the default implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm with the key described by the specified <see cref="T:System.Security.Cryptography.ECParameters" /> object.
Returns A new instance of the default implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm.
parameters
The parameters for the elliptic curve cryptography (ECC) algorithm.
public static
ECDiffieHellman
Create​(string algorithm)
Creates a new instance of the specified implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm.
Returns A new instance of the specified implementation of this class. If the specified algorithm name does not map to an ECDH implementation, this method returns <see langword="null" /> .
algorithm
The name of an implementation of the ECDH algorithm.
public
byte[]
DeriveKeyFromHash​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm)
Performs key derivation using a specified hash algorithm.
Returns The hash of the shared secret.
otherPartyPublicKey
The other party's public key.
hashAlgorithm
The hash algorithm to use to derive the key material.
public
byte[]
DeriveKeyFromHash​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm,
byte[] secretPrepend,
byte[] secretAppend)
When implemented in a derived class, performs key derivation using a specified hash algorithm with optional prepended or appended data.
Returns The hash of the shared secret after prepending or appending data as requested.
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.
public
byte[]
DeriveKeyFromHmac​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm,
byte[] hmacKey)
Performs key derivation using a specified HMAC (Hash-based Message Authentication Code) algorithm.
Returns The HMAC of the shared secret.
otherPartyPublicKey
The other party's public key.
hashAlgorithm
The hash algorithm to use to derive the key material.
hmacKey
The key for the HMAC.
public
byte[]
DeriveKeyFromHmac​(ECDiffieHellmanPublicKey otherPartyPublicKey,
HashAlgorithmName hashAlgorithm,
byte[] hmacKey,
byte[] secretPrepend,
byte[] secretAppend)
When implemented in a derived class, performs key derivation using a specified HMAC (Hash-based Message Authentication Code) algorithm with optional prepended or appended data.
Returns The HMAC of the shared secret after prepending or appending data as requested.
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.
public
byte[]
DeriveKeyMaterial​(ECDiffieHellmanPublicKey otherPartyPublicKey)
When implemented in a derived class, performs a key derivation on the shared secret.
Returns The result of the key derivation function, using the shared secret as an input.
otherPartyPublicKey
The other party's public key.
public
byte[]
DeriveKeyTls​(ECDiffieHellmanPublicKey otherPartyPublicKey,
byte[] prfLabel,
byte[] prfSeed)
When implemented in a derived class, performs key derivation using the TLS (Transport Layer Security) 1.1 PRF (Pseudo-Random Function).
Returns The first 48 bytes from the TLS 1.1 PRF, using the shared secret as the key.
otherPartyPublicKey
The other party's public key.
prfLabel
The ASCII-encoded PRF label.
prfSeed
The 64-byte PRF seed.
public
byte[]
DeriveRawSecretAgreement​(ECDiffieHellmanPublicKey otherPartyPublicKey)
Derive raw key material.
Returns The raw key agreement.
otherPartyPublicKey
The public key of the party with which to derive a mutual secret.
public
void
FromXmlString​(string xmlString)
This method throws in all cases.
xmlString
The XML string to use to reconstruct the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> object.
public
string
ToXmlString​(bool includePrivateParameters)
This method throws in all cases.
Returns This method does not return a value.
includePrivateParameters
<see langword="true" /> to include private parameters; otherwise, <see langword="false" /> .
public
byte[]
ExportECPrivateKey​()
Inherited from ECAlgorithm
Exports the current key in the ECPrivateKey format.
Returns A byte array containing the ECPrivateKey representation of this key.
public
string
ExportECPrivateKeyPem​()
Inherited from ECAlgorithm
Exports the current key in the ECPrivateKey format, PEM encoded.
Returns A string containing the PEM-encoded ECPrivateKey.
public
ECParameters
ExportExplicitParameters​(bool includePrivateParameters)
Inherited from ECAlgorithm
When overridden in a derived class, exports the explicit <see cref="T:System.Security.Cryptography.ECParameters" /> for an ECCurve.
Returns The exported explicit parameters.
includePrivateParameters
<see langword="true" /> to include private parameters, otherwise, <see langword="false" /> .
public
ECParameters
ExportParameters​(bool includePrivateParameters)
Inherited from ECAlgorithm
When overridden in a derived class, exports the named or explicit <see cref="T:System.Security.Cryptography.ECParameters" /> for an ECCurve.
If the curve has a name, the Curve property will contain named curve parameters otherwise it will contain explicit parameters.
Returns The exported parameters.
includePrivateParameters
<see langword="true" /> to include private parameters, otherwise, <see langword="false" /> .
public
void
GenerateKey​(ECCurve curve)
Inherited from ECAlgorithm
When overridden in a derived class, generates a new public/private keypair for the specified curve.
curve
The curve to use.
public
void
ImportECPrivateKey​(ReadOnlySpan<​byte> source,
Int32& bytesRead)
Inherited from ECAlgorithm
public
void
ImportEncryptedPkcs8PrivateKey​(ReadOnlySpan<​byte> passwordBytes,
ReadOnlySpan<​byte> source,
Int32& bytesRead)
Inherited from ECAlgorithm
public
void
ImportEncryptedPkcs8PrivateKey​(ReadOnlySpan<​char> password,
ReadOnlySpan<​byte> source,
Int32& bytesRead)
Inherited from ECAlgorithm
public
void
ImportFromEncryptedPem​(ReadOnlySpan<​char> input,
ReadOnlySpan<​byte> passwordBytes)
Inherited from ECAlgorithm
Imports an encrypted RFC 7468 PEM-encoded private key, replacing the keys for this object.
input
The PEM text of the encrypted key to import.
passwordBytes
The bytes to use as a password when decrypting the key material.
public
void
ImportFromEncryptedPem​(ReadOnlySpan<​char> input,
ReadOnlySpan<​char> password)
Inherited from ECAlgorithm
Imports an encrypted RFC 7468 PEM-encoded private key, replacing the keys for this object.
input
The PEM text of the encrypted key to import.
password
The password to use for decrypting the key material.
public
void
ImportFromPem​(ReadOnlySpan<​char> input)
Inherited from ECAlgorithm
Imports an RFC 7468 PEM-encoded key, replacing the keys for this object.
input
The PEM text of the key to import.
public
void
ImportParameters​(ECParameters parameters)
Inherited from ECAlgorithm
When overridden in a derived class, imports the specified <see cref="T:System.Security.Cryptography.ECParameters" /> .
parameters
The curve parameters.
public
void
ImportPkcs8PrivateKey​(ReadOnlySpan<​byte> source,
Int32& bytesRead)
Inherited from ECAlgorithm
public
void
ImportSubjectPublicKeyInfo​(ReadOnlySpan<​byte> source,
Int32& bytesRead)
Inherited from ECAlgorithm
public
bool
TryExportECPrivateKey​(Span<​byte> destination,
Int32& bytesWritten)
Inherited from ECAlgorithm
public
bool
TryExportECPrivateKeyPem​(Span<​char> destination,
Int32& charsWritten)
Inherited from ECAlgorithm
public
bool
TryExportEncryptedPkcs8PrivateKey​(ReadOnlySpan<​byte> passwordBytes,
PbeParameters pbeParameters,
Span<​byte> destination,
Int32& bytesWritten)
Inherited from ECAlgorithm
public
bool
TryExportEncryptedPkcs8PrivateKey​(ReadOnlySpan<​char> password,
PbeParameters pbeParameters,
Span<​byte> destination,
Int32& bytesWritten)
Inherited from ECAlgorithm
public
bool
TryExportPkcs8PrivateKey​(Span<​byte> destination,
Int32& bytesWritten)
Inherited from ECAlgorithm
public
bool
TryExportSubjectPublicKeyInfo​(Span<​byte> destination,
Int32& bytesWritten)
Inherited from ECAlgorithm
public
void
Clear​()
Inherited from AsymmetricAlgorithm
Releases all resources used by the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> class.
public
void
Dispose​()
Inherited from AsymmetricAlgorithm
Releases all resources used by the current instance of the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> class.
protected
void
Dispose​(bool disposing)
Inherited from AsymmetricAlgorithm
Releases the unmanaged resources used by the <see cref="T:System.Security.Cryptography.AsymmetricAlgorithm" /> class and optionally releases the managed resources.
disposing
<see langword="true" /> to release both managed and unmanaged resources; <see langword="false" /> to release only unmanaged resources.
public
byte[]
ExportEncryptedPkcs8PrivateKey​(ReadOnlySpan<​byte> passwordBytes,
PbeParameters pbeParameters)
Inherited from AsymmetricAlgorithm
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password.
Returns A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of this key.
passwordBytes
The bytes to use as a password when encrypting the key material.
pbeParameters
The password-based encryption (PBE) parameters to use when encrypting the key material.
public
byte[]
ExportEncryptedPkcs8PrivateKey​(ReadOnlySpan<​char> password,
PbeParameters pbeParameters)
Inherited from AsymmetricAlgorithm
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.
Returns A byte array containing the PKCS#8 EncryptedPrivateKeyInfo representation of this key.
password
The password to use when encrypting the key material.
pbeParameters
The password-based encryption (PBE) parameters to use when encrypting the key material.
public
string
ExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan<​byte> passwordBytes,
PbeParameters pbeParameters)
Inherited from AsymmetricAlgorithm
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password, PEM encoded.
Returns A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
passwordBytes
The bytes to use as a password when encrypting the key material.
pbeParameters
The password-based encryption (PBE) parameters to use when encrypting the key material.
public
string
ExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan<​char> password,
PbeParameters pbeParameters)
Inherited from AsymmetricAlgorithm
Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password, PEM encoded.
Returns A string containing the PEM-encoded PKCS#8 EncryptedPrivateKeyInfo.
password
The password to use when encrypting the key material.
pbeParameters
The password-based encryption (PBE) parameters to use when encrypting the key material.
public
byte[]
ExportPkcs8PrivateKey​()
Inherited from AsymmetricAlgorithm
Exports the current key in the PKCS#8 PrivateKeyInfo format.
Returns A byte array containing the PKCS#8 PrivateKeyInfo representation of this key.
public
string
ExportPkcs8PrivateKeyPem​()
Inherited from AsymmetricAlgorithm
Exports the current key in the PKCS#8 PrivateKeyInfo format, PEM encoded.
Returns A string containing the PEM-encoded PKCS#8 PrivateKeyInfo.
public
byte[]
ExportSubjectPublicKeyInfo​()
Inherited from AsymmetricAlgorithm
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.
Returns A byte array containing the X.509 SubjectPublicKeyInfo representation of the public-key portion of this key.
public
string
ExportSubjectPublicKeyInfoPem​()
Inherited from AsymmetricAlgorithm
Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format, PEM encoded.
Returns A string containing the PEM-encoded X.509 SubjectPublicKeyInfo.
public
bool
TryExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan<​byte> passwordBytes,
PbeParameters pbeParameters,
Span<​char> destination,
Int32& charsWritten)
Inherited from AsymmetricAlgorithm
public
bool
TryExportEncryptedPkcs8PrivateKeyPem​(ReadOnlySpan<​char> password,
PbeParameters pbeParameters,
Span<​char> destination,
Int32& charsWritten)
Inherited from AsymmetricAlgorithm
public
bool
TryExportPkcs8PrivateKeyPem​(Span<​char> destination,
Int32& charsWritten)
Inherited from AsymmetricAlgorithm
public
bool
TryExportSubjectPublicKeyInfoPem​(Span<​char> 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