温馨提示:本站仅提供公开网络链接索引服务,不存储、不篡改任何第三方内容,所有内容版权归原作者所有
AI智能索引来源:http://www.bun.com/reference/node/crypto/ECDH
点击访问原文链接

Node crypto.ECDH class | API Reference | Bun

Node crypto.ECDH class | API Reference | BunBuildDocsReferenceGuidesBlogDiscord/node:crypto/ECDHMcomputeSecretMconvertKeyMgenerateKeysMgetPrivateKeyMgetPublicKeyMsetPrivateKey

Search the reference...

/

BuildDocsReferenceGuidesBlogDiscord/node:crypto/ECDHMcomputeSecretMconvertKeyMgenerateKeysMgetPrivateKeyMgetPublicKeyMsetPrivateKey

class

crypto.ECDHclass 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 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
computeSecret(otherPublicKey: ArrayBufferView): NonSharedBuffer;

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.

If outputEncoding is given a string will be returned; otherwise a Buffer is returned.

ecdh.computeSecret will throw anERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY error when otherPublicKey lies outside of the elliptic curve. Since otherPublicKey is usually supplied from a remote user over an insecure network, be sure to handle this exception accordingly.

computeSecret(otherPublicKey: string,inputEncoding: BinaryToTextEncoding): NonSharedBuffer;

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.

If outputEncoding is given a string will be returned; otherwise a Buffer is returned.

ecdh.computeSecret will throw anERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY error when otherPublicKey lies outside of the elliptic curve. Since otherPublicKey is usually supplied from a remote user over an insecure network, be sure to handle this exception accordingly.

@param inputEncoding

The encoding of the otherPublicKey string.

computeSecret(otherPublicKey: ArrayBufferView,outputEncoding: BinaryToTextEncoding): string;

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.

If outputEncoding is given a string will be returned; otherwise a Buffer is returned.

ecdh.computeSecret will throw anERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY error when otherPublicKey lies outside of the elliptic curve. Since otherPublicKey is usually supplied from a remote user over an insecure network, be sure to handle this exception accordingly.

@param outputEncoding

The encoding of the return value.

computeSecret(otherPublicKey: string,inputEncoding: BinaryToTextEncoding,outputEncoding: BinaryToTextEncoding): string;

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.

If outputEncoding is given a string will be returned; otherwise a Buffer is returned.

ecdh.computeSecret will throw anERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY error when otherPublicKey lies outside of the elliptic curve. Since otherPublicKey is usually supplied from a remote user over an insecure network, be sure to handle this exception accordingly.

@param inputEncoding

The encoding of the otherPublicKey string.

@param outputEncoding

The encoding of the return value.

generateKeys(): NonSharedBuffer;

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.

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.

If encoding is provided a string is returned; otherwise a Buffer is returned.

generateKeys(encoding: BinaryToTextEncoding,format?: ECDHKeyFormat): string;

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.

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.

If encoding is provided a string is returned; otherwise a Buffer is returned.

@param encoding

The encoding of the return value.

getPrivateKey(): NonSharedBuffer;

If encoding is specified, a string is returned; otherwise a Buffer is returned.

@returns

The EC Diffie-Hellman in the specified encoding.

getPrivateKey(encoding: BinaryToTextEncoding): string;

If encoding is specified, a string is returned; otherwise a Buffer is returned.

@param encoding

The encoding of the return value.

@returns

The EC Diffie-Hellman in the specified encoding.

getPublicKey(encoding?: null,format?: ECDHKeyFormat): NonSharedBuffer;

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.

If encoding is specified, a string is returned; otherwise a Buffer is returned.

@param encoding

The encoding of the return value.

@returns

The EC Diffie-Hellman public key in the specified encoding and format.

getPublicKey(encoding: BinaryToTextEncoding,format?: ECDHKeyFormat): string;

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.

If encoding is specified, a string is returned; otherwise a Buffer is returned.

@param encoding

The encoding of the return value.

@returns

The EC Diffie-Hellman public key in the specified encoding and format.

setPrivateKey(privateKey: ArrayBufferView): void;

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.

If privateKey is not valid for the curve specified when the ECDH object was created, an error is thrown. Upon setting the private key, the associated public point (key) is also generated and set in the ECDH object.

setPrivateKey(privateKey: string,encoding: BinaryToTextEncoding): void;

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.

If privateKey is not valid for the curve specified when the ECDH object was created, an error is thrown. Upon setting the private key, the associated public point (key) is also generated and set in the ECDH object.

@param encoding

The encoding of the privateKey string.

static convertKey(key: BinaryLike,curve: string,inputEncoding?: BinaryToTextEncoding,outputEncoding?: 'latin1' | 'base64' | 'base64url' | 'hex',format?: 'uncompressed' | 'compressed' | 'hybrid'): string | NonSharedBuffer;

Converts the EC Diffie-Hellman public key specified by key and curve to the format specified by format. The format argument specifies point encoding and can be 'compressed', 'uncompressed' or 'hybrid'. The supplied key is interpreted using the specified inputEncoding, and the returned key is encoded using the specified outputEncoding.

Use getCurves to obtain a list of available curve names. On recent OpenSSL releases, openssl ecparam -list_curves will also display the name and description of each available elliptic curve.

If format is not specified the point will be returned in 'uncompressed' format.

If the inputEncoding is not provided, key is expected to be a Buffer, TypedArray, or DataView.

Example (uncompressing a key):

const {
createECDH,
ECDH,
} = await import('node:crypto');

const ecdh = createECDH('secp256k1');
ecdh.generateKeys();

const compressedKey = ecdh.getPublicKey('hex', 'compressed');

const uncompressedKey = ECDH.convertKey(compressedKey,
'secp256k1',
'hex',
'hex',
'uncompressed');

// The converted key and the uncompressed public key should be the same
console.log(uncompressedKey === ecdh.getPublicKey('hex'));
@param inputEncoding

The encoding of the key string.

@param outputEncoding

The encoding of the return value.

Resources

ReferenceDocsGuidesDiscordMerch StoreGitHubBlog 

Toolkit

RuntimePackage managerTest runnerBundlerPackage runner

Project

Bun 1.0Bun 1.1Bun 1.2Bun 1.3RoadmapContributingLicense

Baked with ❤️ in San Francisco

We're hiring →

Node crypto.ECDH class | API Reference | Bun,AI智能索引,全网链接索引,智能导航,网页索引

    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 createECDH function. ```js import assert from