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).
npm install --save simpleotp
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
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 |
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 |
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 |
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
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 |
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 |
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 |
npm test
simpleotp
is MIT licensed