Skip to content

Latest commit

 

History

History
131 lines (97 loc) · 3.89 KB

README.md

File metadata and controls

131 lines (97 loc) · 3.89 KB

@otplib/core

Provides core methods for hotp, totp and authenticator.

Getting Started

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.

Install the Package

npm install @otplib/core

Choose Your Plugins

Adding Crypto

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.

Adding Base32

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.

Initialise your Instance

Using Classes

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);

Using Functions

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
  })
);

Available Options

Please refer to the Options Guide.

License

@otplib/core is MIT licensed