DiffieHellman

external class DiffieHellman(source)

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

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard

A bit field containing any warnings and/or errors resulting from a check performed during initialization of the DiffieHellman object.

Functions

Link copied to clipboard
fun computeSecret(otherPublicKey: ArrayBufferView<*>, inputEncoding: Nothing? = definedExternally, outputEncoding: Nothing? = definedExternally): Buffer

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.

fun computeSecret(otherPublicKey: ArrayBufferView<*>, inputEncoding: Nothing?, outputEncoding: BinaryToTextEncoding): String
fun computeSecret(otherPublicKey: String, inputEncoding: BinaryToTextEncoding, outputEncoding: Nothing? = definedExternally): Buffer
fun computeSecret(otherPublicKey: String, inputEncoding: BinaryToTextEncoding, outputEncoding: BinaryToTextEncoding): String
Link copied to clipboard

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.

Link copied to clipboard

Returns the Diffie-Hellman generator in the specified encoding. If encoding is provided a string is returned; otherwise a Buffer is returned.

Link copied to clipboard

Returns the Diffie-Hellman prime in the specified encoding. If encoding is provided a string is returned; otherwise a Buffer is returned.

Link copied to clipboard

Returns the Diffie-Hellman private key in the specified encoding. If encoding is provided a string is returned; otherwise a Buffer is returned.

Link copied to clipboard

Returns the Diffie-Hellman public key in the specified encoding. If encoding is provided a string is returned; otherwise a Buffer is returned.

Link copied to clipboard
fun setPrivateKey(privateKey: ArrayBufferView<*>)

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.

fun setPrivateKey(privateKey: String, encoding: BufferEncoding)
Link copied to clipboard
fun setPublicKey(publicKey: ArrayBufferView<*>)

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.

fun setPublicKey(publicKey: String, encoding: BufferEncoding)