Provides core methods for hotp, totp and authenticator.
This is the full setup guide for installing, configuring and customising your dependencies for the library.
Check out the Quick Start Guide instead for easier setup especially if you do not need to use any custom base32 / crypto libraries.
npm install @otplib/core
The crypto modules are used to generate the digest used to derive the OTP tokens from.
By default, Node.js has inbuilt crypto
functionality, but you might want to replace it
for certain environments that do not support it.
Currently there are a few crypto plugins available from this project.
Install one of them. eg: npm install @otplib/plugin-crypto
Refer to the crypto plugins list,
or search for otplib-plugin crypto on npm
.
If you're using Google Authenticator
, you'll need a base32 module for
encoding and decoding your secrets.
Currently, there are a few base32 plugins available from this project.
Install one of them. eg: npm install @otplib/plugin-thirty-two
Refer to the base32 plugin list,
or search for otplib-plugin base32 on npm
.
import { HOTP, TOTP, Authenticator } from '@otplib/core';
import { keyDecoder, keyEncoder } from '@otplib/plugin-thirty-two'; // use your chosen base32 plugin
import { createDigest, createRandomBytes } from '@otplib/plugin-crypto'; // use your chosen crypto plugin
// Setup an OTP instance which you need
const hotp = new HOTP({ createDigest });
const totp = new TOTP({ createDigest });
const authenticator = new Authenticator({
createDigest,
createRandomBytes,
keyDecoder,
keyEncoder
});
// Go forth and generate tokens
const token = hotp.generate(YOUR_SECRET, 0);
const token = totp.generate(YOUR_SECRET);
const token = authenticator.generate(YOUR_SECRET);
Alternatively, if you are using the functions directly instead of the classes, pass these as options into the functions.
import {
hotpOptions,
hotpToken,
totpOptions,
totpToken,
authenticatorOptions,
authenticatorToken
} from 'otplib/core';
// As with classes, import your desired Base32 Plugin and Crypto Plugin.
// import ...
// Go forth and generate tokens
const token = hotpToken(YOUR_SECRET, 0, hotpOptions({ createDigest }));
const token = totpToken(YOUR_SECRET, totpOptions({ createDigest }));
const token = authenticatorToken(
YOUR_SECRET,
authenticatorOptions({
createDigest,
createRandomBytes,
keyDecoder,
keyEncoder
})
);
Please refer to the Options Guide.
@otplib/core
is MIT licensed