ECDH
The ECDH
class is a utility for creating Elliptic Curve Diffie-Hellman (ECDH) key exchanges.
Instances of the ECDH
class can be created using the {@link createECDH} function.
import assert from 'node:assert';
const {
createECDH,
} = await import('node:crypto');
// Generate Alice's keys...
const alice = createECDH('secp521r1');
const aliceKey = alice.generateKeys();
// Generate Bob's keys...
const bob = createECDH('secp521r1');
const bobKey = bob.generateKeys();
// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);
assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));
// OK
Since
v0.11.14
Functions
Computes the shared secret using otherPublicKey
as the other party's public key and returns the computed shared secret. The supplied key is interpreted using specified inputEncoding
, and the returned secret is encoded using the specified outputEncoding
. If the inputEncoding
is not provided, otherPublicKey
is expected to be a Buffer
, TypedArray
, or DataView
.
Generates private and public EC Diffie-Hellman key values, and returns the public key in the specified format
and encoding
. This key should be transferred to the other party.
If encoding
is specified, a string is returned; otherwise a Buffer
is returned.
The format
argument specifies point encoding and can be 'compressed'
or 'uncompressed'
. If format
is not specified the point will be returned in'uncompressed'
format.
Sets the EC Diffie-Hellman private key. If encoding
is provided, privateKey
is expected to be a string; otherwise privateKey
is expected to be a Buffer
, TypedArray
, or DataView
.