npm.io
1.1.3 • Published 7 years ago

hotp-totp-generator

Licence
MIT
Version
1.1.3
Deps
2
Size
7 kB
Vulns
0
Weekly
0
Stars
15

HOTP-TOTP-Generator

A highly customizable implementation of HMAC-based OTP (HOTP) and Time-based OTP (TOTP).

If something doens't work, please file an issue

Installation

  • npm install hotp-totp-generator --save

Sample Usage:

  var hotpOtpGenerator = require('hotp-otp-generator')

  // Example of HOTP
  const hotpToken = hotpOtpGenerator.hotp({ key: '12345678901234567890', counter: 100 });

  // Example of TOTP
  const totpToken = hotpOtpGenerator.totp({ key: '12345678901234567890' });

Docs

HOTP Implementation

For HMAC-based One Time Password (HOTP), parameter is an object consisting of:

Key Name Type Default Value Description
key string - Unique shared secret key for encrypting C values for HMAC algorithm
counter number - 8-bytes incrementing counter value
algorithm enum: 'sha1' | 'sha256' | 'sha512' 'sha1' HMAC Algorithm used for encrypting the counter
digits number 6 Return digits of HOTP value
Example:
Customizing Default Algorithm
const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.hotp({
  key: "my-hotp-key",
  counter: 123,
  algorithm: 'sha256',
});
Customizing Default Return Digits
const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.hotp({
  key: "my-hotp-key",
  counter: 123,
  digits: 10,
});
TOTP Implementation

For Time-based One Time Password (TOTP), parameter is an object consisting of:

Key Name Type Default Value Description
key string - Unique shared secret key for encrypting epoch time for HMAC algorithm
T number current unix time Epoch time (Unix time)
T0 number 0 The Unix time to start counting time steps
X number 30 The time step in seconds
algorithm enum: 'sha1' | 'sha256' | 'sha512' 'sha1' HMAC Algorithm used for encrypting the unix time
digits number 6 Return digits of HOTP value
Example:
Customizing Unix Time
const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.totp({
  key: "my-totp-key",
  T: 123456
});
Customizing T0 and X
const hotpTotpGenerator = require('hotp-totp-generator');
hotpTotpGenerator.totp({
  key: "my-totp-key",
  T0: 10,
  X: 60,
});

Contributing

Any contribution for this library would be very appreciated! Please open an issue / pull requests! If you are interested on contributing, you can check out several things todo in the TODO section below:

TODO

  • Make CLI tool
  • Add code coverage status
  • Add npm status
  • Add unit tests

Keywords