otplib API Documentation / @otplib/plugin-crypto-node / NodeCryptoPlugin
Class: NodeCryptoPlugin
Defined in: index.ts:56
Node.js crypto module implementation of CryptoPlugin
This plugin uses Node.js's built-in crypto module which provides:
- OpenSSL-backed HMAC operations
- Cryptographically secure random byte generation
- Synchronous API for optimal performance
Example
import { NodeCryptoPlugin } from '@otplib/plugin-crypto-node';
const crypto = new NodeCryptoPlugin();
const hmac = await crypto.hmac('sha1', key, data);
const random = crypto.randomBytes(20);Implements
Constructors
Constructor
new NodeCryptoPlugin():
NodeCryptoPlugin
Returns
NodeCryptoPlugin
Properties
algorithms
readonlyalgorithms: readonlyHashAlgorithm[] =SUPPORTED_ALGORITHMS
Defined in: index.ts:65
Algorithms this plugin can compute
Implementation of
CryptoPlugin.algorithms
name
readonlyname:"node"="node"
Defined in: index.ts:60
Plugin name for identification
Implementation of
CryptoPlugin.name
Methods
constantTimeEqual()
constantTimeEqual(
a,b):boolean
Defined in: index.ts:115
Constant-time comparison using Node.js crypto.timingSafeEqual
Uses Node.js's built-in timing-safe comparison which prevents timing side-channel attacks.
Parameters
a
string | Uint8Array<ArrayBufferLike>
First value to compare
b
string | Uint8Array<ArrayBufferLike>
Second value to compare
Returns
boolean
true if values are equal, false otherwise
Implementation of
CryptoPlugin.constantTimeEqual
hmac()
hmac(
algorithm,key,data):Uint8Array
Defined in: index.ts:83
Compute HMAC using Node.js crypto module
Synchronous implementation using createHmac.
The algorithm is matched ignoring case, with an optional - or _ before the digest size, so 'SHA1', 'Sha1' and 'SHA-1' all resolve to 'sha1'. Any other digest OpenSSL happens to support - 'md5', 'sha224', 'ripemd160' - throws AlgorithmUnsupportedError.
Parameters
algorithm
Hash algorithm to use
key
Uint8Array
Secret key
data
Uint8Array
Data to authenticate
Returns
Uint8Array
HMAC digest
Throws
If the algorithm is not supported
Implementation of
CryptoPlugin.hmac
randomBytes()
randomBytes(
length):Uint8Array
Defined in: index.ts:101
Generate cryptographically secure random bytes
Uses Node.js's randomBytes which is backed by OpenSSL.
Parameters
length
number
Number of bytes to generate
Returns
Uint8Array
Random bytes
Implementation of
CryptoPlugin.randomBytes