Fencapsulate
Bun

function

crypto.encapsulate

function encapsulate(
): { ciphertext: Buffer; sharedKey: Buffer };

Key encapsulation using a KEM algorithm with a public key.

Supported key types and their KEM algorithms are:

  • 'rsa' RSA Secret Value Encapsulation
  • 'ec' DHKEM(P-256, HKDF-SHA256), DHKEM(P-384, HKDF-SHA256), DHKEM(P-521, HKDF-SHA256)
  • 'x25519' DHKEM(X25519, HKDF-SHA256)
  • 'x448' DHKEM(X448, HKDF-SHA512)
  • 'ml-kem-512' ML-KEM
  • 'ml-kem-768' ML-KEM
  • 'ml-kem-1024' ML-KEM

If key is not a KeyObject, this function behaves as if key had been passed to crypto.createPublicKey().

If the callback function is provided this function uses libuv's threadpool.

function encapsulate(
callback: (err: Error, result: { ciphertext: Buffer; sharedKey: Buffer }) => void
): void;

Key encapsulation using a KEM algorithm with a public key.

Supported key types and their KEM algorithms are:

  • 'rsa' RSA Secret Value Encapsulation
  • 'ec' DHKEM(P-256, HKDF-SHA256), DHKEM(P-384, HKDF-SHA256), DHKEM(P-521, HKDF-SHA256)
  • 'x25519' DHKEM(X25519, HKDF-SHA256)
  • 'x448' DHKEM(X448, HKDF-SHA512)
  • 'ml-kem-512' ML-KEM
  • 'ml-kem-768' ML-KEM
  • 'ml-kem-1024' ML-KEM

If key is not a KeyObject, this function behaves as if key had been passed to crypto.createPublicKey().

If the callback function is provided this function uses libuv's threadpool.