xarenard / simpleotp

Simple OTP implementation in node.js according to rfc 4996 and rfc 6238
MIT License
9 stars 3 forks source link
hmac hotp node-js nodejs nodejs-modules otp rfc-4226 rfc-6238 totp

Simple OTP

Time-based and HMAC-based One-Time Password libraryfor node.js

simpleotp is a simple :-) OTP library for node.js.

It provides an implementation of both rfc 4226 (HOTP) and rfc 6238 (TOTP).

Installation

npm install --save simpleotp

Usage

HOTP

Example

const otp = require('simpleotp');
const hotp = new otp.Hotp();

// generate a token
const token = hotp.createToken({secret:'12345678901234567890',counter:7});

// validate the token
const data = {token: token, secret:'12345678901234567890',counter: 7};
const valid = hotp.validate(data); //true

Configuration

Constructor options
Option Value Description Default Value
algorithm sha1,sha256,sha512 Algorithm to use sha1
num_digits integer token length 6
encoding ascii Encoding of the secret ascii
Create Token options
Option Mandatory Value Description Default value
secret y string type Share secret to use N/A
counter y integer type The counter seed N/A
algorithm n 'sha1','sha256' or 'sha512' Algorithm to use sha1
num_digits n integer type token length 6
encoding n 'ascii' Encoding of the secret ascii
Validate token options
Option Mandatory Value Description Default value
token y string type The original token N/A
secret y string type Share secret to use N/A
counter y integer type The counter seed N/A
algorithm n 'sha1','sha256' or 'sha512' Algorithm to use sha1
num_digits n integer type token length 6
encoding n 'ascii' Encoding of the secret ascii

TOTP

Example

const otp = require('simpleotp');
const totp = new otp.Totp();

// generate the token
const token = totp.createToken({secret:'12345678901234567890',seconds :Date.now()/1000});

// validate the token
const data = {token: token, secret:'12345678901234567890',seconds :Date.now()/1000}
const valid = totp.validate(data)
console.log(valid); // true

Configuration

Constructor options
Option Value Description Default value
algorithm 'sha1','sha256' or 'sha512' Algorithm to use sha1
num_digits integer token length 6
encoding ascii Encoding of the secret ascii
step integer Number of the second the token is valid 30
Create Token options
Option Mandatory Value Description Default value
secret y string type Share secret to use N/A
seconds y integer time in seconds as counter Date.now()/1000
step n integer Number of the second the token is valid 30
algorithm n 'sha1','sha256' or 'sha512' Algorithm to use sha1
num_digits n integer type token length 6
encoding n 'ascii' Encoding of the secret ascii
Validate token options
Option Mandatory Value Description Default value
token y string type The original token N/A
secret y string type Share secret to use N/A
seconds Y integer time in seconds as counter Date.now()/1000
step n integer Number of the second the token is valid 30
algorithm n 'sha1','sha256' or 'sha512' Algorithm to use sha1
num_digits n integer type token length 8
encoding n 'ascii' Encoding of the secret ascii

Tests

npm test

References

License

simpleotp is MIT licensed