Module: crypto/crypto

Provides functions for asymmetric encryption and decryption as well as key generation and parameter handling for all public-key cryptosystems.

Source:

Methods

(async, static) generateParams(algo, bits, oid) → {Promise.<{publicParams: {Object}, privateParams: {Object}}>}

Generate algorithm-specific key parameters

Parameters:
Name Type Description
algo module:enums.publicKey

The public key algorithm

bits Integer

Bit length for RSA keys

oid module:type/oid

Object identifier for ECC keys

Source:
Returns:

The parameters referenced by name.

Type
Promise.<{publicParams: {Object}, privateParams: {Object}}>

(static) generateSessionKey(algo) → {Uint8Array}

Generating a session key for the specified symmetric algorithm See RFC 4880 9.2 for algorithms.

Parameters:
Name Type Description
algo module:enums.symmetric

Symmetric encryption algorithm

Source:
Returns:

Random bytes as a string to be used as a key.

Type
Uint8Array

(static) getAEADMode(algo) → {Object}

Get implementation of the given AEAD mode

Parameters:
Name Type Description
algo enums.aead
Source:
Throws:

on invalid algo

Type
Error
Returns:
Type
Object

(static) getCurvePayloadSize(algo, oidopt)

Get encoded secret size for a given elliptic algo

Parameters:
Name Type Attributes Description
algo module:enums.publicKey

alrogithm identifier

oid module:type/oid <optional>

curve OID if needed by algo

Source:

(static) getPreferredCurveHashAlgo(algo, oidopt)

Get preferred signing hash algo for a given elliptic algo

Parameters:
Name Type Attributes Description
algo module:enums.publicKey

alrogithm identifier

oid module:type/oid <optional>

curve OID if needed by algo

Source:

(async, static) getPrefixRandom(algo) → {Promise.<Uint8Array>}

Generates a random byte prefix for the specified algorithm See RFC 4880 9.2 for algorithms.

Parameters:
Name Type Description
algo module:enums.symmetric

Symmetric encryption algorithm

Source:
Returns:

Random bytes with length equal to the block size of the cipher, plus the last two bytes repeated.

Type
Promise.<Uint8Array>

(static) parseEncSessionKeyParams(algo, bytes) → {Object}

Returns the types comprising the encrypted session key of an algorithm

Parameters:
Name Type Description
algo module:enums.publicKey

The key algorithm

bytes Uint8Array

The key material to parse

Source:
Returns:

The session key parameters referenced by name.

Type
Object

(static) parsePrivateKeyParams(algo, bytes, publicParams) → {Object}

Parse private key material in binary form to get the key parameters

Parameters:
Name Type Description
algo module:enums.publicKey

The key algorithm

bytes Uint8Array

The key material to parse

publicParams Object

(ECC only) public params, needed to format some private params

Source:
Returns:

Number of read bytes plus the key parameters referenced by name.

Type
Object

(static) parsePublicKeyParams(algo, bytes) → {Object}

Parse public key material in binary form to get the key parameters

Parameters:
Name Type Description
algo module:enums.publicKey

The key algorithm

bytes Uint8Array

The key material to parse

Source:
Returns:

Number of read bytes plus key parameters referenced by name.

Type
Object

(async, static) publicKeyDecrypt(algo, publicKeyParams, privateKeyParams, sessionKeyParams, fingerprint, randomPayloadopt) → {Promise.<Uint8Array>}

Decrypts data using specified algorithm and private key parameters. See RFC 4880 5.5.3

Parameters:
Name Type Attributes Description
algo module:enums.publicKey

Public key algorithm

publicKeyParams Object

Algorithm-specific public key parameters

privateKeyParams Object

Algorithm-specific private key parameters

sessionKeyParams Object

Encrypted session key parameters

fingerprint Uint8Array

Recipient fingerprint

randomPayload Uint8Array <optional>

Data to return on decryption error, instead of throwing (needed for constant-time processing in RSA and ElGamal)

Source:
Throws:

on sensitive decryption error, unless randomPayload is given

Type
Error
Returns:

Decrypted data.

Type
Promise.<Uint8Array>

(async, static) publicKeyEncrypt(keyAlgo, symmetricAlgo, publicParams, data, fingerprint) → {Promise.<Object>}

Encrypts data using specified algorithm and public key parameters. See RFC 4880 9.1 for public key algorithms.

Parameters:
Name Type Description
keyAlgo module:enums.publicKey

Public key algorithm

symmetricAlgo module:enums.symmetric | null

Cipher algorithm (v3 only)

publicParams Object

Algorithm-specific public key parameters

data Uint8Array

Session key data to be encrypted

fingerprint Uint8Array

Recipient fingerprint

Source:
Returns:

Encrypted session key parameters.

Type
Promise.<Object>

(static) serializeParams(algo, params) → {Uint8Array}

Convert params to MPI and serializes them in the proper order

Parameters:
Name Type Description
algo module:enums.publicKey

The public key algorithm

params Object

The key parameters indexed by name

Source:
Returns:

The array containing the MPIs.

Type
Uint8Array

(async, static) validateParams(algo, publicParams, privateParams) → {Promise.<Boolean>}

Validate algorithm-specific key parameters

Parameters:
Name Type Description
algo module:enums.publicKey

The public key algorithm

publicParams Object

Algorithm-specific public key parameters

privateParams Object

Algorithm-specific private key parameters

Source:
Returns:

Whether the parameters are valid.

Type
Promise.<Boolean>

(inner) checkSupportedCurve(oid)

Check whether the given curve OID is supported

Parameters:
Name Type Description
oid module:type/oid

EC object identifier

Source:
Throws:

if curve is not supported

Type
UnsupportedError