DiffieHellman
The DiffieHellman
class is a utility for creating Diffie-Hellman key exchanges.
Instances of the DiffieHellman
class can be created using the {@link createDiffieHellman} function.
import assert from 'node:assert';
const {
createDiffieHellman,
} = await import('node:crypto');
// Generate Alice's keys...
const alice = createDiffieHellman(2048);
const aliceKey = alice.generateKeys();
// Generate Bob's keys...
const bob = createDiffieHellman(alice.getPrime(), alice.getGenerator());
const bobKey = bob.generateKeys();
// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);
// OK
assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));
Since
v0.5.0
Properties
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 the specified inputEncoding
, and secret is encoded using specified outputEncoding
. If the inputEncoding
is not provided, otherPublicKey
is expected to be a Buffer
, TypedArray
, or DataView
.
Generates private and public Diffie-Hellman key values unless they have been generated or computed already, and returns the public key in the specified encoding
. This key should be transferred to the other party. If encoding
is provided a string is returned; otherwise a Buffer
is returned.
Returns the Diffie-Hellman generator in the specified encoding
. If encoding
is provided a string is returned; otherwise a Buffer
is returned.
Returns the Diffie-Hellman private key in the specified encoding
. If encoding
is provided a string is returned; otherwise a Buffer
is returned.
Returns the Diffie-Hellman public key in the specified encoding
. If encoding
is provided a string is returned; otherwise a Buffer
is returned.
Sets the Diffie-Hellman private key. If the encoding
argument is provided,privateKey
is expected to be a string. If no encoding
is provided, privateKey
is expected to be a Buffer
, TypedArray
, or DataView
.
Sets the Diffie-Hellman public key. If the encoding
argument is provided, publicKey
is expected to be a string. If no encoding
is provided, publicKey
is expected to be a Buffer
, TypedArray
, or DataView
.