Skip to content

otplib API Documentation / @otplib/plugin-crypto-web / WebCryptoPlugin

Class: WebCryptoPlugin ​

Defined in: index.ts:62

Web Crypto API implementation of CryptoPlugin

This plugin uses the browser's native Web Crypto API which provides:

  • Hardware-accelerated cryptographic operations
  • Secure key storage and generation
  • Async API for non-blocking operations

Example ​

ts
import { WebCryptoPlugin } from '@otplib/plugin-crypto-web';

const crypto = new WebCryptoPlugin();
const hmac = await crypto.hmac('sha1', key, data);
const random = crypto.randomBytes(20);

Implements ​

Constructors ​

Constructor ​

new WebCryptoPlugin(): WebCryptoPlugin

Returns ​

WebCryptoPlugin

Properties ​

algorithms ​

readonly algorithms: readonly HashAlgorithm[] = SUPPORTED_ALGORITHMS

Defined in: index.ts:71

Algorithms this plugin can compute

Implementation of ​

CryptoPlugin.algorithms


name ​

readonly name: "web" = "web"

Defined in: index.ts:66

Plugin name for identification

Implementation of ​

CryptoPlugin.name

Methods ​

constantTimeEqual() ​

constantTimeEqual(a, b): boolean

Defined in: index.ts:145

Constant-time comparison to prevent timing side-channel attacks

Web Crypto API doesn't provide a built-in constant-time comparison, so we use the core utility implementation.

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): Promise<Uint8Array<ArrayBufferLike>>

Defined in: index.ts:89

Compute HMAC using Web Crypto API

Async implementation using SubtleCrypto.

The algorithm is matched ignoring case, with an optional - or _ before the digest size, so 'SHA1', 'Sha1' and Web Crypto's own 'SHA-1' all resolve to 'sha1'. Any other digest - including ones SubtleCrypto supports, such as 'SHA-384' - throws AlgorithmUnsupportedError.

Parameters ​

algorithm ​

HashAlgorithm

Hash algorithm to use

key ​

Uint8Array

Secret key

data ​

Uint8Array

Data to authenticate

Returns ​

Promise<Uint8Array<ArrayBufferLike>>

HMAC digest

Throws ​

If the algorithm is not supported

Implementation of ​

CryptoPlugin.hmac


randomBytes() ​

randomBytes(length): Uint8Array

Defined in: index.ts:123

Generate cryptographically secure random bytes

Uses Web Crypto API's getRandomValues.

Parameters ​

length ​

number

Number of bytes to generate

Returns ​

Uint8Array

Random bytes

Implementation of ​

CryptoPlugin.randomBytes

Released under the MIT License.